From 1682b66361e8c8478b62fd3bd14a96769c6dcdd6 Mon Sep 17 00:00:00 2001 From: Florent Benoit Date: Wed, 2 Nov 2011 10:00:12 +0000 Subject: [PATCH] [maven-release-plugin] copy for tag JONAS_DOC_5_2_2 --- jonas_doc/.gitignore => .gitignore | 0 jonas_doc/.project => .project | 0 jonas_doc/README => README | 0 .../build.properties => build.properties | 0 jonas_doc/build.xml => build.xml | 0 jonas/.checkstyle | 14 - jonas/.checkstyle_eclipse_config | 93 - jonas/.classpath | 192 - jonas/.gitignore | 15 - jonas/.project | 29 - jonas/.settings/org.eclipse.jdt.core.prefs | 268 -- jonas/.settings/org.eclipse.jdt.ui.prefs | 57 - jonas/.settings/org.maven.ide.eclipse.prefs | 9 - jonas/LicenceAgreement.txt | 504 --- jonas/README | 6 - jonas/ReleaseNotes.txt | 2 - jonas/assemblies/binaries/pom.xml | 49 - .../src/main/resources/bin/ClientStubGen | 50 - .../src/main/resources/bin/ClientStubGen.bat | 50 - .../binaries/src/main/resources/bin/GenIC | 50 - .../binaries/src/main/resources/bin/GenIC.bat | 51 - .../binaries/src/main/resources/bin/JmsServer | 54 - .../src/main/resources/bin/JmsServer.bat | 48 - .../binaries/src/main/resources/bin/RAConfig | 50 - .../src/main/resources/bin/RAConfig.bat | 54 - .../binaries/src/main/resources/bin/WsGen | 50 - .../binaries/src/main/resources/bin/WsGen.bat | 53 - .../binaries/src/main/resources/bin/jcl.bash | 582 --- .../binaries/src/main/resources/bin/jcl.bat | 371 -- .../binaries/src/main/resources/bin/jcl.ksh | 541 --- .../binaries/src/main/resources/bin/jcl.sh | 61 - .../binaries/src/main/resources/bin/jclient | 102 - .../src/main/resources/bin/jclient.bat | 123 - .../binaries/src/main/resources/bin/jclusterd | 166 - .../src/main/resources/bin/jclusterd.bat | 198 - .../binaries/src/main/resources/bin/jonas | 403 -- .../binaries/src/main/resources/bin/jonas.bat | 420 -- .../src/main/resources/bin/jonasnt.bat | 138 - .../src/main/resources/bin/joram_raconfig | 117 - .../src/main/resources/bin/joram_raconfig.bat | 134 - .../binaries/src/main/resources/bin/newjb | 90 - .../binaries/src/main/resources/bin/newjb.bat | 54 - .../binaries/src/main/resources/bin/newjc | 53 - .../binaries/src/main/resources/bin/newjc.bat | 106 - .../src/main/resources/bin/probeJgroups | 53 - .../src/main/resources/bin/probeJgroups.bat | 69 - .../binaries/src/main/resources/bin/registry | 29 - .../src/main/resources/bin/registry.bat | 31 - .../binaries/src/main/resources/bin/setenv | 138 - .../src/main/resources/bin/setenv.bat | 51 - jonas/assemblies/client-jar/pom.xml | 88 - jonas/assemblies/configuration/pom.xml | 60 - .../resources/conf/FirebirdSQL.properties | 60 - .../src/main/resources/conf/HSQL1.properties | 57 - .../main/resources/conf/InstantDB1.properties | 55 - .../main/resources/conf/InterBase1.properties | 61 - .../resources/conf/MailMimePartDS1.properties | 38 - .../resources/conf/MailSession1.properties | 32 - .../src/main/resources/conf/McKoi1.properties | 59 - .../src/main/resources/conf/MySQL.properties | 56 - .../main/resources/conf/Oracle1.properties | 59 - .../resources/conf/PostgreSQL1.properties | 61 - .../main/resources/conf/Sybase1.properties | 33 - .../src/main/resources/conf/a3debug.cfg | 33 - .../src/main/resources/conf/a3servers.xml | 9 - .../src/main/resources/conf/banner.txt | 3 - .../src/main/resources/conf/carol.properties | 105 - .../conf/classloader-default-filtering.xml | 43 - .../src/main/resources/conf/clusterd.xml | 68 - .../src/main/resources/conf/cmi-config.xml | 49 - .../src/main/resources/conf/db2.properties | 55 - .../src/main/resources/conf/domain.xml | 57 - .../src/main/resources/conf/env.sh.include | 96 - .../main/resources/conf/env.start.sh.include | 70 - .../src/main/resources/conf/file1.properties | 12 - .../resources/conf/initial-repositories.xml | 47 - .../src/main/resources/conf/jaas.config | 114 - .../src/main/resources/conf/jacorb.properties | 737 ---- .../src/main/resources/conf/java.policy | 10 - .../src/main/resources/conf/jgroups-cmi.xml | 66 - .../main/resources/conf/jgroups-discovery.xml | 153 - .../src/main/resources/conf/jgroups-ha.xml | 148 - .../src/main/resources/conf/jmx.access | 35 - .../src/main/resources/conf/jmx.passwords | 37 - .../main/resources/conf/jmx.rolebased.access | 47 - .../resources/conf/jonas-client.properties | 28 - .../src/main/resources/conf/jonas-realm.xml | 125 - .../src/main/resources/conf/jonas.properties | 546 --- .../src/main/resources/conf/joramAdmin.xml | 58 - .../src/main/resources/conf/jotm.properties | 15 - .../src/main/resources/conf/spy.properties | 251 -- .../src/main/resources/conf/trace.properties | 441 -- .../resources/conf/traceclient.properties | 45 - .../src/main/resources/conf/uddi.properties | 17 - .../src/main/resources/conf/wrapper.conf | 134 - .../main/resources/conf/wrapper_extra.conf | 8 - .../src/main/resources/deploy/jdbc-ds.xml | 105 - .../main/resources/newjb/build-jb.properties | 113 - .../src/main/resources/newjb/build-jb.xml | 305 -- .../main/resources/newjc/build-db.properties | 80 - .../main/resources/newjc/build-jc.properties | 181 - .../src/main/resources/newjc/build-jc.xml | 390 -- .../resources/newjc/build-master.properties | 87 - .../main/resources/windows_service/build.xml | 102 - jonas/assemblies/examples/pom.xml | 38 - .../main/resources/examples/build.properties | 37 - .../src/main/resources/examples/build.xml | 51 - .../cluster-j2ee14/PortConfiguration.txt | 63 - .../resources/examples/cluster-j2ee14/README | 96 - .../bin-client/clientConfig/carol.properties | 101 - .../bin-client/clientConfig/cmi-config.xml | 55 - .../clientConfig/traceclient.properties | 43 - .../bin-client/clientException.bat | 4 - .../bin-client/clientException.sh | 5 - .../bin-client/clientFOSFSB.bat | 4 - .../cluster-j2ee14/bin-client/clientFOSFSB.sh | 5 - .../bin-client/clientLBHome.bat | 4 - .../cluster-j2ee14/bin-client/clientLBHome.sh | 5 - .../bin-client/clientLBLookup.bat | 4 - .../bin-client/clientLBLookup.sh | 5 - .../bin-client/clientLBRemote.bat | 4 - .../bin-client/clientLBRemote.sh | 5 - .../examples/cluster-j2ee14/build.properties | 32 - .../examples/cluster-j2ee14/build.xml | 247 -- .../etc/resources/WEB-INF/jonas-web.xml | 19 - .../etc/resources/WEB-INF/web.xml | 71 - .../resources/policy/round-robin-policy.xml | 35 - .../etc/resources/web/index.html | 27 - .../etc/resources/web/jsp/checkRsp.jsp | 22 - .../etc/resources/web/jsp/exceptionRsp.jsp | 13 - .../etc/resources/web/jsp/releaseRsp.jsp | 25 - .../etc/resources/web/jsp/sessionRsp.jsp | 50 - .../cluster-j2ee14/etc/xml/ejb-jar.xml | 136 - .../etc/xml/jonas-ejb-jar.ha.xml | 86 - .../etc/xml/jonas-ejb-jar.lb.xml | 96 - .../cluster-j2ee14/etc/xml/jonas-ejb-jar.xml | 96 - .../etc/xml/transaction/ejb-jar.xml | 60 - .../etc/xml/transaction/jonas-ejb-jar.xml | 37 - .../example-config/tomcat6-jk.conf | 23 - .../example-config/tomcat6-mod_jk.xml | 184 - .../example-config/workers.properties | 43 - .../cluster-j2ee14/src/application.xml | 18 - .../cluster-j2ee14/src/applicationHA.xml | 11 - .../hatransactions/HaTransactionHome.java | 50 - .../hatransactions/HaTransactionLocal.java | 46 - .../HaTransactionLocalHome.java | 50 - .../hatransactions/HaTransactionRemote.java | 47 - .../hatransactions/HaTransactionSLR.java | 109 - .../j2ee14/beans/samplecluster2/MyEjb1.java | 67 - .../beans/samplecluster2/MyEjb1Home.java | 46 - .../beans/samplecluster2/MyEjb1SLR.java | 227 - .../beans/samplecluster2/MyEntityHome.java | 50 - .../beans/samplecluster2/MyEntityLocal.java | 57 - .../samplecluster2/MyEntityLocalHome.java | 50 - .../beans/samplecluster2/MyEntityRemote.java | 59 - .../beans/samplecluster2/MyEntitySLR.java | 141 - .../beans/samplecluster2/MyException.java | 58 - .../beans/samplecluster2/MyStateful.java | 90 - .../beans/samplecluster2/MyStatefulHome.java | 46 - .../beans/samplecluster2/MyStatefulInner.java | 134 - .../samplecluster2/MyStatefulInnerLocal.java | 37 - .../MyStatefulInnerLocalHome.java | 46 - .../beans/samplecluster2/MyStatefulSFR.java | 397 -- .../cluster/j2ee14/client/ClientBase.java | 122 - .../j2ee14/client/ClientException.java | 95 - .../cluster/j2ee14/client/ClientFOSFSB.java | 125 - .../cluster/j2ee14/client/ClientLBHome.java | 100 - .../cluster/j2ee14/client/ClientLBLookup.java | 105 - .../cluster/j2ee14/client/ClientLBRemote.java | 113 - .../cluster/j2ee14/client/ClientUtility.java | 146 - .../examples/cluster/j2ee14/client/README | 40 - .../j2ee14/servlets/AbstractServlet.java | 143 - .../cluster/j2ee14/servlets/CheckServlet.java | 83 - .../j2ee14/servlets/ExceptionServlet.java | 80 - .../j2ee14/servlets/ReleaseServlet.java | 110 - .../j2ee14/servlets/SessionServlet.java | 159 - .../cluster-javaee5/PortConfiguration.txt | 63 - .../resources/examples/cluster-javaee5/README | 80 - .../bin-client/clientConfig/carol.properties | 101 - .../bin-client/clientConfig/cmi-config.xml | 55 - .../clientConfig/traceclient.properties | 43 - .../bin-client/clientException.bat | 3 - .../bin-client/clientException.sh | 3 - .../bin-client/clientFOSFSB.bat | 3 - .../bin-client/clientFOSFSB.sh | 3 - .../bin-client/clientLBRemote.bat | 3 - .../bin-client/clientLBRemote.sh | 3 - .../examples/cluster-javaee5/build.properties | 33 - .../examples/cluster-javaee5/build.xml | 188 - .../etc/resources/WEB-INF/web.xml | 57 - .../etc/resources/application.xml | 73 - .../cluster-javaee5/etc/resources/client.xml | 37 - .../etc/resources/jonas-client.xml | 33 - .../etc/resources/persistence.xml | 42 - .../resources/policy/round-robin-policy.xml | 35 - .../etc/resources/web/index.html | 27 - .../etc/resources/web/jsp/checkRsp.jsp | 22 - .../etc/resources/web/jsp/exceptionRsp.jsp | 13 - .../etc/resources/web/jsp/releaseRsp.jsp | 25 - .../etc/resources/web/jsp/sessionRsp.jsp | 64 - .../cluster-javaee5/etc/xml/easybeans.xml | 27 - .../cluster-javaee5/etc/xml/ejb-jar.xml | 62 - .../example-config/tomcat6-jk.conf | 23 - .../example-config/tomcat6-mod_jk.xml | 184 - .../example-config/workers.properties | 42 - .../beans/samplecluster3/MyException.java | 58 - .../beans/samplecluster3/MyStateful.java | 93 - .../beans/samplecluster3/MyStatefulBean.java | 375 -- .../beans/samplecluster3/MyStatefulInner.java | 35 - .../samplecluster3/MyStatefulInnerBean.java | 112 - .../beans/samplecluster3/MyStateless.java | 63 - .../beans/samplecluster3/MyStatelessBean.java | 173 - .../javaee5/beans/samplecluster3/Node.java | 162 - .../cluster/javaee5/client/ClientBase.java | 122 - .../javaee5/client/ClientException.java | 96 - .../cluster/javaee5/client/ClientFOSFSB.java | 114 - .../javaee5/client/ClientLBRemote.java | 115 - .../examples/cluster/javaee5/client/README | 36 - .../javaee5/servlets/AbstractServlet.java | 130 - .../javaee5/servlets/CheckServlet.java | 82 - .../javaee5/servlets/ExceptionServlet.java | 81 - .../javaee5/servlets/ReleaseServlet.java | 98 - .../javaee5/servlets/SessionServlet.java | 168 - .../main/resources/examples/j2ee1.4/README | 84 - .../main/resources/examples/j2ee1.4/build.xml | 204 - .../j2ee1.4/etc/resources/jaas/jaas.config | 13 - .../j2ee1.4/etc/resources/web/img/jetty.gif | Bin 6649 -> 0 bytes .../j2ee1.4/etc/resources/web/img/logoOW2.png | Bin 13572 -> 0 bytes .../etc/resources/web/img/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../j2ee1.4/etc/resources/web/img/tomcat.gif | Bin 1934 -> 0 bytes .../etc/resources/web/img/valid-xhtml11.png | Bin 1917 -> 0 bytes .../j2ee1.4/etc/resources/web/img/vcss.png | Bin 1134 -> 0 bytes .../j2ee1.4/etc/resources/web/index.html | 52 - .../j2ee1.4/etc/resources/web/ow2_jonas.css | 183 - .../j2ee1.4/etc/xml/application-client.xml | 72 - .../examples/j2ee1.4/etc/xml/application.xml | 59 - .../j2ee1.4/etc/xml/jonas-client1.xml | 19 - .../j2ee1.4/etc/xml/jonas-client2.xml | 18 - .../examples/j2ee1.4/etc/xml/jonas-secusb.xml | 12 - .../examples/j2ee1.4/etc/xml/jonas-web.xml | 13 - .../resources/examples/j2ee1.4/etc/xml/ra.xml | 40 - .../examples/j2ee1.4/etc/xml/secusb.xml | 60 - .../examples/j2ee1.4/etc/xml/web.xml | 110 - .../ow2/jonas/earsample/beans/secusb/Op.java | 52 - .../jonas/earsample/beans/secusb/OpBean.java | 247 -- .../jonas/earsample/beans/secusb/OpHome.java | 47 - .../jonas/earsample/beans/secusb/OpLocal.java | 48 - .../earsample/beans/secusb/OpLocalHome.java | 45 - .../ow2/jonas/earsample/clients/Client.java | 190 - .../resourceadapters/ResourceAdapterImpl.java | 191 - .../jonas/earsample/servlets/ServletOp.java | 305 -- .../resources/examples/j2ee1.4/velocity.log | 62 - .../examples/javaee5-earsample/README | 10 - .../bin-client/clientConfig/carol.properties | 101 - .../clientConfig/traceclient.properties | 43 - .../clientJaasSecuredApplication.bat | 1 - .../clientJaasSecuredApplication.sh | 1 - .../bin-client/clientJmsApplication.bat | 1 - .../bin-client/clientJmsApplication.sh | 1 - .../clientNotSecuredApplication.bat | 1 - .../bin-client/clientNotSecuredApplication.sh | 1 - .../examples/javaee5-earsample/build.xml | 198 - .../etc/META-INF/MANIFEST.MF | 1 - .../javaee5-earsample/etc/application.xml | 66 - .../etc/jaas-secured-application-client.xml | 39 - .../etc/jaas-secured-jonas-client.xml | 40 - .../javaee5-earsample/etc/jaas.config | 37 - .../etc/jms-application-client.xml | 50 - .../etc/jms-jonas-client.xml | 42 - .../etc/not-secured-application-client.xml | 37 - .../etc/not-secured-jonas-client.xml | 33 - .../javaee5-earsample/etc/persistence.xml | 45 - .../examples/javaee5-earsample/etc/web.xml | 84 - .../etc/web/img/architecture.png | Bin 182723 -> 0 bytes .../javaee5-earsample/etc/web/img/jetty.gif | Bin 6649 -> 0 bytes .../javaee5-earsample/etc/web/img/logoOW2.png | Bin 13572 -> 0 bytes .../etc/web/img/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../javaee5-earsample/etc/web/img/tomcat.gif | Bin 1934 -> 0 bytes .../etc/web/img/valid-xhtml11.png | Bin 1917 -> 0 bytes .../javaee5-earsample/etc/web/img/vcss.png | Bin 1134 -> 0 bytes .../javaee5-earsample/etc/web/index.html | 66 - .../javaee5-earsample/etc/web/ow2_jonas.css | 183 - .../ear/client/JMSApplicationClient.java | 146 - .../client/NotSecuredApplicationClient.java | 133 - .../ear/client/SecuredApplicationClient.java | 141 - .../jonas/examples/ear/client/package.html | 36 - .../ow2/jonas/examples/ear/entity/Author.java | 177 - .../ow2/jonas/examples/ear/entity/Book.java | 163 - .../jonas/examples/ear/entity/package.html | 36 - .../jonas/examples/ear/init/Initializer.java | 14 - .../examples/ear/init/InitializerBean.java | 65 - .../ow2/jonas/examples/ear/init/package.html | 36 - .../ow2/jonas/examples/ear/mail/Mailer.java | 41 - .../jonas/examples/ear/mail/MailerBean.java | 166 - .../ow2/jonas/examples/ear/mail/package.html | 36 - .../examples/ear/mdb/JMSMessageBean.java | 112 - .../ow2/jonas/examples/ear/mdb/package.html | 36 - .../org/ow2/jonas/examples/ear/package.html | 36 - .../examples/ear/reader/LocalReader.java | 34 - .../ow2/jonas/examples/ear/reader/Reader.java | 63 - .../jonas/examples/ear/reader/ReaderBean.java | 108 - .../examples/ear/reader/RemoteReader.java | 34 - .../jonas/examples/ear/reader/package.html | 36 - .../jonas/examples/ear/web/AdminServlet.java | 277 -- .../examples/ear/web/ExampleServlet.java | 203 - .../ow2/jonas/examples/ear/web/package.html | 36 - .../examples/ear/writer/LocalWriter.java | 34 - .../examples/ear/writer/RemoteWriter.java | 34 - .../ow2/jonas/examples/ear/writer/Writer.java | 61 - .../jonas/examples/ear/writer/WriterBean.java | 89 - .../jonas/examples/ear/writer/package.html | 36 - .../main/resources/examples/jonas-common.xml | 251 -- .../resources/tutorial/jaxws-sample/README | 31 - .../resources/tutorial/jaxws-sample/build.xml | 52 - .../tutorial/jaxws-sample/client/build.xml | 91 - .../jaxws-sample/client/etc/application.xml | 48 - .../tutorial/jaxws-sample/client/etc/web.xml | 33 - .../tutorial/jaxws/client/QuoteMain.java | 48 - .../tutorial/jaxws-sample/service/build.xml | 58 - .../jaxws-sample/service/etc/application.xml | 48 - .../tutorial/jaxws-sample/service/etc/web.xml | 33 - .../ow2/jonas/tutorial/jaxws/quote/Quote.java | 58 - .../tutorial/jaxws/quote/QuoteReporter.java | 34 - .../jaxws/quote/QuoteReporterPOJO.java | 43 - .../main/resources/tutorial/jonas-common.xml | 381 -- jonas/assemblies/pom.xml | 49 - jonas/assemblies/profiles/full/pom.xml | 236 -- .../full/src/main/assembly/assembly.xml | 170 - .../src/main/assembly/templates-component.xml | 80 - jonas/assemblies/profiles/minimal/pom.xml | 257 -- .../minimal/src/main/assembly/assembly.xml | 56 - jonas/assemblies/profiles/pom.xml | 1483 ------- .../profiles/src/main/assembly/component.xml | 104 - .../profiles/src/main/resources/logs/README | 8 - jonas/assemblies/source/pom.xml | 63 - .../source/src/main/assembly/assembly.xml | 49 - jonas/clientbuild.xml | 408 -- .../checkstyle-convention.xml | 188 - .../eclipse-java-code-formatter.xml | 181 - .../eclipse-java-codestyle-organize-import | 24 - .../jonas-style-convention.xml | 181 - .../plugin-checkstyle-config.xml | 253 -- .../modules/apis/jonas-deployment-api/pom.xml | 39 - .../org/ow2/jonas/deployment/api/DTDs.java | 45 - .../jonas/deployment/api/IDeploymentDesc.java | 47 - .../deployment/api/IDescriptionGroupDesc.java | 64 - .../deployment/api/IEJBLocalRefDesc.java | 42 - .../ow2/jonas/deployment/api/IEJBRefDesc.java | 64 - .../jonas/deployment/api/IEnvEntryDesc.java | 69 - .../deployment/api/IJNDIEnvRefsGroupDesc.java | 80 - .../api/IMessageDestinationRefDesc.java | 60 - .../api/IPersistenceUnitRefDesc.java | 50 - .../deployment/api/IResourceEnvRefDesc.java | 45 - .../deployment/api/IResourceRefDesc.java | 70 - .../jonas/deployment/api/IServiceRefDesc.java | 114 - .../org/ow2/jonas/deployment/api/Schemas.java | 44 - .../META-INF/jonas-deployment-api.bnd | 24 - .../modules/apis/jonas-management-api/pom.xml | 39 - .../extensions/base/api/IBaseManagement.java | 201 - .../base/api/J2EEMBeanAttributeInfo.java | 181 - .../base/api/ManagementException.java | 56 - .../extensions/cluster/api/ICluster.java | 78 - .../clusterdaemon/api/IClusterdaemon.java | 220 - .../container/api/IContainerManagement.java | 85 - .../extensions/domain/api/IDomain.java | 173 - .../extensions/server/api/IServer.java | 255 -- .../server/api/IServerManagement.java | 87 - .../META-INF/jonas-management-api.bnd | 29 - jonas/modules/apis/jonas-services-api/pom.xml | 72 - .../java/org/ow2/jonas/adm/AdmException.java | 44 - .../java/org/ow2/jonas/adm/AdmInterface.java | 178 - .../org/ow2/jonas/audit/AuditService.java | 42 - .../java/org/ow2/jonas/cmi/CmiService.java | 83 - .../configuration/ConfigurationManager.java | 87 - .../configuration/DeploymentPlanDeployer.java | 49 - .../main/java/org/ow2/jonas/db/DBService.java | 36 - .../org/ow2/jonas/dbm/DataBaseService.java | 59 - .../jonas/depmonitor/MonitoringService.java | 39 - .../ow2/jonas/discovery/DiscoveryEvent.java | 38 - .../ow2/jonas/discovery/DiscoveryService.java | 36 - .../ow2/jonas/discovery/DiscoveryState.java | 54 - .../java/org/ow2/jonas/ear/EarService.java | 45 - .../ow2/jonas/ear/EarServiceException.java | 55 - .../java/org/ow2/jonas/ejb2/EJBService.java | 156 - .../org/ow2/jonas/ejb2/JTimerHandleInfo.java | 209 - .../ow2/jonas/ejb2/TimerHandleDelegate.java | 50 - .../org/ow2/jonas/ejb3/IEasyBeansService.java | 127 - .../main/java/org/ow2/jonas/ha/HaService.java | 56 - .../org/ow2/jonas/jms/JmsAdministration.java | 108 - .../java/org/ow2/jonas/jms/JmsManager.java | 130 - .../java/org/ow2/jonas/jms/JmsService.java | 40 - .../ow2/jonas/jmx/JManagementIdentifier.java | 89 - .../java/org/ow2/jonas/jmx/JmxService.java | 144 - .../jndi/checker/api/IResourceChecker.java | 38 - .../checker/api/IResourceCheckerInfo.java | 43 - .../checker/api/IResourceCheckerManager.java | 67 - .../jndi/checker/api/ResourceCheckpoints.java | 58 - .../java/org/ow2/jonas/mail/MailService.java | 103 - .../ow2/jonas/mail/MailServiceException.java | 59 - .../org/ow2/jonas/mail/factory/JavaMail.java | 96 - .../jonas/management/J2EEServerService.java | 89 - .../ow2/jonas/management/ServiceManager.java | 98 - .../naming/JComponentContextFactory.java | 69 - .../JComponentContextFactoryDelegate.java | 56 - .../org/ow2/jonas/naming/JNamingManager.java | 111 - .../jonas/properties/ServerProperties.java | 111 - .../ow2/jonas/registry/RegistryService.java | 85 - .../main/java/org/ow2/jonas/resource/Rar.java | 67 - .../ow2/jonas/resource/ResourceService.java | 133 - .../resource/ResourceServiceException.java | 57 - .../ResourceMonitorService.java | 37 - .../ow2/jonas/security/SecurityService.java | 61 - .../security/realm/factory/JResource.java | 132 - .../realm/factory/JResourceException.java | 61 - .../security/realm/lib/HashPassword.java | 74 - .../jonas/security/realm/principal/JUser.java | 147 - .../service/JonasAlreadyStartedException.java | 46 - .../java/org/ow2/jonas/service/Service.java | 79 - .../ow2/jonas/service/ServiceException.java | 75 - .../jonas/smartclient/SmartclientService.java | 38 - .../smartclient/SmartclientServiceBase.java | 54 - .../java/org/ow2/jonas/tm/Enlistable.java | 50 - .../org/ow2/jonas/tm/TransactionManager.java | 75 - .../org/ow2/jonas/tm/TransactionService.java | 98 - .../org/ow2/jonas/tm/TxResourceManager.java | 37 - .../jonas/versioning/VersioningService.java | 106 - .../versioning/VersioningServiceBase.java | 138 - .../VirtualContextJMXInterface.java | 65 - .../ow2/jonas/web/IOnDemandHttpService.java | 39 - .../ow2/jonas/web/JWebContainerService.java | 175 - .../web/JWebContainerServiceException.java | 58 - .../org/ow2/jonas/workcleaner/CleanTask.java | 39 - .../org/ow2/jonas/workcleaner/LogEntry.java | 47 - .../workcleaner/WorkCleanerException.java | 54 - .../jonas/workcleaner/WorkCleanerService.java | 53 - .../jonas/workmanager/WorkManagerService.java | 43 - .../ow2/jonas/ws/jaxrpc/IJAXRPCService.java | 132 - .../org/ow2/jonas/ws/jaxrpc/WSException.java | 57 - .../org/ow2/jonas/ws/jaxws/EndpointType.java | 35 - .../org/ow2/jonas/ws/jaxws/IJAXWSService.java | 90 - .../org/ow2/jonas/ws/jaxws/IWSRequest.java | 69 - .../org/ow2/jonas/ws/jaxws/IWSResponse.java | 48 - .../jaxws/IWebServiceDeploymentManager.java | 87 - .../jonas/ws/jaxws/IWebServiceEndpoint.java | 116 - .../jonas/ws/jaxws/IWebservicesContainer.java | 87 - .../jonas/ws/jaxws/IWebservicesModule.java | 76 - .../ow2/jonas/ws/jaxws/PortIdentifier.java | 93 - .../org/ow2/jonas/ws/jaxws/PortMetaData.java | 161 - .../org/ow2/jonas/ws/jaxws/WSException.java | 88 - .../ws/jaxws/ejb/IEJBWebserviceEndpoint.java | 62 - .../ws/jaxws/ejb/ISecurityConstraint.java | 69 - .../ow2/jonas/ws/jaxws/ejb/IWebDeployer.java | 57 - .../ContextNamingStrategyException.java | 63 - .../jaxws/ejb/context/IContextNamingInfo.java | 67 - .../ejb/context/IContextNamingStrategy.java | 42 - .../jonas/ws/publish/AbsWSDLPublisher.java | 50 - .../ow2/jonas/ws/publish/PublicationInfo.java | 90 - .../ws/publish/PublishableDefinition.java | 76 - .../ow2/jonas/ws/publish/WSDLPublisher.java | 54 - .../ws/publish/WSDLPublisherException.java | 64 - .../ws/publish/WSDLPublisherManager.java | 45 - .../resources/META-INF/jonas-services-api.bnd | 24 - jonas/modules/apis/pom.xml | 46 - jonas/modules/client-bootstrap/pom.xml | 55 - .../org/ow2/jonas/client/boot/Bootstrap.java | 118 - .../resources/META-INF/client-bootstrap.bnd | 34 - jonas/modules/client/pom.xml | 140 - .../org/ow2/jonas/client/ClientContainer.java | 1521 ------- .../client/ClientContainerException.java | 59 - .../naming/ClientInitialContextFactory.java | 90 - .../modules/ee-components/jca/jdbc/cp/pom.xml | 46 - .../cp/src/main/rar/META-INF/jonas-ra.xml | 74 - .../jca/jdbc/cp/src/main/rar/META-INF/ra.xml | 81 - .../modules/ee-components/jca/jdbc/dm/pom.xml | 46 - .../dm/src/main/rar/META-INF/jonas-ra.xml | 58 - .../jca/jdbc/dm/src/main/rar/META-INF/ra.xml | 61 - .../modules/ee-components/jca/jdbc/ds/pom.xml | 46 - .../ds/src/main/rar/META-INF/jonas-ra.xml | 74 - .../jca/jdbc/ds/src/main/rar/META-INF/ra.xml | 81 - .../ee-components/jca/jdbc/glue/pom.xml | 54 - .../org/ow2/jonas/ee/jdbc/ConnectionImpl.java | 301 -- .../jonas/ee/jdbc/ConnectionManagerImpl.java | 62 - .../jonas/ee/jdbc/ConnectionPoolMCFImpl.java | 141 - .../ee/jdbc/ConnectionRequestInfoImpl.java | 86 - .../org/ow2/jonas/ee/jdbc/DataSourceImpl.java | 169 - .../ow2/jonas/ee/jdbc/DataSourceMCFImpl.java | 136 - .../jonas/ee/jdbc/DriverManagerMCFImpl.java | 140 - .../org/ow2/jonas/ee/jdbc/DriverWrapper.java | 65 - .../java/org/ow2/jonas/ee/jdbc/MCFData.java | 134 - .../ee/jdbc/ManagedConnectionFactoryImpl.java | 705 ---- .../jonas/ee/jdbc/ManagedConnectionImpl.java | 595 --- .../org/ow2/jonas/ee/jdbc/MetaDataImpl.java | 118 - .../ow2/jonas/ee/jdbc/XAExceptionUtils.java | 61 - .../java/org/ow2/jonas/ee/jdbc/XAMCFImpl.java | 127 - .../org/ow2/jonas/ee/jdbc/XAResourceImpl.java | 340 -- jonas/modules/ee-components/jca/jdbc/pom.xml | 48 - .../modules/ee-components/jca/jdbc/xa/pom.xml | 46 - .../xa/src/main/rar/META-INF/jonas-ra.xml | 74 - .../jca/jdbc/xa/src/main/rar/META-INF/ra.xml | 81 - jonas/modules/ee-components/jca/pom.xml | 45 - .../ee-components/jca/scout/glue/pom.xml | 72 - .../jonas/ee/scout/JAXRResourceAdapter.java | 96 - .../jonas/ee/scout/JConnectionFactory.java | 67 - .../scout/ManagedConnectionFactoryImpl.java | 237 -- jonas/modules/ee-components/jca/scout/pom.xml | 45 - .../ee-components/jca/scout/rar/pom.xml | 63 - .../rar/src/main/rar/META-INF/jonas-ra.xml | 38 - .../scout/rar/src/main/rar/META-INF/ra.xml | 94 - .../modules/ee-components/jonas-admin/pom.xml | 286 -- .../webapp/jonasadmin/ApplicationLocales.java | 163 - .../webapp/jonasadmin/ApplyTopAction.java | 57 - .../webapp/jonasadmin/EditTopAction.java | 107 - .../webapp/jonasadmin/JettyObjectName.java | 63 - .../ow2/jonas/webapp/jonasadmin/Jlists.java | 338 -- .../jonas/webapp/jonasadmin/JmsConnFact.java | 44 - .../jonasadmin/JonasAdminException.java | 72 - .../webapp/jonasadmin/JonasAdminJmx.java | 166 - .../webapp/jonasadmin/JonasBaseAction.java | 1048 ----- .../webapp/jonasadmin/JonasServerItem.java | 54 - .../webapp/jonasadmin/JonasTreeBuilder.java | 2805 ------------ .../jonas/webapp/jonasadmin/LogOutAction.java | 118 - .../webapp/jonasadmin/MBeanTreeBuilder.java | 363 -- .../jonas/webapp/jonasadmin/ServiceName.java | 50 - .../webapp/jonasadmin/SetUpTreeAction.java | 152 - .../jonasadmin/SetupWhereAreYouAction.java | 88 - .../ow2/jonas/webapp/jonasadmin/TopForm.java | 80 - .../jonas/webapp/jonasadmin/TreeAction.java | 170 - .../jonas/webapp/jonasadmin/WhereAreYou.java | 370 -- .../catalina/ApplyConnectorAction.java | 190 - .../catalina/ApplyConnectorsAction.java | 76 - .../ApplyConnectorsConfirmAction.java | 88 - .../catalina/CatalinaBaseAction.java | 89 - .../jonasadmin/catalina/ConnectorForm.java | 1106 ----- .../jonasadmin/catalina/ConnectorItem.java | 139 - .../catalina/ConnectorItemByPort.java | 73 - .../catalina/CreateConnectorAction.java | 87 - .../catalina/EditConnectorAction.java | 235 -- .../catalina/ItemsConnectorsForm.java | 101 - .../catalina/ListConnectorsAction.java | 84 - .../catalina/SaveCatalinaAction.java | 79 - .../clusterd/ApplyJonasServersAction.java | 252 -- .../clusterd/ClusterDaemonItem.java | 93 - .../clusterd/ClusterdServerForm.java | 121 - .../clusterd/DaemonProxyClusterAction.java | 146 - .../DaemonProxyClusterApplyModifAction.java | 74 - ...emonProxyClusterConfigureServerAction.java | 114 - .../DaemonProxyClusterModifyAction.java | 134 - .../clusterd/EditAllClusterDaemonsAction.java | 61 - .../clusterd/EditClusterDaemonAction.java | 100 - .../clusterd/EditClusterdVmMemoryAction.java | 82 - .../clusterd/HaltJonasServerAction.java | 83 - .../jonasadmin/clusterd/MemoryForm.java | 159 - .../clusterd/ServerConfigModifiedAction.java | 86 - .../clusterd/StartJonasServerAction.java | 83 - .../StartStandbyJonasServerAction.java | 83 - .../clusterd/StopJonasServerAction.java | 85 - .../servlet/MemoryGraphRemoteHostServlet.java | 143 - .../webapp/jonasadmin/cmi/ApplyCmiAction.java | 212 - .../jonasadmin/cmi/ClusterAttribute.java | 73 - .../cmi/ClusterPropertyAttribute.java | 80 - .../jonasadmin/cmi/CmiClusterAction.java | 83 - .../webapp/jonasadmin/cmi/CmiClusterForm.java | 133 - .../jonas/webapp/jonasadmin/cmi/CmiForm.java | 172 - .../webapp/jonasadmin/cmi/CmiObject.java | 113 - .../jonasadmin/cmi/CmiObjectAction.java | 292 -- .../webapp/jonasadmin/cmi/CmiObjectForm.java | 356 -- .../jonasadmin/cmi/CmiProtocolAction.java | 70 - .../jonasadmin/cmi/CmiProtocolForm.java | 65 - .../jonasadmin/cmi/CmiServerAction.java | 121 - .../webapp/jonasadmin/cmi/CmiServerForm.java | 111 - .../webapp/jonasadmin/cmi/LBAttribute.java | 89 - .../jonas/webapp/jonasadmin/cmi/Protocol.java | 95 - .../jonas/webapp/jonasadmin/cmi/Provider.java | 94 - .../jonasadmin/common/BeanComparator.java | 193 - .../webapp/jonasadmin/common/ItemsForm.java | 86 - .../common/LabelValueByLabelComparator.java | 53 - .../webapp/jonasadmin/common/ModuleItem.java | 104 - .../jonasadmin/common/ModuleItemByName.java | 61 - .../common/ObjectNameComparator.java | 59 - .../webapp/jonasadmin/common/TargetItem.java | 26 - .../jonasadmin/deploy/ApplyDeployAction.java | 86 - .../deploy/ApplyDeployConfirmAction.java | 133 - .../deploy/ApplyDomainDeployAction.java | 140 - .../ApplyDomainDeployConfirmAction.java | 257 -- .../jonasadmin/deploy/ApplyRemoveAction.java | 81 - .../deploy/ApplyRemoveConfirmAction.java | 99 - .../jonasadmin/deploy/ApplyUploadAction.java | 151 - .../jonasadmin/deploy/BaseDeployAction.java | 865 ---- .../webapp/jonasadmin/deploy/DeployForm.java | 246 -- .../jonasadmin/deploy/DomainDeployForm.java | 362 -- .../jonasadmin/deploy/EditDeployAction.java | 88 - .../deploy/EditDomainDeployAction.java | 150 - .../jonasadmin/deploy/EditRemoveAction.java | 82 - .../jonasadmin/deploy/EditUploadAction.java | 70 - .../deploy/OperationInProgressException.java | 38 - .../webapp/jonasadmin/deploy/RemoveForm.java | 182 - .../webapp/jonasadmin/deploy/UploadForm.java | 156 - .../jonasadmin/domain/ApplyClusterAction.java | 76 - .../domain/ApplyJonasServerAction.java | 121 - .../domain/ApplyJonasServersAction.java | 67 - .../ApplyJonasServersConfirmAction.java | 122 - .../ApplyJonasServersConfirmMoveAction.java | 68 - .../domain/CreateClusterAction.java | 56 - .../domain/CreateJonasServerAction.java | 172 - .../webapp/jonasadmin/domain/DomainForm.java | 242 -- .../jonasadmin/domain/EditDomainAction.java | 255 -- .../domain/HaltJonasServerAction.java | 46 - .../jonasadmin/domain/ItemsServersForm.java | 89 - .../jonasadmin/domain/JonasServerItem.java | 77 - .../domain/JonasServersMoveAction.java | 80 - .../webapp/jonasadmin/domain/ModuleItem.java | 50 - .../jonasadmin/domain/NewClusterForm.java | 73 - .../jonasadmin/domain/NewServerForm.java | 189 - .../jonasadmin/domain/StartClusterAction.java | 69 - .../domain/StartClusterDaemonAction.java | 73 - .../domain/StartJonasServerAction.java | 66 - .../domain/StartStandbyJonasServerAction.java | 68 - .../jonasadmin/domain/StopClusterAction.java | 68 - .../domain/StopClusterDaemonAction.java | 72 - .../domain/StopJonasServerAction.java | 74 - .../domain/StopStandbyJonasServerAction.java | 73 - .../ConnectionFactoryEditAction.java | 119 - .../ConnectionFactoryEditForm.java | 181 - .../jonasmqconnect/DestinationAddAction.java | 23 - .../DestinationAddConfirmAction.java | 57 - .../DestinationAddConfirmForm.java | 120 - .../jonasmqconnect/DestinationAddForm.java | 7 - .../DestinationDeleteAction.java | 37 - .../DestinationDeleteConfirmAction.java | 60 - .../DestinationDeleteConfirmForm.java | 115 - .../jonasmqconnect/DestinationDeleteForm.java | 117 - .../jonasmqconnect/DestinationEditAction.java | 154 - .../jonasmqconnect/DestinationEditForm.java | 200 - .../jonasmqconnect/DestinationsAction.java | 84 - .../jonasmqconnect/DestinationsForm.java | 44 - .../jonasmqconnect/JonasMqConnectAction.java | 108 - .../jonasmqconnect/JonasMqConnectForm.java | 197 - .../JonasMqConnectPlatformAction.java | 52 - .../JonasMqConnectPlatformForm.java | 176 - .../jonasmqconnect/MdbEditAction.java | 71 - .../jonasmqconnect/MdbEditForm.java | 221 - .../jonasadmin/jonasmqconnect/MdbsAction.java | 71 - .../jonasadmin/jonasmqconnect/MdbsForm.java | 19 - .../jonasmqconnect/util/ItemDestination.java | 78 - .../jonasmqconnect/util/ItemMdb.java | 72 - .../jonasmqconnect/util/LogUtils.java | 30 - .../jonasmqconnect/util/MqObjectNames.java | 161 - .../util/PropertiesComparator.java | 24 - .../jonasmqconnect/util/PropertiesUtil.java | 180 - .../jonasmqconnect/util/Property.java | 55 - .../jonasserver/BasicJonasServerForm.java | 77 - .../jonasserver/CmiRegistryResource.java | 78 - .../jonasserver/EditJmxServerAction.java | 104 - .../jonasserver/EditJonasServerAction.java | 165 - .../jonasadmin/jonasserver/EditJvmAction.java | 118 - .../jonasserver/EditRegistryAction.java | 104 - .../jonasserver/EditServletServerAction.java | 99 - .../jonasadmin/jonasserver/JmxServerForm.java | 140 - .../jonasserver/JndiResourceForm.java | 111 - .../jonasserver/JndiResourceItem.java | 100 - .../jonasserver/JndiResourcesForm.java | 57 - .../jonasserver/JonasServerForm.java | 170 - .../jonasserver/JonasServerRunGCAction.java | 88 - .../jonasserver/JonasServerStopAction.java | 85 - .../jonasadmin/jonasserver/JvmForm.java | 98 - .../jonasserver/ListRegistryAction.java | 137 - .../jonasserver/ServletServerForm.java | 134 - .../joramplatform/AddJoramReaderAction.java | 48 - .../joramplatform/AddJoramWriterAction.java | 48 - .../joramplatform/ApplyDestinationAction.java | 100 - .../joramplatform/ApplyJoramQueueAction.java | 58 - .../joramplatform/ApplyJoramReaderAction.java | 80 - .../joramplatform/ApplyJoramTopicAction.java | 60 - .../joramplatform/ApplyJoramWriterAction.java | 81 - .../joramplatform/ApplyUserAction.java | 108 - .../CreateJoramDestinationAction.java | 48 - .../joramplatform/CreateJoramUserAction.java | 48 - .../joramplatform/DestinationForm.java | 303 -- .../joramplatform/DestinationItem.java | 75 - .../DestinationItemByNameComparator.java | 46 - .../joramplatform/EditJoramBaseAction.java | 562 --- .../EditJoramDestinationAction.java | 48 - .../EditJoramPlatformAction.java | 145 - .../joramplatform/EditJoramQueueAction.java | 189 - .../EditJoramRemoteServerAction.java | 76 - .../EditJoramResourceAdapterAction.java | 86 - .../joramplatform/EditJoramServerAction.java | 156 - .../joramplatform/EditJoramTopicAction.java | 187 - .../joramplatform/EditJoramUserAction.java | 52 - .../joramplatform/ExportRepository.java | 90 - .../jonasadmin/joramplatform/ItemBase.java | 83 - .../joramplatform/ItemDestination.java | 82 - .../joramplatform/ItemDestinationByName.java | 45 - .../jonasadmin/joramplatform/ItemServer.java | 32 - .../jonasadmin/joramplatform/ItemUser.java | 35 - .../joramplatform/JoramAdapterForm.java | 278 -- .../joramplatform/JoramDestinationForm.java | 101 - .../joramplatform/JoramLocalQueueForm.java | 103 - .../joramplatform/JoramLocalServerForm.java | 109 - .../joramplatform/JoramLocalTopicForm.java | 103 - .../joramplatform/JoramPlatformForm.java | 468 -- .../joramplatform/JoramQueueForm.java | 158 - .../joramplatform/JoramReaderWriterForm.java | 128 - .../joramplatform/JoramRemoteServerForm.java | 81 - .../joramplatform/JoramServersForm.java | 98 - .../joramplatform/JoramTopicForm.java | 121 - .../joramplatform/JoramUserForm.java | 116 - .../joramplatform/MonitoringDestForm.java | 148 - .../joramplatform/ReloadJoramAdmin.java | 100 - .../RemoveConfirmDestinationsAction.java | 109 - .../RemoveConfirmUsersAction.java | 101 - .../joramplatform/RemoveDestinationsForm.java | 74 - .../RemoveJoramDestinationsAction.java | 65 - .../joramplatform/RemoveJoramUsersAction.java | 65 - .../joramplatform/RemoveUsersForm.java | 74 - .../ApplyCatalinaAccessLoggerAction.java | 189 - .../logging/ApplyLoggersAction.java | 92 - .../logging/ApplyLoggersConfirmAction.java | 91 - .../logging/ApplyLoggingJonasAction.java | 87 - .../jonasadmin/logging/BaseLoggerAction.java | 94 - .../logging/CatalinaAccessLogValveForm.java | 247 -- .../jonasadmin/logging/CatalinaValveForm.java | 199 - .../EditCatalinaAccessLoggerAction.java | 154 - .../logging/EditLoggingJonasAction.java | 116 - .../jonasadmin/logging/ListLoggersAction.java | 78 - .../webapp/jonasadmin/logging/LoggerItem.java | 141 - .../jonasadmin/logging/LoggingJonasForm.java | 121 - .../webapp/jonasadmin/logging/TopicLevel.java | 64 - .../logging/ViewLoggingJonasAction.java | 89 - .../logging/ViewLoggingJonasForm.java | 200 - .../mbean/ApplyMbeanFilteringAction.java | 69 - .../mbean/ListJ2eeMBeansAction.java | 82 - .../mbean/ListMBeanAttributesAction.java | 302 -- .../mbean/ListMBeanDetailsAction.java | 91 - .../mbean/ListMBeanOperationsAction.java | 220 - .../mbean/ListMBeanPropertiesAction.java | 129 - .../jonasadmin/mbean/ListMBeansAction.java | 89 - .../mbean/ListOwnerMBeansAction.java | 83 - .../mbean/ListUnknownMBeansAction.java | 82 - .../jonasadmin/mbean/MbeanFilteringForm.java | 118 - .../monitoring/ApplyCmiClusterAction.java | 53 - .../monitoring/ApplyMemoryAction.java | 72 - .../monitoring/ApplyMonitoringAction.java | 75 - .../monitoring/ApplyStackDumpAction.java | 61 - .../monitoring/BaseClusterForm.java | 56 - .../monitoring/ClusterdAttribute.java | 92 - .../monitoring/CmiClusterAction.java | 62 - .../monitoring/CmiMemberAction.java | 54 - .../jonasadmin/monitoring/CmiMemberForm.java | 26 - .../monitoring/DaemonProxyClusterAction.java | 344 -- .../monitoring/DaemonProxyClusterForm.java | 331 -- .../monitoring/DaemonProxyMemberAction.java | 40 - .../monitoring/DaemonProxyMemberForm.java | 7 - .../monitoring/DisplayNodeInfoAction.java | 278 -- .../monitoring/EditMemoryAction.java | 96 - .../monitoring/EditMonitoringAction.java | 76 - .../monitoring/EditStackDumpAction.java | 56 - .../monitoring/EjbHaClusterAction.java | 50 - .../monitoring/EjbHaClusterForm.java | 45 - .../monitoring/EjbHaMemberAction.java | 54 - .../monitoring/EjbHaMemberForm.java | 29 - .../monitoring/JkClusterAction.java | 64 - .../jonasadmin/monitoring/JkClusterForm.java | 46 - .../jonasadmin/monitoring/JkMemberAction.java | 63 - .../jonasadmin/monitoring/JkMemberForm.java | 94 - .../monitoring/JoramClusterAction.java | 59 - .../monitoring/JoramClusterForm.java | 29 - .../monitoring/JoramMemberAction.java | 40 - .../monitoring/JoramMemberForm.java | 7 - .../monitoring/LogicalClusterAction.java | 59 - .../monitoring/LogicalClusterForm.java | 29 - .../monitoring/LogicalMemberAction.java | 40 - .../monitoring/LogicalMemberForm.java | 7 - .../jonasadmin/monitoring/MemoryForm.java | 157 - .../monitoring/MemoryGraphServlet.java | 232 - .../jonasadmin/monitoring/MonitoringForm.java | 84 - .../jonasadmin/monitoring/NodeInfoForm.java | 587 --- .../monitoring/PingAllJonasServersAction.java | 123 - .../jonasadmin/monitoring/StackDumpForm.java | 66 - .../StartAllJonasServersAction.java | 75 - .../monitoring/StopAllJonasServersAction.java | 75 - .../monitoring/TomcatClusterAction.java | 59 - .../monitoring/TomcatClusterForm.java | 84 - .../monitoring/TomcatMemberAction.java | 68 - .../monitoring/TomcatMemberForm.java | 141 - .../monitoring/graph/ServerGraphForm.java | 151 - .../monitoring/graph/ServerGraphsAction.java | 255 -- .../graph/ServerThreadCountAction.java | 78 - .../graph/ServerTransactionsCountAction.java | 79 - .../servlets/ServerCurrentTxServlet.java | 159 - .../graph/servlets/ThreadCountServlet.java | 143 - .../server/BegunTransactionsServlet.java | 154 - ...BytesReceivedByConnectorTomcatServlet.java | 151 - .../BytesSentByConnectorTomcatServlet.java | 188 - ...onnectionFailuresJCAConnectionServlet.java | 146 - .../ConnectionLeaksJCAConnectionServlet.java | 145 - .../ConnectionLeaksJDBCResourceServlet.java | 143 - .../CurrentBusyJCAConnectionServlet.java | 145 - .../CurrentBusyJDBCResourceServlet.java | 143 - .../server/CurrentNumberOfEJBServlet.java | 154 - .../CurrentNumberOfEntityBeanServlet.java | 154 - .../server/CurrentNumberOfMDBServlet.java | 154 - .../server/CurrentNumberOfSBFServlet.java | 154 - .../server/CurrentNumberOfSBLServlet.java | 154 - .../server/CurrentUsedMemoryServlet.java | 37 - .../servlets/server/EditMemoryServlet.java | 156 - .../ErrorCountByConnectorTomcatServlet.java | 137 - .../server/JmsQMsgDeliverServlet.java | 147 - .../server/JmsQMsgReceiveServlet.java | 147 - .../server/JmsTopicMsgDeliverServlet.java | 147 - .../server/JmsTopicMsgReceiveServlet.java | 147 - .../graph/servlets/server/LoadCPUServlet.java | 36 - ...rocessingTimeByConnectorTomcatServlet.java | 138 - .../RejectedOpenJCAConnectionServlet.java | 145 - .../RejectedOpenJDBCResourceServlet.java | 145 - .../RequestCountByConnectorTomcatServlet.java | 138 - .../ServedOpenJCAConnectionServlet.java | 146 - .../server/ServedOpenJDBCResourceServlet.java | 144 - .../ThreadBusyConnectorTomcatServlet.java | 142 - .../TotalCommittedTransactionsServlet.java | 161 - .../TotalExpiredTransactionsServlet.java | 157 - .../TotalRolledbackTransactionsServlet.java | 160 - .../WaiterCountJCAConnectionServlet.java | 149 - .../WaiterCountJDBCResourceServlet.java | 144 - .../graph/servlets/server/WorkersServlet.java | 36 - .../monitoring/graph/utils/GraphUtils.java | 231 - .../ApplyConfirmDestinationsAction.java | 78 - .../ApplyDatasourcePropertiesAction.java | 125 - .../resource/ApplyDestinationAction.java | 97 - .../resource/ApplyDestinationsAction.java | 65 - .../ApplyMailFactoryPropertiesAction.java | 86 - ...lyMimePartMailFactoryPropertiesAction.java | 79 - ...plySessionMailFactoryPropertiesAction.java | 80 - .../resource/DatasourcePropertiesForm.java | 292 -- .../jonasadmin/resource/DestinationForm.java | 101 - .../jonasadmin/resource/DestinationItem.java | 75 - .../DestinationItemByNameComparator.java | 46 - .../EditDatasourcePropertiesAction.java | 138 - .../resource/EditDestinationAction.java | 58 - .../EditMailFactoryPropertiesAction.java | 154 - ...itMimePartMailFactoryPropertiesAction.java | 91 - ...ditSessionMailFactoryPropertiesAction.java | 91 - .../resource/ItemsDestinationsForm.java | 74 - .../resource/ListDatasourcesAction.java | 88 - .../resource/ListJmsResourcesAction.java | 128 - .../resource/ListMailFactoriesAction.java | 94 - .../jonasadmin/resource/MailFactoryItem.java | 75 - .../resource/MailFactoryPropertiesForm.java | 185 - .../resource/SaveDestinationAction.java | 76 - .../ApplyCreateResourceAdapterAction.java | 228 - ...lyTemplateCreateResourceAdapterAction.java | 79 - .../CreateResourceAdapterAction.java | 79 - .../CreateResourceAdapterForm.java | 688 --- .../ApplyConfirmMemoryRealmAction.java | 127 - .../security/ApplyConfirmRealmsAction.java | 96 - .../security/ApplyDatasourceRealmAction.java | 124 - .../security/ApplyGroupMemoryRealmAction.java | 130 - .../security/ApplyLdapRealmAction.java | 140 - .../security/ApplyMemoryRealmAction.java | 101 - .../security/ApplyRealmsAction.java | 95 - .../security/ApplyRoleMemoryRealmAction.java | 100 - .../security/ApplyUserMemoryRealmAction.java | 162 - .../security/BaseMemoryRealmAction.java | 222 - .../security/BaseSecurityAction.java | 91 - .../jonasadmin/security/ClearCacheAction.java | 84 - .../security/DatasourceRealmForm.java | 180 - .../security/EditDatasourceRealmAction.java | 122 - .../security/EditGroupMemoryRealmAction.java | 88 - .../security/EditLdapRealmAction.java | 129 - .../security/EditMemoryRealmAction.java | 98 - .../security/EditMemoryRealmGroupsAction.java | 82 - .../security/EditMemoryRealmRolesAction.java | 82 - .../security/EditMemoryRealmUsersAction.java | 82 - .../EditNewGroupMemoryRealmAction.java | 81 - .../EditNewRoleMemoryRealmAction.java | 84 - .../EditNewUserMemoryRealmAction.java | 85 - .../security/EditRoleMemoryRealmAction.java | 92 - .../EditSecurityCatalinaRealmAction.java | 98 - .../security/EditUserMemoryRealmAction.java | 89 - .../jonasadmin/security/FactoryRealmForm.java | 111 - .../security/GroupMemoryRealmForm.java | 192 - .../security/ItemsMemoryRealmForm.java | 97 - .../jonasadmin/security/ItemsRealmsForm.java | 99 - .../jonasadmin/security/LdapRealmForm.java | 327 -- .../jonasadmin/security/ListRealmsAction.java | 134 - .../jonasadmin/security/MemoryRealmForm.java | 104 - .../security/RoleMemoryRealmForm.java | 106 - .../jonasadmin/security/SaveRealmAction.java | 86 - .../security/UserMemoryRealmForm.java | 302 -- .../service/EditServiceSecurityAction.java | 98 - .../service/ListServicesAction.java | 113 - .../webapp/jonasadmin/service/ModuleForm.java | 103 - .../jonasadmin/service/ServiceItem.java | 124 - .../service/ServiceItemByNameComparator.java | 49 - .../service/StartJonasServiceAction.java | 71 - .../service/StopJonasServiceAction.java | 71 - .../ApplyContainersStatisticAction.java | 72 - .../ApplyEjbContainersStatisticAction.java | 107 - .../container/ApplyWebAppCatalinaAction.java | 198 - .../container/ApplyWebAppJettyAction.java | 134 - .../ApplyWebAppVirtualCatalinaAction.java | 97 - .../container/ApplyWebsConfirmAction.java | 97 - .../service/container/BaseWebAppAction.java | 420 -- .../service/container/ContainerForm.java | 293 -- .../service/container/ContainerItem.java | 125 - .../container/ContainerItemByFile.java | 58 - .../jonasadmin/service/container/EarForm.java | 222 - .../container/EditContainerAction.java | 298 -- .../EditContainerStatisticAction.java | 72 - .../service/container/EditEarAction.java | 254 -- .../container/EditEjbCsStatisticAction.java | 121 - .../service/container/EditWarAction.java | 86 - .../service/container/EditWebAppAction.java | 63 - .../container/EditWebAppCatalinaAction.java | 110 - .../container/EditWebAppJettyAction.java | 97 - .../container/EjbContainersStatisticForm.java | 427 -- .../container/ListAppContainersAction.java | 106 - .../container/ListContainersAction.java | 114 - .../container/ListWebContainersAction.java | 164 - .../service/container/SelectedItemsForm.java | 85 - .../container/ViewContainerAction.java | 72 - .../container/ViewContainerEjbsAction.java | 73 - .../jonasadmin/service/container/WarForm.java | 183 - .../service/container/WebAppCatalinaForm.java | 195 - .../service/container/WebAppForm.java | 167 - .../service/container/WebAppItem.java | 158 - .../container/WebAppItemByPathContext.java | 49 - .../service/container/WebAppJettyForm.java | 145 - .../container/WebAppVirtualCatalinaForm.java | 141 - .../service/db/ApplyDatasourceAction.java | 112 - .../service/db/ApplyDatasourceStatAction.java | 97 - .../jonasadmin/service/db/DatasourceForm.java | 485 --- .../jonasadmin/service/db/DatasourceItem.java | 92 - .../db/DatasourceItemByNameComparator.java | 49 - .../service/db/EditDatasourceAction.java | 146 - .../service/db/EditDatasourceStatAction.java | 115 - .../service/db/ListDatabasesAction.java | 110 - .../ApplyDepmonitorConfigurationAction.java | 54 - .../depmonitor/DepMonitorServiceForm.java | 63 - .../EditServiceDepmonitorAction.java | 58 - .../discovery/DiscoveryServiceForm.java | 86 - .../DiscoveryServiceStartMasterAction.java | 97 - .../discovery/EditServiceDiscoveryAction.java | 71 - .../ApplyEjbSessionConfigurationAction.java | 91 - .../jonasadmin/service/ejb/EditEjbAction.java | 385 -- .../service/ejb/EditEjbEntityAction.java | 91 - .../service/ejb/EditEjbMessageAction.java | 80 - .../service/ejb/EditEjbSessionAction.java | 106 - .../service/ejb/EditEjbSessionSblAction.java | 101 - .../jonasadmin/service/ejb/EjbDependency.java | 85 - .../jonasadmin/service/ejb/EjbEntityForm.java | 234 - .../jonasadmin/service/ejb/EjbForm.java | 806 ---- .../service/ejb/EjbMessageForm.java | 80 - .../service/ejb/EjbSessionForm.java | 180 - .../service/ejb/ExecuteEjbAction.java | 131 - .../webapp/jonasadmin/service/jms/CfForm.java | 102 - .../service/jms/EditJmsServiceAction.java | 98 - .../service/jms/JmsServiceForm.java | 96 - .../jms/ListConnectionFactoriesAction.java | 75 - .../service/jms/ListQueuesAction.java | 78 - .../service/jms/ListTopicsAction.java | 76 - .../jms/PresentConnectionFactoryAction.java | 126 - .../service/jms/PresentQueueAction.java | 130 - .../service/jms/PresentTopicAction.java | 126 - .../jonasadmin/service/jms/QueueForm.java | 112 - .../jonasadmin/service/jms/TopicForm.java | 102 - .../jtm/ApplyConfirmXaResourceAction.java | 157 - .../jtm/ApplyJtmConfigurationAction.java | 85 - .../service/jtm/EditJtmServiceAction.java | 119 - .../jtm/EditTransactionMonitorAction.java | 115 - .../jtm/EditTransactionRecoveryAction.java | 116 - .../jtm/EditTransactionStatisticAction.java | 89 - .../service/jtm/ItemsXaResourceForm.java | 89 - .../service/jtm/JtmServiceForm.java | 141 - .../service/jtm/JtmServiceMonitorForm.java | 63 - .../service/jtm/JtmServiceRecoveryForm.java | 64 - .../service/jtm/JtmServiceStatisticForm.java | 101 - .../service/jtm/JtmServiceXAResourceForm.java | 65 - .../service/jtm/ListXaResourceAction.java | 144 - .../service/jtm/ResetCountersAction.java | 79 - .../service/jtm/ResetRecoveryAction.java | 114 - .../service/jtm/ResetTransactionsAction.java | 113 - .../webapp/jonasadmin/service/jtm/TxItem.java | 94 - .../jonasadmin/service/jtm/TxRecovery.java | 103 - .../jonasadmin/service/jtm/TxXaresource.java | 120 - .../mail/ApplyMimePartMailFactoryAction.java | 116 - .../mail/ApplySessionMailFactoryAction.java | 101 - .../service/mail/EditMailFactoryAction.java | 124 - .../service/mail/EditMailServiceAction.java | 83 - .../mail/EditMimePartMailFactoryAction.java | 95 - .../mail/EditSessionMailFactoryAction.java | 93 - .../mail/ListMimePartMailFactoriesAction.java | 94 - .../mail/ListSessionMailFactoriesAction.java | 94 - .../service/mail/MailFactoryForm.java | 192 - .../service/mail/MailFactoryItem.java | 66 - .../service/mail/MailServiceForm.java | 95 - .../resource/ApplyResourceAdapterAction.java | 117 - .../ApplyResourceAdapterCFAction.java | 116 - .../resource/EditResourceAdapterAOAction.java | 104 - .../resource/EditResourceAdapterASAction.java | 104 - .../resource/EditResourceAdapterAction.java | 244 -- .../resource/EditResourceAdapterCFAction.java | 149 - .../EditResourceAdapterCFStatAction.java | 111 - .../EditResourceAdapterStatAction.java | 112 - .../resource/ListResourceAdaptersAction.java | 106 - .../resource/ResourceAdapterAOForm.java | 126 - .../resource/ResourceAdapterASForm.java | 122 - .../resource/ResourceAdapterCFForm.java | 445 -- .../service/resource/ResourceAdapterForm.java | 557 --- .../service/resource/ResourceItem.java | 109 - .../service/resource/ResourceItemByFile.java | 58 - .../EditSmartclientServiceAction.java | 78 - .../smartclient/SmartclientServiceForm.java | 89 - .../ApplyVersioningConfigurationAction.java | 72 - .../EditVersioningServiceAction.java | 86 - .../versioning/VersioningServiceForm.java | 106 - .../webservice/HandlersDetailsAction.java | 136 - .../webservice/ListWebServiceAction.java | 79 - .../PortComponentsDetailsAction.java | 103 - .../webservice/ViewHandlersAction.java | 105 - .../webservice/ViewPortComponentsAction.java | 88 - .../webservice/WebServiceDetailsAction.java | 83 - .../webservice/provider/JOnASProvider.java | 327 -- .../provider/element/HandlerItem.java | 280 -- .../provider/element/InitParamItem.java | 132 - .../provider/element/PortComponentItem.java | 243 -- .../provider/element/ServiceImplBean.java | 104 - .../element/WebServiceDescriptionItem.java | 255 -- .../ApplyWorkcleanerConfigurationAction.java | 71 - .../EditWorkcleanerServiceAction.java | 76 - .../workcleaner/WorkcleanerServiceForm.java | 88 - .../ApplyWorkmanagerConfigurationAction.java | 70 - .../EditWorkmanagerServiceAction.java | 52 - .../workmanager/WorkmanagerServiceForm.java | 73 - .../xml/ApplyArchiveConfigAction.java | 422 -- .../jonasadmin/xml/ArchiveConfigAction.java | 130 - .../xml/ArchiveConfigAdvancedAction.java | 121 - .../jonasadmin/xml/ArchiveConfigForm.java | 421 -- .../xml/ArchiveConfigSelectAction.java | 80 - .../jonasadmin/xml/ArchiveUtilAction.java | 99 - .../webapp/jonasadmin/xml/XMLToFormUtil.java | 448 -- .../xml/xs/AttributeRestrictions.java | 71 - .../xml/xs/ElementRestrictions.java | 124 - .../jonasadmin/xml/xs/SchemaRestrictions.java | 71 - .../xml/xs/SchemaRestrictionsFactory.java | 42 - .../xs/hardcoded/HCAttributeRestrictions.java | 107 - .../xs/hardcoded/HCElementRestrictions.java | 199 - .../xs/hardcoded/HCSchemaRestrictions.java | 520 --- .../ow2/jonas/webapp/taglib/GridBaseTag.java | 180 - .../ow2/jonas/webapp/taglib/GridColTag.java | 104 - .../ow2/jonas/webapp/taglib/GridRowTag.java | 117 - .../jonas/webapp/taglib/GridTableBaseTag.java | 132 - .../org/ow2/jonas/webapp/taglib/GridTag.java | 206 - .../jonas/webapp/taglib/JonasButtonTag.java | 361 -- .../webapp/taglib/JonasGridColTitleTag.java | 80 - .../jonas/webapp/taglib/JonasGridNameTag.java | 91 - .../webapp/taglib/JonasGridNameTitleTag.java | 81 - .../webapp/taglib/JonasGridRowTitleTag.java | 97 - .../ow2/jonas/webapp/taglib/JonasGridTag.java | 56 - .../webapp/taglib/JonasGridValueTag.java | 55 - .../webapp/taglib/JonasGridValueTitleTag.java | 80 - .../jonas/webapp/taglib/JonasSubmitTag.java | 141 - .../jonas/webapp/taglib/LabelValueBean.java | 123 - .../webapp/taglib/PanelSeparatorTag.java | 64 - .../org/ow2/jonas/webapp/taglib/PanelTag.java | 103 - .../jonas/webapp/taglib/RefreshTreeTag.java | 77 - .../org/ow2/jonas/webapp/taglib/TabTag.java | 344 -- .../org/ow2/jonas/webapp/taglib/TabsTag.java | 426 -- .../jonas/webapp/taglib/TitleContentTag.java | 330 -- .../ow2/jonas/webapp/taglib/TreeBuilder.java | 81 - .../ow2/jonas/webapp/taglib/TreeControl.java | 337 -- .../jonas/webapp/taglib/TreeControlNode.java | 399 -- .../webapp/taglib/TreeControlRenderTag.java | 375 -- .../jonas/webapp/taglib/TreeControlTag.java | 557 --- .../jonas/webapp/taglib/WhereAreYouTag.java | 111 - .../ow2/jonas/webapp/taglib/XMLEditorTag.java | 128 - .../ow2/jonas/webapp/taglib/XmlFileTag.java | 407 -- .../ApplicationResources.properties | 1921 --------- .../ApplicationResources_fr.properties | 18 - .../resourceadapter/jonas-ra-xml.vm | 57 - .../jonasadmin/resourceadapter/ra-xml.vm | 13 - .../jonas-admin/src/main/webapp/TestFont.jsp | 216 - .../src/main/webapp/TestNavigator.jsp | 51 - .../src/main/webapp/WEB-INF/controls.tld | 116 - .../webapp/WEB-INF/flex/services-config.xml | 293 -- .../webapp/WEB-INF/granite/granite-config.xml | 31 - .../src/main/webapp/WEB-INF/jonas-web.xml | 13 - .../src/main/webapp/WEB-INF/sj.tld | 1262 ------ .../src/main/webapp/WEB-INF/struts-bean.tld | 382 -- .../src/main/webapp/WEB-INF/struts-config.xml | 2134 ---------- .../src/main/webapp/WEB-INF/struts-html.tld | 3032 ------------- .../src/main/webapp/WEB-INF/struts-logic.tld | 652 --- .../main/webapp/WEB-INF/struts-template.tld | 73 - .../src/main/webapp/WEB-INF/web.xml | 575 --- .../jonas-admin/src/main/webapp/begin.jsp | 5 - .../jonas-admin/src/main/webapp/blank.jsp | 24 - .../src/main/webapp/catalina/connector.jsp | 410 -- .../src/main/webapp/catalina/connectors.jsp | 99 - .../webapp/catalina/connectorsConfirm.jsp | 60 - .../DaemonProxyClusterDisplayServerConfig.jsp | 129 - .../src/main/webapp/clusterd/addServerCd.jsp | 141 - .../clusterd/daemonProxyClusterModify.jsp | 94 - .../main/webapp/clusterd/graph/vmMemory.jsp | 76 - .../main/webapp/clusterd/serversConfirm.jsp | 64 - .../main/webapp/cmi/displayCmiClusterInfo.jsp | 69 - .../src/main/webapp/cmi/displayCmiInfo.jsp | 159 - .../main/webapp/cmi/displayCmiObjectInfo.jsp | 270 -- .../webapp/cmi/displayCmiProtocolInfo.jsp | 70 - .../main/webapp/cmi/displayCmiServerInfo.jsp | 85 - .../src/main/webapp/common/begin.jsp | 7 - .../src/main/webapp/common/end.jsp | 0 .../src/main/webapp/deploy/deploy.jsp | 91 - .../src/main/webapp/deploy/deployConfirm.jsp | 109 - .../src/main/webapp/deploy/domainDeploy.jsp | 164 - .../webapp/deploy/domainDeployConfirm.jsp | 125 - .../webapp/deploy/domainDeployProgress.jsp | 95 - .../webapp/deploy/domainUndeployConfirm.jsp | 92 - .../src/main/webapp/deploy/remove.jsp | 75 - .../src/main/webapp/deploy/removeConfirm.jsp | 95 - .../src/main/webapp/deploy/upload.jsp | 63 - .../src/main/webapp/deploy/uploadResult.jsp | 64 - .../src/main/webapp/domain/addCluster.jsp | 51 - .../src/main/webapp/domain/addServer.jsp | 86 - .../main/webapp/domain/addServerCluster.jsp | 83 - .../src/main/webapp/domain/clustercmi.jsp | 110 - .../src/main/webapp/domain/domain.jsp | 562 --- .../src/main/webapp/domain/serversConfirm.jsp | 64 - .../main/webapp/domain/serversConfirmMove.jsp | 73 - .../jonas-admin/src/main/webapp/end.jsp | 0 .../jonas-admin/src/main/webapp/error.jsp | 36 - .../jonas-admin/src/main/webapp/framemain.jsp | 19 - .../src/main/webapp/frameright.jsp | 19 - .../src/main/webapp/globalerror.jsp | 44 - .../main/webapp/images/button/GraphButton.png | Bin 1160 -> 0 bytes .../src/main/webapp/images/button/button.png | Bin 3465 -> 0 bytes .../src/main/webapp/images/dot.gif | Bin 43 -> 0 bytes .../src/main/webapp/images/dot1.gif | Bin 43 -> 0 bytes .../src/main/webapp/images/dot5.gif | Bin 45 -> 0 bytes .../main/webapp/images/icon/BalJonasGreen.gif | Bin 608 -> 0 bytes .../main/webapp/images/icon/BalJonasTree.gif | Bin 711 -> 0 bytes .../src/main/webapp/images/icon/Database.gif | Bin 290 -> 0 bytes .../main/webapp/images/icon/Datasource.gif | Bin 283 -> 0 bytes .../webapp/images/icon/FolderBalJonas.gif | Bin 282 -> 0 bytes .../main/webapp/images/icon/JonasQuestion.gif | Bin 581 -> 0 bytes .../src/main/webapp/images/icon/bean.gif | Bin 153 -> 0 bytes .../src/main/webapp/images/icon/bullet.png | Bin 3169 -> 0 bytes .../src/main/webapp/images/icon/caution.png | Bin 509 -> 0 bytes .../src/main/webapp/images/icon/connector.gif | Bin 145 -> 0 bytes .../main/webapp/images/icon/connectors.gif | Bin 166 -> 0 bytes .../src/main/webapp/images/icon/deploy.gif | Bin 122 -> 0 bytes .../webapp/images/icon/deployDomainManage.gif | Bin 163 -> 0 bytes .../webapp/images/icon/deployDomain_ear.gif | Bin 281 -> 0 bytes .../webapp/images/icon/deployDomain_jar.gif | Bin 209 -> 0 bytes .../webapp/images/icon/deployDomain_rar.gif | Bin 266 -> 0 bytes .../webapp/images/icon/deployDomain_war.gif | Bin 264 -> 0 bytes .../webapp/images/icon/deploy_datasource.gif | Bin 257 -> 0 bytes .../main/webapp/images/icon/deploy_ear.gif | Bin 270 -> 0 bytes .../main/webapp/images/icon/deploy_jar.gif | Bin 187 -> 0 bytes .../main/webapp/images/icon/deploy_rar.gif | Bin 241 -> 0 bytes .../main/webapp/images/icon/deploy_war.gif | Bin 252 -> 0 bytes .../src/main/webapp/images/icon/deployed.gif | Bin 166 -> 0 bytes .../main/webapp/images/icon/deployed_not.gif | Bin 232 -> 0 bytes .../main/webapp/images/icon/domain_jonas.gif | Bin 652 -> 0 bytes .../src/main/webapp/images/icon/ear.gif | Bin 240 -> 0 bytes .../src/main/webapp/images/icon/help.gif | Bin 1060 -> 0 bytes .../src/main/webapp/images/icon/info.png | Bin 1002 -> 0 bytes .../src/main/webapp/images/icon/jar.gif | Bin 227 -> 0 bytes .../src/main/webapp/images/icon/jms.gif | Bin 111 -> 0 bytes .../main/webapp/images/icon/jms_connector.gif | Bin 158 -> 0 bytes .../src/main/webapp/images/icon/jms_queue.gif | Bin 117 -> 0 bytes .../src/main/webapp/images/icon/jms_topic.gif | Bin 123 -> 0 bytes .../main/webapp/images/icon/logger_http.gif | Bin 362 -> 0 bytes .../main/webapp/images/icon/logger_jonas.gif | Bin 271 -> 0 bytes .../src/main/webapp/images/icon/loggers.gif | Bin 103 -> 0 bytes .../src/main/webapp/images/icon/mail.gif | Bin 151 -> 0 bytes .../src/main/webapp/images/icon/mail_mime.gif | Bin 137 -> 0 bytes .../main/webapp/images/icon/mail_session.gif | Bin 98 -> 0 bytes .../src/main/webapp/images/icon/mbean.gif | Bin 230 -> 0 bytes .../main/webapp/images/icon/mbeandomain.gif | Bin 585 -> 0 bytes .../src/main/webapp/images/icon/mbeans.gif | Bin 356 -> 0 bytes .../src/main/webapp/images/icon/mbeantype.gif | Bin 357 -> 0 bytes .../main/webapp/images/icon/monitoring.gif | Bin 126 -> 0 bytes .../src/main/webapp/images/icon/protocol.gif | Bin 109 -> 0 bytes .../webapp/images/icon/resourceAdapter.gif | Bin 162 -> 0 bytes .../src/main/webapp/images/icon/resources.gif | Bin 119 -> 0 bytes .../src/main/webapp/images/icon/security.gif | Bin 114 -> 0 bytes .../webapp/images/icon/security_database.gif | Bin 254 -> 0 bytes .../main/webapp/images/icon/security_ldap.gif | Bin 257 -> 0 bytes .../webapp/images/icon/security_memory.gif | Bin 245 -> 0 bytes .../images/icon/service_application.gif | Bin 263 -> 0 bytes .../webapp/images/icon/service_database.gif | Bin 244 -> 0 bytes .../webapp/images/icon/service_discovery.png | Bin 691 -> 0 bytes .../main/webapp/images/icon/service_ejb.gif | Bin 176 -> 0 bytes .../main/webapp/images/icon/service_jms.gif | Bin 132 -> 0 bytes .../main/webapp/images/icon/service_mail.gif | Bin 164 -> 0 bytes .../webapp/images/icon/service_resource.gif | Bin 183 -> 0 bytes .../webapp/images/icon/service_security.gif | Bin 138 -> 0 bytes .../images/icon/service_smartclient.gif | Bin 240 -> 0 bytes .../images/icon/service_transaction.gif | Bin 137 -> 0 bytes .../webapp/images/icon/service_versioning.gif | Bin 237 -> 0 bytes .../main/webapp/images/icon/service_web.gif | Bin 255 -> 0 bytes .../images/icon/service_workcleaner.gif | Bin 356 -> 0 bytes .../images/icon/service_workmanager.gif | Bin 111 -> 0 bytes .../src/main/webapp/images/icon/services.gif | Bin 110 -> 0 bytes .../src/main/webapp/images/icon/tag_blue.gif | Bin 118 -> 0 bytes .../src/main/webapp/images/icon/tag_green.gif | Bin 118 -> 0 bytes .../src/main/webapp/images/icon/war.gif | Bin 225 -> 0 bytes .../src/main/webapp/images/jonasAdmin.png | Bin 8993 -> 0 bytes .../main/webapp/images/logo/JonasSadSmall.png | Bin 8029 -> 0 bytes .../images/logo/JonasSadSmall_Orange.jpg | Bin 4775 -> 0 bytes .../webapp/images/logo/JonasSmall_White.jpg | Bin 9625 -> 0 bytes .../main/webapp/images/logo/balJonasAdmin.png | Bin 26496 -> 0 bytes .../webapp/images/logo/balJonasAdminLogin.png | Bin 14228 -> 0 bytes .../main/webapp/images/logo/jonasAdmin.png | Bin 49666 -> 0 bytes .../webapp/images/logo/jonasAdminModified.png | Bin 79467 -> 0 bytes .../images/logo/jonasAdminWelcomeMessage.png | Bin 7750 -> 0 bytes .../src/main/webapp/images/logo/logoOW2.png | Bin 3608 -> 0 bytes .../src/main/webapp/images/logo/tableftF.gif | Bin 377 -> 0 bytes .../src/main/webapp/images/logo/tabrightF.gif | Bin 2095 -> 0 bytes .../src/main/webapp/images/tree/line.gif | Bin 68 -> 0 bytes .../main/webapp/images/tree/line_first.gif | Bin 67 -> 0 bytes .../src/main/webapp/images/tree/line_last.gif | Bin 67 -> 0 bytes .../main/webapp/images/tree/line_middle.gif | Bin 70 -> 0 bytes .../main/webapp/images/tree/node_close.gif | Bin 88 -> 0 bytes .../webapp/images/tree/node_close_first.gif | Bin 91 -> 0 bytes .../webapp/images/tree/node_close_last.gif | Bin 89 -> 0 bytes .../webapp/images/tree/node_close_middle.gif | Bin 90 -> 0 bytes .../src/main/webapp/images/tree/node_open.gif | Bin 82 -> 0 bytes .../webapp/images/tree/node_open_first.gif | Bin 85 -> 0 bytes .../webapp/images/tree/node_open_last.gif | Bin 85 -> 0 bytes .../webapp/images/tree/node_open_middle.gif | Bin 87 -> 0 bytes .../src/main/webapp/images/tree/noline.gif | Bin 58 -> 0 bytes .../jonas-admin/src/main/webapp/index.jsp | 4 - .../jonasmqconnect/ConnectionFactoryEdit.jsp | 92 - .../webapp/jonasmqconnect/DestinationAdd.jsp | 88 - .../jonasmqconnect/DestinationAddConfirm.jsp | 16 - .../jonasmqconnect/DestinationDelete.jsp | 86 - .../DestinationDeleteConfirm.jsp | 16 - .../webapp/jonasmqconnect/DestinationEdit.jsp | 131 - .../webapp/jonasmqconnect/Destinations.jsp | 100 - .../webapp/jonasmqconnect/JonasMqConnect.jsp | 189 - .../jonasmqconnect/JonasMqConnectPlatform.jsp | 47 - .../main/webapp/jonasmqconnect/MdbEdit.jsp | 53 - .../src/main/webapp/jonasmqconnect/Mdbs.jsp | 57 - .../src/main/webapp/jonasserver/jmxserver.jsp | 64 - .../main/webapp/jonasserver/jonasserver.jsp | 86 - .../main/webapp/jonasserver/jonasversions.jsp | 45 - .../src/main/webapp/jonasserver/jvm.jsp | 48 - .../main/webapp/jonasserver/listRegistry.jsp | 105 - .../src/main/webapp/jonasserver/registry.jsp | 136 - .../main/webapp/jonasserver/servletServer.jsp | 111 - .../main/webapp/joramplatform/addreader.jsp | 110 - .../main/webapp/joramplatform/addwriter.jsp | 110 - .../joramplatform/createdestination.jsp | 89 - .../main/webapp/joramplatform/createuser.jsp | 81 - .../webapp/joramplatform/joramadapter.jsp | 67 - .../joramplatform/joramdestinations.jsp | 138 - .../joramplatform/joramdeststatistics.jsp | 78 - .../webapp/joramplatform/joramplatform.jsp | 191 - .../main/webapp/joramplatform/joramqueue.jsp | 170 - .../joramplatform/joramqueuereaders.jsp | 130 - .../joramplatform/joramqueuewriters.jsp | 130 - .../joramplatform/joramremotedestinations.jsp | 133 - .../joramplatform/joramremoteserver.jsp | 44 - .../webapp/joramplatform/joramservers.jsp | 93 - .../main/webapp/joramplatform/joramtopic.jsp | 141 - .../joramplatform/joramtopicreaders.jsp | 130 - .../joramplatform/joramtopicwriters.jsp | 131 - .../main/webapp/joramplatform/joramusers.jsp | 93 - .../main/webapp/joramplatform/joramxml.jsp | 30 - .../main/webapp/joramplatform/queueUsedBy.jsp | 77 - .../removeDestinationsConfirm.jsp | 56 - .../joramplatform/removeUsersConfirm.jsp | 56 - .../main/webapp/joramplatform/topicUsedBy.jsp | 77 - .../webapp/logging/catalinaAccessLogger.jsp | 159 - .../src/main/webapp/logging/loggers.jsp | 90 - .../main/webapp/logging/loggersConfirm.jsp | 63 - .../src/main/webapp/logging/loggingJonas.jsp | 66 - .../src/main/webapp/logging/loggingView.jsp | 83 - .../jonas-admin/src/main/webapp/login.jsp | 113 - .../src/main/webapp/mbean/listJ2eeMBeans.jsp | 42 - .../main/webapp/mbean/listMBeanAttributes.jsp | 95 - .../main/webapp/mbean/listMBeanOperations.jsp | 80 - .../main/webapp/mbean/listMBeanProperties.jsp | 43 - .../src/main/webapp/mbean/listMBeans.jsp | 55 - .../src/main/webapp/mbean/listOwnerMBeans.jsp | 40 - .../main/webapp/mbean/listUnknownMBeans.jsp | 38 - .../src/main/webapp/monitoring/cmiCluster.jsp | 100 - .../src/main/webapp/monitoring/cmiMember.jsp | 36 - .../webapp/monitoring/daemonProxyCluster.jsp | 775 ---- .../webapp/monitoring/daemonProxyMember.jsp | 17 - .../main/webapp/monitoring/displaynode.jsp | 715 ---- .../main/webapp/monitoring/ejbHaCluster.jsp | 60 - .../main/webapp/monitoring/ejbHaMember.jsp | 38 - .../webapp/monitoring/graph/serverGraphs.jsp | 88 - .../graph/serverTransactionCount.jsp | 75 - .../src/main/webapp/monitoring/jkCluster.jsp | 52 - .../src/main/webapp/monitoring/jkMember.jsp | 81 - .../main/webapp/monitoring/joramCluster.jsp | 36 - .../main/webapp/monitoring/joramMember.jsp | 17 - .../main/webapp/monitoring/logicalCluster.jsp | 38 - .../main/webapp/monitoring/logicalMember.jsp | 17 - .../src/main/webapp/monitoring/memory.jsp | 78 - .../src/main/webapp/monitoring/monitoring.jsp | 56 - .../src/main/webapp/monitoring/stackDump.jsp | 30 - .../main/webapp/monitoring/tomcatCluster.jsp | 87 - .../main/webapp/monitoring/tomcatMember.jsp | 148 - .../webapp/resource/createDestination.jsp | 72 - .../webapp/resource/datasourceProperties.jsp | 221 - .../src/main/webapp/resource/datasources.jsp | 81 - .../main/webapp/resource/deployDatasource.jsp | 77 - .../webapp/resource/deployMailFactory.jsp | 77 - .../webapp/resource/destinationsConfirm.jsp | 54 - .../src/main/webapp/resource/jmsResources.jsp | 98 - .../main/webapp/resource/mailFactories.jsp | 101 - .../webapp/resource/mailFactoryProperties.jsp | 137 - .../resource/mimePartFactoryProperties.jsp | 133 - .../resource/sessionFactoryProperties.jsp | 105 - .../createJDBCResourceAdapter.jsp | 292 -- .../createOtherResourceAdapter.jsp | 115 - .../resourceadapter/createResourceAdapter.jsp | 73 - .../src/main/webapp/script/jonasAdmin.js | 214 - .../security/confirmActionMemoryRealm.jsp | 108 - .../main/webapp/security/datasourceRealm.jsp | 133 - .../main/webapp/security/groupMemoryRealm.jsp | 153 - .../src/main/webapp/security/ldapRealm.jsp | 201 - .../src/main/webapp/security/memoryRealm.jsp | 125 - .../webapp/security/memoryRealmGroups.jsp | 101 - .../main/webapp/security/memoryRealmRoles.jsp | 100 - .../main/webapp/security/memoryRealmUsers.jsp | 100 - .../src/main/webapp/security/realms.jsp | 161 - .../main/webapp/security/realmsConfirm.jsp | 86 - .../main/webapp/security/realmsStopped.jsp | 26 - .../main/webapp/security/roleMemoryRealm.jsp | 112 - .../webapp/security/securityCatalinaRealm.jsp | 50 - .../main/webapp/security/userMemoryRealm.jsp | 213 - .../src/main/webapp/service/appContainers.jsp | 57 - .../src/main/webapp/service/cfUsedBy.jsp | 67 - .../service/confirmActionXaResource.jsp | 69 - .../src/main/webapp/service/container.jsp | 53 - .../src/main/webapp/service/containerEjbs.jsp | 69 - .../webapp/service/containerStatistic.jsp | 186 - .../src/main/webapp/service/containers.jsp | 60 - .../src/main/webapp/service/databases.jsp | 48 - .../src/main/webapp/service/datasource.jsp | 174 - .../webapp/service/datasourceStatistics.jsp | 180 - .../main/webapp/service/datasourceUsedBy.jsp | 64 - .../main/webapp/service/depmonitorService.jsp | 75 - .../src/main/webapp/service/discovery.jsp | 66 - .../src/main/webapp/service/ear.jsp | 52 - .../src/main/webapp/service/earJars.jsp | 61 - .../src/main/webapp/service/earRars.jsp | 59 - .../src/main/webapp/service/earWars.jsp | 61 - .../main/webapp/service/earXmlDeployment.jsp | 47 - .../src/main/webapp/service/ejb.jsp | 38 - .../webapp/service/ejbContainerService.jsp | 48 - .../webapp/service/ejbContainersStatistic.jsp | 208 - .../src/main/webapp/service/ejbDependency.jsp | 260 -- .../src/main/webapp/service/ejbEntity.jsp | 175 - .../src/main/webapp/service/ejbMessage.jsp | 143 - .../src/main/webapp/service/ejbSession.jsp | 203 - .../src/main/webapp/service/ejbVirtual.jsp | 76 - .../main/webapp/service/jmsConnFactories.jsp | 40 - .../main/webapp/service/jmsConnFactory.jsp | 37 - .../main/webapp/service/jmsDestinations.jsp | 24 - .../src/main/webapp/service/jmsQueue.jsp | 41 - .../src/main/webapp/service/jmsQueues.jsp | 42 - .../src/main/webapp/service/jmsService.jsp | 40 - .../src/main/webapp/service/jmsTopic.jsp | 37 - .../src/main/webapp/service/jmsTopics.jsp | 42 - .../src/main/webapp/service/jtmService.jsp | 73 - .../main/webapp/service/jtmServiceStopped.jsp | 32 - .../src/main/webapp/service/mailService.jsp | 41 - .../main/webapp/service/mimepartFactories.jsp | 49 - .../main/webapp/service/mimepartFactory.jsp | 134 - .../service/mimepartMailFactoryUsedBy.jsp | 63 - .../src/main/webapp/service/queueUsedBy.jsp | 67 - .../src/main/webapp/service/rar10.jsp | 214 - .../src/main/webapp/service/rar10Stats.jsp | 181 - .../src/main/webapp/service/rar15.jsp | 120 - .../src/main/webapp/service/rar15AO.jsp | 80 - .../src/main/webapp/service/rar15AOs.jsp | 52 - .../src/main/webapp/service/rar15AS.jsp | 80 - .../src/main/webapp/service/rar15ASs.jsp | 53 - .../src/main/webapp/service/rar15CF.jsp | 189 - .../src/main/webapp/service/rar15CFStats.jsp | 195 - .../src/main/webapp/service/rar15CFs.jsp | 52 - .../main/webapp/service/rarPoolStatistics.jsp | 149 - .../src/main/webapp/service/rarStatistics.jsp | 180 - .../src/main/webapp/service/rarUsedBy10.jsp | 64 - .../src/main/webapp/service/rarUsedBy15.jsp | 77 - .../src/main/webapp/service/rars.jsp | 59 - .../src/main/webapp/service/security.jsp | 90 - .../main/webapp/service/securityStopped.jsp | 28 - .../src/main/webapp/service/services.jsp | 233 - .../main/webapp/service/sessionFactories.jsp | 49 - .../main/webapp/service/sessionFactory.jsp | 108 - .../service/sessionMailFactoryUsedBy.jsp | 63 - .../webapp/service/smartclientService.jsp | 32 - .../src/main/webapp/service/topicUsedBy.jsp | 67 - .../webapp/service/transactionMonitor.jsp | 60 - .../webapp/service/transactionRecovery.jsp | 63 - .../webapp/service/transactionStatistic.jsp | 73 - .../main/webapp/service/versioningService.jsp | 55 - .../src/main/webapp/service/war.jsp | 94 - .../src/main/webapp/service/warJonasXml.jsp | 48 - .../src/main/webapp/service/warServlets.jsp | 63 - .../src/main/webapp/service/warWebXml.jsp | 50 - .../src/main/webapp/service/webApp.jsp | 80 - .../main/webapp/service/webAppCatalina.jsp | 196 - .../src/main/webapp/service/webAppJetty.jsp | 116 - .../webapp/service/webAppVirtualCatalina.jsp | 98 - .../src/main/webapp/service/webContainers.jsp | 60 - .../webapp/service/workcleanerService.jsp | 82 - .../webapp/service/workmanagerService.jsp | 59 - .../webapp/service/ws/handlersDetails.jsp | 99 - .../service/ws/portComponentsDetails.jsp | 103 - .../main/webapp/service/ws/viewHandlers.jsp | 66 - .../webapp/service/ws/viewPortComponents.jsp | 62 - .../service/ws/webserviceDescriptions.jsp | 58 - .../webapp/service/ws/webserviceDetails.jsp | 78 - .../webapp/service/xaresourceRecovery.jsp | 79 - .../src/main/webapp/style/iepngfix.htc | 85 - .../src/main/webapp/style/jonasAdmin.css | 659 --- .../jonas-admin/src/main/webapp/top.jsp | 78 - .../jonas-admin/src/main/webapp/tree.jsp | 47 - .../src/main/webapp/welcomeContent.jsp | 19 - .../src/main/webapp/xml/archiveConfig.jsp | 498 --- .../main/webapp/xml/archiveConfigAdvanced.jsp | 109 - .../src/main/webapp/xml/archiveConfigAjax.jsp | 22 - .../main/webapp/xml/archiveConfigConfirm.jsp | 49 - .../main/webapp/xml/archiveConfigSelect.jsp | 90 - .../ee-components/jonas-ctxroot/pom.xml | 93 - .../src/main/webapp/WEB-INF/jonas-web.xml | 13 - .../src/main/webapp/WEB-INF/web.xml | 38 - .../jonas-ctxroot/src/main/webapp/index.jsp | 213 - .../jonas-ctxroot/src/main/webapp/jetty.gif | Bin 6649 -> 0 bytes .../jonas-ctxroot/src/main/webapp/logoOW2.png | Bin 13572 -> 0 bytes .../src/main/webapp/ow2_jonas.css | 183 - .../src/main/webapp/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../jonas-ctxroot/src/main/webapp/style.css | 13 - .../jonas-ctxroot/src/main/webapp/tomcat.gif | Bin 1934 -> 0 bytes .../src/main/webapp/valid-xhtml11.png | Bin 1917 -> 0 bytes .../jonas-ctxroot/src/main/webapp/vcss.png | Bin 1134 -> 0 bytes jonas/modules/ee-components/mejb/pom.xml | 66 - .../ee/mejb/ListenerRegistrationImpl.java | 95 - .../org/ow2/jonas/ee/mejb/ManagementBean.java | 298 -- .../org/ow2/jonas/ee/mejb/XManagement.java | 35 - .../ow2/jonas/ee/mejb/XManagementHome.java | 35 - jonas/modules/ee-components/pom.xml | 47 - .../modules/generators/jonas-genbase/pom.xml | 56 - .../generators/genbase/GenBaseException.java | 65 - .../genbase/NoJ2EEWebservicesException.java | 68 - .../genbase/archive/AbsArchive.java | 181 - .../genbase/archive/Application.java | 578 --- .../generators/genbase/archive/Archive.java | 133 - .../generators/genbase/archive/Client.java | 336 -- .../genbase/archive/DummyApplication.java | 135 - .../genbase/archive/DummyWebApp.java | 141 - .../jonas/generators/genbase/archive/Ejb.java | 139 - .../generators/genbase/archive/EjbJar.java | 397 -- .../genbase/archive/EjbRefModule.java | 40 - .../genbase/archive/FileArchive.java | 147 - .../genbase/archive/J2EEArchive.java | 272 -- .../genbase/archive/JarArchive.java | 141 - .../generators/genbase/archive/WebApp.java | 644 --- .../generators/genbase/archive/WsClient.java | 43 - .../genbase/archive/WsEndpoint.java | 50 - .../genbase/generator/AbsGenerator.java | 179 - .../generators/genbase/generator/Config.java | 423 -- .../genbase/generator/GeneratorFactories.java | 59 - .../genbase/generator/GeneratorFactory.java | 45 - .../modifier/AbsApplicationModifier.java | 170 - .../genbase/modifier/AbsModifierFactory.java | 67 - .../genbase/modifier/ArchiveModifier.java | 132 - .../genbase/utils/ArchiveStorer.java | 198 - .../generators/genbase/utils/DirStorer.java | 121 - .../generators/genbase/utils/JarStorer.java | 136 - .../genbase/utils/TempRepository.java | 165 - .../generators/genbase/utils/XMLUtils.java | 568 --- .../META-INF/jonas-generators-base.bnd | 24 - .../genbase/archive/I18n.properties | 27 - .../genbase/archive/application.xml | 12 - .../generators/genbase/archive/context.xml | 4 - .../generators/genbase/archive/jonas-web.xml | 8 - .../generators/genbase/archive/web-jetty.xml | 4 - .../jonas/generators/genbase/archive/web.xml | 30 - .../genbase/generator/I18n.properties | 3 - .../generators/genbase/utils/I18n.properties | 11 - .../generators/jonas-genclientstub/pom.xml | 69 - .../genclientstub/ClientStubGen.java | 276 -- .../genclientstub/ClientStubGenException.java | 67 - .../genclientstub/generator/Generator.java | 242 -- .../generator/GeneratorFactory.java | 86 - .../modifier/AbsArchiveModifier.java | 140 - .../modifier/ApplicationModifier.java | 79 - .../modifier/ClientModifier.java | 97 - .../modifier/EjbJarModifier.java | 103 - .../modifier/ModifierFactory.java | 191 - .../modifier/WebAppModifier.java | 97 - .../wrapper/ClientGenStubWrapper.java | 156 - .../META-INF/jonas-generators-clientstubs.bnd | 36 - .../genclientstub/generator/I18n.properties | 3 - .../genclientstub/modifier/I18n.properties | 5 - jonas/modules/generators/jonas-genic/pom.xml | 124 - .../jonas/generators/genic/BeanSources.java | 470 --- .../org/ow2/jonas/generators/genic/GenIC.java | 1254 ------ .../generators/genic/GenICException.java | 94 - .../generators/genic/GenICParameters.java | 350 -- .../ow2/jonas/generators/genic/Source.java | 276 -- .../generators/genic/VContextFactory.java | 633 --- .../jonas/generators/genic/VcCMRField.java | 293 -- .../ow2/jonas/generators/genic/VcField.java | 340 -- .../ow2/jonas/generators/genic/VcMethod.java | 1155 ----- .../ow2/jonas/generators/genic/VcParam.java | 111 - .../jonas/generators/genic/VcParamWhere.java | 180 - .../genic/VelocityMonologLogger.java | 85 - .../genic/wrapper/GenicServiceWrapper.java | 90 - .../main/resources/META-INF/jonas-genic.bnd | 53 - .../ow2/jonas/generators/genic/GenICMacros.vm | 86 - .../ow2/jonas/generators/genic/JEntityCmp2.vm | 1564 ------- .../genic/JEntityCmp2CoherenceItf.vm | 49 - .../jonas/generators/genic/JEntityCmpJdbc.vm | 622 --- .../jonas/generators/genic/JEntityHandle.vm | 80 - .../ow2/jonas/generators/genic/JEntityHome.vm | 787 ---- .../jonas/generators/genic/JEntityLocal.vm | 315 -- .../generators/genic/JEntityLocalHome.vm | 659 --- .../jonas/generators/genic/JEntityRemote.vm | 400 -- .../generators/genic/JServiceEndpoint.vm | 126 - .../generators/genic/JServiceEndpointHome.vm | 58 - .../jonas/generators/genic/JStatefulHome.vm | 183 - .../jonas/generators/genic/JStatefulLocal.vm | 192 - .../generators/genic/JStatefulLocalHome.vm | 136 - .../jonas/generators/genic/JStatefulRemote.vm | 236 -- .../jonas/generators/genic/JStatelessHome.vm | 169 - .../jonas/generators/genic/JStatelessLocal.vm | 155 - .../generators/genic/JStatelessLocalHome.vm | 118 - .../generators/genic/JStatelessRemote.vm | 220 - .../org/ow2/jonas/generators/genic/README | 94 - jonas/modules/generators/jonas-wsgen/pom.xml | 100 - .../org/ow2/jonas/generators/wsgen/WsGen.java | 290 -- .../generators/wsgen/WsGenException.java | 69 - .../wsgen/ddmodifier/ContextDDModifier.java | 81 - .../ddmodifier/DeploymentDescModifier.java | 213 - .../wsgen/ddmodifier/WebJettyDDModifier.java | 123 - .../ddmodifier/WebServicesDDModifier.java | 101 - .../wsgen/ddmodifier/WsClientDDModifier.java | 102 - .../ddmodifier/WsEndpointDDModifier.java | 572 --- .../wsgen/finder/GeneralWSFinder.java | 128 - .../wsgen/finder/GenericWSFinder.java | 114 - .../wsgen/finder/J2EEWebServicesFinder.java | 39 - .../wsgen/finder/ServiceRefFinder.java | 68 - .../wsgen/finder/WebServicesXmlFinder.java | 176 - .../generators/wsgen/generator/Generator.java | 148 - .../wsgen/generator/GeneratorFactory.java | 214 - .../wsgen/generator/SecurityGenerator.java | 304 -- .../wsgen/generator/WsClientGenerator.java | 87 - .../wsgen/generator/WsEndpointGenerator.java | 100 - .../generator/axis/AxisGeneratorFactory.java | 84 - .../generator/axis/AxisWsClientGenerator.java | 294 -- .../axis/AxisWsEndpointGenerator.java | 218 - .../wsgen/generator/axis/JVelocity.java | 155 - .../wsgen/generator/axis/VContextFactory.java | 238 -- .../wsgen/generator/axis/VcArrayMapping.java | 72 - .../wsgen/generator/axis/VcBean.java | 80 - .../wsgen/generator/axis/VcBeanMapping.java | 72 - .../wsgen/generator/axis/VcHandler.java | 135 - .../wsgen/generator/axis/VcHeader.java | 72 - .../wsgen/generator/axis/VcInitParam.java | 67 - .../wsgen/generator/axis/VcPortComponent.java | 370 -- .../wsgen/generator/axis/VcTypeMapping.java | 112 - .../axis/wsdl2java/JOnASEmitter.java | 43 - .../axis/wsdl2java/JOnASGeneratorFactory.java | 91 - .../JOnASInterfaceServiceImplWriter.java | 51 - .../wsdl2java/JOnASServiceImplWriter.java | 60 - .../axis/wsdl2java/JOnASServiceWriter.java | 74 - .../axis/wsdl2java/JOnASWSDL2Java.java | 165 - .../generator/ews/EWSGeneratorFactory.java | 82 - .../generator/ews/EWSWsClientGenerator.java | 311 -- .../generator/ews/EWSWsEndpointGenerator.java | 251 -- .../JOnASJ2EEWebServicesContext.java | 158 - .../ServiceReferenceContextImpl.java | 158 - .../ews/wsdltoj2ee/emitter/FullEmitter.java | 128 - .../wsdltoj2ee/emitter/JOnASWSEmitter.java | 71 - .../factory/JOnASClientGeneratorFactory.java | 109 - .../JOnASEndpointGeneratorFactory.java | 90 - .../writer/J2EEClientDeployWriter.java | 264 -- .../writer/J2EEServerDeployWriter.java | 388 -- .../wsdltoj2ee/writer/JOnASDeployWriter.java | 558 --- .../writer/JOnASEWSBindingWriter.java | 81 - .../writer/JOnASEWSServiceImplWriter.java | 59 - .../writer/JOnASEWSServiceIntfWriter.java | 51 - .../writer/JOnASEWSServiceWriter.java | 82 - .../wsdltoj2ee/writer/JOnASTypeWriter.java | 126 - .../ews/wsdltoj2ee/wscf/JOnASWSCFHandler.java | 98 - .../wsdltoj2ee/wscf/JOnASWSCFInitParam.java | 46 - .../wsdltoj2ee/wscf/JOnASWSCFSOAPHeader.java | 47 - .../wsgen/modifier/ApplicationModifier.java | 98 - .../wsgen/modifier/ClientModifier.java | 113 - .../wsgen/modifier/EjbJarModifier.java | 206 - .../wsgen/modifier/ModifierFactory.java | 187 - .../wsgen/modifier/WebAppModifier.java | 162 - .../modifier/WsGenModifierConstants.java | 40 - .../META-INF/jonas-generators-wsgen.bnd | 34 - .../wsgen/generator/I18n.properties | 7 - .../wsgen/generator/axis/I18n.properties | 15 - .../wsgen/generator/axis/deploy_client.vm | 32 - .../wsgen/generator/axis/deploy_endpoint.vm | 87 - .../wsgen/generator/ews/I18n.properties | 7 - .../generators/wsgen/modifier/I18n.properties | 5 - jonas/modules/generators/pom.xml | 47 - jonas/modules/generators/raconfig/pom.xml | 57 - .../jonas/generators/raconfig/RAConfig.java | 929 ---- .../raconfig/RAConfigException.java | 57 - .../META-INF/jonas-generators-raconfig.bnd | 24 - .../itests/applications/classloader/pom.xml | 72 - .../classloader/ClassLoaderChecker.java | 95 - .../src/main/resources/metadata.xml | 47 - .../applications/connection-leaks/pom.xml | 61 - .../ConnectionLeakServlet.java | 77 - .../src/main/webapp/WEB-INF/jonas-web.xml | 33 - .../src/main/webapp/WEB-INF/web.xml | 49 - .../jaxws-add/assemblies/ear/pom.xml | 87 - .../applications/jaxws-add/assemblies/pom.xml | 47 - .../jaxws-add/modules/api/pom.xml | 44 - .../applications/wsadd/api/IAddBean.java | 40 - .../jaxws-add/modules/beans/pom.xml | 72 - .../applications/wsadd/beans/AddBean.java | 52 - .../src/main/resources/META-INF/ejb-jar.xml | 30 - .../applications/jaxws-add/modules/pom.xml | 44 - .../jaxws-add/modules/webapp/pom.xml | 71 - .../wsadd/ws/AuditPropagationServlet.java | 57 - .../tests/applications/wsadd/ws/IWSAdd.java | 43 - .../tests/applications/wsadd/ws/WSAdd.java | 83 - .../src/main/webapp/WEB-INF/jonas-web.xml | 33 - .../webapp/src/main/webapp/WEB-INF/web.xml | 50 - .../itests/applications/jaxws-add/pom.xml | 43 - .../itests/applications/jaxws-sample/pom.xml | 110 - jonas/modules/itests/applications/pom.xml | 49 - .../itests/applications/versioning/pom.xml | 40 - .../non-versioned-war/non-versioned-war.war | Bin 912 -> 0 bytes .../src/main/resources/root-war/.classpath | 8 - .../src/main/resources/root-war/.project | 23 - .../.settings/org.eclipse.jdt.core.prefs | 256 -- .../.settings/org.eclipse.jdt.ui.prefs | 5 - .../.settings/org.maven.ide.eclipse.prefs | 8 - .../src/main/resources/root-war/pom.xml | 62 - .../src/main/resources/root-war/root-war.war | Bin 6504 -> 0 bytes .../RedirectServletWithContext.java | 19 - .../RedirectServletWithoutContext.java | 19 - .../src/main/webapp/WEB-INF/jonas-web.xml | 34 - .../root-war/src/main/webapp/WEB-INF/web.xml | 57 - .../root-war/src/main/webapp/test.jsp | 2 - .../resources/secured-war/secured-war.war | Bin 1014 -> 0 bytes .../main/resources/version1.0.0/.classpath | 9 - .../src/main/resources/version1.0.0/.project | 23 - .../.settings/org.eclipse.jdt.core.prefs | 256 -- .../.settings/org.eclipse.jdt.ui.prefs | 5 - .../.settings/org.maven.ide.eclipse.prefs | 8 - .../main/resources/version1.0.0/ear/pom.xml | 98 - .../main/resources/version1.0.0/ejb/pom.xml | 57 - .../ow2/jonas/test/versioning/TestBean.java | 10 - .../jonas/test/versioning/TestBeanImpl.java | 14 - .../src/main/resources/version1.0.0/pom.xml | 70 - .../version1.0.0/test-versioning.ear | Bin 8950 -> 0 bytes .../main/resources/version1.0.0/war/pom.xml | 65 - .../jonas/test/versioning/TestServlet.java | 38 - .../war/src/main/webapp/WEB-INF/web.xml | 45 - .../version1.0.0/war/src/main/webapp/test.jsp | 2 - .../main/resources/version2.0.0/.classpath | 9 - .../src/main/resources/version2.0.0/.project | 23 - .../.settings/org.eclipse.jdt.core.prefs | 256 -- .../.settings/org.eclipse.jdt.ui.prefs | 5 - .../.settings/org.maven.ide.eclipse.prefs | 8 - .../main/resources/version2.0.0/ear/pom.xml | 98 - .../main/resources/version2.0.0/ejb/pom.xml | 57 - .../ow2/jonas/test/versioning/TestBean.java | 10 - .../jonas/test/versioning/TestBeanImpl.java | 14 - .../src/main/resources/version2.0.0/pom.xml | 70 - .../version2.0.0/test-versioning.ear | Bin 10325 -> 0 bytes .../main/resources/version2.0.0/war/pom.xml | 65 - .../RedirectServletWithContext.java | 19 - .../RedirectServletWithoutContext.java | 19 - .../jonas/test/versioning/TestServlet.java | 43 - .../war/src/main/webapp/WEB-INF/web.xml | 68 - .../version2.0.0/war/src/main/webapp/test.jsp | 2 - jonas/modules/itests/cargo/iiop/pom.xml | 274 -- jonas/modules/itests/cargo/irmi/pom.xml | 274 -- jonas/modules/itests/cargo/jrmp/pom.xml | 258 -- .../itests/cargo/jrmp/BugJonas290Test.java | 44 - .../itests/cargo/jrmp/BugJonas292Test.java | 121 - .../itests/cargo/jrmp/BugJonas96Test.java | 115 - .../jonas/itests/cargo/jrmp/CargoTest.java | 59 - .../itests/cargo/jrmp/ClassLoaderTest.java | 60 - .../itests/cargo/jrmp/CookieManager.java | 165 - .../cargo/jrmp/JDBCConnectionLeakTest.java | 108 - .../jonas/itests/cargo/jrmp/JaxWSAddTest.java | 141 - .../jonas/itests/cargo/jrmp/JaxWSTest.java | 98 - .../jonas/itests/cargo/jrmp/TestCommons.java | 124 - .../itests/cargo/jrmp/VersioningTest.java | 592 --- .../cargo/jrmp/WebServicesAuditTestCase.java | 156 - .../jrmp/src/test/resources/jonas-290.war | Bin 1148 -> 0 bytes .../jrmp/src/test/resources/jonas-292.jar | Bin 299 -> 0 bytes .../itests/cargo/jrmp/soap-request-add.xml | 9 - jonas/modules/itests/cargo/pom.xml | 156 - jonas/modules/itests/cargo/security/pom.xml | 309 -- .../cargo/jmx_security/JmxSecurityTest.java | 115 - jonas/modules/itests/cargo/tomcat7/pom.xml | 282 -- jonas/modules/itests/intravm/pom.xml | 264 -- .../jonas/itests/intravm/JOnASLauncher.java | 207 - .../osgi/httpservice/OSGiHttpServiceTest.java | 443 -- .../RegisterResourceTestActivator.java | 93 - .../servlet/RegisterServletTestActivator.java | 104 - .../servlet/SimpleTestServlet.java | 60 - .../itests/intravm/workdir/TestWorkDir.java | 92 - .../intravm/src/test/resources/index.html | 10 - .../intravm/src/test/resources/test.html | 10 - jonas/modules/itests/osgi/equinox/pom.xml | 347 -- jonas/modules/itests/osgi/felix/pom.xml | 368 -- .../modules/itests/osgi/knopflerfish/pom.xml | 369 -- jonas/modules/itests/osgi/pom.xml | 132 - .../osgi/src/test/configuration/testng.xml | 36 - jonas/modules/itests/pom.xml | 121 - jonas/modules/libraries/externals/asm/pom.xml | 76 - .../asm/src/main/resources/META-INF/asm.bnd | 30 - .../libraries/externals/javaee-api/pom.xml | 225 - .../javaee-api/src/main/assembly/assembly.xml | 61 - .../java/javax/xml/bind/ContextFinder.java | 183 - .../xml/bind/TypeConstraintException.java | 82 - .../tag/common/xml/TransformSupport.java | 425 -- .../main/resources/META-INF/javaee-api.bnd | 79 - .../javax/servlet/jsp/resources/jsp_2_0.xsd | 288 -- .../javax/servlet/jsp/resources/jsp_2_1.xsd | 73 - .../javax/servlet/jsp/resources/jspxml.dtd | 190 - .../javax/servlet/jsp/resources/jspxml.xsd | 514 --- .../jsp/resources/web-jsptaglibrary_1_1.dtd | 207 - .../jsp/resources/web-jsptaglibrary_1_2.dtd | 478 --- .../jsp/resources/web-jsptaglibrary_2_0.xsd | 989 ----- .../jsp/resources/web-jsptaglibrary_2_1.xsd | 229 - .../libraries/externals/jaxp-ri/pom.xml | 52 - .../src/main/resources/META-INF/jaxp-ri.bnd | 36 - .../libraries/externals/monolog/pom.xml | 47 - .../src/main/resources/META-INF/monolog.bnd | 49 - .../libraries/externals/neethi/pom.xml | 64 - .../src/main/resources/META-INF/neethi.bnd | 32 - jonas/modules/libraries/externals/pom.xml | 51 - .../libraries/externals/saaj-ri/pom.xml | 69 - .../saaj/client/p2p/HttpSOAPConnection.java | 814 ---- .../src/main/resources/META-INF/saaj-ri.bnd | 30 - .../libraries/externals/ws-security/pom.xml | 77 - .../main/resources/META-INF/ws-security.bnd | 40 - .../libraries/externals/xmlbeans/pom.xml | 52 - .../src/main/resources/META-INF/xmlbeans.bnd | 34 - .../modules/libraries/jonas-audit-jms/pom.xml | 54 - .../jms/interceptor/JMSClientInterceptor.java | 78 - .../resources/META-INF/jonas-audit-jms.bnd | 24 - .../libraries/jonas-bootstrap-loader/pom.xml | 44 - .../lib/bootstrap/loader/JClassLoader.java | 204 - .../META-INF/jonas-bootstrap-loader.bnd | 25 - jonas/modules/libraries/jonas-commons/pom.xml | 125 - .../ow2/jonas/lib/bootstrap/Bootstrap.java | 104 - .../ow2/jonas/lib/bootstrap/JFileFilter.java | 82 - .../org/ow2/jonas/lib/bootstrap/JProp.java | 747 ---- .../org/ow2/jonas/lib/bootstrap/JURLs.java | 239 -- .../jonas/lib/bootstrap/LoaderManager.java | 177 - .../lib/bootstrap/RemoteClassLoaderSpi.java | 256 -- .../lib/cpmanager/EarClassPathManager.java | 334 -- .../EarClassPathManagerException.java | 53 - .../org/ow2/jonas/lib/cpmanager/JarList.java | 159 - .../jonas/lib/cpmanager/JarListException.java | 51 - .../jonas/lib/execution/ExecutionResult.java | 75 - .../ow2/jonas/lib/execution/IExecution.java | 44 - .../jonas/lib/execution/RunnableHelper.java | 84 - .../lib/loader/AbsModuleClassLoader.java | 196 - .../jonas/lib/loader/ClientClassLoader.java | 91 - .../jonas/lib/loader/EjbJarClassLoader.java | 79 - .../lib/loader/FilteringClassLoader.java | 252 -- .../ow2/jonas/lib/loader/OSGiClassLoader.java | 114 - .../lib/loader/SimpleWebappClassLoader.java | 78 - .../lib/loader/ThreadContextClassLoader.java | 100 - .../jonas/lib/loader/WebappClassLoader.java | 89 - .../lib/loader/factory/DirURLFactory.java | 69 - .../lib/loader/factory/JarURLFactory.java | 82 - .../jonas/lib/loader/factory/URLFactory.java | 77 - .../jonas/lib/loader/locator/DirLocator.java | 135 - .../lib/loader/locator/JarFileLocator.java | 117 - .../ow2/jonas/lib/loader/locator/Locator.java | 94 - .../lib/loader/xml/FiltersDefinition.java | 60 - .../ow2/jonas/lib/service/AbsServiceImpl.java | 227 - .../java/org/ow2/jonas/lib/util/Base64.java | 194 - .../org/ow2/jonas/lib/util/BeanNaming.java | 180 - .../main/java/org/ow2/jonas/lib/util/Cmd.java | 306 -- .../lib/util/ConfigurationConstants.java | 103 - .../org/ow2/jonas/lib/util/DirFilter.java | 57 - .../main/java/org/ow2/jonas/lib/util/Env.java | 120 - .../java/org/ow2/jonas/lib/util/I18n.java | 254 -- .../java/org/ow2/jonas/lib/util/JJarFile.java | 120 - .../java/org/ow2/jonas/lib/util/JModule.java | 339 -- .../org/ow2/jonas/lib/util/JNDIUtils.java | 220 - .../ow2/jonas/lib/util/JonasObjectName.java | 855 ---- .../ow2/jonas/lib/util/JoramObjectName.java | 138 - .../main/java/org/ow2/jonas/lib/util/Log.java | 493 --- .../ow2/jonas/lib/util/ModuleNamingUtils.java | 79 - .../java/org/ow2/jonas/lib/util/NetUtils.java | 101 - .../java/org/ow2/jonas/lib/util/PropDump.java | 62 - .../org/ow2/jonas/lib/util/XMLSerializer.java | 127 - .../org/ow2/jonas/lib/windows/WinSysEnv.java | 139 - .../org/ow2/jonas/lib/work/AbsCleanTask.java | 175 - .../org/ow2/jonas/lib/work/DeployerLog.java | 262 -- .../jonas/lib/work/DeployerLogException.java | 52 - .../org/ow2/jonas/lib/work/LogEntryImpl.java | 79 - .../main/resources/META-INF/jonas-commons.bnd | 27 - .../classloader-default-filtering-mapping.xml | 53 - .../jonas/lib/cpmanager/JarListTestCase.java | 54 - .../loader/FilteringClassLoaderTestCase.java | 84 - .../src/test/resources/test-app-filters.xml | 30 - .../test/resources/test-default-filters.xml | 30 - .../jonas-datasources/binding/pom.xml | 90 - .../main/resources/jonas-datasources-1.0.xsd | 130 - .../jonas-datasources/deploy/api/pom.xml | 63 - .../deployable/api/DatasourceDeployable.java | 41 - .../jonas-datasources/deploy/impl/pom.xml | 84 - .../impl/DatasourceDeployableImpl.java | 59 - .../impl/DatasourceDeployableTest.java | 94 - .../impl/FileDeployableFactoryTest.java | 138 - .../src/test/resources/exemple-datasource.xml | 72 - .../jonas-datasources/deploy/pom.xml | 45 - .../jonas-datasources/deployer/pom.xml | 179 - .../deployer/api/IDatasourceDeployer.java | 47 - .../deployer/impl/DatasourceDeployer.java | 403 -- .../deployer/TestDatasourceDeployer.java | 179 - .../datasource/deployer/TestRarDeployer.java | 101 - .../src/test/resources/datasources.xml | 71 - .../libraries/jonas-datasources/pom.xml | 50 - .../jonas-datasources/reader/pom.xml | 61 - .../reader/DatasourceValidator.java | 85 - .../reader/DatasourceXmlReader.java | 218 - .../reader/IDatasourceXmlReader.java | 72 - .../reader/DatasourceReaderTest.java | 146 - .../reader/DatasourceValidatorTest.java | 86 - .../test/resources/exemple-datasource-bad.xml | 31 - .../resources/exemple-datasource-good.xml | 72 - .../libraries/jonas-deployment/pom.xml | 167 - .../deployment/client/AppClientDTDs.java | 71 - .../deployment/client/AppClientSchemas.java | 58 - .../client/ClientContainerDeploymentDesc.java | 288 -- ...lientContainerDeploymentDescException.java | 76 - .../deployment/client/JonasAppClientDTDs.java | 68 - .../client/JonasAppClientSchemas.java | 71 - .../lib/ClientDeploymentDescManager.java | 1145 ----- .../rules/ApplicationClientRuleSet.java | 72 - .../client/rules/JonasClientRuleSet.java | 74 - .../client/rules/JonasSecurityRuleSet.java | 75 - .../client/wrapper/ClientManagerWrapper.java | 121 - .../client/xml/ApplicationClient.java | 109 - .../deployment/client/xml/JonasClient.java | 166 - .../deployment/client/xml/JonasSecurity.java | 151 - .../clusterd/ClusterDaemonConfiguration.java | 90 - .../ClusterDaemonConfigurationException.java | 78 - .../clusterd/ClusterDaemonSchemas.java | 66 - .../ClusterDaemonConfigurationManager.java | 199 - .../clusterd/rules/ClusterDaemonRuleSet.java | 65 - .../clusterd/rules/DiscoveryRuleSet.java | 51 - .../clusterd/rules/ServerRuleSet.java | 66 - .../clusterd/xml/ClusterDaemon.java | 356 -- .../deployment/clusterd/xml/Discovery.java | 112 - .../jonas/deployment/clusterd/xml/Server.java | 264 -- .../deployment/common/AbsDeploymentDesc.java | 81 - .../jonas/deployment/common/CommonsDTDs.java | 107 - .../deployment/common/CommonsSchemas.java | 157 - .../common/DeploymentDescException.java | 154 - .../common/DescriptionGroupDesc.java | 121 - .../deployment/common/EjbLocalRefDesc.java | 160 - .../jonas/deployment/common/EjbRefDesc.java | 138 - .../jonas/deployment/common/EnvEntryDesc.java | 187 - .../jonas/deployment/common/HandlerDesc.java | 271 -- .../common/JndiEnvRefsGroupDesc.java | 555 --- .../common/MessageDestinationRefDesc.java | 130 - .../common/PersistenceUnitRefDesc.java | 89 - .../deployment/common/ResourceEnvRefDesc.java | 102 - .../deployment/common/ResourceRefDesc.java | 140 - .../common/SecurityRoleRefDesc.java | 116 - .../deployment/common/digester/JDigester.java | 153 - .../digester/JEntityResolverWithDigester.java | 82 - .../common/digester/JErrorHandler.java | 71 - .../common/lib/AbsDeploymentDescManager.java | 159 - .../common/lib/DeploymentDescManager.java | 36 - .../common/lib/JEntityResolver.java | 157 - .../jonas/deployment/common/lib/JLSInput.java | 124 - .../common/lib/JLSResourceResolver.java | 70 - .../jonas/deployment/common/lib/JavaType.java | 442 -- .../common/rules/AnonymousQNameRule.java | 77 - .../common/rules/EjbLocalRefRuleSet.java | 75 - .../common/rules/EjbRefRuleSet.java | 72 - .../common/rules/EnvEntryRuleSet.java | 68 - .../common/rules/EnvironmentRuleSet.java | 62 - .../common/rules/HandlerRuleSet.java | 79 - .../deployment/common/rules/IconRuleSet.java | 70 - .../common/rules/InitParamRuleSet.java | 66 - .../deployment/common/rules/JRuleSetBase.java | 63 - .../common/rules/JonasCustomParamRuleSet.java | 76 - .../common/rules/JonasEjbRefRuleSet.java | 64 - .../common/rules/JonasEnvironmentRuleSet.java | 59 - .../common/rules/JonasInitParamRuleSet.java | 64 - .../JonasMessageDestinationRefRuleSet.java | 64 - .../rules/JonasMessageDestinationRuleSet.java | 64 - .../rules/JonasPortComponentRefRuleSet.java | 66 - .../common/rules/JonasResourceEnvRuleSet.java | 64 - .../common/rules/JonasResourceRuleSet.java | 65 - .../common/rules/JonasServiceRefRuleSet.java | 70 - .../rules/MessageDestinationRefRuleSet.java | 70 - .../rules/MessageDestinationRuleSet.java | 61 - .../common/rules/PortComponentRefRuleSet.java | 69 - .../deployment/common/rules/QNameRule.java | 87 - .../common/rules/ResourceEnvRefRuleSet.java | 64 - .../common/rules/ResourceRefRuleSet.java | 72 - .../deployment/common/rules/RunAsRuleSet.java | 62 - .../common/rules/SecurityRoleRefRuleSet.java | 64 - .../common/rules/SecurityRoleRuleSet.java | 62 - .../common/rules/ServiceQnameRuleSet.java | 73 - .../common/rules/ServiceRefRuleSet.java | 84 - .../common/rules/SoapHeaderRuleSet.java | 64 - .../common/rules/WsdlPortRuleSet.java | 61 - .../common/util/ResourceHelper.java | 54 - .../common/xml/AbsDescriptionElement.java | 137 - .../deployment/common/xml/AbsElement.java | 125 - .../common/xml/AbsEnvironmentElement.java | 221 - .../xml/AbsJonasEnvironmentElement.java | 159 - .../deployment/common/xml/AbsJonasParam.java | 122 - .../common/xml/DescriptionGroupXml.java | 57 - .../deployment/common/xml/EjbLocalRef.java | 208 - .../jonas/deployment/common/xml/EjbRef.java | 208 - .../jonas/deployment/common/xml/Element.java | 54 - .../jonas/deployment/common/xml/EnvEntry.java | 159 - .../jonas/deployment/common/xml/Handler.java | 211 - .../ow2/jonas/deployment/common/xml/Icon.java | 112 - .../deployment/common/xml/InitParam.java | 135 - .../deployment/common/xml/JLinkedList.java | 125 - .../common/xml/JndiEnvRefsGroupXml.java | 75 - .../common/xml/JonasCallProperty.java | 41 - .../deployment/common/xml/JonasEjbRef.java | 114 - .../deployment/common/xml/JonasInitParam.java | 41 - .../common/xml/JonasJndiEnvRefsGroupXml.java | 67 - .../common/xml/JonasMessageDestination.java | 114 - .../xml/JonasMessageDestinationRef.java | 114 - .../deployment/common/xml/JonasParam.java | 41 - .../common/xml/JonasPortComponentRef.java | 167 - .../deployment/common/xml/JonasResource.java | 114 - .../common/xml/JonasResourceEnv.java | 114 - .../common/xml/JonasServiceRef.java | 160 - .../common/xml/JonasStubProperty.java | 41 - .../common/xml/MessageDestination.java | 86 - .../common/xml/MessageDestinationRef.java | 184 - .../common/xml/PersistenceUnitRef.java | 98 - .../common/xml/PortComponentRef.java | 110 - .../jonas/deployment/common/xml/Qname.java | 122 - .../deployment/common/xml/ResourceEnvRef.java | 138 - .../deployment/common/xml/ResourceRef.java | 188 - .../jonas/deployment/common/xml/RunAs.java | 109 - .../deployment/common/xml/SecurityRole.java | 109 - .../common/xml/SecurityRoleRef.java | 132 - .../deployment/common/xml/ServiceRef.java | 241 -- .../common/xml/TopLevelElement.java | 37 - .../jonas/deployment/domain/DomainMap.java | 220 - .../deployment/domain/DomainMapException.java | 76 - .../deployment/domain/DomainSchemas.java | 70 - .../domain/lib/DomainMapManager.java | 227 - .../domain/rules/ClusterDaemonRuleSet.java | 65 - .../domain/rules/ClusterRuleSet.java | 90 - .../domain/rules/DomainRuleSet.java | 62 - .../domain/rules/LocationRuleSet.java | 59 - .../domain/rules/ServerRuleSet.java | 66 - .../domain/wrapper/DomainManagerWrapper.java | 105 - .../jonas/deployment/domain/xml/Cluster.java | 158 - .../deployment/domain/xml/ClusterDaemon.java | 186 - .../jonas/deployment/domain/xml/Domain.java | 250 -- .../jonas/deployment/domain/xml/Location.java | 84 - .../jonas/deployment/domain/xml/Server.java | 219 - .../org/ow2/jonas/deployment/ear/EarDTDs.java | 68 - .../deployment/ear/EarDeploymentDesc.java | 371 -- .../ear/EarDeploymentDescException.java | 76 - .../ow2/jonas/deployment/ear/EarSchemas.java | 65 - .../jonas/deployment/ear/JonasEarSchemas.java | 68 - .../ear/lib/EarDeploymentDescManager.java | 378 -- .../ear/rules/ApplicationRuleSet.java | 60 - .../ear/rules/JonasApplicationRuleSet.java | 56 - .../JonasSecurityRoleMappingRuleSet.java | 62 - .../ear/rules/JonasSecurityRuleSet.java | 59 - .../deployment/ear/rules/ModuleRuleSet.java | 69 - .../ear/rules/SecurityRoleRuleSet.java | 64 - .../deployment/ear/rules/WebRuleSet.java | 64 - .../ear/wrapper/EarManagerWrapper.java | 113 - .../jonas/deployment/ear/xml/Application.java | 164 - .../deployment/ear/xml/JonasApplication.java | 121 - .../deployment/ear/xml/JonasSecurity.java | 88 - .../ow2/jonas/deployment/ear/xml/Module.java | 189 - .../deployment/ear/xml/SecurityRole.java | 110 - .../ear/xml/SecurityRoleMapping.java | 112 - .../org/ow2/jonas/deployment/ear/xml/Web.java | 110 - .../deployment/ejb/ActivationConfigDesc.java | 96 - .../ejb/ActivationConfigPropertyDesc.java | 97 - .../ow2/jonas/deployment/ejb/BeanDesc.java | 1583 ------- .../deployment/ejb/CommonMethodDesc.java | 104 - .../jonas/deployment/ejb/DeploymentDesc.java | 529 --- .../deployment/ejb/DeploymentDescEjb1_1.java | 68 - .../deployment/ejb/DeploymentDescEjb2.java | 252 -- .../jonas/deployment/ejb/EjbRelationDesc.java | 311 -- .../ejb/EjbRelationshipRoleDesc.java | 496 --- .../ow2/jonas/deployment/ejb/EjbjarDTDs.java | 71 - .../jonas/deployment/ejb/EjbjarSchemas.java | 59 - .../jonas/deployment/ejb/EntityBmpDesc.java | 52 - .../jonas/deployment/ejb/EntityCmp1Desc.java | 148 - .../jonas/deployment/ejb/EntityCmp2Desc.java | 380 -- .../jonas/deployment/ejb/EntityCmpDesc.java | 237 -- .../ow2/jonas/deployment/ejb/EntityDesc.java | 434 -- .../deployment/ejb/EntityJdbcCmp1Desc.java | 167 - .../deployment/ejb/EntityJdbcCmp2Desc.java | 157 - .../jonas/deployment/ejb/ExcludeListDesc.java | 45 - .../ow2/jonas/deployment/ejb/FieldDesc.java | 111 - .../jonas/deployment/ejb/FieldJdbcDesc.java | 95 - .../jonas/deployment/ejb/JonasEjbjarDTDs.java | 81 - .../deployment/ejb/JonasEjbjarSchemas.java | 81 - .../deployment/ejb/MessageDrivenDesc.java | 467 -- .../jonas/deployment/ejb/MethodCmp2Desc.java | 141 - .../ow2/jonas/deployment/ejb/MethodDesc.java | 477 --- .../deployment/ejb/MethodJdbcCmp1Desc.java | 114 - .../deployment/ejb/MethodPermissionDesc.java | 78 - .../ow2/jonas/deployment/ejb/SessionDesc.java | 230 - .../deployment/ejb/SessionStatefulDesc.java | 103 - .../deployment/ejb/SessionStatelessDesc.java | 295 -- .../ejb/ejbql/ASTAbstractSchemaName.java | 19 - .../ejbql/ASTAggregateSelectExpression.java | 19 - .../ejb/ejbql/ASTArithmeticExpression.java | 19 - .../ejb/ejbql/ASTArithmeticFactor.java | 19 - .../ejb/ejbql/ASTArithmeticLiteral.java | 19 - .../ejb/ejbql/ASTArithmeticTerm.java | 19 - .../ejb/ejbql/ASTBetweenExpression.java | 19 - .../ejb/ejbql/ASTBooleanExpression.java | 19 - .../ejb/ejbql/ASTBooleanLiteral.java | 19 - .../ejb/ejbql/ASTCmpPathExpression.java | 19 - .../ejbql/ASTCollectionMemberDeclaration.java | 19 - .../ejbql/ASTCollectionMemberExpression.java | 19 - .../ASTCollectionValuedPathExpression.java | 19 - .../ejb/ejbql/ASTComparisonExpression.java | 19 - .../ejb/ejbql/ASTConditionalExpression.java | 19 - .../ejb/ejbql/ASTConditionalFactor.java | 19 - .../ejb/ejbql/ASTConditionalTerm.java | 19 - .../ejb/ejbql/ASTDatetimeExpression.java | 19 - .../jonas/deployment/ejb/ejbql/ASTEJBQL.java | 19 - ...STEmptyCollectionComparisonExpression.java | 19 - .../ejb/ejbql/ASTEntityBeanExpression.java | 19 - .../ejb/ejbql/ASTFloatingPointLiteral.java | 19 - .../deployment/ejb/ejbql/ASTFromClause.java | 19 - .../ejbql/ASTFunctionsReturningNumerics.java | 19 - .../ejbql/ASTFunctionsReturningStrings.java | 19 - .../ejb/ejbql/ASTIdentificationVariable.java | 19 - .../deployment/ejb/ejbql/ASTIdentifier.java | 19 - .../deployment/ejb/ejbql/ASTInExpression.java | 19 - .../ejb/ejbql/ASTInputParameter.java | 19 - .../ejb/ejbql/ASTIntegerLiteral.java | 19 - .../ejb/ejbql/ASTLikeExpression.java | 19 - .../deployment/ejb/ejbql/ASTLimitClause.java | 19 - .../ejb/ejbql/ASTLimitExpression.java | 19 - .../deployment/ejb/ejbql/ASTLiteral.java | 19 - .../ejbql/ASTNullComparisonExpression.java | 19 - .../ejb/ejbql/ASTOrderByClause.java | 19 - .../deployment/ejb/ejbql/ASTOrderByItem.java | 19 - .../jonas/deployment/ejb/ejbql/ASTPath.java | 19 - .../ejbql/ASTRangeVariableDeclaration.java | 19 - .../deployment/ejb/ejbql/ASTSelectClause.java | 19 - .../ejb/ejbql/ASTSelectExpression.java | 19 - .../ASTSingleValuedCmrPathExpression.java | 19 - .../ejbql/ASTSingleValuedPathExpression.java | 19 - .../ejb/ejbql/ASTStringExpression.java | 19 - .../ejb/ejbql/ASTStringLiteral.java | 19 - .../deployment/ejb/ejbql/ASTWhereClause.java | 19 - .../ow2/jonas/deployment/ejb/ejbql/EJBQL.java | 3746 ----------------- .../ow2/jonas/deployment/ejb/ejbql/EJBQL.jjt | 668 --- .../deployment/ejb/ejbql/EJBQLConstants.java | 140 - .../ejb/ejbql/EJBQLTokenManager.java | 1457 ------- .../ejb/ejbql/EJBQLTreeConstants.java | 105 - .../deployment/ejb/ejbql/EJBQLVisitor.java | 54 - .../deployment/ejb/ejbql/JJTEJBQLState.java | 123 - .../ow2/jonas/deployment/ejb/ejbql/Node.java | 37 - .../deployment/ejb/ejbql/ParseException.java | 204 - .../org/ow2/jonas/deployment/ejb/ejbql/README | 33 - .../ejb/ejbql/SimpleCharStream.java | 401 -- .../deployment/ejb/ejbql/SimpleNode.java | 131 - .../ow2/jonas/deployment/ejb/ejbql/Token.java | 81 - .../deployment/ejb/ejbql/TokenMgrError.java | 133 - .../deployment/ejb/ejbql/bnf_ejbql_2_0.txt | 65 - .../deployment/ejb/ejbql/bnf_ejbql_2_1.txt | 120 - .../ow2/jonas/deployment/ejb/ejbql/build.sh | 43 - .../ejb/lib/EjbDeploymentDescManager.java | 1389 ------ .../deployment/ejb/lib/util/ClusterUtil.java | 60 - .../ActivationConfigPropertyRuleSet.java | 66 - .../ejb/rules/ActivationConfigRuleSet.java | 65 - .../ejb/rules/AsContextRuleSet.java | 60 - .../ejb/rules/AssemblyDescriptorRuleSet.java | 67 - .../rules/ClusterArrayPropertyRuleSet.java | 55 - .../ejb/rules/ClusterPropertiesRuleSet.java | 62 - .../deployment/ejb/rules/ClusterRuleSet.java | 68 - .../rules/ClusterSimplePropertyRuleSet.java | 54 - .../ejb/rules/CmpFieldJdbcMappingRuleSet.java | 66 - .../deployment/ejb/rules/CmpFieldRuleSet.java | 64 - .../deployment/ejb/rules/CmrFieldRuleSet.java | 66 - .../rules/ContainerTransactionRuleSet.java | 65 - .../deployment/ejb/rules/EjbJarRuleSet.java | 119 - .../ejb/rules/EjbRelationRuleSet.java | 65 - .../ejb/rules/EjbRelationshipRoleRuleSet.java | 70 - .../ejb/rules/EnterpriseBeansRuleSet.java | 63 - .../deployment/ejb/rules/EntityRuleSet.java | 102 - .../ejb/rules/ExcludeListRuleSet.java | 63 - .../rules/FinderMethodJdbcMappingRuleSet.java | 63 - .../rules/ForeignKeyJdbcMappingRuleSet.java | 64 - .../ejb/rules/IorSecurityConfigRuleSet.java | 60 - .../ejb/rules/JdbcMappingRuleSet.java | 70 - .../ejb/rules/JonasEjbJarRuleSet.java | 61 - .../ejb/rules/JonasEjbRelationRuleSet.java | 65 - .../JonasEjbRelationshipRoleRuleSet.java | 63 - .../ejb/rules/JonasEntityRuleSet.java | 102 - .../ejb/rules/JonasInitParamRuleSet.java | 64 - .../JonasMessageDrivenDestinationRuleSet.java | 62 - .../ejb/rules/JonasMessageDrivenRuleSet.java | 73 - .../ejb/rules/JonasMethodRuleSet.java | 63 - .../ejb/rules/JonasRunAsMappingRuleSet.java | 64 - .../ejb/rules/JonasSessionRuleSet.java | 93 - .../MessageDrivenDestinationRuleSet.java | 64 - .../ejb/rules/MessageDrivenRuleSet.java | 95 - .../ejb/rules/MethodParamsRuleSet.java | 62 - .../ejb/rules/MethodPermissionRuleSet.java | 66 - .../deployment/ejb/rules/MethodRuleSet.java | 69 - .../deployment/ejb/rules/PoolRuleSet.java | 58 - .../ejb/rules/QueryMethodRuleSet.java | 63 - .../deployment/ejb/rules/QueryRuleSet.java | 67 - .../rules/RelationshipRoleSourceRuleSet.java | 64 - .../ejb/rules/RelationshipsRuleSet.java | 63 - .../ejb/rules/SasContextRuleSet.java | 58 - .../ejb/rules/SecurityIdentityRuleSet.java | 66 - .../deployment/ejb/rules/SessionRuleSet.java | 95 - .../ejb/rules/TransportConfigRuleSet.java | 61 - .../ejb/rules/UseCallerIdentityRuleSet.java | 60 - .../ejb/wrapper/EjbManagerWrapper.java | 161 - .../deployment/ejb/xml/ActivationConfig.java | 125 - .../ejb/xml/ActivationConfigProperty.java | 113 - .../deployment/ejb/xml/AsContextMapping.java | 123 - .../ejb/xml/AssemblyDescriptor.java | 221 - .../jonas/deployment/ejb/xml/CmpField.java | 110 - .../ejb/xml/CmpFieldJdbcMapping.java | 133 - .../jonas/deployment/ejb/xml/CmrField.java | 133 - .../jonas/deployment/ejb/xml/CommonEjb.java | 296 -- .../deployment/ejb/xml/CommonEjbXml.java | 78 - .../ejb/xml/ContainerTransaction.java | 143 - .../ow2/jonas/deployment/ejb/xml/EjbJar.java | 251 -- .../jonas/deployment/ejb/xml/EjbRelation.java | 168 - .../ejb/xml/EjbRelationshipRole.java | 210 - .../deployment/ejb/xml/EnterpriseBeans.java | 161 - .../ow2/jonas/deployment/ejb/xml/Entity.java | 312 -- .../jonas/deployment/ejb/xml/ExcludeList.java | 120 - .../ejb/xml/FinderMethodJdbcMapping.java | 112 - .../ejb/xml/ForeignKeyJdbcMapping.java | 110 - .../ejb/xml/IorSecurityConfigMapping.java | 120 - .../jonas/deployment/ejb/xml/JdbcMapping.java | 221 - .../deployment/ejb/xml/JonasCommonEjb.java | 224 - .../deployment/ejb/xml/JonasCommonEjbXml.java | 58 - .../jonas/deployment/ejb/xml/JonasEjbJar.java | 285 -- .../deployment/ejb/xml/JonasEjbRelation.java | 143 - .../ejb/xml/JonasEjbRelationshipRole.java | 120 - .../jonas/deployment/ejb/xml/JonasEntity.java | 411 -- .../deployment/ejb/xml/JonasInitParam.java | 110 - .../ejb/xml/JonasMessageDriven.java | 148 - .../xml/JonasMessageDrivenDestination.java | 87 - .../jonas/deployment/ejb/xml/JonasMethod.java | 112 - .../deployment/ejb/xml/JonasRunAsMapping.java | 113 - .../deployment/ejb/xml/JonasSession.java | 225 - .../deployment/ejb/xml/MessageDriven.java | 249 -- .../ejb/xml/MessageDrivenDestination.java | 110 - .../ow2/jonas/deployment/ejb/xml/Method.java | 181 - .../deployment/ejb/xml/MethodParams.java | 97 - .../deployment/ejb/xml/MethodPermission.java | 177 - .../ow2/jonas/deployment/ejb/xml/Query.java | 158 - .../jonas/deployment/ejb/xml/QueryMethod.java | 112 - .../ejb/xml/RelationshipRoleSource.java | 110 - .../deployment/ejb/xml/Relationships.java | 120 - .../deployment/ejb/xml/SasContextMapping.java | 85 - .../deployment/ejb/xml/SecurityIdentity.java | 139 - .../ow2/jonas/deployment/ejb/xml/Session.java | 236 -- .../ejb/xml/TransportConfigMapping.java | 143 - .../deployment/ejb/xml/UseCallerIdentity.java | 58 - .../deployment/rar/ActivationspecDesc.java | 79 - .../jonas/deployment/rar/AdminobjectDesc.java | 107 - .../rar/AuthenticationMechanismDesc.java | 94 - .../deployment/rar/ConfigPropertyDesc.java | 141 - .../rar/ConnectionDefinitionDesc.java | 150 - .../jonas/deployment/rar/ConnectorDTDs.java | 67 - .../jonas/deployment/rar/ConnectorDesc.java | 220 - .../deployment/rar/ConnectorSchemas.java | 59 - .../ow2/jonas/deployment/rar/IconDesc.java | 78 - .../rar/InboundResourceadapterDesc.java | 65 - .../deployment/rar/JdbcConnParamsDesc.java | 98 - .../rar/JonasActivationspecDesc.java | 107 - .../deployment/rar/JonasAdminobjectDesc.java | 108 - .../rar/JonasConfigPropertyDesc.java | 79 - .../rar/JonasConnectionDefinitionDesc.java | 164 - .../deployment/rar/JonasConnectorDTDs.java | 67 - .../deployment/rar/JonasConnectorDesc.java | 241 -- .../deployment/rar/JonasConnectorSchemas.java | 69 - .../rar/JonasSecurityMappingDesc.java | 64 - .../ow2/jonas/deployment/rar/LicenseDesc.java | 79 - .../deployment/rar/MessageadapterDesc.java | 64 - .../deployment/rar/MessagelistenerDesc.java | 94 - .../rar/OutboundResourceadapterDesc.java | 107 - .../jonas/deployment/rar/PoolParamsDesc.java | 190 - .../deployment/rar/RarDeploymentDesc.java | 264 -- .../rar/RarDeploymentDescException.java | 75 - .../rar/RequiredConfigPropertyDesc.java | 79 - .../deployment/rar/ResourceadapterDesc.java | 249 -- .../deployment/rar/SecurityEntryDesc.java | 105 - .../rar/SecurityPermissionDesc.java | 80 - .../deployment/rar/TmConfigPropertyDesc.java | 79 - .../jonas/deployment/rar/TmParamsDesc.java | 66 - .../org/ow2/jonas/deployment/rar/Utility.java | 204 - .../rar/lib/RarDeploymentDescManager.java | 348 -- .../rar/rules/ActivationspecRuleSet.java | 63 - .../rar/rules/AdminobjectRuleSet.java | 66 - .../rules/AuthenticationMechanismRuleSet.java | 66 - .../rar/rules/ConfigPropertyRuleSet.java | 68 - .../rules/ConnectionDefinitionRuleSet.java | 72 - .../rar/rules/ConnectorRuleSet.java | 73 - .../deployment/rar/rules/IconRuleSet.java | 64 - .../rules/InboundResourceadapterRuleSet.java | 61 - .../rar/rules/JdbcConnParamsRuleSet.java | 64 - .../rar/rules/JonasActivationspecRuleSet.java | 69 - .../rar/rules/JonasAdminobjectRuleSet.java | 68 - .../rar/rules/JonasConfigPropertyRuleSet.java | 64 - .../JonasConnectionDefinitionRuleSet.java | 74 - .../rar/rules/JonasConnectorRuleSet.java | 101 - .../rules/JonasSecurityMappingRuleSet.java | 61 - .../deployment/rar/rules/LicenseRuleSet.java | 64 - .../rar/rules/MessageadapterRuleSet.java | 61 - .../rar/rules/MessagelistenerRuleSet.java | 64 - .../rules/OutboundResourceadapterRuleSet.java | 66 - .../rar/rules/PoolParamsRuleSet.java | 80 - .../rules/RequiredConfigPropertyRuleSet.java | 64 - .../rar/rules/ResourceadapterRuleSet.java | 82 - .../rar/rules/SecurityEntryRuleSet.java | 64 - .../rar/rules/SecurityPermissionRuleSet.java | 64 - .../rar/rules/TmConfigPropertyRuleSet.java | 65 - .../deployment/rar/rules/TmParamsRuleSet.java | 61 - .../rar/wrapper/RarManagerWrapper.java | 149 - .../deployment/rar/xml/Activationspec.java | 120 - .../jonas/deployment/rar/xml/Adminobject.java | 166 - .../rar/xml/AuthenticationMechanism.java | 144 - .../deployment/rar/xml/ConfigProperty.java | 168 - .../rar/xml/ConnectionDefinition.java | 236 -- .../jonas/deployment/rar/xml/Connector.java | 313 -- .../ow2/jonas/deployment/rar/xml/Icon.java | 111 - .../rar/xml/InboundResourceadapter.java | 89 - .../deployment/rar/xml/JdbcConnParams.java | 111 - .../rar/xml/JonasActivationspec.java | 168 - .../deployment/rar/xml/JonasAdminobject.java | 179 - .../rar/xml/JonasConfigProperty.java | 111 - .../rar/xml/JonasConnectionDefinition.java | 275 -- .../deployment/rar/xml/JonasConnector.java | 429 -- .../rar/xml/JonasSecurityMapping.java | 96 - .../ow2/jonas/deployment/rar/xml/License.java | 121 - .../deployment/rar/xml/Messageadapter.java | 97 - .../deployment/rar/xml/Messagelistener.java | 136 - .../rar/xml/OutboundResourceadapter.java | 175 - .../jonas/deployment/rar/xml/PoolParams.java | 293 -- .../rar/xml/RequiredConfigProperty.java | 120 - .../deployment/rar/xml/Resourceadapter.java | 411 -- .../deployment/rar/xml/SecurityEntry.java | 146 - .../rar/xml/SecurityPermission.java | 121 - .../deployment/rar/xml/TmConfigProperty.java | 111 - .../jonas/deployment/rar/xml/TmParams.java | 102 - .../jonas/deployment/web/JonasWebAppDTDs.java | 87 - .../deployment/web/JonasWebAppSchemas.java | 70 - .../ow2/jonas/deployment/web/MethodDesc.java | 234 - .../ow2/jonas/deployment/web/MethodsDesc.java | 263 -- .../org/ow2/jonas/deployment/web/Pattern.java | 256 -- .../jonas/deployment/web/PatternEntry.java | 343 -- .../web/SecurityConstraintListDesc.java | 453 -- .../deployment/web/SecurityRoleDesc.java | 59 - .../ow2/jonas/deployment/web/ServletDesc.java | 103 - .../web/TransportGuaranteeDesc.java | 136 - .../ow2/jonas/deployment/web/WebAppDTDs.java | 69 - .../jonas/deployment/web/WebAppSchemas.java | 65 - .../web/WebContainerDeploymentDesc.java | 512 --- .../WebContainerDeploymentDescException.java | 78 - .../WarDeployableMetadataFactoryHolder.java | 69 - .../web/lib/WebDeploymentDescManager.java | 1142 ----- .../web/rules/AuthConstraintRuleSet.java | 67 - .../web/rules/DistributableRuleSet.java | 61 - .../web/rules/JonasServletRuleSet.java | 71 - .../web/rules/JonasWebAppRuleSet.java | 75 - .../web/rules/SecurityConstraintRuleSet.java | 65 - .../web/rules/ServletMappingRuleSet.java | 69 - .../deployment/web/rules/ServletRuleSet.java | 82 - .../web/rules/UserDataConstraintRuleSet.java | 68 - .../deployment/web/rules/WebAppRuleSet.java | 67 - .../rules/WebResourceCollectionRuleSet.java | 74 - .../web/wrapper/WebManagerWrapper.java | 199 - .../deployment/web/xml/AuthConstraint.java | 119 - .../deployment/web/xml/JonasServlet.java | 115 - .../jonas/deployment/web/xml/JonasWebApp.java | 294 -- .../web/xml/SecurityConstraint.java | 160 - .../ow2/jonas/deployment/web/xml/Servlet.java | 204 - .../deployment/web/xml/ServletMapping.java | 113 - .../web/xml/UserDataConstraint.java | 120 - .../ow2/jonas/deployment/web/xml/WebApp.java | 262 -- .../web/xml/WebResourceCollection.java | 172 - .../ws/JaxRpcPortComponentDesc.java | 120 - .../deployment/ws/JaxrpcMappingSchemas.java | 60 - .../jonas/deployment/ws/JonasWsSchemas.java | 72 - .../ow2/jonas/deployment/ws/MappingFile.java | 227 - .../deployment/ws/PortComponentDesc.java | 393 -- .../ws/PortComponentDescFactory.java | 72 - .../deployment/ws/PortComponentRefDesc.java | 217 - .../deployment/ws/SSBPortComponentDesc.java | 120 - .../ow2/jonas/deployment/ws/ServiceDesc.java | 394 -- .../jonas/deployment/ws/ServiceRefDesc.java | 604 --- .../org/ow2/jonas/deployment/ws/WSDLFile.java | 418 -- .../jonas/deployment/ws/WSDeploymentDesc.java | 283 -- .../ws/WSDeploymentDescException.java | 81 - .../ow2/jonas/deployment/ws/WsSchemas.java | 59 - .../deployment/ws/lib/MappingFileManager.java | 251 -- .../ws/lib/WSDeploymentDescManager.java | 954 ----- .../ws/rules/AnonymousTypeQnameRuleSet.java | 65 - .../ws/rules/JavaWsdlMappingRuleSet.java | 56 - .../ws/rules/JavaXmlTypeMappingRuleSet.java | 66 - .../ws/rules/JonasPortComponentRuleSet.java | 60 - .../JonasWebserviceDescriptionRuleSet.java | 61 - .../ws/rules/JonasWebservicesRuleSet.java | 59 - .../ws/rules/PackageMappingRuleSet.java | 64 - .../ws/rules/PortComponentRuleSet.java | 77 - .../ws/rules/RootTypeQnameRuleSet.java | 65 - .../ws/rules/ServiceImplBeanRuleSet.java | 65 - .../ws/rules/VariableMappingRuleSet.java | 66 - .../rules/WebserviceDescriptionRuleSet.java | 73 - .../ws/rules/WebservicesRuleSet.java | 59 - .../ws/wrapper/MappingFileManagerWrapper.java | 126 - .../ws/wrapper/WSManagerWrapper.java | 181 - .../deployment/ws/xml/JavaWsdlMapping.java | 130 - .../deployment/ws/xml/JavaXmlTypeMapping.java | 193 - .../deployment/ws/xml/JonasPortComponent.java | 106 - .../ws/xml/JonasWebserviceDescription.java | 151 - .../deployment/ws/xml/JonasWebservices.java | 170 - .../deployment/ws/xml/PackageMapping.java | 111 - .../deployment/ws/xml/PortComponent.java | 208 - .../deployment/ws/xml/ServiceImplBean.java | 112 - .../deployment/ws/xml/VariableMapping.java | 135 - .../ws/xml/WebserviceDescription.java | 260 -- .../jonas/deployment/ws/xml/Webservices.java | 127 - .../resources/META-INF/jonas-deployment.bnd | 40 - .../org/ow2/jonas/deployment/XMLSchema.dtd | 402 -- .../client/application-client_1_2.dtd | 292 -- .../client/application-client_1_3.dtd | 506 --- .../client/application-client_1_4.xsd | 266 -- .../client/application-client_5.xsd | 303 -- .../deployment/client/jonas-client_3_2.dtd | 136 - .../deployment/client/jonas-client_4_0.xsd | 173 - .../deployment/client/jonas-client_4_1.xsd | 183 - .../deployment/client/jonas-client_4_1_2.xsd | 183 - .../deployment/client/jonas-client_4_1_4.xsd | 183 - .../deployment/client/jonas-client_4_2.xsd | 183 - .../deployment/client/jonas-client_5_0.xsd | 182 - .../clusterd/jonas-clusterd_5_0.xsd | 177 - .../org/ow2/jonas/deployment/datatypes.dtd | 203 - .../deployment/domain/jonas-domain_4_7.xsd | 136 - .../deployment/domain/jonas-domain_4_9.xsd | 145 - .../deployment/domain/jonas-domain_5_0.xsd | 177 - .../deployment/domain/jonas-domain_5_1.xsd | 175 - .../jonas/deployment/ear/application_1_2.dtd | 197 - .../jonas/deployment/ear/application_1_3.dtd | 312 -- .../jonas/deployment/ear/application_1_4.xsd | 314 -- .../jonas/deployment/ear/application_5.xsd | 334 -- .../ear/jonas-application_4_1_4.xsd | 140 - .../deployment/ear/jonas-application_5_0.xsd | 140 - .../ow2/jonas/deployment/ejb/ejb-jar_1_1.dtd | 819 ---- .../ow2/jonas/deployment/ejb/ejb-jar_2_0.dtd | 1671 -------- .../jonas/deployment/ejb/ejb-jar_2_0_ws.dtd | 1884 --------- .../ow2/jonas/deployment/ejb/ejb-jar_2_1.xsd | 2207 ---------- .../ow2/jonas/deployment/ejb/ejb-jar_3_0.xsd | 2705 ------------ .../ow2/jonas/deployment/ejb/ejb-jar_3_1.xsd | 3247 -------------- .../deployment/ejb/jonas-ejb-jar_2_4.dtd | 362 -- .../deployment/ejb/jonas-ejb-jar_2_5.dtd | 369 -- .../deployment/ejb/jonas-ejb-jar_3_0.dtd | 370 -- .../deployment/ejb/jonas-ejb-jar_3_2.dtd | 453 -- .../deployment/ejb/jonas-ejb-jar_3_2_ws.dtd | 488 --- .../deployment/ejb/jonas-ejb-jar_3_3.dtd | 492 --- .../deployment/ejb/jonas-ejb-jar_3_3_1.dtd | 502 --- .../deployment/ejb/jonas-ejb-jar_3_3_2.dtd | 514 --- .../deployment/ejb/jonas-ejb-jar_4_0.xsd | 679 --- .../deployment/ejb/jonas-ejb-jar_4_1.xsd | 739 ---- .../deployment/ejb/jonas-ejb-jar_4_10.xsd | 1133 ----- .../deployment/ejb/jonas-ejb-jar_4_1_2.xsd | 802 ---- .../deployment/ejb/jonas-ejb-jar_4_1_4.xsd | 802 ---- .../deployment/ejb/jonas-ejb-jar_4_2.xsd | 823 ---- .../deployment/ejb/jonas-ejb-jar_4_3.xsd | 991 ----- .../deployment/ejb/jonas-ejb-jar_4_6.xsd | 994 ----- .../deployment/ejb/jonas-ejb-jar_4_7.xsd | 1084 ----- .../deployment/ejb/jonas-ejb-jar_4_8.xsd | 1100 ----- .../deployment/ejb/jonas-ejb-jar_5_0.xsd | 1126 ----- .../deployment/ejb/jonas-ejb-jar_5_1.xsd | 1144 ----- .../deployment/ejb/jonas-ejb-jar_5_2.xsd | 1181 ------ .../org/ow2/jonas/deployment/j2ee_1_4.xsd | 1607 ------- .../j2ee_web_services_client_1_1.xsd | 341 -- .../org/ow2/jonas/deployment/javaee_5.xsd | 2095 --------- .../org/ow2/jonas/deployment/javaee_6.xsd | 2422 ----------- .../javaee_web_services_client_1_2.xsd | 578 --- .../javaee_web_services_client_1_3.xsd | 737 ---- .../jonas/deployment/jonas-clusterd_5_0.xsd | 177 - .../deployment/jonas-deployment-plan_0_1.xsd | 172 - .../ow2/jonas/deployment/jonas_j2ee_4_0.xsd | 235 -- .../ow2/jonas/deployment/jonas_j2ee_4_1.xsd | 311 -- .../ow2/jonas/deployment/jonas_j2ee_4_1_2.xsd | 361 -- .../ow2/jonas/deployment/jonas_j2ee_4_1_4.xsd | 372 -- .../ow2/jonas/deployment/jonas_j2ee_4_2.xsd | 382 -- .../jonas/deployment/rar/connector_1_0.dtd | 561 --- .../jonas/deployment/rar/connector_1_5.xsd | 1035 ----- .../deployment/rar/jonas-connector_3_0.dtd | 200 - .../deployment/rar/jonas-connector_4_0.xsd | 473 --- .../deployment/rar/jonas-connector_4_1.xsd | 485 --- .../deployment/rar/jonas-connector_4_2.xsd | 530 --- .../deployment/rar/jonas-connector_4_4.xsd | 573 --- .../deployment/rar/jonas-connector_5_0.xsd | 573 --- .../jonas/deployment/web/configure_1_1.dtd | 157 - .../jonas/deployment/web/configure_1_2.dtd | 211 - .../deployment/web/jonas-web-app_2_6.dtd | 111 - .../deployment/web/jonas-web-app_3_1.dtd | 133 - .../deployment/web/jonas-web-app_3_3.dtd | 180 - .../deployment/web/jonas-web-app_4_0.xsd | 141 - .../deployment/web/jonas-web-app_4_1.xsd | 146 - .../deployment/web/jonas-web-app_4_1_2.xsd | 147 - .../deployment/web/jonas-web-app_4_1_4.xsd | 147 - .../deployment/web/jonas-web-app_4_2.xsd | 147 - .../deployment/web/jonas-web-app_5_1.xsd | 204 - .../org/ow2/jonas/deployment/web/jsp_2_0.xsd | 307 -- .../org/ow2/jonas/deployment/web/jsp_2_1.xsd | 342 -- .../org/ow2/jonas/deployment/web/jsp_2_2.xsd | 389 -- .../ow2/jonas/deployment/web/web-app_2_2.dtd | 639 --- .../ow2/jonas/deployment/web/web-app_2_3.dtd | 1063 ----- .../ow2/jonas/deployment/web/web-app_2_4.xsd | 1242 ------ .../ow2/jonas/deployment/web/web-app_2_5.xsd | 1268 ------ .../ow2/jonas/deployment/web/web-app_3_0.xsd | 272 -- .../jonas/deployment/web/web-common_3_0.xsd | 1575 ------- .../deployment/web/web-facesconfig_1_2.xsd | 2071 --------- .../deployment/web/web-jsptaglibrary_2_1.xsd | 1143 ----- .../ow2/jonas/deployment/ws/I18n.properties | 48 - .../jonas/deployment/ws/I18n_fr.properties | 48 - .../deployment/ws/j2ee_jaxrpc_mapping_1_0.dtd | 431 -- .../deployment/ws/j2ee_jaxrpc_mapping_1_1.xsd | 915 ---- .../deployment/ws/j2ee_web_services_1_0.dtd | 303 -- .../deployment/ws/j2ee_web_services_1_1.xsd | 490 --- .../deployment/ws/javaee_web_services_1_2.xsd | 747 ---- .../ws/javaee_web_services_client_1_2.xsd | 578 --- .../deployment/ws/jonas-webservices_3_3.dtd | 54 - .../ws/jonas_j2ee_web_services_4_0.xsd | 104 - .../ws/jonas_j2ee_web_services_4_1_2.xsd | 163 - .../ws/jonas_j2ee_web_services_4_1_4.xsd | 164 - .../ws/jonas_j2ee_web_services_4_2.xsd | 179 - .../ws/jonas_j2ee_web_services_4_5.xsd | 228 - .../ws/jonas_j2ee_web_services_5_0.xsd | 228 - .../org/ow2/jonas/deployment/xml.xsd | 81 - .../client/tests/ClientDeploymentTest.java | 64 - .../tests/JonasClientDeploymentTest.java | 65 - .../domain/tests/DomainMapTest.java | 71 - .../ear/tests/EarDeploymentTest.java | 73 - .../ejb/tests/EJBDeploymentTest.java | 65 - .../ejb/tests/JonasEJBDeploymentTest.java | 62 - .../rar/tests/JonasRarDeploymentTest.java | 63 - .../rar/tests/RarDeploymentTest.java | 64 - .../deployment/tests/AbsDeploymentTest.java | 351 -- .../web/tests/JonasWebDeploymentTest.java | 69 - .../web/tests/WebDeploymentTest.java | 69 - .../ws/tests/JonasWsDeploymentTest.java | 65 - .../deployment/ws/tests/WsDeploymentTest.java | 102 - .../libraries/jonas-ejb-container-svc/pom.xml | 46 - .../org/ow2/jonas/lib/svc/JHandleIIOP.java | 142 - .../ow2/jonas/lib/svc/JHomeHandleIIOP.java | 173 - .../java/org/ow2/jonas/lib/svc/JMetaData.java | 148 - .../java/org/ow2/jonas/lib/svc/Utility.java | 80 - .../META-INF/jonas-ejb-container-svc.bnd | 25 - .../libraries/jonas-ejb-container/pom.xml | 194 - .../org/ow2/jonas/lib/ejb21/BeanFactory.java | 141 - .../ow2/jonas/lib/ejb21/CollectionEnum.java | 103 - .../org/ow2/jonas/lib/ejb21/Container.java | 206 - .../ow2/jonas/lib/ejb21/EJBInvocation.java | 74 - .../ow2/jonas/lib/ejb21/EntityCounters.java | 67 - .../ow2/jonas/lib/ejb21/ExceptionHelper.java | 62 - .../org/ow2/jonas/lib/ejb21/HomeFactory.java | 89 - .../org/ow2/jonas/lib/ejb21/JContainer.java | 1278 ------ .../org/ow2/jonas/lib/ejb21/JContext.java | 437 -- .../ow2/jonas/lib/ejb21/JEntityContext.java | 716 ---- .../ow2/jonas/lib/ejb21/JEntityFactory.java | 1377 ------ .../ow2/jonas/lib/ejb21/JEntityHandle.java | 81 - .../org/ow2/jonas/lib/ejb21/JEntityHome.java | 75 - .../org/ow2/jonas/lib/ejb21/JEntityLocal.java | 170 - .../ow2/jonas/lib/ejb21/JEntityLocalHome.java | 80 - .../ow2/jonas/lib/ejb21/JEntityRemote.java | 223 - .../ow2/jonas/lib/ejb21/JEntitySwitch.java | 1098 ----- .../ow2/jonas/lib/ejb21/JEntitySwitchCRC.java | 273 -- .../ow2/jonas/lib/ejb21/JEntitySwitchCRU.java | 149 - .../ow2/jonas/lib/ejb21/JEntitySwitchCRW.java | 240 -- .../ow2/jonas/lib/ejb21/JEntitySwitchCS.java | 290 -- .../ow2/jonas/lib/ejb21/JEntitySwitchCST.java | 287 -- .../ow2/jonas/lib/ejb21/JEntitySwitchDB.java | 197 - .../ow2/jonas/lib/ejb21/JEntitySwitchRO.java | 153 - .../org/ow2/jonas/lib/ejb21/JFactory.java | 1157 ----- .../ow2/jonas/lib/ejb21/JHandleDelegate.java | 133 - .../java/org/ow2/jonas/lib/ejb21/JHome.java | 336 -- .../org/ow2/jonas/lib/ejb21/JHomeHandle.java | 94 - .../java/org/ow2/jonas/lib/ejb21/JLocal.java | 69 - .../org/ow2/jonas/lib/ejb21/JLocalHome.java | 174 - .../jonas/lib/ejb21/JMdbEndpointFactory.java | 815 ---- .../org/ow2/jonas/lib/ejb21/JMdbFactory.java | 615 --- .../jonas/lib/ejb21/JMessageDrivenBean.java | 477 --- .../ow2/jonas/lib/ejb21/JMessageEndpoint.java | 374 -- .../lib/ejb21/JMessageEndpointProxy.java | 277 -- .../jonas/lib/ejb21/JObjectInputStream.java | 69 - .../java/org/ow2/jonas/lib/ejb21/JRemote.java | 106 - .../ow2/jonas/lib/ejb21/JServiceEndpoint.java | 198 - .../jonas/lib/ejb21/JServiceEndpointHome.java | 180 - .../ow2/jonas/lib/ejb21/JSessionContext.java | 215 - .../ow2/jonas/lib/ejb21/JSessionFactory.java | 491 --- .../ow2/jonas/lib/ejb21/JSessionHandle.java | 69 - .../org/ow2/jonas/lib/ejb21/JSessionHome.java | 103 - .../ow2/jonas/lib/ejb21/JSessionLocal.java | 188 - .../jonas/lib/ejb21/JSessionLocalHome.java | 81 - .../ow2/jonas/lib/ejb21/JSessionRemote.java | 276 -- .../ow2/jonas/lib/ejb21/JSessionSwitch.java | 134 - .../ow2/jonas/lib/ejb21/JStatefulContext.java | 239 -- .../ow2/jonas/lib/ejb21/JStatefulFactory.java | 397 -- .../jonas/lib/ejb21/JStatefulInputStream.java | 167 - .../lib/ejb21/JStatefulOutputStream.java | 144 - .../ow2/jonas/lib/ejb21/JStatefulSwitch.java | 564 --- .../jonas/lib/ejb21/JStatelessContext.java | 205 - .../jonas/lib/ejb21/JStatelessFactory.java | 486 --- .../ow2/jonas/lib/ejb21/JStatelessSwitch.java | 193 - .../java/org/ow2/jonas/lib/ejb21/JTimer.java | 566 --- .../org/ow2/jonas/lib/ejb21/JTimerHandle.java | 172 - .../ow2/jonas/lib/ejb21/JTimerService.java | 378 -- .../org/ow2/jonas/lib/ejb21/JWrapper.java | 81 - .../org/ow2/jonas/lib/ejb21/JavaType.java | 442 -- .../org/ow2/jonas/lib/ejb21/MarshallTool.java | 118 - .../ow2/jonas/lib/ejb21/MonitoringEvent.java | 97 - .../jonas/lib/ejb21/PermissionManager.java | 372 -- .../ow2/jonas/lib/ejb21/PrincipalFactory.java | 43 - .../org/ow2/jonas/lib/ejb21/Protocols.java | 144 - .../org/ow2/jonas/lib/ejb21/RequestCtx.java | 105 - .../java/org/ow2/jonas/lib/ejb21/Swapper.java | 174 - .../org/ow2/jonas/lib/ejb21/TraceEjb.java | 226 - .../org/ow2/jonas/lib/ejb21/TxListener.java | 197 - .../ow2/jonas/lib/ejb21/jorm/CMP2Bean.java | 66 - .../org/ow2/jonas/lib/ejb21/jorm/Coder.java | 59 - .../ow2/jonas/lib/ejb21/jorm/Collection.java | 229 - .../lib/ejb21/jorm/CollectionElement.java | 63 - .../lib/ejb21/jorm/FloatPkFieldMapping.java | 73 - .../jonas/lib/ejb21/jorm/GenClassElement.java | 319 -- .../jonas/lib/ejb21/jorm/GenClassImpl.java | 829 ---- .../lib/ejb21/jorm/GenClassListener.java | 58 - .../jonas/lib/ejb21/jorm/JEntityContext.java | 74 - .../ow2/jonas/lib/ejb21/jorm/JormFactory.java | 424 -- .../ow2/jonas/lib/ejb21/jorm/JormType.java | 253 -- .../jonas/lib/ejb21/jorm/MapperManager.java | 190 - .../jonas/lib/ejb21/jorm/MedorFactory.java | 272 -- .../org/ow2/jonas/lib/ejb21/jorm/PObject.java | 46 - .../ow2/jonas/lib/ejb21/jorm/PObjectHome.java | 45 - .../ow2/jonas/lib/ejb21/jorm/RdbFactory.java | 112 - .../lib/ejb21/jorm/RdbMappingBuilder.java | 703 ---- .../org/ow2/jonas/lib/ejb21/jorm/Set.java | 244 -- .../lib/ejb21/sql/EjbqlAbstractVisitor.java | 784 ---- .../lib/ejb21/sql/EjbqlLimitVisitor.java | 141 - .../lib/ejb21/sql/EjbqlLimiterRange.java | 82 - .../lib/ejb21/sql/EjbqlOrderByVisitor.java | 126 - .../ejb21/sql/EjbqlQueryFilterVisitor.java | 827 ---- .../lib/ejb21/sql/EjbqlQueryTreeHolder.java | 245 -- .../lib/ejb21/sql/EjbqlSelectVisitor.java | 211 - .../lib/ejb21/sql/EjbqlVariableVisitor.java | 646 --- .../lib/ejb21/sql/SqlDateFieldMapping.java | 74 - .../lib/ejb21/sql/SqlTimeFieldMapping.java | 73 - .../ejb21/sql/SqlTimestampFieldMapping.java | 73 - .../META-INF/jonas-ejb-container.bnd | 61 - .../modules/libraries/jonas-ejb2.1-ha/pom.xml | 56 - .../jonas/lib/ejb21/ha/EntityBeanRefImpl.java | 82 - .../jonas/lib/ejb21/ha/JRepEntityHome.java | 99 - .../jonas/lib/ejb21/ha/JRepEntityLocal.java | 94 - .../lib/ejb21/ha/JRepEntityLocalHome.java | 88 - .../jonas/lib/ejb21/ha/JRepEntityRemote.java | 219 - .../lib/ejb21/ha/JRepStatefulInputStream.java | 144 - .../jonas/lib/ejb21/ha/JRepStatefulLocal.java | 186 - .../lib/ejb21/ha/JRepStatefulLocalHome.java | 106 - .../lib/ejb21/ha/JRepStatefulObjectId.java | 82 - .../ejb21/ha/JRepStatefulOutputStream.java | 66 - .../lib/ejb21/ha/JRepStatefulRemote.java | 257 -- .../lib/ejb21/ha/JRepStatelessRemote.java | 224 - .../org/ow2/jonas/lib/ejb21/ha/JRepUtil.java | 210 - .../lib/ejb21/ha/StatefulBeanRefImpl.java | 164 - .../resources/META-INF/jonas-ejb2.1-ha.bnd | 30 - jonas/modules/libraries/jonas-mbeans/pom.xml | 97 - .../org/ow2/jonas/lib/jmbeans/J2EEServer.java | 1922 --------- .../jonas/lib/jmbeans/J2EEServerMBean.java | 562 --- .../org/ow2/jonas/lib/jmbeans/JavaVm.java | 231 - .../org/ow2/jonas/lib/jmbeans/LogManager.java | 152 - .../jonas/lib/jmbeans/LogManagerMBean.java | 38 - .../jonas/lib/jmbeans/MBeansRegistration.java | 294 -- .../ow2/jonas/lib/jmbeans/log/LogBuffer.java | 595 --- .../jonas/lib/jmbeans/log/LogBufferMBean.java | 82 - .../jonas/lib/jmbeans/log/LogManagement.java | 213 - .../lib/jmbeans/log/LogManagementMBean.java | 70 - .../jmbeans/log/LogNotificationListener.java | 94 - .../lib/jmbeans/log/LogRecordComparator.java | 59 - .../jonas/lib/jmbeans/log/RecordFeeder.java | 154 - .../jmbeans/monitoring/MemoryMonitoring.java | 209 - .../main/resources/META-INF/jonas-mbeans.bnd | 30 - .../src/main/resources/metadata.xml | 96 - .../jonas/lib/jmbeans/mbeans-descriptors.xml | 853 ---- jonas/modules/libraries/jonas-naming/pom.xml | 56 - .../jonas/lib/naming/ComponentContext.java | 929 ---- .../jonas/lib/naming/ComponentNameParser.java | 61 - .../SingletonComponentContextFactory.java | 143 - .../lib/naming/SingletonNamingManager.java | 311 -- .../org/ow2/jonas/lib/naming/URLFactory.java | 100 - .../jonas/lib/naming/java/javaURLContext.java | 680 --- .../naming/java/javaURLContextFactory.java | 86 - .../main/resources/META-INF/jonas-naming.bnd | 32 - .../src/main/resources/metadata.xml | 56 - .../libraries/jonas-service-manager/pom.xml | 66 - .../manager/DeployableEnumeration.java | 78 - .../manager/RequireJOnASServicesHandler.java | 79 - .../lib/service/manager/ServiceItem.java | 93 - .../service/manager/ServiceManagerImpl.java | 767 ---- .../lib/service/manager/ServiceTracker.java | 82 - .../lib/service/manager/ServiceUtil.java | 79 - .../META-INF/jonas-service-manager.bnd | 28 - .../src/main/resources/metadata.xml | 64 - jonas/modules/libraries/jonas-timer/pom.xml | 46 - .../org/ow2/jonas/lib/timer/TimerEvent.java | 163 - .../jonas/lib/timer/TimerEventListener.java | 34 - .../org/ow2/jonas/lib/timer/TimerManager.java | 291 -- .../org/ow2/jonas/lib/timer/TraceTimer.java | 62 - .../main/resources/META-INF/jonas-timer.bnd | 25 - jonas/modules/libraries/jonas-version/pom.xml | 39 - .../src/main/java/org/ow2/jonas/Version.java | 115 - .../main/resources/META-INF/jonas-version.bnd | 24 - .../libraries/management/domain/pom.xml | 72 - .../domain/AuthenticationInformation.java | 116 - .../lib/management/domain/DeployAction.java | 163 - .../lib/management/domain/DomainMonitor.java | 1443 ------- .../lib/management/domain/J2EEDomain.java | 719 ---- .../domain/cluster/BaseCluster.java | 580 --- .../domain/cluster/BaseClusterMBean.java | 91 - .../domain/cluster/ClusterFactory.java | 111 - .../domain/cluster/ClusterMember.java | 157 - .../domain/cluster/ClusterMemberMBean.java | 52 - .../domain/cluster/cmi/CmiCluster.java | 237 -- .../domain/cluster/cmi/CmiClusterFactory.java | 220 - .../domain/cluster/cmi/CmiClusterMBean.java | 42 - .../domain/cluster/cmi/CmiClusterMember.java | 47 - .../cluster/cmi/CmiClusterMemberMBean.java | 36 - .../domain/cluster/ha/EjbHaCluster.java | 133 - .../cluster/ha/EjbHaClusterFactory.java | 186 - .../domain/cluster/ha/EjbHaClusterMBean.java | 39 - .../domain/cluster/ha/EjbHaClusterMember.java | 46 - .../cluster/ha/EjbHaClusterMemberMBean.java | 37 - .../domain/cluster/jk/JkCluster.java | 273 -- .../domain/cluster/jk/JkClusterFactory.java | 177 - .../domain/cluster/jk/JkClusterMBean.java | 44 - .../domain/cluster/jk/JkClusterMember.java | 119 - .../cluster/jk/JkClusterMemberMBean.java | 54 - .../cluster/logical/LogicalCluster.java | 150 - .../logical/LogicalClusterFactory.java | 139 - .../cluster/logical/LogicalClusterMember.java | 47 - .../logical/LogicalClusterMemberMBean.java | 37 - .../domain/cluster/tomcat/TomcatCluster.java | 185 - .../cluster/tomcat/TomcatClusterFactory.java | 232 - .../cluster/tomcat/TomcatClusterMBean.java | 42 - .../cluster/tomcat/TomcatClusterMember.java | 513 --- .../tomcat/TomcatClusterMemberMBean.java | 80 - .../domain/proxy/ConnectorUtils.java | 217 - .../lib/management/domain/proxy/JMXProxy.java | 420 -- .../proxy/clusterd/ClusterDaemonProxy.java | 742 ---- .../clusterd/ClusterDaemonProxyMBean.java | 216 - .../domain/proxy/server/ServerProxy.java | 1864 -------- .../domain/proxy/server/ServerProxyMBean.java | 252 -- .../proxy/server/ServerProxyProperties.java | 100 - .../main/resources/META-INF/jonas-domain.bnd | 30 - .../libraries/management/extensions/pom.xml | 76 - .../extensions/base/AdminException.java | 71 - .../extensions/base/AdminHelper.java | 574 --- .../extensions/base/AdminJmxHelper.java | 1478 ------- .../extensions/base/BaseManagement.java | 455 -- .../extensions/base/BaseObjectName.java | 35 - .../extensions/base/ConnectorItem.java | 53 - .../extensions/base/JonasManagementRepr.java | 640 --- .../base/LocalManagementContext.java | 118 - .../management/extensions/base/NameItem.java | 32 - .../management/extensions/base/RealmItem.java | 109 - .../base/RealmItemByNameComparator.java | 47 - .../base/mbean/CatalinaObjectName.java | 125 - .../base/mbean/J2EEObjectNames.java | 54 - .../extensions/base/mbean/J2eeMbeanItem.java | 98 - .../extensions/base/mbean/MbeanItem.java | 137 - .../extensions/base/mbean/ObjectNameItem.java | 67 - .../extensions/base/mbean/OwnerMbeanItem.java | 69 - .../extensions/cluster/ClusterManagement.java | 224 - .../ClusterdaemonManagement.java | 521 --- .../container/ContainerManagement.java | 287 -- .../extensions/container/ejb/EjbItem.java | 137 - .../ejb/EjbItemByNameComparator.java | 53 - .../extensions/domain/DomainManagement.java | 516 --- .../manager/ManagementEntryPoint.java | 1141 ----- .../extensions/server/ServerItem.java | 240 -- .../extensions/server/ServerManagement.java | 256 -- .../extensions/server/ServerMonitoring.java | 726 ---- .../extensions/util/ConnectorUtils.java | 222 - .../extensions/util/FileManagementUtils.java | 112 - .../META-INF/jonas-management-extensions.bnd | 36 - .../libraries/management/javaee/pom.xml | 63 - .../apache/commons/modeler/ManagedBean.java | 548 --- .../management/javaee/J2EEDeployedObject.java | 109 - .../javaee/J2EEDeployedObjectMBean.java | 68 - .../management/javaee/J2EEManagedObject.java | 175 - .../javaee/J2EEManagedObjectMBean.java | 128 - .../lib/management/javaee/J2EEModule.java | 63 - .../management/javaee/J2EEModuleMBean.java | 52 - .../lib/management/javaee/J2EEResource.java | 71 - .../management/javaee/J2EEServerState.java | 96 - .../management/javaee/J2EEServiceState.java | 56 - .../lib/management/javaee/J2eeObjectName.java | 1603 ------- .../javaee/JSR77ManagementIdentifier.java | 181 - .../lib/management/javaee/ManagedObject.java | 105 - .../META-INF/jonas-management-javaee.bnd | 30 - jonas/modules/libraries/management/pom.xml | 48 - .../libraries/management/reconfig/pom.xml | 57 - .../reconfig/IConfigurationActuator.java | 43 - .../reconfig/IConfigurationData.java | 32 - .../reconfig/PropertiesConfigurationData.java | 92 - .../reconfig/ReconfigException.java | 42 - .../management/reconfig/ReconfigManager.java | 372 -- .../reconfig/ReconfigManagerMBean.java | 33 - .../reconfig/XMLConfigurationData.java | 65 - .../actuator/BaseConfigurationActuator.java | 81 - .../PropertiesConfigurationActuator.java | 220 - .../actuator/XMLConfigurationActuator.java | 108 - .../META-INF/jonas-management-reconfig.bnd | 25 - .../libraries/management/services/pom.xml | 45 - .../services/JOnASServiceModelMBean.java | 56 - .../services/ReconfigNotifications.java | 39 - .../META-INF/jonas-management-services.bnd | 24 - .../services/mbeans-descriptors.xml | 33 - jonas/modules/libraries/pom.xml | 71 - jonas/modules/libraries/security/auth/pom.xml | 48 - .../ow2/jonas/lib/security/auth/JGroup.java | 149 - .../jonas/lib/security/auth/JPrincipal.java | 93 - .../ow2/jonas/lib/security/auth/JRole.java | 46 - .../ow2/jonas/lib/security/auth/JSigned.java | 61 - .../ow2/jonas/lib/security/auth/JSubject.java | 74 - .../META-INF/jonas-security-auth.bnd | 24 - .../security/interceptors/iiop/pom.xml | 82 - .../security/iiop/Csiv2ClientInterceptor.java | 417 -- .../ow2/jonas/security/iiop/Csiv2Const.java | 61 - .../jonas/security/iiop/Csiv2Initializer.java | 120 - .../iiop/Csiv2InterceptorException.java | 49 - .../security/iiop/Csiv2IorInterceptor.java | 475 --- .../security/iiop/Csiv2ServerInterceptor.java | 342 -- .../ow2/jonas/security/iiop/ORBHelper.java | 80 - .../security/iiop/SecurityContextHelper.java | 179 - .../SecurityContextInitializer.java | 55 - .../SecurityContextInitializerException.java | 46 - .../iiop/CorbaClientSecurityInterceptor.java | 101 - .../iiop/CorbaServerSecurityInterceptor.java | 117 - .../iiop/SecurityInitializer.java | 49 - .../iiop/SecurityInterceptor.java | 71 - .../META-INF/jonas-sec-interceptors-iiop.bnd | 32 - .../iiop/src/main/resources/metadata.xml | 45 - .../security/interceptors/jrmp/pom.xml | 56 - .../jrmp/ClientSecurityInterceptor.java | 107 - .../jrmp/SecurityInitializer.java | 61 - .../jrmp/SecurityServiceContext.java | 82 - .../jrmp/ServerSecurityInterceptor.java | 103 - .../jrmp/ctxcheck/CtxCheckConfig.java | 139 - .../jrmp/ctxcheck/Initializer.java | 59 - .../jrmp/ctxcheck/ServerInterceptor.java | 208 - .../META-INF/jonas-sec-interceptors-jrmp.bnd | 24 - .../libraries/security/interceptors/pom.xml | 52 - .../libraries/security/jacc-handlers/pom.xml | 63 - .../jacc/handlers/JPolicyContextHandler.java | 166 - .../JPolicyContextHandlerCurrent.java | 81 - .../handlers/JPolicyContextHandlerData.java | 138 - .../META-INF/jonas-security-jacc-handlers.bnd | 24 - jonas/modules/libraries/security/jacc/pom.xml | 58 - .../lib/security/AbsPermissionManager.java | 183 - .../security/PermissionManagerException.java | 55 - .../ow2/jonas/lib/security/jacc/JPolicy.java | 379 -- .../security/jacc/JPolicyConfiguration.java | 768 ---- .../jacc/JPolicyConfigurationFactory.java | 203 - .../jacc/JPolicyConfigurationKeeper.java | 85 - .../lib/security/jacc/JPolicyException.java | 55 - .../lib/security/jacc/JPolicyWrapper.java | 111 - .../PolicyConfigurationFactoryWrapper.java | 119 - .../META-INF/jonas-security-jacc.bnd | 24 - .../jonas/lib/security/jacc/I18n.properties | 17 - jonas/modules/libraries/security/pom.xml | 48 - .../libraries/security/propagation/pom.xml | 40 - .../lib/security/context/Marshalling.java | 238 -- .../lib/security/context/SecurityContext.java | 447 -- .../lib/security/context/SecurityCurrent.java | 97 - .../mapping/JPolicyUserRoleMapping.java | 114 - .../META-INF/jonas-security-propagation.bnd | 27 - .../transaction/interceptors/iiop/pom.xml | 46 - .../ots/OTSClientTransactionInterceptor.java | 204 - .../ow2/jonas/tm/jotm/ots/OTSInterceptor.java | 303 -- .../jonas/tm/jotm/ots/OTSORBInitializer.java | 80 - .../ots/OTSServerTransactionInterceptor.java | 238 -- .../jonas-trans-interceptors-iiop.bnd | 24 - .../transaction/interceptors/pom.xml | 51 - jonas/modules/libraries/transaction/pom.xml | 44 - jonas/modules/pom.xml | 84 - jonas/modules/services/bootstrap/pom.xml | 76 - .../bootstrap/JOnASConfiguration.java | 428 -- .../JOnASDeploymentPlanDeployer.java | 206 - .../PlatformMBeanServerDelegate.java | 269 -- .../deploymentplan/JOnASDeploymentPlan.java | 139 - .../JOnASDeploymentPlanMBean.java | 42 - .../repository/JOnASRepositories.java | 385 -- .../repository/JOnASRepositoriesMBean.java | 60 - .../src/main/resources/META-INF/bootstrap.bnd | 30 - .../bootstrap/src/main/resources/metadata.xml | 126 - jonas/modules/services/cdi-weld/pom.xml | 93 - .../jonas/cdi/weld/IDeploymentBuilder.java | 44 - .../org/ow2/jonas/cdi/weld/IWeldService.java | 70 - .../cdi/weld/internal/DefaultWeldService.java | 160 - .../cdi/weld/internal/WeldDeployableInfo.java | 62 - .../DefaultBeanDeploymentArchive.java | 211 - .../deployment/DefaultDeployment.java | 100 - .../deployment/DefaultDeploymentBuilder.java | 155 - .../ejb/JBusinessInterfaceDescriptor.java | 44 - .../cdi/weld/internal/ejb/JEjbDescriptor.java | 113 - .../resource/ApplicationResourceLoader.java | 100 - .../services/JOnASServletServices.java | 65 - .../standard/CDIAnnotationProcessor.java | 75 - .../tomcat/WeldContextCustomizer.java | 120 - .../tomcat/WeldLifeCycleListener.java | 218 - .../resources/META-INF/jonas-cdi-weld.bnd | 27 - .../cdi-weld/src/main/resources/metadata.xml | 75 - .../internal/DefaultWeldServiceTestCase.java | 137 - .../DefaultBeanDeploymentArchiveTestCase.java | 85 - .../DefaultDeploymentBuilderTestCase.java | 89 - .../internal/deployment/UserTestBean.java | 32 - .../mock/MockBeanDeploymentArchive.java | 79 - .../weld/internal/mock/MockWeldService.java | 53 - .../cdi-weld/src/test/resources/library.jar | Bin 794 -> 0 bytes jonas/modules/services/cmi/pom.xml | 100 - .../ow2/jonas/cmi/internal/BundleContent.java | 143 - .../cmi/internal/CmiServiceException.java | 54 - .../jonas/cmi/internal/CmiServiceHelper.java | 119 - .../jonas/cmi/internal/CmiServiceImpl.java | 336 -- .../CmiServicePolicyStrategyManager.java | 199 - .../cmi/internal/CmiServiceProperty.java | 81 - .../cmi/internal/LoadBalancingListener.java | 116 - .../cmi/internal/event/BeanEventListener.java | 162 - .../src/main/resources/META-INF/jonas-cmi.bnd | 36 - .../cmi/src/main/resources/metadata.xml | 50 - .../services/deployable-monitor/pom.xml | 77 - .../deployablemonitor/DeployableMonitor.java | 803 ---- .../DeployableMonitorException.java | 93 - .../DeployableMonitorService.java | 432 -- .../ExclusionFilenameFilter.java | 80 - .../LexicographicallyFileComparator.java | 47 - .../mbean/DeployableMonitorServiceMBean.java | 40 - .../META-INF/jonas-deployable-monitor.bnd | 27 - .../src/main/resources/metadata.xml | 62 - .../deployablemonitor/mbeans-descriptors.xml | 84 - jonas/modules/services/ejb/easybeans/pom.xml | 151 - .../src/main/config/easybeans-jonas.xml | 68 - .../jonas/ejb/easybeans/EJB3CleanTask.java | 81 - .../ejb/easybeans/EasyBeansDeployer.java | 360 -- .../jonas/ejb/easybeans/EasyBeansService.java | 969 ----- .../ejb/easybeans/JOnASENCInterceptor.java | 72 - .../easybeans/JOnASResourceAdapterFinder.java | 85 - .../JOnASSecurityContextWrapper.java | 143 - .../ejb/easybeans/JOnASSecurityCurrent.java | 65 - .../ejb/easybeans/PrefixedNamingStrategy.java | 72 - .../META-INF/jonas-ejb-easybeans.bnd | 37 - .../resources/easybeans-cluster-jonas.xml | 43 - .../easybeans/src/main/resources/metadata.xml | 115 - .../ejb/easybeans/mbeans-descriptors.xml | 42 - jonas/modules/services/ejb/ejb-2.1/pom.xml | 90 - .../jonas/ejb2/internal/EJB21Deployer.java | 103 - .../jonas/ejb2/internal/JOnASEJBService.java | 2403 ----------- .../ejb2/internal/JOnASEJBServiceMBean.java | 186 - .../ow2/jonas/ejb2/internal/JarCleanTask.java | 85 - .../ejb2/internal/PrincipalFactoryImpl.java | 55 - .../delegate/HandleDelegateCCFDelegate.java | 80 - .../delegate/JTimerHandleDelegate.java | 125 - .../ow2/jonas/ejb2/internal/mbean/EJB.java | 446 -- .../jonas/ejb2/internal/mbean/EJBModule.java | 425 -- .../jonas/ejb2/internal/mbean/EntityBean.java | 208 - .../internal/mbean/MessageDrivenBean.java | 74 - .../ejb2/internal/mbean/SessionBean.java | 142 - .../internal/mbean/StatefulSessionBean.java | 45 - .../internal/mbean/StatelessSessionBean.java | 51 - .../main/resources/META-INF/jonas-ejb-2.1.bnd | 30 - .../ejb-2.1/src/main/resources/metadata.xml | 146 - .../ejb2/internal/mbeans-descriptors.xml | 864 ---- jonas/modules/services/ejb/pom.xml | 48 - jonas/modules/services/jaxrs-jersey/pom.xml | 86 - .../jaxrs/jersey/internal/JerseyService.java | 77 - .../main/resources/META-INF/jaxrs-jersey.bnd | 44 - .../javax.ws.rs.ext.MessageBodyWriter | 51 - .../src/main/resources/metadata.xml | 39 - .../services/jndi-interceptors/pom.xml | 106 - .../src/main/config/jndi-interceptors.xml | 39 - .../checker/impl/ResourceCheckerManager.java | 110 - .../impl/AbsContextInterceptor.java | 136 - .../jndi/interceptors/impl/Interceptors.java | 65 - .../impl/JNDIInterceptorsComponent.java | 355 -- .../JNDIInterceptorsComponentException.java | 61 - .../audit/AuditSystemContextInterceptor.java | 202 - .../AuditSystemContextInterceptorAdapter.java | 74 - .../impl/datasource/ConnectionProxy.java | 153 - ...aSourceLeakDetectorContextInterceptor.java | 111 - .../impl/datasource/DatasourceWrapper.java | 356 -- ...ResourceCheckerConfigurationExtension.java | 92 - .../easybeans/ResourceCheckerInterceptor.java | 189 - .../resources/META-INF/jndi-interceptors.bnd | 38 - .../src/main/resources/metadata.xml | 85 - .../mapping/jndi-interceptors-mapping.xml | 46 - .../interceptors/impl/mbeans-descriptors.xml | 78 - jonas/modules/services/jonas-audit/pom.xml | 88 - .../audit/internal/JOnASAuditServiceImpl.java | 151 - .../logger/AuditComponentListener.java | 172 - .../logger/AuditLogComponentMBean.java | 194 - .../internal/logger/AuditLogService.java | 1092 ----- .../logger/AuditLogServiceAdapter.java | 174 - .../logger/AuditLogServiceException.java | 70 - .../audit/internal/logger/NodeReport.java | 315 -- .../audit/internal/logger/NodeReportType.java | 68 - .../logger/api/IAuditComponentListener.java | 46 - .../logger/api/IAuditLogListener.java | 40 - .../logger/pool/DatedFileLogPool.java | 214 - .../internal/logger/pool/FileLogPool.java | 642 --- .../logger/util/AuditLogReportHelper.java | 489 --- .../internal/logger/util/LogConfigurator.java | 481 --- .../webauditor/filters/HttpAuditFilter.java | 293 -- .../filters/HttpAuditFilterAdapter.java | 74 - .../WebInvocationAuditReportFactory.java | 236 -- .../main/resources/META-INF/jonas-audit.bnd | 25 - .../src/main/resources/metadata.xml | 55 - .../internal/logger/mbeans-descriptors.xml | 64 - .../webauditor/filters/mbeans-descriptors.xml | 43 - .../filters/HttpAuditFilterTestCase.java | 167 - .../services/jonas-carol-registry/pom.xml | 86 - .../jndi/spi/VirtualJNDIContextFactory.java | 111 - .../ow2/carol/jndi/spi/VirtualJNDILookup.java | 417 -- .../registry/carol/CarolRegistryService.java | 517 --- .../carol/delegate/JacORBPRODelegate.java | 147 - .../carol/delegate/ORBCCFDelegate.java | 106 - .../CarolRegistryConfigurationPlugin.java | 62 - .../carol/osgi/ConfigurationActivator.java | 57 - .../META-INF/jonas-carol-registry.bnd | 87 - .../src/main/resources/metadata.xml | 80 - .../services/jonas-datasources/pom.xml | 79 - .../DatasourceDeployableRegistration.java | 56 - .../deployer/JonasDatasourceCleanTask.java | 80 - .../deployer/JonasDatasourceDeployer.java | 134 - .../META-INF/jonas-services-datasource.bnd | 40 - .../src/main/resources/metadata.xml | 68 - jonas/modules/services/jonas-db/base/pom.xml | 57 - .../ow2/jonas/db/base/AbsDBServiceImpl.java | 158 - .../jonas/db/base/AbsDBServiceImplMBean.java | 33 - .../main/java/org/ow2/jonas/db/base/User.java | 68 - .../main/resources/META-INF/jonas-db-base.bnd | 24 - jonas/modules/services/jonas-db/hsql/pom.xml | 68 - .../jonas/db/hsqldb/HsqlDBServiceImpl.java | 226 - .../main/resources/META-INF/jonas-db-hsql.bnd | 36 - .../hsql/src/main/resources/metadata.xml | 57 - jonas/modules/services/jonas-db/pom.xml | 45 - jonas/modules/services/jonas-dbm/pom.xml | 74 - .../ow2/jonas/dbm/internal/DBMConstants.java | 114 - .../internal/JOnASDataBaseManagerService.java | 742 ---- .../JOnASDataBaseManagerServiceMBean.java | 94 - .../dbm/internal/cm/ConnectionManager.java | 2051 --------- .../jonas/dbm/internal/cm/IConnection.java | 53 - .../jonas/dbm/internal/cm/JConnection.java | 222 - .../dbm/internal/cm/JManagedConnection.java | 986 ----- .../ow2/jonas/dbm/internal/cm/JStatement.java | 988 ----- .../org/ow2/jonas/dbm/internal/cm/Pool.java | 76 - .../internal/cm/naming/DataSourceFactory.java | 127 - .../dbm/internal/mbean/JDBCDataSource.java | 527 --- .../internal/mbean/JDBCDataSourceMBean.java | 62 - .../jonas/dbm/internal/mbean/JDBCDriver.java | 59 - .../dbm/internal/mbean/JDBCResource.java | 77 - .../src/main/resources/META-INF/jonas-dbm.bnd | 31 - .../jonas-dbm/src/main/resources/metadata.xml | 62 - .../jonas/dbm/internal/mbeans-descriptors.xml | 391 -- .../services/jonas-discovery/base/pom.xml | 52 - .../jonas/discovery/base/BaseDiscovery.java | 171 - .../ow2/jonas/discovery/base/DiscHelper.java | 125 - .../base/DiscoveryServiceImplMBean.java | 164 - .../base/DuplicateServerNameException.java | 60 - .../base/comm/ClusterdDiscoveryEvent.java | 69 - .../jonas/discovery/base/comm/DiscEvent.java | 277 -- .../discovery/base/comm/DiscGreeting.java | 183 - .../discovery/base/comm/DiscMessage.java | 129 - .../META-INF/jonas-discovery-base.bnd | 24 - .../services/jonas-discovery/jgroups/pom.xml | 70 - .../jonas/discovery/jgroups/DiscRunnable.java | 49 - .../jgroups/JgroupsDiscoveryServiceImpl.java | 477 --- .../JgroupsDiscoveryServiceImplMBean.java | 33 - .../jgroups/comm/CommDiscoveryInfo.java | 65 - .../jgroups/comm/DiscCommManager.java | 226 - .../discovery/jgroups/comm/api/DiscComm.java | 35 - .../jgroups/comm/api/DiscCommReceiver.java | 36 - .../comm/exception/StopDiscException.java | 58 - .../comm/handler/DiscCommGreetingHandler.java | 122 - .../comm/handler/DiscCommHandlerImpl.java | 471 --- .../jgroups/manager/DiscoveryManager.java | 95 - .../jonas/discovery/jgroups/utils/Data.java | 92 - .../jgroups/utils/DiscoveryUtils.java | 299 -- .../jgroups/utils/IDiscoveryChannel.java | 59 - .../jgroups/utils/JGroupsDiscoveryUtils.java | 571 --- .../META-INF/jonas-discovery-jgroups.bnd | 29 - .../jgroups/src/main/resources/metadata.xml | 66 - .../jgroups/utils/jgroups-discovery.xml | 153 - .../jonas-discovery/multicast/pom.xml | 46 - .../MulticastDiscoveryServiceImpl.java | 528 --- .../MulticastDiscoveryServiceImplMBean.java | 89 - .../internal/client/DiscoveryClient.java | 236 -- .../client/DiscoveryClientListener.java | 229 - .../internal/client/DiscoveryClientMBean.java | 61 - .../internal/comm/DiscoveryComm.java | 339 -- .../comm/DiscoveryGreetingListener.java | 157 - .../comm/DiscoveryGreetingResponder.java | 253 -- .../internal/enroller/DiscoveryListener.java | 156 - .../discovery/internal/enroller/Enroller.java | 155 - .../internal/enroller/EnrollerMBean.java | 79 - .../internal/manager/DiscoveryManager.java | 371 -- .../manager/DiscoveryManagerMBean.java | 100 - .../internal/utils/DiscoveryHelper.java | 115 - .../META-INF/jonas-discovery-multicast.bnd | 26 - .../multicast/src/main/resources/metadata.xml | 73 - .../modules/services/jonas-discovery/pom.xml | 61 - jonas/modules/services/jonas-ear/pom.xml | 82 - .../ear/internal/AppClientModuleInfo.java | 57 - .../org/ow2/jonas/ear/internal/EARModule.java | 113 - .../ow2/jonas/ear/internal/EarCleanTask.java | 82 - .../ow2/jonas/ear/internal/EarDeployer.java | 1777 -------- .../jonas/ear/internal/JOnASEARService.java | 510 --- .../ear/internal/JOnASEARServiceMBean.java | 57 - .../ear/internal/mbean/AppClientModule.java | 62 - .../internal/mbean/EARModuleIdentifier.java | 69 - .../ear/internal/mbean/EARModuleMBean.java | 358 -- .../org/ow2/jonas/ear/internal/mbean/Ear.java | 259 -- .../src/main/resources/META-INF/jonas-ear.bnd | 30 - .../jonas-ear/src/main/resources/metadata.xml | 107 - .../jonas/ear/internal/mbeans-descriptors.xml | 267 -- jonas/modules/services/jonas-ejb-ha/pom.xml | 75 - .../ow2/jonas/ha/internal/HaServiceImpl.java | 216 - .../main/resources/META-INF/jonas-ejb-ha.bnd | 31 - .../src/main/resources/metadata.xml | 52 - .../services/jonas-extension-loader/pom.xml | 73 - .../org/ow2/jonas/extension/loader/Bnd.java | 127 - .../jonas/extension/loader/Bundlizable.java | 107 - .../loader/ExtensionLoaderComponent.java | 347 -- .../META-INF/jonas-extension-loader.bnd | 30 - .../src/main/resources/metadata.xml | 53 - jonas/modules/services/jonas-jmx/pom.xml | 78 - .../jonas/jmx/internal/BaseJMXService.java | 484 --- .../jonas/jmx/internal/JOnASJMXService.java | 551 --- .../src/main/resources/META-INF/jonas-jmx.bnd | 38 - .../jonas-jmx/src/main/resources/metadata.xml | 73 - jonas/modules/services/jonas-mail/pom.xml | 76 - .../jonas/mail/internal/JOnASMailService.java | 638 --- .../internal/factory/AbstractJavaMail.java | 249 -- .../internal/factory/JavaMailMimePartDS.java | 196 - .../factory/JavaMailMimePartDSFactory.java | 228 - .../internal/factory/JavaMailSession.java | 112 - .../factory/JavaMailSessionFactory.java | 142 - .../internal/factory/lib/JAuthenticator.java | 68 - .../mbean/JavaMailMimePartDSResource.java | 72 - .../factory/mbean/JavaMailResource.java | 144 - .../factory/mbean/JavaMailResourceMBean.java | 55 - .../mbean/JavaMailSessionResource.java | 55 - .../main/resources/META-INF/jonas-mail.bnd | 30 - .../src/main/resources/metadata.xml | 60 - .../mail/internal/mbeans-descriptors.xml | 241 -- .../services/jonas-resource-monitor/pom.xml | 67 - .../internal/JOnASResourceMonitorService.java | 282 -- .../JOnASResourceMonitorServiceMBean.java | 62 - .../META-INF/jonas-resource-monitor.bnd | 27 - .../src/main/resources/metadata.xml | 63 - jonas/modules/services/jonas-resource/pom.xml | 121 - .../resource/internal/IJDBCConnection.java | 58 - .../internal/JOnASResourceService.java | 1119 ----- .../internal/JOnASResourceServiceMBean.java | 51 - .../jonas/resource/internal/RARDeployer.java | 103 - .../org/ow2/jonas/resource/internal/Rar.java | 1621 ------- .../internal/ResourceBootstrapContext.java | 87 - .../internal/ResourceServiceConstants.java | 85 - .../resource/internal/ResourceUtility.java | 809 ---- .../jonas/resource/internal/SQLManager.java | 153 - .../internal/cm/ConnectionManagerImpl.java | 1953 --------- .../cm/ConnectionManagerPoolParams.java | 355 -- .../internal/cm/ConnectionResourceHint.java | 73 - .../internal/cm/ManagedConnectionInfo.java | 216 - .../cm/jta/JResourceManagerEvent.java | 145 - .../internal/cm/jta/JSynchronization.java | 148 - .../internal/cm/jta/LocalXAResource.java | 268 -- .../cm/sql/PreparedStatementWrapper.java | 2472 ----------- .../sql/SQLConnectionInvocationHandler.java | 248 -- .../internal/mbean/ArchiveConfigMBean.java | 499 --- .../internal/mbean/JCAActivationSpec.java | 94 - .../internal/mbean/JCAAdminObject.java | 94 - .../internal/mbean/JCAConnectionFactory.java | 499 --- .../mbean/JCAConnectionFactoryMBean.java | 61 - .../mbean/JCAManagedConnectionFactory.java | 46 - .../resource/internal/mbean/JCAResource.java | 113 - .../ow2/jonas/resource/internal/mbean/README | 87 - .../internal/mbean/RarConfigMBean.java | 177 - .../internal/mbean/ResourceAdapter.java | 201 - .../internal/mbean/ResourceAdapterModule.java | 124 - .../naming/ResourceObjectFactory.java | 117 - .../jonas/resource/internal/pool/Pool.java | 449 -- .../resource/internal/pool/PoolItemStats.java | 252 -- .../internal/pool/PoolMatchFactory.java | 95 - .../resource/internal/pool/PoolProvider.java | 40 - .../resource/internal/pool/PoolResource.java | 52 - .../internal/pool/lib/HArrayPool.java | 1385 ------ .../internal/pool/lib/HArrayPoolMonitor.java | 174 - .../resources/META-INF/jonas-resource.bnd | 41 - .../src/main/resources/metadata.xml | 70 - .../resource/internal/mbeans-descriptors.xml | 847 ---- jonas/modules/services/jonas-security/pom.xml | 145 - .../auth/callback/CertificateCallback.java | 61 - .../auth/callback/DialogCallbackHandler.java | 331 -- .../auth/callback/LoginCallbackHandler.java | 168 - .../auth/callback/NoInputCallbackHandler.java | 122 - .../security/auth/spi/CRLLoginModule.java | 293 -- .../security/auth/spi/ClientLoginModule.java | 201 - .../auth/spi/JDirectResourceLoginModule.java | 307 -- .../auth/spi/JResourceLoginModule.java | 309 -- .../security/auth/spi/RemoteLoginModule.java | 400 -- .../spi/RoleBasedAuthorizationModule.java | 267 -- .../security/auth/spi/SignLoginModule.java | 286 -- .../internal/AbsSecurityContextHelper.java | 166 - .../jonas/security/internal/JResources.java | 238 -- .../internal/JonasSecurityServiceImpl.java | 709 ---- .../JonasSecurityServiceImplMBean.java | 147 - .../security/internal/PolicyProvider.java | 148 - .../internal/SecurityServiceException.java | 57 - .../realm/factory/AbstractJResource.java | 276 -- .../internal/realm/factory/JResourceDS.java | 721 ---- .../realm/factory/JResourceDSMBean.java | 42 - .../internal/realm/factory/JResourceLDAP.java | 1198 ------ .../realm/factory/JResourceLDAPMBean.java | 42 - .../realm/factory/JResourceMBean.java | 56 - .../realm/factory/JResourceMemory.java | 531 --- .../realm/factory/JResourceMemoryMBean.java | 42 - .../realm/factory/JResourceRemote.java | 62 - .../realm/factory/JResourceRemoteImpl.java | 195 - .../internal/realm/lib/HashHelper.java | 221 - .../security/internal/realm/lib/XML.java | 109 - .../internal/realm/principal/Group.java | 198 - .../internal/realm/principal/GroupMBean.java | 72 - .../internal/realm/principal/LDAPUser.java | 57 - .../internal/realm/principal/Role.java | 118 - .../internal/realm/principal/RoleMBean.java | 53 - .../internal/realm/principal/User.java | 287 -- .../internal/realm/principal/UserMBean.java | 90 - .../ow2/jonas/security/lib/JErrorHandler.java | 67 - .../jonas/security/lib/JResourceManager.java | 187 - .../ow2/jonas/security/rules/JDSRuleSet.java | 65 - .../jonas/security/rules/JLDAPRuleSet.java | 65 - .../jonas/security/rules/JMemoryRuleSet.java | 88 - .../security/ws/SecurityContextHelper.java | 98 - .../SecurityContextInitializer.java | 55 - .../SecurityContextInitializerException.java | 46 - .../resources/META-INF/jonas-security.bnd | 45 - .../src/main/resources/metadata.xml | 77 - .../realm/factory/mbeans-descriptors.xml | 259 -- .../security/realm/dtd/jonas-realm_1_0.dtd | 196 - jonas/modules/services/jonas-tm-jotm/pom.xml | 94 - .../jonas/tm/jotm/JOTMTransactionManager.java | 257 -- .../jotm/JOTMTransactionResourceManager.java | 52 - .../jonas/tm/jotm/JOTMTransactionService.java | 614 --- .../jonas/tm/jotm/UserTransactionFactory.java | 59 - .../ServerTransactionCCFDelegate.java | 59 - .../jotm/delegate/TransactionCCFDelegate.java | 97 - .../delegate/UserTransactionCCFDelegate.java | 85 - .../ow2/jonas/tm/jotm/mbean/JTAResource.java | 255 -- .../jonas/tm/jotm/mbean/JTAResourceMBean.java | 43 - .../main/resources/META-INF/jonas-tm-jotm.bnd | 35 - .../src/main/resources/metadata.xml | 74 - .../ow2/jonas/tm/jotm/mbeans-descriptors.xml | 167 - .../services/jonas-workcleaner/pom.xml | 55 - .../internal/JOnASWorkCleanerService.java | 274 -- .../JOnASWorkCleanerServiceMBean.java | 45 - .../internal/WorkCleanerTimer.java | 95 - .../resources/META-INF/jonas-workcleaner.bnd | 27 - .../src/main/resources/metadata.xml | 55 - .../services/jonas-workmanager/pom.xml | 73 - .../internal/JOnASWorkManagerService.java | 205 - .../workmanager/internal/JWorkManager.java | 602 --- .../internal/JWorkManagerMBean.java | 57 - .../resources/META-INF/jonas-workmanager.bnd | 29 - .../src/main/resources/metadata.xml | 61 - jonas/modules/services/pom.xml | 87 - jonas/modules/services/smartclient/pom.xml | 71 - .../internal/SmartclientServiceImpl.java | 166 - .../internal/SmartclientServiceImplMBean.java | 40 - .../SmartclientServiceRegistryComponent.java | 67 - .../resources/META-INF/jonas-smartclient.bnd | 28 - .../src/main/resources/metadata.xml | 58 - .../validation/hibernate-validation/pom.xml | 76 - .../JOnASHibernateValidationServiceImpl.java | 150 - .../META-INF/jonas-validation-hibernate.bnd | 26 - .../src/main/resources/metadata.xml | 64 - jonas/modules/services/validation/pom.xml | 47 - jonas/modules/services/versioning/pom.xml | 58 - .../contexts/VirtualJNDIBinding.java | 412 -- .../contexts/VirtualJNDIBindingMBean.java | 59 - .../internal/VersioningServiceImpl.java | 446 -- .../internal/VersioningServiceImplMBean.java | 44 - .../resources/META-INF/jonas-versioning.bnd | 27 - .../src/main/resources/metadata.xml | 61 - .../services/web-container/base/pom.xml | 116 - .../web/base/BaseWebContainerService.java | 2478 ----------- .../base/BaseWebContainerServiceMBean.java | 67 - .../org/ow2/jonas/web/base/WARDeployer.java | 145 - .../main/java/org/ow2/jonas/web/base/War.java | 277 -- .../org/ow2/jonas/web/base/WarCleanTask.java | 81 - .../java/org/ow2/jonas/web/base/WarMBean.java | 91 - .../jonas/web/base/lib/PermissionManager.java | 460 -- .../httpservice/DefaultHttpContextImpl.java | 115 - .../osgi/httpservice/HttpServiceFactory.java | 117 - .../osgi/httpservice/JOnASHttpService.java | 40 - .../httpservice/OSGIResourcesServlet.java | 148 - .../ow2/jonas/web/base/proxy/ContextInfo.java | 75 - .../jonas/web/base/proxy/CopyingStream.java | 106 - .../jonas/web/base/proxy/HTTPResponse.java | 228 - .../web/base/proxy/HttpOnDemandProxy.java | 444 -- .../proxy/HttpOnDemandProxyException.java | 56 - .../web/base/proxy/HttpSocketHandler.java | 500 --- .../META-INF/jonas-web-container-base.bnd | 35 - .../org/ow2/jonas/web/base/proxy/wait.gif | Bin 3711 -> 0 bytes .../web-container/jetty/6.1.x/pom.xml | 98 - .../AnnotationProcessorServletHandler.java | 288 -- .../ow2/jonas/web/jetty6/Jetty6Service.java | 730 ---- .../web/jetty6/security/JettyPrincipal.java | 92 - .../ow2/jonas/web/jetty6/security/Realm.java | 317 -- .../jonas-web-container-jetty-6.1.bnd | 87 - .../6.1.x/src/main/resources/jetty6-web.xml | 427 -- .../jetty/6.1.x/src/main/resources/jetty6.xml | 142 - .../6.1.x/src/main/resources/metadata.xml | 93 - .../services/web-container/jetty/pom.xml | 55 - jonas/modules/services/web-container/pom.xml | 46 - .../web-container/tomcat/6.0.x/pom.xml | 130 - .../apache/catalina/connector/Connector.java | 1308 ------ .../apache/catalina/connector/Response.java | 1778 -------- .../apache/catalina/startup/TldConfig.java | 832 ---- .../util/DefaultAnnotationProcessor.java | 347 -- .../web/tomcat6/CheckOpenResourcesValve.java | 115 - .../jonas/web/tomcat6/FilterValveWrapper.java | 95 - .../jonas/web/tomcat6/JCatalinaRuleSet.java | 247 -- .../jonas/web/tomcat6/JOnASContextConfig.java | 145 - .../web/tomcat6/JOnASStandardContext.java | 647 --- .../web/tomcat6/ResetAuthenticationValve.java | 98 - .../ow2/jonas/web/tomcat6/Tomcat6Service.java | 1530 ------- .../web/tomcat6/custom/ContextCustomizer.java | 44 - .../DirContextURLStreamHandlerService.java | 129 - .../NoSystemAccessWebappClassLoader.java | 110 - .../osgi/httpservice/HttpServiceFactory.java | 56 - .../osgi/httpservice/HttpServiceImpl.java | 399 -- .../tomcat6/osgi/httpservice/OSGIContext.java | 94 - .../osgi/httpservice/OSGIServletContext.java | 118 - .../tomcat6/osgi/httpservice/OSGIWrapper.java | 112 - .../ow2/jonas/web/tomcat6/security/Realm.java | 862 ---- .../web/tomcat6/tx/TransactionValve.java | 131 - .../tomcat6/versioning/AbsVirtualContext.java | 228 - .../web/tomcat6/versioning/ContextFinder.java | 326 -- .../versioning/FilteredOutputStream.java | 230 - .../tomcat6/versioning/VersionedPathBean.java | 114 - .../tomcat6/versioning/VersioningValve.java | 88 - .../tomcat6/versioning/VirtualContext.java | 333 -- .../versioning/VirtualContextMBean.java | 42 - .../tomcat6/versioning/WebModuleContext.java | 65 - .../tomcat6/ws/EndpointInstanceListener.java | 140 - .../ow2/jonas/web/tomcat6/ws/URLUtils.java | 151 - .../ws/WSContextLifecycleListener.java | 227 - .../jonas/web/tomcat6/ws/WSDeployment.java | 208 - .../ws/WebServiceEndpointStandardWrapper.java | 89 - .../tomcat6/ws/WebservicesWebDeployer.java | 692 --- .../SecureWebDeploymentDescBuilder.java | 130 - .../strategy/EjbJarContextNamingStrategy.java | 76 - .../strategy/FixedContextNamingStrategy.java | 68 - .../ServiceContextNamingStrategy.java | 55 - .../6.0.x/src/main/patches/Response.patch | 160 - .../jonas-web-container-tomcat-6.0.bnd | 107 - .../6.0.x/src/main/resources/metadata.xml | 152 - .../jonas/web/tomcat6/mbeans-descriptors.xml | 487 --- .../src/main/resources/tomcat6-context.xml | 44 - .../src/main/resources/tomcat6-server.xml | 147 - .../6.0.x/src/main/resources/tomcat6-web.xml | 1203 ------ .../web-container/tomcat/7.0.x/pom.xml | 238 -- .../java/org/apache/AnnotationProcessor.java | 38 - .../web/tomcat7/CheckOpenResourcesValve.java | 115 - .../jonas/web/tomcat7/FilterValveWrapper.java | 95 - .../jonas/web/tomcat7/JCatalinaRuleSet.java | 247 -- .../jonas/web/tomcat7/JOnASContextConfig.java | 194 - .../web/tomcat7/JOnASStandardContext.java | 686 --- .../web/tomcat7/ResetAuthenticationValve.java | 98 - .../ow2/jonas/web/tomcat7/Tomcat7Service.java | 1637 ------- .../web/tomcat7/custom/ContextCustomizer.java | 44 - .../DirContextURLStreamHandlerService.java | 129 - .../NoSystemAccessWebappClassLoader.java | 110 - .../osgi/httpservice/HttpServiceFactory.java | 56 - .../osgi/httpservice/HttpServiceImpl.java | 404 -- .../tomcat7/osgi/httpservice/OSGIContext.java | 94 - .../osgi/httpservice/OSGIServletContext.java | 118 - .../tomcat7/osgi/httpservice/OSGIWrapper.java | 112 - .../ow2/jonas/web/tomcat7/security/Realm.java | 872 ---- .../web/tomcat7/tx/TransactionValve.java | 131 - .../tomcat7/versioning/AbsVirtualContext.java | 228 - .../web/tomcat7/versioning/ContextFinder.java | 326 -- .../web/tomcat7/versioning/EmptyServlet.java | 73 - .../versioning/FilteredOutputStream.java | 230 - .../tomcat7/versioning/VersionedPathBean.java | 114 - .../tomcat7/versioning/VersioningValve.java | 97 - .../tomcat7/versioning/VirtualContext.java | 338 -- .../versioning/VirtualContextMBean.java | 42 - .../tomcat7/versioning/WebModuleContext.java | 65 - .../tomcat7/ws/EndpointInstanceListener.java | 140 - .../ow2/jonas/web/tomcat7/ws/URLUtils.java | 151 - .../ws/WSContextLifecycleListener.java | 227 - .../jonas/web/tomcat7/ws/WSDeployment.java | 208 - .../ws/WebServiceEndpointStandardWrapper.java | 89 - .../tomcat7/ws/WebservicesWebDeployer.java | 692 --- .../SecureWebDeploymentDescBuilder.java | 130 - .../strategy/EjbJarContextNamingStrategy.java | 76 - .../strategy/FixedContextNamingStrategy.java | 68 - .../ServiceContextNamingStrategy.java | 55 - .../7.0.x/src/main/patches/Response.patch | 154 - .../jonas-web-container-tomcat-7.0.bnd | 108 - .../7.0.x/src/main/resources/metadata.xml | 158 - .../jonas/web/tomcat7/mbeans-descriptors.xml | 529 --- .../src/main/resources/tomcat7-context.xml | 44 - .../src/main/resources/tomcat7-server.xml | 142 - .../7.0.x/src/main/resources/tomcat7-web.xml | 1222 ------ .../services/web-container/tomcat/pom.xml | 66 - .../modules/services/webservices/axis/pom.xml | 106 - .../org/ow2/jonas/ws/axis/AxisService.java | 161 - .../jonas/ws/axis/JAxisServiceFactory.java | 576 --- .../org/ow2/jonas/ws/axis/JAxisServlet.java | 150 - .../java/org/ow2/jonas/ws/axis/JCall.java | 82 - .../ow2/jonas/ws/axis/JOnASEJBProvider.java | 189 - .../java/org/ow2/jonas/ws/axis/JService.java | 194 - .../org/ow2/jonas/ws/axis/JServiceProxy.java | 126 - .../JServletEngineConfigurationFactory.java | 248 -- .../org/ow2/jonas/ws/axis/JonasHandler.java | 325 -- .../org/ow2/jonas/ws/axis/NoopProvider.java | 68 - .../ws/axis/QSUpdateServiceWSDLHandler.java | 506 --- .../java/org/ow2/jonas/ws/axis/URLMapper.java | 82 - .../jonas/ws/axis/WSDDJOnASEJBProvider.java | 66 - .../ow2/jonas/ws/axis/WSDDNoopProvider.java | 66 - .../META-INF/jonas-webservices-axis.bnd | 49 - ...org.apache.axis.EngineConfigurationFactory | 26 - .../axis/src/main/resources/metadata.xml | 70 - .../org/ow2/jonas/ws/axis/I18n.properties | 34 - .../org/ow2/jonas/ws/axis/client-config.wsdd | 13 - .../org/ow2/jonas/ws/axis/server-config.wsdd | 82 - .../services/webservices/axis2/pom.xml | 188 - .../org/ow2/jonas/ws/axis2/Axis2Service.java | 285 -- .../ws/axis2/JOnASJaxWsImplementorInfo.java | 163 - .../jonas/ws/axis2/JaxWsImplementorInfo.java | 323 -- .../easybeans/Axis2EJBWebserviceEndpoint.java | 109 - .../easybeans/Axis2EjbMessageReceiver.java | 227 - .../easybeans/Axis2EndpointController.java | 73 - .../Axis2EndpointLifecycleManager.java | 63 - .../Axis2EndpointLifecycleManagerFactory.java | 58 - .../easybeans/Axis2ServiceDispatcher.java | 64 - .../easybeans/EasybeansAxis2Invoker.java | 86 - .../ext/Axis2ConfigurationExtension.java | 73 - .../ext/JAXWS20ResourceInjector.java | 74 - .../easybeans/ext/LifeCycleCallback.java | 403 -- .../WebServiceContextInjectionHandler.java | 68 - .../http/Axis2RequestResponseTransport.java | 103 - .../ws/axis2/http/Axis2TransportInfo.java | 45 - .../ws/axis2/http/AxisServiceGenerator.java | 700 --- .../jonas/ws/axis2/http/WSDLQueryHandler.java | 373 -- .../jonas/ws/axis2/jaxws/Axis2WSEndpoint.java | 1077 ----- .../ws/axis2/jaxws/WebservicesContainer.java | 63 - .../impl/AttachmentDescriptionImpl.java | 76 - .../impl/DescriptionFactoryImpl.java | 531 --- .../description/impl/DescriptionUtils.java | 620 --- .../impl/EndpointDescriptionImpl.java | 2153 ---------- .../EndpointInterfaceDescriptionImpl.java | 1103 ----- .../impl/FaultDescriptionImpl.java | 250 -- .../impl/OperationDescriptionImpl.java | 2281 ---------- .../impl/ParameterDescriptionImpl.java | 427 -- .../jaxws/description/impl/PortInfoImpl.java | 73 - .../impl/ServiceDescriptionImpl.java | 2662 ------------ .../description/impl/URIResolverImpl.java | 310 -- .../ws/axis2/util/Axis2Java2WSDLBuilder.java | 220 - .../ws/axis2/util/AxisService2WSDL11.java | 1734 -------- .../ow2/jonas/ws/axis2/util/JAXWSTools.java | 131 - .../ow2/jonas/ws/axis2/util/JAXWSUtils.java | 208 - .../ws/axis2/util/SimpleURIResolver.java | 152 - .../ws/axis2/util/SimpleWSDLLocator.java | 64 - .../ow2/jonas/ws/axis2/util/WSDLUtils.java | 114 - .../src/main/resources/META-INF/axis2.xml | 460 -- .../META-INF/jonas-webservices-axis2.bnd | 79 - .../axis2/src/main/resources/metadata.xml | 81 - .../ow2/jonas/ws/axis2/ejb3/JAXWSBean.java | 77 - .../ow2/jonas/ws/axis2/ejb3/JAXWSGreeter.java | 33 - .../ow2/jonas/ws/axis2/pojo/HelloService.java | 46 - .../ow2/jonas/ws/axis2/pojo/word/Word.java | 73 - .../ws/axis2/test/Axis2HandlerChainTest.java | 59 - .../ws/axis2/test/Axis2WSEndpointTest.java | 305 -- .../test/ServletInputStreamForTest.java | 55 - .../test/ServletOutputStreamForTest.java | 49 - .../test/ServletRequestAdapterForTest.java | 363 -- .../test/ServletResponseAdapterForTest.java | 285 -- .../test/StatelessSessionFactoryForTest.java | 48 - .../src/test/resources/WEB-INF/handlers.xml | 20 - .../resources/WEB-INF/test_service_pojo.xml | 17 - .../test/resources/WEB-INF/wsdl/TestPojo.wsdl | 89 - .../modules/services/webservices/cxf/pom.xml | 120 - .../java/org/ow2/jonas/ws/cxf/BusCreator.java | 203 - .../java/org/ow2/jonas/ws/cxf/CXFService.java | 558 --- .../ws/cxf/JOnASJaxWsImplementorInfo.java | 164 - .../ws/cxf/JOnASJaxWsServerFactoryBean.java | 180 - .../cxf/client/CxfWebServiceRefBuilder.java | 44 - .../CxfWebServiceRefObjectFactory.java | 63 - .../factory/HandlerResolverDelegate.java | 61 - .../easybeans/CXFEJBWebserviceEndpoint.java | 107 - .../ws/cxf/easybeans/CXFResourceInjector.java | 59 - .../easybeans/EasyBeansInvokerFactory.java | 129 - .../EasyBeansJaxWsServerFactoryBean.java | 114 - .../EasyBeansJaxWsServiceFactoryBean.java | 66 - .../cxf/easybeans/EasyBeansMethodInvoker.java | 76 - .../ext/CXFConfigurationExtension.java | 98 - .../ext/JAXWS20ResourceInjector.java | 74 - .../cxf/easybeans/ext/LifeCycleCallback.java | 487 --- .../WebServiceContextInjectionHandler.java | 68 - .../jonas/ws/cxf/http/JOnASDestination.java | 126 - .../cxf/http/JOnASHTTPTransportFactory.java | 68 - .../ws/cxf/http/JOnASWSDLQueryHandler.java | 166 - .../ow2/jonas/ws/cxf/jaxws/CXFWSEndpoint.java | 251 -- .../ws/cxf/jaxws/WebservicesContainer.java | 197 - .../org/ow2/jonas/ws/cxf/util/WSDLUtils.java | 95 - .../META-INF/jonas-webservices-cxf.bnd | 26 - .../cxf/src/main/resources/metadata.xml | 114 - .../services/webservices/jaxrpc/pom.xml | 77 - .../base/ClientJServiceFactoryFinder.java | 112 - .../jonas/ws/jaxrpc/base/JAXRPCService.java | 1284 ------ .../ws/jaxrpc/base/JAXRPCServiceMBean.java | 68 - .../ws/jaxrpc/factory/JServiceFactory.java | 57 - .../jaxrpc/mbean/AbstractWebServiceMBean.java | 133 - .../ow2/jonas/ws/jaxrpc/mbean/Handler.java | 158 - .../jonas/ws/jaxrpc/mbean/PortComponent.java | 191 - .../ow2/jonas/ws/jaxrpc/mbean/Service.java | 171 - .../jaxrpc/mbean/WebServicesObjectName.java | 300 -- .../META-INF/jonas-webservices-jaxrpc.bnd | 26 - .../ow2/jonas/ws/jaxrpc/base/I18n.properties | 22 - .../ws/jaxrpc/mbean/mbeans-descriptors.xml | 213 - .../services/webservices/jaxws/pom.xml | 127 - .../ow2/jonas/ws/jaxws/base/JAXWSService.java | 139 - .../ws/jaxws/base/JAXWSServiceMBean.java | 34 - .../jaxws/base/JAXWSWebservicesContainer.java | 152 - .../ws/jaxws/base/JAXWSWebservicesModule.java | 132 - .../base/audit/AbstractJaxwsAuditHandler.java | 74 - .../ws/jaxws/base/audit/JaxwsAuditReport.java | 84 - .../base/audit/JaxwsClientAuditHandler.java | 77 - .../base/audit/JaxwsEndpointAuditHandler.java | 124 - .../base/audit/mbean/AuditHandlerAdapter.java | 75 - .../client/JAXWSWebServiceRefBuilder.java | 52 - .../JAXWSWebServiceRefObjectFactory.java | 114 - .../easybeans/EasyBeansContextNamingInfo.java | 114 - .../EasyBeansSecurityConstraint.java | 111 - .../WebServiceRefExtensionListener.java | 227 - .../handler/HandlerResourceProcessor.java | 139 - .../jaxws/handler/JOnASHandlerResolver.java | 146 - .../jaxws/handler/PostConstructProcessor.java | 81 - .../AnnotationHandlerChainBuilder.java | 202 - .../jaxws/handler/builder/BindingUtils.java | 81 - .../DescriptorHandlerChainBuilder.java | 66 - .../jaxws/handler/builder/HandlerBuilder.java | 180 - .../handler/builder/HandlerChainBuilder.java | 181 - .../ws/jaxws/http/servlet/JAXWSServlet.java | 119 - .../http/servlet/ServletRequestAdapter.java | 99 - .../http/servlet/ServletResponseAdapter.java | 67 - .../jonas/ws/jaxws/util/JAXWSClassUtils.java | 102 - .../META-INF/jonas-webservices-jaxws.bnd | 33 - .../base/audit/mbean/mbeans-descriptors.xml | 45 - .../ow2/jonas/ws/axis2/pojo/HelloService.java | 42 - .../ow2/jonas/ws/axis2/pojo/word/Word.java | 65 - .../test/handlers/GreeterLogicalHandler.java | 65 - .../test/handlers/GreeterSOAPHandler.java | 99 - .../JaxwsClientAuditHandlerTestCase.java | 124 - .../JaxwsEndpointAuditHandlerTestCase.java | 100 - .../jaxws/test/JOnASHandlerResolverTest.java | 116 - .../src/test/resources/WEB-INF/handlers.xml | 20 - jonas/modules/services/webservices/pom.xml | 49 - .../services/webservices/publish/pom.xml | 66 - .../internal/file/FileWSDLPublisher.java | 188 - .../internal/file/JDefinitionWriter.java | 262 -- .../manager/DefaultWSDLPublisherManager.java | 175 - .../manager/WSDLPublisherFactory.java | 213 - .../registry/RegistryWSDLPublisher.java | 447 -- .../META-INF/jonas-webservices-publish.bnd | 26 - .../publish/src/main/resources/metadata.xml | 69 - .../publish/internal/manager/I18n.properties | 15 - .../internal/manager/mbeans-descriptors.xml | 45 - jonas/modules/tools/commands/pom.xml | 59 - .../ow2/jonas/commands/admin/CLIArgument.java | 59 - .../jonas/commands/admin/CLIConstants.java | 114 - .../ow2/jonas/commands/admin/ClientAdmin.java | 1645 -------- .../ow2/jonas/commands/admin/UtilAdmin.java | 402 -- .../commands/admin/util/ExceptionUtils.java | 79 - .../admin/util/JMXConnectionHelper.java | 182 - .../jonas/commands/admin/util/PrintUtils.java | 153 - .../ow2/jonas/commands/check/CheckEnv.java | 301 -- .../commands/wrapper/GenerateWrapperConf.java | 209 - jonas/modules/tools/eclipse-compiler/pom.xml | 78 - .../eclipse/compiler/CompilationContext.java | 198 - .../jonas/eclipse/compiler/CompilerError.java | 102 - .../compiler/JOnASCompilationUnit.java | 135 - .../jonas/eclipse/compiler/JOnASCompiler.java | 107 - .../compiler/JOnASCompilerRequestor.java | 137 - .../compiler/JOnASNameEnvironment.java | 210 - .../org/ow2/jonas/eclipse/compiler/Util.java | 108 - .../resources/META-INF/eclipse-compiler.bnd | 34 - .../test/UpperCase/UpperCasePackage.java | 36 - .../input/test/inheritance/Inheritance.java | 43 - .../test/input/test/multiple/Multiple.java | 43 - .../src/test/input/test/simple/Simple.java | 36 - .../compiler/EclipseCompilerTestCase.java | 288 -- .../test/java/test/inheritance/Interface.java | 34 - .../java/test/inheritance/SuperClass.java | 37 - jonas/modules/tools/jonas-ant-tasks/pom.xml | 67 - .../java/org/objectweb/jonas/ant/EjbJar.java | 37 - .../org/objectweb/jonas/ant/GenICTask.java | 37 - .../objectweb/jonas/ant/JOnASBaseTask.java | 37 - .../jonas/ant/JOnASClusterConfigTask.java | 37 - .../org/objectweb/jonas/ant/JOnASTask.java | 37 - .../org/objectweb/jonas/ant/JProperty.java | 37 - .../org/objectweb/jonas/ant/ServerDeploy.java | 37 - .../org/objectweb/jonas/ant/WsGenTask.java | 37 - .../java/org/ow2/jonas/ant/BootstrapTask.java | 348 -- .../org/ow2/jonas/ant/DescriptorHandler.java | 452 -- .../org/ow2/jonas/ant/EJBDeploymentTool.java | 90 - .../main/java/org/ow2/jonas/ant/EjbJar.java | 587 --- .../java/org/ow2/jonas/ant/GenICTask.java | 329 -- .../ow2/jonas/ant/GenericDeploymentTool.java | 929 ---- .../org/ow2/jonas/ant/HotDeploymentTool.java | 72 - .../jonas/ant/InnerClassFilenameFilter.java | 41 - .../java/org/ow2/jonas/ant/JOnASAntTool.java | 165 - .../java/org/ow2/jonas/ant/JOnASBaseTask.java | 409 -- .../ow2/jonas/ant/JOnASClusterConfigTask.java | 408 -- .../java/org/ow2/jonas/ant/JOnASTask.java | 210 - .../java/org/ow2/jonas/ant/JProperty.java | 110 - .../ow2/jonas/ant/JonasDeploymentTool.java | 918 ---- .../ow2/jonas/ant/JonasHotDeploymentTool.java | 146 - .../org/ow2/jonas/ant/PropertyStatement.java | 99 - .../java/org/ow2/jonas/ant/ServerDeploy.java | 150 - .../java/org/ow2/jonas/ant/WsGenTask.java | 371 -- .../ow2/jonas/ant/cluster/CarolCluster.java | 153 - .../ow2/jonas/ant/cluster/ClusterDaemon.java | 484 --- .../ow2/jonas/ant/cluster/ClusterTasks.java | 273 -- .../org/ow2/jonas/ant/cluster/CmiCluster.java | 102 - .../org/ow2/jonas/ant/cluster/Common.java | 144 - .../org/ow2/jonas/ant/cluster/DbCluster.java | 88 - .../org/ow2/jonas/ant/cluster/DbmCluster.java | 87 - .../jonas/ant/cluster/DeployableCluster.java | 203 - .../jonas/ant/cluster/DeploymentCluster.java | 172 - .../org/ow2/jonas/ant/cluster/Director.java | 240 -- .../jonas/ant/cluster/DiscoveryCluster.java | 327 -- .../org/ow2/jonas/ant/cluster/EjbLevel.java | 153 - .../org/ow2/jonas/ant/cluster/HaCluster.java | 108 - .../ow2/jonas/ant/cluster/JdbcRaCluster.java | 225 - .../ow2/jonas/ant/cluster/JdbcXmlCluster.java | 332 -- .../org/ow2/jonas/ant/cluster/JmsCluster.java | 125 - .../org/ow2/jonas/ant/cluster/LibCluster.java | 110 - .../ow2/jonas/ant/cluster/MailCluster.java | 130 - .../java/org/ow2/jonas/ant/cluster/ModJk.java | 494 --- .../org/ow2/jonas/ant/cluster/Script.java | 414 -- .../jonas/ant/cluster/ServicesCluster.java | 104 - .../ant/cluster/WebContainerCluster.java | 396 -- .../org/ow2/jonas/ant/cluster/WebLevel.java | 112 - .../jonas/ant/cluster/WsdlPublishCluster.java | 96 - .../org/ow2/jonas/ant/jonasbase/Archives.java | 62 - .../ow2/jonas/ant/jonasbase/BaseTaskItf.java | 69 - .../org/ow2/jonas/ant/jonasbase/Carol.java | 353 -- .../java/org/ow2/jonas/ant/jonasbase/Cmi.java | 131 - .../java/org/ow2/jonas/ant/jonasbase/Db.java | 95 - .../java/org/ow2/jonas/ant/jonasbase/Dbm.java | 93 - .../ant/jonasbase/DeployableSelector.java | 57 - .../jonas/ant/jonasbase/DeployableTask.java | 270 -- .../jonas/ant/jonasbase/DeploymentPlans.java | 41 - .../ow2/jonas/ant/jonasbase/Discovery.java | 525 --- .../java/org/ow2/jonas/ant/jonasbase/Ha.java | 103 - .../org/ow2/jonas/ant/jonasbase/JCopy.java | 105 - .../org/ow2/jonas/ant/jonasbase/JEcho.java | 111 - .../org/ow2/jonas/ant/jonasbase/JMkdir.java | 100 - .../org/ow2/jonas/ant/jonasbase/JReplace.java | 106 - .../org/ow2/jonas/ant/jonasbase/JTask.java | 224 - .../org/ow2/jonas/ant/jonasbase/JTouch.java | 100 - .../org/ow2/jonas/ant/jonasbase/JdbcRa.java | 398 -- .../org/ow2/jonas/ant/jonasbase/JdbcXml.java | 409 -- .../java/org/ow2/jonas/ant/jonasbase/Jms.java | 197 - .../org/ow2/jonas/ant/jonasbase/JmsRa.java | 240 -- .../jonas/ant/jonasbase/JonasProperties.java | 279 -- .../java/org/ow2/jonas/ant/jonasbase/Lib.java | 82 - .../org/ow2/jonas/ant/jonasbase/Mail.java | 197 - .../ow2/jonas/ant/jonasbase/PropertyTask.java | 117 - .../org/ow2/jonas/ant/jonasbase/Replace.java | 636 --- .../org/ow2/jonas/ant/jonasbase/Services.java | 109 - .../org/ow2/jonas/ant/jonasbase/Tasks.java | 88 - .../ow2/jonas/ant/jonasbase/WebContainer.java | 219 - .../ant/jonasbase/XMLSerializerTask.java | 121 - .../jonasbase/jaas/JResourceLoginModule.java | 125 - .../ow2/jonas/ant/jonasbase/jaas/Jaas.java | 100 - .../jonas/ant/jonasbase/jaas/JaasEntry.java | 87 - .../jonas/ant/jonasbase/jaas/LoginModule.java | 58 - .../org/ow2/jonas/ant/jonasbase/web/Ajp.java | 59 - .../ow2/jonas/ant/jonasbase/web/Cluster.java | 131 - .../ow2/jonas/ant/jonasbase/web/Director.java | 60 - .../org/ow2/jonas/ant/jonasbase/web/Http.java | 58 - .../ow2/jonas/ant/jonasbase/web/Https.java | 149 - .../ow2/jonas/ant/jonasbase/web/Jetty.java | 156 - .../ow2/jonas/ant/jonasbase/web/Tomcat.java | 294 -- .../ow2/jonas/ant/jonasbase/wsdl/File.java | 108 - .../ow2/jonas/ant/jonasbase/wsdl/Uddi.java | 192 - .../jonas/ant/jonasbase/wsdl/WsdlPublish.java | 187 - .../resources/META-INF/jonas-ant-tasks.bnd | 42 - .../resources/org/ow2/jonas/ant/antlib.xml | 44 - .../tools/jonas-cluster-daemon/pom.xml | 76 - .../jonas/cluster/daemon/ClusterDaemon.java | 2371 ----------- .../cluster/daemon/ClusterDaemonAdmin.java | 170 - .../daemon/ClusterDaemonException.java | 93 - .../cluster/daemon/ClusterDaemonMBean.java | 362 -- .../cluster/daemon/ClusterDaemonTools.java | 296 -- .../daemon/mbean/JMXRemoteException.java | 77 - .../cluster/daemon/mbean/JMXRemoteHelper.java | 247 -- .../daemon/mbean/MBeanServerException.java | 77 - .../daemon/mbean/MBeanServerHelper.java | 130 - .../META-INF/jonas-cluster-daemon.bnd | 31 - .../META-INF/jonas-cluster-daemon.bnd | 31 - .../tools/launchers/felix-launcher/pom.xml | 80 - .../felix/DefaultConfigurationProvider.java | 452 -- .../felix/IConfigurationProvider.java | 42 - .../org/ow2/jonas/launcher/felix/JOnAS.java | 270 -- .../jonas/launcher/felix/VersionNumber.java | 78 - .../jonas/launcher/felix/util/IOUtils.java | 167 - .../jonas/launcher/felix/util/JOnASUtils.java | 142 - .../launcher/felix/util/Maven2Utils.java | 120 - .../resources/META-INF/felix-launcher.bnd | 37 - .../jonas/launcher/felix/defaults.properties | 93 - .../jonas/launcher/felix/gateway.properties | 108 - .../launcher/felix/javase-profiles.properties | 554 --- jonas/modules/tools/launchers/pom.xml | 44 - .../modules/tools/maven/genic-plugin/pom.xml | 48 - .../tool/maven/genic/plugin/GenICMojo.java | 224 - jonas/modules/tools/maven/pom.xml | 59 - .../modules/tools/maven/wsgen-plugin/pom.xml | 49 - .../tool/maven/wsgen/plugin/WsGenMojo.java | 129 - jonas/modules/tools/migration-jboss/pom.xml | 38 - .../ow2/jonas/migration/jboss/Migrate.java | 303 -- .../jonas/migration/jboss/Transformer.java | 439 -- .../org/ow2/jonas/migration/jboss/jboss.xml | 216 - .../jonas/migration/jboss/jbosscmp-jdbc.xml | 55 - .../jonas/migration/jboss/jonas-ejb-jar.xml | 124 - jonas/modules/tools/pom.xml | 50 - jonas/pom.xml | 2089 --------- jonas_doc/src/resources/images/JonasSmall.png | Bin 6305 -> 0 bytes jonas_tests/.classpath | 24 - jonas_tests/.cvsignore | 4 - jonas_tests/.project | 18 - .../.settings/org.eclipse.jdt.core.prefs | 12 - jonas_tests/README | 23 - jonas_tests/applications/.cvsignore | 1 - jonas_tests/applications/build.xml | 167 - .../apps/mejb/F_MonitoringEndpoint.java | 174 - .../util/JApplicationsTestCase.java | 312 -- jonas_tests/build.dtd | 2585 ------------ jonas_tests/build.properties | 52 - jonas_tests/build.xml | 474 --- jonas_tests/cluster/build-client.xml | 607 --- jonas_tests/cluster/build.properties | 44 - jonas_tests/cluster/build.xml | 1180 ------ .../cluster/test/common/AbsTestClient.java | 165 - .../jonas/cluster/test/common/Checker.java | 108 - .../jonas/cluster/test/common/ClientTask.java | 139 - .../jonas/cluster/test/common/JOnASTask.java | 252 -- .../cluster/test/common/RunnableTask.java | 54 - .../jonas/cluster/test/common/TestEnum.java | 134 - .../ow2/jonas/cluster/test/common/Worker.java | 94 - .../cluster/test/common/build-jc.properties | 161 - .../cluster/test/common/defConf.properties | 6 - jonas_tests/cluster/etc/footer.html | 2 - jonas_tests/cluster/etc/header.html | 154 - .../etc/style/environment/junit-noframes.xsl | 155 - .../etc/style/include/junit-noframes.xsl | 355 -- .../etc/style/standalone/junit-noframes.xsl | 591 --- .../etc/style/standalone_perfs/compare.xsl | 559 --- .../style/standalone_perfs/junit-noframes.xsl | 588 --- jonas_tests/cluster/etc/suiteslist.html | 18 - .../cluster/logging/logging.properties | 80 - jonas_tests/cluster/resources/cmi-client.xml | 40 - .../cluster/resources/test-config.properties | 6 - .../jonas/cluster/test/j2ee14/ClientTest.java | 193 - .../test/j2ee14/SampleCluster2Test.java | 181 - .../cluster/test/javaee5/ClientTest.java | 175 - .../test/javaee5/SampleCluster3Test.java | 177 - .../test/javaee5/client/ClientException.java | 81 - .../test/javaee5/client/ClientFOSFSB.java | 111 - .../test/javaee5/client/ClientLBRemote.java | 105 - .../cluster/testing-applications/build.xml | 49 - .../testing-applications/jmx/build.xml | 157 - .../jmx/etc/META-INF/MANIFEST.MF | 1 - .../jmx/etc/application.xml | 49 - .../jmx/etc/cmi-jmx-client-application.xml | 37 - .../jmx/etc/cmi-jmx-client-jonas.xml | 33 - .../test/jmx/client/ClientJMXTester.java | 217 - .../cluster/test/jmx/client/JMXTest.java | 93 - .../cluster/test/jmx/common/ClientBase.java | 150 - .../test/jmx/common/ClientUtility.java | 100 - .../cluster/test/jmx/ejb/ClusterFangBean.java | 83 - .../test/jmx/ejb/ClusterJMXTester.java | 879 ---- .../test/jmx/ejb/ClusterJMXTesterBean.java | 552 --- .../test/jmx/ejb/LocalClusterJMXTester.java | 46 - .../test/jmx/ejb/RemoteClusterFangBean.java | 69 - .../test/jmx/ejb/RemoteClusterJMXTester.java | 34 - .../testing-applications/jonas-common.xml | 251 -- .../cluster/tools/maven-ant-tasks-2.0.9.jar | Bin 1018394 -> 0 bytes jonas_tests/conformance/.cvsignore | 2 - jonas_tests/conformance/.gitignore | 2 - jonas_tests/conformance/build.xml | 518 --- jonas_tests/conformance/build_hotdeploy.xml | 129 - .../conformance/src/hotdeploy1/Helper.java | 5 - .../conformance/src/hotdeploy1/HotDeploy.java | 15 - .../src/hotdeploy1/HotDeployHome.java | 16 - .../src/hotdeploy1/HotDeploySLR.java | 97 - .../conformance/src/hotdeploy1/hotdeploy.xml | 41 - .../src/hotdeploy1/jonas-hotdeploy.xml | 12 - .../conformance/src/hotdeploy2/Helper.java | 5 - .../conformance/src/hotdeploy2/HotDeploy.java | 15 - .../src/hotdeploy2/HotDeployHome.java | 16 - .../src/hotdeploy2/HotDeploySLR.java | 97 - .../conformance/src/hotdeploy2/hotdeploy.xml | 41 - .../src/hotdeploy2/jonas-hotdeploy.xml | 12 - .../jonas/jtests/beans/annuaire/Personne.java | 51 - .../jtests/beans/annuaire/PersonneEC.java | 175 - .../jtests/beans/annuaire/PersonneEC2.java | 314 -- .../jtests/beans/annuaire/PersonneHome.java | 46 - .../jonas/jtests/beans/annuaire/README | 5 - .../jonas/jtests/beans/annuaire/annuaire.xml | 187 - .../jtests/beans/annuaire/jonas-annuaire.xml | 91 - .../jonas/jtests/beans/applimet/Appli.java | 36 - .../jtests/beans/applimet/AppliHome.java | 36 - .../jtests/beans/applimet/AppliLocal.java | 30 - .../jtests/beans/applimet/AppliLocalHome.java | 36 - .../jtests/beans/applimet/AppliSession.java | 111 - .../jonas/jtests/beans/applimet/Dao.java | 69 - .../jonas/jtests/beans/applimet/Met.java | 39 - .../jonas/jtests/beans/applimet/MetHome.java | 36 - .../jonas/jtests/beans/applimet/MetLocal.java | 32 - .../jtests/beans/applimet/MetLocalHome.java | 36 - .../jtests/beans/applimet/MetSession.java | 167 - .../jonas/jtests/beans/applimet/applimet.xml | 109 - .../jtests/beans/applimet/jonas-applimet.xml | 40 - .../jonas/jtests/beans/bank/AccountEC2.java | 245 -- .../jonas/jtests/beans/bank/AccountLocal.java | 40 - .../jtests/beans/bank/AccountLocalHome.java | 42 - .../jonas/jtests/beans/bank/Manager.java | 103 - .../jonas/jtests/beans/bank/ManagerHome.java | 40 - .../jonas/jtests/beans/bank/ManagerSF.java | 438 -- .../objectweb/jonas/jtests/beans/bank/README | 3 - .../jonas/jtests/beans/bank/bank.xml | 698 --- .../jonas/jtests/beans/bank/jonas-bank.xml | 196 - .../jtests/beans/beanexc/AccountCommon.java | 131 - .../jonas/jtests/beans/beanexc/AccountE.java | 39 - .../jonas/jtests/beans/beanexc/AccountEB.java | 373 -- .../jonas/jtests/beans/beanexc/AccountEC.java | 83 - .../jtests/beans/beanexc/AccountEC2.java | 188 - .../jtests/beans/beanexc/AccountEHome.java | 48 - .../jonas/jtests/beans/beanexc/AccountPK.java | 53 - .../jonas/jtests/beans/beanexc/AccountS.java | 46 - .../jonas/jtests/beans/beanexc/AccountSF.java | 40 - .../jtests/beans/beanexc/AccountSHome.java | 36 - .../jonas/jtests/beans/beanexc/AccountSL.java | 85 - .../jonas/jtests/beans/beanexc/AccountSY.java | 89 - .../jtests/beans/beanexc/AppException.java | 40 - .../jtests/beans/beanexc/BTAccountSL.java | 35 - .../jonas/jtests/beans/beanexc/beanexc.xml | 527 --- .../jtests/beans/beanexc/jonas-beanexc.xml | 101 - .../jonas/jtests/beans/bmt/Moscone.java | 17 - .../jonas/jtests/beans/bmt/MosconeHome.java | 15 - .../jonas/jtests/beans/bmt/MosconeST.java | 324 -- .../objectweb/jonas/jtests/beans/bmt/bmt.xml | 52 - .../jonas/jtests/beans/bmt/jonas-bmt.xml | 40 - .../jonas/jtests/beans/cluster/Identity.java | 11 - .../jtests/beans/cluster/IdentityEC.java | 174 - .../jtests/beans/cluster/IdentityHome.java | 15 - .../jonas/jtests/beans/cluster/README | 7 - .../jonas/jtests/beans/cluster/cluster.xml | 129 - .../jtests/beans/cluster/jonas-cluster.xml | 124 - .../jonas/jtests/beans/ebasic/Account.java | 15 - .../jonas/jtests/beans/ebasic/AccountEC.java | 84 - .../jonas/jtests/beans/ebasic/AccountEC2.java | 191 - .../jtests/beans/ebasic/AccountHome.java | 19 - .../jonas/jtests/beans/ebasic/BDate.java | 22 - .../jonas/jtests/beans/ebasic/BDateEC2.java | 117 - .../jonas/jtests/beans/ebasic/BDateHome.java | 18 - .../jonas/jtests/beans/ebasic/E4Query.java | 41 - .../jonas/jtests/beans/ebasic/E4QueryEC2.java | 106 - .../jtests/beans/ebasic/E4QueryHome.java | 72 - .../jonas/jtests/beans/ebasic/Person.java | 14 - .../jonas/jtests/beans/ebasic/PersonEC.java | 84 - .../jonas/jtests/beans/ebasic/PersonEC2.java | 195 - .../jonas/jtests/beans/ebasic/PersonHome.java | 20 - .../jonas/jtests/beans/ebasic/Simple.java | 43 - .../jonas/jtests/beans/ebasic/SimpleEB.java | 477 --- .../jonas/jtests/beans/ebasic/SimpleEC.java | 80 - .../jonas/jtests/beans/ebasic/SimpleEC2.java | 175 - .../jonas/jtests/beans/ebasic/SimpleHome.java | 49 - .../jonas/jtests/beans/ebasic/ebasic.xml | 676 --- .../jtests/beans/ebasic/jonas-ebasic.xml | 303 -- .../jtests/beans/ebasic/pkautoObject.java | 42 - .../jtests/beans/ebasic/pkautoObjectEC.java | 64 - .../jtests/beans/ebasic/pkautoObjectEC2.java | 104 - .../jtests/beans/ebasic/pkautoObjectHome.java | 41 - .../jonas/jtests/beans/ejbql/AddressBean.java | 104 - .../jonas/jtests/beans/ejbql/AddressDO.java | 29 - .../jtests/beans/ejbql/AddressHomeLocal.java | 16 - .../jtests/beans/ejbql/AddressHomeRemote.java | 39 - .../jtests/beans/ejbql/AddressLocal.java | 14 - .../jtests/beans/ejbql/AddressRemote.java | 9 - .../jonas/jtests/beans/ejbql/CabinBean.java | 71 - .../jtests/beans/ejbql/CabinHomeLocal.java | 22 - .../jtests/beans/ejbql/CabinHomeRemote.java | 29 - .../jonas/jtests/beans/ejbql/CabinLocal.java | 17 - .../jonas/jtests/beans/ejbql/CabinRemote.java | 15 - .../jtests/beans/ejbql/CreditCardBean.java | 67 - .../beans/ejbql/CreditCardHomeLocal.java | 18 - .../beans/ejbql/CreditCardHomeRemote.java | 21 - .../jtests/beans/ejbql/CreditCardLocal.java | 21 - .../jtests/beans/ejbql/CreditCompanyBean.java | 56 - .../beans/ejbql/CreditCompanyHomeLocal.java | 19 - .../beans/ejbql/CreditCompanyLocal.java | 11 - .../jonas/jtests/beans/ejbql/CruiseBean.java | 71 - .../jtests/beans/ejbql/CruiseHomeLocal.java | 22 - .../jtests/beans/ejbql/CruiseHomeRemote.java | 23 - .../jonas/jtests/beans/ejbql/CruiseLocal.java | 17 - .../jtests/beans/ejbql/CruiseRemote.java | 7 - .../jtests/beans/ejbql/CustomerBean.java | 340 -- .../jtests/beans/ejbql/CustomerHomeLocal.java | 70 - .../beans/ejbql/CustomerHomeRemote.java | 116 - .../jtests/beans/ejbql/CustomerLocal.java | 36 - .../jtests/beans/ejbql/CustomerRemote.java | 33 - .../jonas/jtests/beans/ejbql/Name.java | 21 - .../jonas/jtests/beans/ejbql/PhoneBean.java | 49 - .../jtests/beans/ejbql/PhoneHomeLocal.java | 20 - .../jtests/beans/ejbql/PhoneHomeRemote.java | 17 - .../jonas/jtests/beans/ejbql/PhoneLocal.java | 11 - .../jtests/beans/ejbql/ReservationBean.java | 194 - .../beans/ejbql/ReservationHomeLocal.java | 20 - .../beans/ejbql/ReservationHomeRemote.java | 39 - .../jtests/beans/ejbql/ReservationLocal.java | 25 - .../jtests/beans/ejbql/ReservationRemote.java | 11 - .../jonas/jtests/beans/ejbql/SequenceEC2.java | 34 - .../jtests/beans/ejbql/SequenceLocal.java | 6 - .../jtests/beans/ejbql/SequenceLocalHome.java | 6 - .../jtests/beans/ejbql/SequenceSession.java | 7 - .../beans/ejbql/SequenceSessionHome.java | 8 - .../beans/ejbql/SequenceSessionLocal.java | 5 - .../beans/ejbql/SequenceSessionLocalHome.java | 7 - .../jtests/beans/ejbql/SequenceSessionSL.java | 72 - .../jtests/beans/ejbql/SessionTestBean.java | 94 - .../beans/ejbql/SessionTestHomeRemote.java | 37 - .../jtests/beans/ejbql/SessionTestRemote.java | 37 - .../jonas/jtests/beans/ejbql/ShipBean.java | 49 - .../jtests/beans/ejbql/ShipHomeLocal.java | 25 - .../jtests/beans/ejbql/ShipHomeRemote.java | 30 - .../jonas/jtests/beans/ejbql/ShipLocal.java | 13 - .../jonas/jtests/beans/ejbql/ShipRemote.java | 8 - .../jonas/jtests/beans/ejbql/ejbql.xml | 1646 -------- .../jonas/jtests/beans/ejbql/jonas-ejbql.xml | 121 - .../jonas/jtests/beans/etype/EtypeBean.java | 82 - .../beans/etype/bytearray/ByteArray.java | 44 - .../beans/etype/bytearray/ByteArrayEC.java | 63 - .../beans/etype/bytearray/ByteArrayEC2.java | 63 - .../beans/etype/bytearray/ByteArrayHome.java | 48 - .../beans/etype/bytearray/bytearray.xml | 101 - .../beans/etype/bytearray/jonas-bytearray.xml | 73 - .../jtests/beans/etype/obigd/Obigdecimal.java | 44 - .../beans/etype/obigd/ObigdecimalEC.java | 63 - .../beans/etype/obigd/ObigdecimalEC2.java | 62 - .../beans/etype/obigd/ObigdecimalHome.java | 48 - .../jtests/beans/etype/obigd/jonas-obigd.xml | 63 - .../jonas/jtests/beans/etype/obigd/obigd.xml | 98 - .../jtests/beans/etype/oboolean/Oboolean.java | 44 - .../beans/etype/oboolean/ObooleanEC.java | 63 - .../beans/etype/oboolean/ObooleanEC2.java | 62 - .../beans/etype/oboolean/ObooleanHome.java | 48 - .../beans/etype/oboolean/jonas-oboolean.xml | 63 - .../jtests/beans/etype/oboolean/oboolean.xml | 98 - .../jonas/jtests/beans/etype/obyte/Obyte.java | 44 - .../jtests/beans/etype/obyte/ObyteEC.java | 63 - .../jtests/beans/etype/obyte/ObyteEC2.java | 62 - .../jtests/beans/etype/obyte/ObyteHome.java | 48 - .../jtests/beans/etype/obyte/jonas-obyte.xml | 63 - .../jonas/jtests/beans/etype/obyte/obyte.xml | 99 - .../jtests/beans/etype/odouble/Odouble.java | 44 - .../jtests/beans/etype/odouble/OdoubleEC.java | 63 - .../beans/etype/odouble/OdoubleEC2.java | 62 - .../beans/etype/odouble/OdoubleHome.java | 48 - .../beans/etype/odouble/jonas-odouble.xml | 63 - .../jtests/beans/etype/odouble/odouble.xml | 99 - .../jtests/beans/etype/ofloat/Ofloat.java | 44 - .../jtests/beans/etype/ofloat/OfloatEC.java | 63 - .../jtests/beans/etype/ofloat/OfloatEC2.java | 62 - .../jtests/beans/etype/ofloat/OfloatHome.java | 48 - .../beans/etype/ofloat/jonas-ofloat.xml | 63 - .../jtests/beans/etype/ofloat/ofloat.xml | 99 - .../beans/etype/ofloat4pk/Ofloat4pk.java | 44 - .../beans/etype/ofloat4pk/Ofloat4pkEC.java | 65 - .../beans/etype/ofloat4pk/Ofloat4pkEC2.java | 63 - .../beans/etype/ofloat4pk/Ofloat4pkHome.java | 48 - .../beans/etype/ofloat4pk/jonas-ofloat4pk.xml | 63 - .../beans/etype/ofloat4pk/ofloat4pk.xml | 99 - .../jtests/beans/etype/ointeger/Ointeger.java | 44 - .../beans/etype/ointeger/OintegerEC.java | 62 - .../beans/etype/ointeger/OintegerEC2.java | 63 - .../beans/etype/ointeger/OintegerHome.java | 48 - .../beans/etype/ointeger/jonas-ointeger.xml | 64 - .../jtests/beans/etype/ointeger/ointeger.xml | 98 - .../jonas/jtests/beans/etype/olong/Olong.java | 44 - .../jtests/beans/etype/olong/OlongEC.java | 63 - .../jtests/beans/etype/olong/OlongEC2.java | 62 - .../jtests/beans/etype/olong/OlongHome.java | 48 - .../jtests/beans/etype/olong/jonas-olong.xml | 63 - .../jonas/jtests/beans/etype/olong/olong.xml | 98 - .../jonas/jtests/beans/etype/oobj/Oobj.java | 42 - .../jonas/jtests/beans/etype/oobj/OobjEC.java | 63 - .../jtests/beans/etype/oobj/OobjEC2.java | 62 - .../jtests/beans/etype/oobj/OobjHome.java | 49 - .../jtests/beans/etype/oobj/jonas-oobj.xml | 63 - .../jonas/jtests/beans/etype/oobj/oobj.xml | 98 - .../jonas/jtests/beans/etype/oser/Name.java | 72 - .../jonas/jtests/beans/etype/oser/Oser.java | 43 - .../jonas/jtests/beans/etype/oser/OserEC.java | 63 - .../jtests/beans/etype/oser/OserEC2.java | 62 - .../jtests/beans/etype/oser/OserHome.java | 48 - .../jtests/beans/etype/oser/jonas-oser.xml | 63 - .../jonas/jtests/beans/etype/oser/oser.xml | 98 - .../jtests/beans/etype/oshort/Oshort.java | 44 - .../jtests/beans/etype/oshort/OshortEC.java | 63 - .../jtests/beans/etype/oshort/OshortEC2.java | 62 - .../jtests/beans/etype/oshort/OshortHome.java | 48 - .../beans/etype/oshort/jonas-oshort.xml | 63 - .../jtests/beans/etype/oshort/oshort.xml | 99 - .../jtests/beans/etype/osqldate/Osqldate.java | 44 - .../beans/etype/osqldate/OsqldateEC.java | 63 - .../beans/etype/osqldate/OsqldateEC2.java | 62 - .../beans/etype/osqldate/OsqldateHome.java | 48 - .../beans/etype/osqldate/jonas-osqldate.xml | 63 - .../jtests/beans/etype/osqldate/osqldate.xml | 99 - .../jtests/beans/etype/osqltime/Osqltime.java | 44 - .../beans/etype/osqltime/OsqltimeEC.java | 63 - .../beans/etype/osqltime/OsqltimeEC2.java | 62 - .../beans/etype/osqltime/OsqltimeHome.java | 48 - .../beans/etype/osqltime/jonas-osqltime.xml | 63 - .../jtests/beans/etype/osqltime/osqltime.xml | 99 - .../jtests/beans/etype/osqlts/Osqlts.java | 44 - .../jtests/beans/etype/osqlts/OsqltsEC.java | 63 - .../jtests/beans/etype/osqlts/OsqltsEC2.java | 62 - .../jtests/beans/etype/osqlts/OsqltsHome.java | 48 - .../beans/etype/osqlts/jonas-osqlts.xml | 63 - .../jtests/beans/etype/osqlts/osqlts.xml | 99 - .../beans/etype/osqlts4pk/Osqlts4pk.java | 44 - .../beans/etype/osqlts4pk/Osqlts4pkEC2.java | 64 - .../beans/etype/osqlts4pk/Osqlts4pkHome.java | 49 - .../etype/osqlts4pk/Osqlts4pkHomeLocal.java | 44 - .../beans/etype/osqlts4pk/Osqlts4pkLocal.java | 44 - .../jtests/beans/etype/osqlts4pk/Pk.java | 65 - .../beans/etype/osqlts4pk/jonas-osqlts4pk.xml | 38 - .../beans/etype/osqlts4pk/osqlts4pk.xml | 83 - .../beans/etype/outildate/Outildate.java | 44 - .../beans/etype/outildate/OutildateEC2.java | 62 - .../beans/etype/outildate/OutildateHome.java | 51 - .../beans/etype/outildate/jonas-outildate.xml | 40 - .../beans/etype/outildate/outildate.xml | 107 - .../jtests/beans/etype/pboolean/Pboolean.java | 44 - .../beans/etype/pboolean/PbooleanEC.java | 63 - .../beans/etype/pboolean/PbooleanEC2.java | 62 - .../beans/etype/pboolean/PbooleanHome.java | 49 - .../beans/etype/pboolean/jonas-pboolean.xml | 69 - .../jtests/beans/etype/pboolean/pboolean.xml | 106 - .../jtests/beans/etype/pdouble/Pdouble.java | 44 - .../jtests/beans/etype/pdouble/PdoubleEC.java | 63 - .../beans/etype/pdouble/PdoubleEC2.java | 62 - .../beans/etype/pdouble/PdoubleHome.java | 49 - .../beans/etype/pdouble/jonas-pdouble.xml | 69 - .../jtests/beans/etype/pdouble/pdouble.xml | 107 - .../jtests/beans/etype/pfloat/Pfloat.java | 44 - .../jtests/beans/etype/pfloat/PfloatEC.java | 63 - .../jtests/beans/etype/pfloat/PfloatEC2.java | 62 - .../jtests/beans/etype/pfloat/PfloatHome.java | 49 - .../beans/etype/pfloat/jonas-pfloat.xml | 69 - .../jtests/beans/etype/pfloat/pfloat.xml | 107 - .../jonas/jtests/beans/etype/plong/Plong.java | 44 - .../jtests/beans/etype/plong/PlongEC.java | 63 - .../jtests/beans/etype/plong/PlongEC2.java | 62 - .../jtests/beans/etype/plong/PlongHome.java | 49 - .../jtests/beans/etype/plong/jonas-plong.xml | 69 - .../jonas/jtests/beans/etype/plong/plong.xml | 106 - .../jtests/beans/etype/pshort/Pshort.java | 44 - .../jtests/beans/etype/pshort/PshortEC.java | 63 - .../jtests/beans/etype/pshort/PshortEC2.java | 62 - .../jtests/beans/etype/pshort/PshortHome.java | 49 - .../beans/etype/pshort/jonas-pshort.xml | 70 - .../jtests/beans/etype/pshort/pshort.xml | 106 - .../jonas/jtests/beans/folder/File.java | 42 - .../jonas/jtests/beans/folder/FileEC.java | 305 -- .../jonas/jtests/beans/folder/FileHome.java | 39 - .../jonas/jtests/beans/folder/FileLocal.java | 38 - .../jtests/beans/folder/FileLocalHome.java | 38 - .../jonas/jtests/beans/folder/Folder.java | 55 - .../jonas/jtests/beans/folder/FolderHome.java | 38 - .../jonas/jtests/beans/folder/FolderSY.java | 527 --- .../jonas/jtests/beans/folder/Paper2EC2.java | 122 - .../jtests/beans/folder/Paper2Local.java | 38 - .../jtests/beans/folder/Paper2LocalHome.java | 42 - .../jonas/jtests/beans/folder/Paper3EC2.java | 113 - .../jtests/beans/folder/Paper3Local.java | 38 - .../jtests/beans/folder/Paper3LocalHome.java | 39 - .../jonas/jtests/beans/folder/PaperEC.java | 183 - .../jonas/jtests/beans/folder/PaperEC2.java | 113 - .../jonas/jtests/beans/folder/PaperLocal.java | 37 - .../jtests/beans/folder/PaperLocalHome.java | 39 - .../jonas/jtests/beans/folder/folder.xml | 441 -- .../jtests/beans/folder/jonas-folder.xml | 166 - .../jonas/jtests/beans/inherit/BasicIdPK.java | 56 - .../jtests/beans/inherit/DerivedUserEC.java | 37 - .../jonas/jtests/beans/inherit/IdPK.java | 60 - .../jonas/jtests/beans/inherit/Itf1.java | 34 - .../jonas/jtests/beans/inherit/Person.java | 48 - .../jonas/jtests/beans/inherit/PersonEC.java | 87 - .../jtests/beans/inherit/PersonHome.java | 46 - .../jtests/beans/inherit/PersonImpl.java | 55 - .../jonas/jtests/beans/inherit/Top.java | 35 - .../jonas/jtests/beans/inherit/User.java | 41 - .../jonas/jtests/beans/inherit/UserEC.java | 98 - .../jonas/jtests/beans/inherit/UserHome.java | 45 - .../jonas/jtests/beans/inherit/UserImpl.java | 43 - .../jonas/jtests/beans/inherit/inherit.xml | 111 - .../jtests/beans/inherit/jonas-inherit.xml | 110 - .../jonas/jtests/beans/j2eeca/README | 5 - .../jtests/beans/j2eeca/connectorCA.java | 25 - .../jtests/beans/j2eeca/connectorCAHome.java | 15 - .../jtests/beans/j2eeca/connectorCASLR.java | 292 -- .../jonas/jtests/beans/j2eeca/j2eeca.xml | 122 - .../jtests/beans/j2eeca/jonas-j2eeca.xml | 43 - .../jonas/jtests/beans/j2eeca/runtimeCA.java | 23 - .../jtests/beans/j2eeca/runtimeCAHome.java | 15 - .../jtests/beans/j2eeca/runtimeCASLR.java | 237 -- .../jonas/jtests/beans/j2eeca/securedCA.java | 20 - .../jtests/beans/j2eeca/securedCAHome.java | 15 - .../jtests/beans/j2eeca/securedCASLR.java | 189 - .../jtests/beans/j2eeca/transactedCA.java | 19 - .../jtests/beans/j2eeca/transactedCAHome.java | 15 - .../jtests/beans/j2eeca/transactedCASLR.java | 242 -- .../jonas/jtests/beans/jca15/ConnectorCA.java | 25 - .../jtests/beans/jca15/ConnectorCAHome.java | 18 - .../jtests/beans/jca15/ConnectorCASLR.java | 288 -- .../jonas/jtests/beans/jca15/InboundCA.java | 17 - .../jtests/beans/jca15/InboundCAHome.java | 16 - .../jtests/beans/jca15/InboundCASLR.java | 167 - .../objectweb/jonas/jtests/beans/jca15/README | 5 - .../jonas/jtests/beans/jca15/RuntimeCA.java | 23 - .../jtests/beans/jca15/RuntimeCAHome.java | 16 - .../jtests/beans/jca15/RuntimeCASLR.java | 242 -- .../jonas/jtests/beans/jca15/SecuredCA.java | 20 - .../jtests/beans/jca15/SecuredCAHome.java | 16 - .../jtests/beans/jca15/SecuredCASLR.java | 194 - .../jtests/beans/jca15/TransactedCA.java | 19 - .../jtests/beans/jca15/TransactedCAHome.java | 16 - .../jtests/beans/jca15/TransactedCASLR.java | 287 -- .../jonas/jtests/beans/jca15/Utility.java | 48 - .../jonas/jtests/beans/jca15/jca15.xml | 151 - .../jonas/jtests/beans/jca15/jonas-jca15.xml | 67 - .../jonas/jtests/beans/jdbc/Manager.java | 26 - .../jonas/jtests/beans/jdbc/ManagerHome.java | 15 - .../jonas/jtests/beans/jdbc/ManagerSY.java | 328 -- .../jonas/jtests/beans/jdbc/jdbc.xml | 78 - .../jonas/jtests/beans/jdbc/jonas-jdbc.xml | 40 - .../jonas/jtests/beans/jdbcra/JdbcRA.xml | 63 - .../jonas/jtests/beans/jdbcra/JdbcRA1.java | 43 - .../jtests/beans/jdbcra/JdbcRA1EBRBean.java | 508 --- .../jtests/beans/jdbcra/JdbcRA1Home.java | 55 - .../jonas/jtests/beans/jdbcra/JdbcRA2.java | 42 - .../jtests/beans/jdbcra/JdbcRA2EBRBean.java | 512 --- .../jtests/beans/jdbcra/JdbcRA2Home.java | 55 - .../jtests/beans/jdbcra/jonas-JdbcRA.xml | 54 - .../jonas/jtests/beans/local/Entry.java | 37 - .../jonas/jtests/beans/local/EntryHome.java | 36 - .../jonas/jtests/beans/local/EntrySL.java | 41 - .../objectweb/jonas/jtests/beans/local/README | 4 - .../jtests/beans/local/SimpleSessionSL.java | 159 - .../jonas/jtests/beans/local/Target.java | 40 - .../jonas/jtests/beans/local/TargetLocal.java | 37 - .../jonas/jtests/beans/local/TargetSF.java | 171 - .../jtests/beans/local/TargetSFHome.java | 38 - .../jtests/beans/local/TargetSFLocalHome.java | 35 - .../jonas/jtests/beans/local/TargetSL.java | 211 - .../jtests/beans/local/TargetSLHome.java | 37 - .../jtests/beans/local/TargetSLLocalHome.java | 36 - .../jonas/jtests/beans/local/jonas-local.xml | 65 - .../jonas/jtests/beans/local/local.xml | 142 - .../jonas/jtests/beans/message/Info.java | 42 - .../jonas/jtests/beans/message/Listener.java | 246 -- .../jonas/jtests/beans/message/MRecord.java | 43 - .../jonas/jtests/beans/message/MRecordEC.java | 229 - .../jtests/beans/message/MRecordHome.java | 44 - .../jonas/jtests/beans/message/MRecordPK.java | 60 - .../jonas/jtests/beans/message/Q1txreqMD.java | 43 - .../jonas/jtests/beans/message/Q2txnotMD.java | 43 - .../jtests/beans/message/Q3commitMD.java | 44 - .../jtests/beans/message/Q3rollbackMD.java | 52 - .../jonas/jtests/beans/message/README | 17 - .../jonas/jtests/beans/message/Sender.java | 85 - .../jonas/jtests/beans/message/Sender1_1.java | 66 - .../jtests/beans/message/Sender1_1Home.java | 40 - .../jtests/beans/message/Sender1_1SF.java | 316 -- .../jonas/jtests/beans/message/Sender1_2.java | 76 - .../jtests/beans/message/Sender1_2Home.java | 40 - .../jtests/beans/message/Sender1_2SF.java | 423 -- .../jtests/beans/message/SenderHome.java | 40 - .../jonas/jtests/beans/message/SenderSF.java | 390 -- .../jonas/jtests/beans/message/T1txnotMD.java | 43 - .../jonas/jtests/beans/message/T1txreqMD.java | 43 - .../jonas/jtests/beans/message/T2txnotMD.java | 43 - .../jonas/jtests/beans/message/T2txreqMD.java | 43 - .../jtests/beans/message/jonas-message.xml | 172 - .../jonas/jtests/beans/message/message.xml | 330 -- .../beans/relation/cascade/AddressBean.java | 134 - .../beans/relation/cascade/AddressDO.java | 53 - .../beans/relation/cascade/AddressHL.java | 38 - .../beans/relation/cascade/AddressHR.java | 38 - .../beans/relation/cascade/AddressL.java | 37 - .../beans/relation/cascade/AddressR.java | 42 - .../beans/relation/cascade/CarBean.java | 169 - .../jtests/beans/relation/cascade/CarHL.java | 38 - .../jtests/beans/relation/cascade/CarHR.java | 39 - .../jtests/beans/relation/cascade/CarL.java | 39 - .../jtests/beans/relation/cascade/CarR.java | 36 - .../relation/cascade/CreditCardBean.java | 100 - .../beans/relation/cascade/CreditCardHL.java | 38 - .../beans/relation/cascade/CreditCardHR.java | 40 - .../beans/relation/cascade/CreditCardL.java | 40 - .../beans/relation/cascade/CreditCardR.java | 39 - .../beans/relation/cascade/CustomerBean.java | 339 -- .../beans/relation/cascade/CustomerHL.java | 39 - .../beans/relation/cascade/CustomerHR.java | 37 - .../beans/relation/cascade/CustomerL.java | 61 - .../beans/relation/cascade/CustomerR.java | 45 - .../beans/relation/cascade/InsuranceBean.java | 117 - .../beans/relation/cascade/InsuranceHL.java | 37 - .../beans/relation/cascade/InsuranceHR.java | 38 - .../beans/relation/cascade/InsuranceL.java | 31 - .../beans/relation/cascade/InsuranceR.java | 35 - .../beans/relation/cascade/InvoiceBean.java | 117 - .../beans/relation/cascade/InvoiceHL.java | 37 - .../beans/relation/cascade/InvoiceHR.java | 38 - .../beans/relation/cascade/InvoiceL.java | 31 - .../beans/relation/cascade/InvoiceR.java | 35 - .../jtests/beans/relation/cascade/Name.java | 43 - .../beans/relation/cascade/PhoneBean.java | 101 - .../beans/relation/cascade/PhoneHL.java | 37 - .../beans/relation/cascade/PhoneHR.java | 39 - .../jtests/beans/relation/cascade/PhoneL.java | 35 - .../jtests/beans/relation/cascade/PhoneR.java | 36 - .../jtests/beans/relation/cascade/README | 14 - .../jtests/beans/relation/cascade/cascade.xml | 593 --- .../beans/relation/cascade/jonas-cascade.xml | 122 - .../jtests/beans/relation/dass/AEC2.java | 213 - .../beans/relation/dass/AHomeLocal.java | 43 - .../beans/relation/dass/AHomeRemote.java | 38 - .../jtests/beans/relation/dass/ALocal.java | 37 - .../jtests/beans/relation/dass/ARemote.java | 61 - .../jtests/beans/relation/dass/BEC2.java | 175 - .../beans/relation/dass/BHomeLocal.java | 43 - .../beans/relation/dass/BHomeRemote.java | 38 - .../jtests/beans/relation/dass/BLocal.java | 36 - .../jtests/beans/relation/dass/BRemote.java | 37 - .../jtests/beans/relation/dass/DassHome.java | 38 - .../jtests/beans/relation/dass/P1EC2.java | 180 - .../beans/relation/dass/P1HomeLocal.java | 40 - .../beans/relation/dass/P1HomeRemote.java | 38 - .../jtests/beans/relation/dass/P1Local.java | 36 - .../jtests/beans/relation/dass/P1Remote.java | 39 - .../jtests/beans/relation/dass/P2EC2.java | 204 - .../beans/relation/dass/P2HomeLocal.java | 40 - .../beans/relation/dass/P2HomeRemote.java | 38 - .../jtests/beans/relation/dass/P2Local.java | 35 - .../jtests/beans/relation/dass/P2Remote.java | 39 - .../jtests/beans/relation/dass/P3EC2.java | 224 - .../beans/relation/dass/P3HomeLocal.java | 40 - .../beans/relation/dass/P3HomeRemote.java | 38 - .../jtests/beans/relation/dass/P3Local.java | 36 - .../jtests/beans/relation/dass/P3PK.java | 70 - .../jtests/beans/relation/dass/P3Remote.java | 41 - .../jtests/beans/relation/dass/P4EC2.java | 184 - .../beans/relation/dass/P4HomeLocal.java | 40 - .../beans/relation/dass/P4HomeRemote.java | 38 - .../jtests/beans/relation/dass/P4Local.java | 36 - .../jtests/beans/relation/dass/P4PK.java | 68 - .../jtests/beans/relation/dass/P4Remote.java | 39 - .../jonas/jtests/beans/relation/dass/dass.xml | 349 -- .../jtests/beans/relation/dass/jonas-dass.xml | 175 - .../jtests/beans/relation/family/People.java | 51 - .../beans/relation/family/PeopleEC2.java | 377 -- .../beans/relation/family/PeopleHome.java | 44 - .../relation/family/PeopleHomeLocal.java | 41 - .../beans/relation/family/PeopleLocal.java | 40 - .../jtests/beans/relation/family/family.xml | 128 - .../beans/relation/family/jonas-family.xml | 79 - .../beans/relation/lcp/SIMPLECHILD.java | 11 - .../beans/relation/lcp/SIMPLECHILDBean.java | 112 - .../relation/lcp/SIMPLECHILDException.java | 35 - .../beans/relation/lcp/SIMPLECHILDHome.java | 16 - .../beans/relation/lcp/SIMPLECHILDLocal.java | 23 - .../relation/lcp/SIMPLECHILDLocalHome.java | 19 - .../beans/relation/lcp/SIMPLECHILDPK.java | 28 - .../beans/relation/lcp/SIMPLEPARENT.java | 11 - .../beans/relation/lcp/SIMPLEPARENTBean.java | 109 - .../relation/lcp/SIMPLEPARENTException.java | 33 - .../beans/relation/lcp/SIMPLEPARENTHome.java | 20 - .../beans/relation/lcp/SIMPLEPARENTLocal.java | 24 - .../relation/lcp/SIMPLEPARENTLocalHome.java | 19 - .../beans/relation/lcp/SIMPLEPARENTPK.java | 28 - .../jtests/beans/relation/lcp/Session2.java | 12 - .../beans/relation/lcp/Session2Bean.java | 131 - .../beans/relation/lcp/Session2Home.java | 16 - .../beans/relation/lcp/Session2Local.java | 10 - .../beans/relation/lcp/Session2LocalHome.java | 15 - .../jtests/beans/relation/lcp/jonas-lcp.xml | 86 - .../jonas/jtests/beans/relation/lcp/lcp.xml | 139 - .../jonas/jtests/beans/relation/mnb/AEC2.java | 281 -- .../jtests/beans/relation/mnb/AHomeLocal.java | 43 - .../beans/relation/mnb/AHomeRemote.java | 44 - .../jtests/beans/relation/mnb/ALocal.java | 38 - .../jtests/beans/relation/mnb/ARemote.java | 159 - .../jonas/jtests/beans/relation/mnb/BEC2.java | 283 -- .../jtests/beans/relation/mnb/BHomeLocal.java | 43 - .../beans/relation/mnb/BHomeRemote.java | 44 - .../jtests/beans/relation/mnb/BLocal.java | 38 - .../jtests/beans/relation/mnb/BRemote.java | 161 - .../jtests/beans/relation/mnb/jonas-mnb.xml | 131 - .../jonas/jtests/beans/relation/mnb/mnb.xml | 257 -- .../jonas/jtests/beans/relation/mnu/AEC2.java | 292 -- .../jtests/beans/relation/mnu/AHomeLocal.java | 43 - .../beans/relation/mnu/AHomeRemote.java | 44 - .../jtests/beans/relation/mnu/ALocal.java | 38 - .../jtests/beans/relation/mnu/ARemote.java | 159 - .../jonas/jtests/beans/relation/mnu/BEC2.java | 175 - .../jtests/beans/relation/mnu/BHomeLocal.java | 43 - .../beans/relation/mnu/BHomeRemote.java | 44 - .../jtests/beans/relation/mnu/BLocal.java | 38 - .../jtests/beans/relation/mnu/BRemote.java | 39 - .../jtests/beans/relation/mnu/jonas-mnu.xml | 126 - .../jonas/jtests/beans/relation/mnu/mnu.xml | 243 -- .../jonas/jtests/beans/relation/mou/AEC2.java | 281 -- .../jtests/beans/relation/mou/AHomeLocal.java | 43 - .../beans/relation/mou/AHomeRemote.java | 42 - .../jtests/beans/relation/mou/ALocal.java | 38 - .../jtests/beans/relation/mou/ARemote.java | 81 - .../jonas/jtests/beans/relation/mou/BEC2.java | 176 - .../jtests/beans/relation/mou/BHomeLocal.java | 43 - .../beans/relation/mou/BHomeRemote.java | 44 - .../jtests/beans/relation/mou/BLocal.java | 39 - .../jtests/beans/relation/mou/BRemote.java | 39 - .../jtests/beans/relation/mou/jonas-mou.xml | 142 - .../jonas/jtests/beans/relation/mou/mou.xml | 332 -- .../jonas/jtests/beans/relation/omb/AEC2.java | 321 -- .../jtests/beans/relation/omb/AHomeLocal.java | 43 - .../beans/relation/omb/AHomeRemote.java | 44 - .../jtests/beans/relation/omb/ALocal.java | 39 - .../jtests/beans/relation/omb/ARemote.java | 180 - .../jonas/jtests/beans/relation/omb/BEC2.java | 243 -- .../jtests/beans/relation/omb/BHomeLocal.java | 43 - .../beans/relation/omb/BHomeRemote.java | 44 - .../jtests/beans/relation/omb/BLocal.java | 41 - .../jtests/beans/relation/omb/BRemote.java | 83 - .../jtests/beans/relation/omb/Front.java | 41 - .../jtests/beans/relation/omb/FrontHome.java | 39 - .../jtests/beans/relation/omb/FrontSFR.java | 186 - .../jtests/beans/relation/omb/Product.java | 46 - .../jtests/beans/relation/omb/jonas-omb.xml | 119 - .../jonas/jtests/beans/relation/omb/omb.xml | 309 -- .../jonas/jtests/beans/relation/omu/AEC2.java | 281 -- .../jtests/beans/relation/omu/AHomeLocal.java | 43 - .../beans/relation/omu/AHomeRemote.java | 44 - .../jtests/beans/relation/omu/ALocal.java | 38 - .../jtests/beans/relation/omu/ARemote.java | 159 - .../jonas/jtests/beans/relation/omu/BEC2.java | 175 - .../jtests/beans/relation/omu/BHomeLocal.java | 43 - .../beans/relation/omu/BHomeRemote.java | 44 - .../jtests/beans/relation/omu/BLocal.java | 38 - .../jtests/beans/relation/omu/BRemote.java | 39 - .../jtests/beans/relation/omu/jonas-omu.xml | 115 - .../jonas/jtests/beans/relation/omu/omu.xml | 245 -- .../jonas/jtests/beans/relation/oob/AEC2.java | 222 - .../jtests/beans/relation/oob/AHomeLocal.java | 43 - .../beans/relation/oob/AHomeRemote.java | 44 - .../jtests/beans/relation/oob/ALocal.java | 39 - .../jtests/beans/relation/oob/ARemote.java | 78 - .../jonas/jtests/beans/relation/oob/BEC2.java | 234 - .../jtests/beans/relation/oob/BHomeLocal.java | 43 - .../beans/relation/oob/BHomeRemote.java | 44 - .../jtests/beans/relation/oob/BLocal.java | 39 - .../jtests/beans/relation/oob/BRemote.java | 54 - .../jtests/beans/relation/oob/Front.java | 38 - .../jtests/beans/relation/oob/FrontHome.java | 39 - .../jtests/beans/relation/oob/FrontSFR.java | 150 - .../jtests/beans/relation/oob/jonas-oob.xml | 140 - .../jonas/jtests/beans/relation/oob/oob.xml | 339 -- .../jonas/jtests/beans/relation/oou/AEC2.java | 226 - .../jtests/beans/relation/oou/AHomeLocal.java | 43 - .../beans/relation/oou/AHomeRemote.java | 44 - .../jtests/beans/relation/oou/ALocal.java | 37 - .../jtests/beans/relation/oou/ARemote.java | 79 - .../jonas/jtests/beans/relation/oou/BEC2.java | 178 - .../jtests/beans/relation/oou/BHomeLocal.java | 43 - .../beans/relation/oou/BHomeRemote.java | 44 - .../jtests/beans/relation/oou/BLocal.java | 38 - .../jtests/beans/relation/oou/BRemote.java | 37 - .../jtests/beans/relation/oou/jonas-oou.xml | 112 - .../jonas/jtests/beans/relation/oou/oou.xml | 245 -- .../jtests/beans/relation/pkcomp/AEC2.java | 288 -- .../beans/relation/pkcomp/AHomeLocal.java | 43 - .../beans/relation/pkcomp/AHomeRemote.java | 44 - .../jtests/beans/relation/pkcomp/ALocal.java | 38 - .../jtests/beans/relation/pkcomp/APK.java | 75 - .../jtests/beans/relation/pkcomp/ARemote.java | 159 - .../jtests/beans/relation/pkcomp/BEC2.java | 291 -- .../beans/relation/pkcomp/BHomeLocal.java | 43 - .../beans/relation/pkcomp/BHomeRemote.java | 44 - .../jtests/beans/relation/pkcomp/BLocal.java | 38 - .../jtests/beans/relation/pkcomp/BPK.java | 75 - .../jtests/beans/relation/pkcomp/BRemote.java | 161 - .../beans/relation/pkcomp/jonas-pkcomp.xml | 52 - .../jtests/beans/relation/pkcomp/pkcomp.xml | 157 - .../jtests/beans/relation/pkg/beans/AEC2.java | 285 -- .../jtests/beans/relation/pkg/beans/BEC2.java | 287 -- .../beans/relation/pkg/itf/AHomeLocal.java | 43 - .../beans/relation/pkg/itf/AHomeRemote.java | 44 - .../jtests/beans/relation/pkg/itf/ALocal.java | 38 - .../beans/relation/pkg/itf/ARemote.java | 159 - .../beans/relation/pkg/itf/BHomeLocal.java | 43 - .../beans/relation/pkg/itf/BHomeRemote.java | 44 - .../jtests/beans/relation/pkg/itf/BLocal.java | 38 - .../beans/relation/pkg/itf/BRemote.java | 161 - .../jtests/beans/relation/pkg/jonas-pkg.xml | 52 - .../jonas/jtests/beans/relation/pkg/pkg.xml | 153 - .../beans/relation/rcycle/PersonEC2.java | 314 -- .../relation/rcycle/PersonHomeLocal.java | 26 - .../relation/rcycle/PersonHomeRemote.java | 28 - .../beans/relation/rcycle/PersonLocal.java | 39 - .../beans/relation/rcycle/PersonRemote.java | 47 - .../jtests/beans/relation/rcycle/Util.java | 15 - .../beans/relation/rcycle/jonas-rcycle.xml | 103 - .../jtests/beans/relation/rcycle/rcycle.xml | 158 - .../beans/relation/remon/Attribute.java | 35 - .../beans/relation/remon/AttributeEC2.java | 176 - .../beans/relation/remon/AttributeHome.java | 40 - .../jtests/beans/relation/remon/Main.java | 39 - .../jtests/beans/relation/remon/MainEC2.java | 195 - .../jtests/beans/relation/remon/MainHome.java | 41 - .../beans/relation/remon/jonas-remon.xml | 71 - .../jtests/beans/relation/remon/remon.xml | 133 - .../jtests/beans/relation/s1pkcomp/AEC2.java | 288 -- .../beans/relation/s1pkcomp/AHomeLocal.java | 43 - .../beans/relation/s1pkcomp/AHomeRemote.java | 44 - .../beans/relation/s1pkcomp/ALocal.java | 38 - .../beans/relation/s1pkcomp/ARemote.java | 159 - .../jtests/beans/relation/s1pkcomp/BEC2.java | 291 -- .../beans/relation/s1pkcomp/BHomeLocal.java | 43 - .../beans/relation/s1pkcomp/BHomeRemote.java | 44 - .../beans/relation/s1pkcomp/BLocal.java | 38 - .../beans/relation/s1pkcomp/BRemote.java | 161 - .../jtests/beans/relation/s1pkcomp/PK.java | 75 - .../relation/s1pkcomp/jonas-s1pkcomp.xml | 75 - .../beans/relation/s1pkcomp/s1pkcomp.xml | 156 - .../jtests/beans/relation/s2pkcomp/AEC2.java | 226 - .../beans/relation/s2pkcomp/AHomeLocal.java | 43 - .../beans/relation/s2pkcomp/AHomeRemote.java | 46 - .../beans/relation/s2pkcomp/ALocal.java | 39 - .../beans/relation/s2pkcomp/ARemote.java | 78 - .../jtests/beans/relation/s2pkcomp/BEC2.java | 196 - .../beans/relation/s2pkcomp/BHomeLocal.java | 43 - .../beans/relation/s2pkcomp/BHomeRemote.java | 44 - .../beans/relation/s2pkcomp/BLocal.java | 38 - .../beans/relation/s2pkcomp/BRemote.java | 54 - .../jtests/beans/relation/s2pkcomp/Pk.java | 72 - .../relation/s2pkcomp/jonas-s2pkcomp.xml | 52 - .../beans/relation/s2pkcomp/s2pkcomp.xml | 166 - .../jtests/beans/relation/s3pkcomp/AEC2.java | 267 -- .../beans/relation/s3pkcomp/AHomeLocal.java | 43 - .../beans/relation/s3pkcomp/AHomeRemote.java | 44 - .../beans/relation/s3pkcomp/ALocal.java | 38 - .../beans/relation/s3pkcomp/ARemote.java | 159 - .../jtests/beans/relation/s3pkcomp/BEC2.java | 175 - .../beans/relation/s3pkcomp/BHomeLocal.java | 43 - .../beans/relation/s3pkcomp/BHomeRemote.java | 44 - .../beans/relation/s3pkcomp/BLocal.java | 38 - .../beans/relation/s3pkcomp/BRemote.java | 39 - .../jtests/beans/relation/s3pkcomp/Pk.java | 71 - .../relation/s3pkcomp/jonas-s3pkcomp.xml | 52 - .../beans/relation/s3pkcomp/s3pkcomp.xml | 142 - .../beans/relation/tier/SequenceBean.java | 42 - .../beans/relation/tier/SequenceEJB.java | 50 - .../beans/relation/tier/SequenceLocal.java | 13 - .../relation/tier/SequenceLocalHome.java | 19 - .../relation/tier/SequenceSessionBean.java | 91 - .../relation/tier/SequenceSessionLocal.java | 13 - .../tier/SequenceSessionLocalHome.java | 16 - .../relation/tier/SequenceSessionUtil.java | 109 - .../beans/relation/tier/SequenceUtil.java | 109 - .../beans/relation/tier/TestFacade.java | 40 - .../beans/relation/tier/TestFacadeBean.java | 115 - .../beans/relation/tier/TestFacadeEJB.java | 8 - .../beans/relation/tier/TestFacadeHome.java | 15 - .../beans/relation/tier/TestFacadeUtil.java | 124 - .../beans/relation/tier/TiemorBean.java | 160 - .../jtests/beans/relation/tier/TiemorEJB.java | 42 - .../beans/relation/tier/TiemorLocal.java | 41 - .../beans/relation/tier/TiemorLocalHome.java | 16 - .../beans/relation/tier/TiemorUtil.java | 107 - .../beans/relation/tier/TiemorValue.java | 136 - .../beans/relation/tier/TiephyBean.java | 150 - .../jtests/beans/relation/tier/TiephyEJB.java | 41 - .../beans/relation/tier/TiephyLocal.java | 42 - .../beans/relation/tier/TiephyLocalHome.java | 16 - .../beans/relation/tier/TiephyUtil.java | 107 - .../beans/relation/tier/TiephyValue.java | 134 - .../jtests/beans/relation/tier/TierBean.java | 170 - .../jtests/beans/relation/tier/TierEJB.java | 41 - .../jtests/beans/relation/tier/TierLocal.java | 50 - .../beans/relation/tier/TierLocalHome.java | 18 - .../jtests/beans/relation/tier/TierUtil.java | 107 - .../jtests/beans/relation/tier/TierValue.java | 136 - .../jtests/beans/relation/tier/jonas-tier.xml | 106 - .../jonas/jtests/beans/relation/tier/tier.xml | 295 -- .../jtests/beans/relatives/RelativeEC2.java | 186 - .../jtests/beans/relatives/RelativeLocal.java | 108 - .../beans/relatives/RelativeLocalHome.java | 45 - .../beans/relatives/jonas-relatives.xml | 45 - .../jtests/beans/relatives/relatives.xml | 147 - .../jonas/jtests/beans/remoterunner/README | 10 - .../jtests/beans/remoterunner/RSuite.java | 69 - .../beans/remoterunner/RemoteRunner.java | 39 - .../beans/remoterunner/RemoteRunnerHome.java | 40 - .../beans/remoterunner/RemoteRunnerSL.java | 181 - .../beans/remoterunner/jonas-remoterunner.xml | 39 - .../beans/remoterunner/remoterunner.xml | 59 - .../jtests/beans/secured/BaseCommon.java | 314 -- .../jonas/jtests/beans/secured/BaseE.java | 40 - .../jonas/jtests/beans/secured/BaseEC.java | 72 - .../jonas/jtests/beans/secured/BaseEC2.java | 101 - .../jonas/jtests/beans/secured/BaseEHome.java | 36 - .../jonas/jtests/beans/secured/BaseS.java | 73 - .../jonas/jtests/beans/secured/BaseSHome.java | 36 - .../jonas/jtests/beans/secured/BaseSL.java | 79 - .../jonas/jtests/beans/secured/Derived.java | 47 - .../jtests/beans/secured/DerivedHome.java | 34 - .../jtests/beans/secured/DerivedLocal.java | 49 - .../beans/secured/DerivedLocalHome.java | 35 - .../jonas/jtests/beans/secured/DerivedSF.java | 122 - .../jtests/beans/secured/Entity1Bean.java | 80 - .../jtests/beans/secured/Entity1Local.java | 43 - .../beans/secured/Entity1LocalHome.java | 40 - .../jonas/jtests/beans/secured/Listener.java | 179 - .../jonas/jtests/beans/secured/Session1.java | 38 - .../jtests/beans/secured/Session1Bean.java | 71 - .../jtests/beans/secured/Session1Home.java | 37 - .../jtests/beans/secured/Session2Bean.java | 75 - .../jtests/beans/secured/Session2Local.java | 37 - .../beans/secured/Session2LocalHome.java | 37 - .../jtests/beans/secured/jonas-secured.xml | 127 - .../jonas/jtests/beans/secured/secured.xml | 609 --- .../jtests/beans/sequence/SequenceEC2.java | 146 - .../beans/sequence/SequenceHomeLocal.java | 40 - .../jtests/beans/sequence/SequenceLocal.java | 46 - .../jtests/beans/sequence/SequenceSes.java | 56 - .../beans/sequence/SequenceSesHome.java | 41 - .../jtests/beans/sequence/SequenceSesSL.java | 109 - .../jonas/jtests/beans/sequence/WoEC2.java | 125 - .../jtests/beans/sequence/WoHomeLocal.java | 39 - .../jonas/jtests/beans/sequence/WoLocal.java | 36 - .../jonas/jtests/beans/sequence/WoSes.java | 55 - .../jtests/beans/sequence/WoSesHome.java | 53 - .../jonas/jtests/beans/sequence/WoSesSL.java | 143 - .../jtests/beans/sequence/jonas-sequence.xml | 42 - .../jonas/jtests/beans/sequence/sequence.xml | 121 - .../jonas/jtests/beans/transacted/README | 9 - .../jonas/jtests/beans/transacted/Simple.java | 58 - .../jtests/beans/transacted/SimpleCommon.java | 167 - .../jtests/beans/transacted/SimpleEB.java | 786 ---- .../jtests/beans/transacted/SimpleEC.java | 88 - .../jtests/beans/transacted/SimpleEC2.java | 555 --- .../jtests/beans/transacted/SimpleEHome.java | 60 - .../beans/transacted/SimpleELocalHome.java | 38 - .../jtests/beans/transacted/SimpleLocal.java | 36 - .../jtests/beans/transacted/SimpleSF.java | 86 - .../jtests/beans/transacted/SimpleSHome.java | 36 - .../jtests/beans/transacted/SimpleSL.java | 223 - .../jtests/beans/transacted/SimpleSY.java | 190 - .../beans/transacted/SynchroSimple.java | 37 - .../beans/transacted/jonas-transacted.xml | 132 - .../jtests/beans/transacted/transacted.xml | 649 --- .../jonas/jtests/beans/worker/Worker.java | 98 - .../jonas/jtests/beans/worker/WorkerHome.java | 39 - .../jonas/jtests/beans/worker/WorkerSF.java | 314 -- .../jtests/beans/worker/jonas-worker.xml | 37 - .../jonas/jtests/beans/worker/worker.xml | 71 - .../org/objectweb/jonas/jtests/clients/README | 10 - .../jtests/clients/distribution/A_bank.java | 70 - .../clients/distribution/A_bankLoad.java | 72 - .../clients/distribution/A_bankLwrite.java | 110 - .../clients/distribution/A_bankRead.java | 340 -- .../clients/distribution/A_bankWrite.java | 130 - .../jtests/clients/distribution/A_thread.java | 230 - .../clients/distribution/C_distribution.java | 62 - .../clients/distribution/F_Cluster.java | 234 - .../clients/distribution/F_Frontal.java | 234 - .../clients/distribution/F_FrontalCMP2.java | 127 - .../jtests/clients/distribution/F_Jdbc.java | 200 - .../clients/distribution/F_Sequence.java | 177 - .../clients/distribution/F_bankCRC.java | 64 - .../clients/distribution/F_bankCRCpf.java | 64 - .../clients/distribution/F_bankCRW.java | 64 - .../jtests/clients/distribution/F_bankCS.java | 64 - .../clients/distribution/F_bankCST.java | 64 - .../clients/distribution/F_bankCSpf.java | 64 - .../jtests/clients/distribution/F_bankDB.java | 64 - .../clients/distribution/F_bankDBpf.java | 64 - .../jtests/clients/distribution/F_bankRO.java | 105 - .../clients/distribution/G_Frontal.java | 185 - .../clients/distribution/G_bankCRW.java | 64 - .../jtests/clients/distribution/G_bankCS.java | 64 - .../jtests/clients/distribution/S_bank.java | 222 - .../clients/distribution/S_bankCRC.java | 64 - .../clients/distribution/S_bankCRW.java | 64 - .../jtests/clients/distribution/S_bankCS.java | 64 - .../clients/distribution/S_bankCST.java | 64 - .../clients/distribution/S_bankCSpf.java | 64 - .../clients/distribution/S_distribution.java | 57 - .../clients/entity/A_AdvancedHomeEC.java | 808 ---- .../clients/entity/A_BasicHomeInterface.java | 548 --- .../entity/A_BasicHomeInterfaceEC.java | 156 - .../jtests/clients/entity/A_Cmp2Util.java | 123 - .../clients/entity/A_EtypeByteArray.java | 167 - .../clients/entity/A_EtypeObigdecimal.java | 163 - .../clients/entity/A_EtypeOboolean.java | 157 - .../jtests/clients/entity/A_EtypeObyte.java | 161 - .../jtests/clients/entity/A_EtypeOdouble.java | 163 - .../jtests/clients/entity/A_EtypeOfloat.java | 163 - .../clients/entity/A_EtypeOfloat4pk.java | 141 - .../clients/entity/A_EtypeOinteger.java | 161 - .../jtests/clients/entity/A_EtypeOlong.java | 161 - .../jtests/clients/entity/A_EtypeOobj.java | 166 - .../jtests/clients/entity/A_EtypeOser.java | 188 - .../jtests/clients/entity/A_EtypeOshort.java | 161 - .../clients/entity/A_EtypeOsqldate.java | 164 - .../clients/entity/A_EtypeOsqltime.java | 164 - .../jtests/clients/entity/A_EtypeOsqlts.java | 181 - .../clients/entity/A_EtypeOutildate.java | 232 - .../clients/entity/A_EtypePboolean.java | 152 - .../jtests/clients/entity/A_EtypePdouble.java | 160 - .../jtests/clients/entity/A_EtypePfloat.java | 160 - .../jtests/clients/entity/A_EtypePlong.java | 158 - .../jtests/clients/entity/A_EtypePshort.java | 158 - .../jonas/jtests/clients/entity/A_Handle.java | 127 - .../jtests/clients/entity/A_Isolation.java | 158 - .../jonas/jtests/clients/entity/A_PKDate.java | 97 - .../jonas/jtests/clients/entity/A_Timer.java | 101 - .../jtests/clients/entity/A_VariousPKEC.java | 180 - .../jonas/jtests/clients/entity/A_mnb.java | 933 ---- .../jonas/jtests/clients/entity/A_mnu.java | 885 ---- .../jonas/jtests/clients/entity/A_mou.java | 699 --- .../jonas/jtests/clients/entity/A_omb.java | 1281 ------ .../jonas/jtests/clients/entity/A_omu.java | 1226 ------ .../jonas/jtests/clients/entity/A_oob.java | 830 ---- .../jonas/jtests/clients/entity/A_oou.java | 618 --- .../clients/entity/B_AdvancedHomeEC.java | 91 - .../clients/entity/B_BasicHomeInterface.java | 93 - .../jtests/clients/entity/B_Isolation.java | 86 - .../clients/entity/C_AdvancedHomeEC.java | 54 - .../clients/entity/C_BasicHomeInterface.java | 56 - .../jonas/jtests/clients/entity/C_Ejbql.java | 54 - .../jtests/clients/entity/C_EtypeEC.java | 103 - .../jtests/clients/entity/C_EtypeEC2.java | 110 - .../jonas/jtests/clients/entity/C_Handle.java | 55 - .../jtests/clients/entity/C_Isolation.java | 55 - .../jonas/jtests/clients/entity/C_PkAuto.java | 54 - .../jtests/clients/entity/C_Relation.java | 86 - .../jtests/clients/entity/C_VariousPK.java | 57 - .../jonas/jtests/clients/entity/C_cmp1.java | 70 - .../jonas/jtests/clients/entity/C_entity.java | 67 - .../clients/entity/F_AdvancedHomeEC.java | 87 - .../clients/entity/F_AdvancedHomeEC2.java | 119 - .../clients/entity/F_BasicEjbqlEC2.java | 402 -- .../entity/F_BasicHomeInterfaceEB.java | 102 - .../entity/F_BasicHomeInterfaceEC.java | 87 - .../entity/F_BasicHomeInterfaceEC2.java | 109 - .../clients/entity/F_BasicHomeSharedEB.java | 86 - .../jtests/clients/entity/F_Cascade.java | 303 -- .../jtests/clients/entity/F_ConEnlist.java | 530 --- .../jonas/jtests/clients/entity/F_Dass.java | 240 -- .../jtests/clients/entity/F_EjbqlEC2.java | 1897 --------- .../clients/entity/F_EtypeByteArrayEC.java | 87 - .../clients/entity/F_EtypeByteArrayEC2.java | 86 - .../clients/entity/F_EtypeObigdecimalEC.java | 87 - .../clients/entity/F_EtypeObigdecimalEC2.java | 102 - .../clients/entity/F_EtypeObooleanEC.java | 87 - .../clients/entity/F_EtypeObooleanEC2.java | 99 - .../jtests/clients/entity/F_EtypeObyteEC.java | 87 - .../clients/entity/F_EtypeObyteEC2.java | 100 - .../clients/entity/F_EtypeOdoubleEC.java | 87 - .../clients/entity/F_EtypeOdoubleEC2.java | 100 - .../clients/entity/F_EtypeOfloat4pkEC2.java | 98 - .../clients/entity/F_EtypeOfloatEC.java | 87 - .../clients/entity/F_EtypeOfloatEC2.java | 100 - .../clients/entity/F_EtypeOintegerEC.java | 87 - .../clients/entity/F_EtypeOintegerEC2.java | 99 - .../jtests/clients/entity/F_EtypeOlongEC.java | 87 - .../clients/entity/F_EtypeOlongEC2.java | 100 - .../jtests/clients/entity/F_EtypeOobjEC2.java | 84 - .../jtests/clients/entity/F_EtypeOserEC.java | 87 - .../jtests/clients/entity/F_EtypeOserEC2.java | 87 - .../clients/entity/F_EtypeOshortEC.java | 87 - .../clients/entity/F_EtypeOshortEC2.java | 100 - .../clients/entity/F_EtypeOsqldateEC.java | 87 - .../clients/entity/F_EtypeOsqldateEC2.java | 102 - .../clients/entity/F_EtypeOsqltimeEC.java | 87 - .../clients/entity/F_EtypeOsqltimeEC2.java | 102 - .../clients/entity/F_EtypeOsqlts4pkEC2.java | 135 - .../clients/entity/F_EtypeOsqltsEC.java | 87 - .../clients/entity/F_EtypeOsqltsEC2.java | 104 - .../clients/entity/F_EtypeOutildateEC2.java | 104 - .../clients/entity/F_EtypePbooleanEC.java | 87 - .../clients/entity/F_EtypePbooleanEC2.java | 97 - .../clients/entity/F_EtypePdoubleEC.java | 87 - .../clients/entity/F_EtypePdoubleEC2.java | 98 - .../clients/entity/F_EtypePfloatEC.java | 87 - .../clients/entity/F_EtypePfloatEC2.java | 98 - .../jtests/clients/entity/F_EtypePlongEC.java | 87 - .../clients/entity/F_EtypePlongEC2.java | 98 - .../clients/entity/F_EtypePshortEC.java | 87 - .../clients/entity/F_EtypePshortEC2.java | 98 - .../jtests/clients/entity/F_FamilyEC2.java | 1165 ----- .../jtests/clients/entity/F_HandleEB.java | 92 - .../jtests/clients/entity/F_HandleEC.java | 92 - .../jtests/clients/entity/F_HandleEC2.java | 92 - .../jtests/clients/entity/F_Inherit.java | 158 - .../jtests/clients/entity/F_IsModified.java | 129 - .../jtests/clients/entity/F_IsolationEB.java | 92 - .../jtests/clients/entity/F_IsolationEC.java | 92 - .../jtests/clients/entity/F_IsolationEC2.java | 121 - .../clients/entity/F_MultiRelation.java | 211 - .../jtests/clients/entity/F_PKDateEC2.java | 88 - .../jtests/clients/entity/F_PkAutoEC.java | 144 - .../jtests/clients/entity/F_PkAutoEC2.java | 146 - .../jtests/clients/entity/F_RcycleEC2.java | 138 - .../clients/entity/F_Relation2_mouEC2.java | 153 - .../clients/entity/F_Relation_lcpEC2.java | 127 - .../clients/entity/F_Relation_pkcompEC2.java | 289 -- .../entity/F_Relation_s1pkcompEC2.java | 280 -- .../entity/F_Relation_s2pkcompEC2.java | 371 -- .../entity/F_Relation_s3pkcompEC2.java | 239 -- .../jonas/jtests/clients/entity/F_Remon.java | 154 - .../jtests/clients/entity/F_TierEC2.java | 106 - .../jtests/clients/entity/F_TimerEC.java | 81 - .../jtests/clients/entity/F_TimerEC2.java | 96 - .../jtests/clients/entity/F_VariousPKEC.java | 97 - .../jtests/clients/entity/F_VariousPKEC2.java | 115 - .../jtests/clients/entity/F_mnb_CRW_EC2.java | 139 - .../jtests/clients/entity/F_mnb_CS_EC2.java | 105 - .../jtests/clients/entity/F_mnu_CRW_EC2.java | 136 - .../jtests/clients/entity/F_mnu_CS_EC2.java | 105 - .../jtests/clients/entity/F_mou_CRW_EC2.java | 106 - .../jtests/clients/entity/F_mou_CS_EC2.java | 106 - .../jtests/clients/entity/F_omb_CRW_EC2.java | 141 - .../jtests/clients/entity/F_omb_CS_EC2.java | 132 - .../jtests/clients/entity/F_omu_CRW_EC2.java | 140 - .../jtests/clients/entity/F_omu_CS_EC2.java | 107 - .../jtests/clients/entity/F_oob_CRW_EC2.java | 99 - .../jtests/clients/entity/F_oob_CS_EC2.java | 111 - .../jtests/clients/entity/F_oou_CRW_EC2.java | 108 - .../jtests/clients/entity/F_oou_CS_EC2.java | 99 - .../clients/entity/G_AdvancedHomeEC.java | 87 - .../clients/entity/G_AdvancedHomeEC2.java | 101 - .../entity/G_BasicHomeInterfaceEB.java | 91 - .../jtests/clients/entity/G_IsolationEC2.java | 115 - .../clients/entity/G_MultiRelation.java | 211 - .../clients/entity/G_Relation_mnbEC2.java | 374 -- .../clients/entity/G_Relation_mnuEC2.java | 480 --- .../clients/entity/G_Relation_mouEC2.java | 414 -- .../clients/entity/G_Relation_ombEC2.java | 1005 ----- .../clients/entity/G_Relation_omuEC2.java | 348 -- .../clients/entity/G_Relation_oobEC2.java | 340 -- .../clients/entity/G_Relation_oouEC2.java | 223 - .../jonas/jtests/clients/entity/README | 46 - .../clients/entity/S_BasicEjbqlEC2.java | 126 - .../jtests/clients/entity/S_RcycleEC2.java | 179 - .../jonas/jtests/clients/entity/S_entity.java | 55 - .../jtests/clients/exception/A_Catcher.java | 242 -- .../clients/exception/A_CatcherEntity.java | 523 --- .../clients/exception/A_CatcherSession.java | 54 - .../clients/exception/C_CatcherEntity.java | 49 - .../clients/exception/C_CatcherSession.java | 49 - .../jtests/clients/exception/C_exception.java | 51 - .../clients/exception/F_CatcherBMT.java | 137 - .../jtests/clients/exception/F_CatcherEB.java | 77 - .../jtests/clients/exception/F_CatcherEC.java | 77 - .../clients/exception/F_CatcherEC2.java | 115 - .../jtests/clients/exception/F_CatcherSF.java | 82 - .../jtests/clients/exception/F_CatcherSL.java | 82 - .../jonas/jtests/clients/exception/README | 21 - .../jtests/clients/hotdeploy/C_hotdeploy.java | 50 - .../clients/hotdeploy/F_EjbJarHotDeploy.java | 122 - .../jtests/clients/j2eeca/C_connector.java | 54 - .../jonas/jtests/clients/j2eeca/C_j2eeca.java | 59 - .../jtests/clients/j2eeca/C_runtime.java | 50 - .../jtests/clients/j2eeca/C_security.java | 53 - .../jtests/clients/j2eeca/C_transaction.java | 54 - .../clients/j2eeca/F_connectorTest.java | 251 -- .../jtests/clients/j2eeca/F_runtimeTest.java | 199 - .../jtests/clients/j2eeca/F_securityTest.java | 167 - .../clients/j2eeca/F_transactionTest.java | 176 - .../clients/j2eeca/F_xatransactionTest.java | 233 - .../jonas/jtests/clients/j2eeca/README | 26 - .../jtests/clients/jca15/C_connector.java | 54 - .../jonas/jtests/clients/jca15/C_inbound.java | 54 - .../jonas/jtests/clients/jca15/C_jca15.java | 60 - .../jonas/jtests/clients/jca15/C_runtime.java | 50 - .../jtests/clients/jca15/C_security.java | 53 - .../jtests/clients/jca15/C_transaction.java | 54 - .../jonas/jtests/clients/jca15/F_Worker.java | 184 - .../jtests/clients/jca15/F_connectorTest.java | 268 -- .../jtests/clients/jca15/F_inboundTest.java | 182 - .../jtests/clients/jca15/F_runtimeTest.java | 202 - .../jtests/clients/jca15/F_securityTest.java | 169 - .../clients/jca15/F_transactionTest.java | 179 - .../clients/jca15/F_xatransactionTest.java | 240 -- .../jonas/jtests/clients/jca15/README | 28 - .../jtests/clients/jdbcra/C_JOnAS_jdbcXA.java | 58 - .../jtests/clients/jdbcra/F_JdbcRATest.java | 611 --- .../jonas/jtests/clients/jdbcra/README | 25 - .../jonas/jtests/clients/jms/C_jms.java | 55 - .../jonas/jtests/clients/jms/F_BasicMDB.java | 610 --- .../jonas/jtests/clients/jms/F_NoBean.java | 121 - .../jtests/clients/jms/F_RollbackMDB.java | 192 - .../jtests/clients/jms/F_TestsWithBMT.java | 166 - .../jonas/jtests/clients/jms/G_BasicMDB.java | 166 - .../jtests/clients/local/A_ClientView.java | 213 - .../jtests/clients/local/C_ClientView.java | 73 - .../jonas/jtests/clients/local/C_local.java | 63 - .../jtests/clients/local/F_ClientViewSF.java | 107 - .../jtests/clients/local/F_ClientViewSL.java | 115 - .../jonas/jtests/clients/local/README | 9 - .../clients/management/C_management.java | 54 - .../clients/management/F_Connectors.java | 180 - .../jonas/jtests/clients/management/README | 14 - .../clients/security/A_AccessControl.java | 395 -- .../clients/security/B_AccessControl.java | 133 - .../clients/security/C_AccessControl.java | 54 - .../jtests/clients/security/C_security.java | 59 - .../clients/security/F_AccessControlEC.java | 109 - .../clients/security/F_AccessControlEC2.java | 109 - .../clients/security/F_AccessControlSL.java | 109 - .../jtests/clients/security/F_RunAs.java | 458 -- .../clients/security/G_AccessControlSL.java | 110 - .../jtests/clients/session/A_ClientView.java | 261 -- .../jtests/clients/session/B_ClientView.java | 81 - .../jtests/clients/session/C_ClientView.java | 53 - .../jtests/clients/session/C_session.java | 49 - .../jtests/clients/session/F_Applimet.java | 138 - .../clients/session/F_ClientViewNoTxSL.java | 101 - .../clients/session/F_ClientViewSF.java | 161 - .../clients/session/F_ClientViewSL.java | 99 - .../jonas/jtests/clients/session/F_Smt.java | 98 - .../clients/session/G_ClientViewNoTxSL.java | 92 - .../clients/session/G_ClientViewSF.java | 123 - .../clients/session/G_ClientViewSL.java | 92 - .../jonas/jtests/clients/session/README | 9 - .../jonas/jtests/clients/suite/C_suite.java | 68 - .../jonas/jtests/clients/timer/A_Timer.java | 319 -- .../jtests/clients/timer/A_TimerEntity.java | 151 - .../jtests/clients/timer/A_TimerSession.java | 85 - .../jonas/jtests/clients/timer/C_timer.java | 56 - .../jonas/jtests/clients/timer/F_TimerEC.java | 97 - .../jtests/clients/timer/F_TimerEC2.java | 97 - .../jtests/clients/timer/F_TimerFromSF.java | 112 - .../jonas/jtests/clients/timer/F_TimerMD.java | 162 - .../jonas/jtests/clients/timer/F_TimerSL.java | 126 - .../clients/transaction/A_TxAttrSession.java | 43 - .../clients/transaction/A_TxAttribute.java | 345 -- .../transaction/A_TxAttributeEntity.java | 432 -- .../clients/transaction/B_TxAttribute.java | 233 - .../clients/transaction/C_TxAttribute.java | 58 - .../clients/transaction/C_transaction.java | 60 - .../clients/transaction/F_BeanManagedTx.java | 90 - .../clients/transaction/F_BeanToBeanTx.java | 360 -- .../clients/transaction/F_BeanToLocalTx.java | 101 - .../clients/transaction/F_ContManagedTx.java | 99 - .../clients/transaction/F_EntityCMT.java | 133 - .../jtests/clients/transaction/F_Jotm.java | 252 -- .../jtests/clients/transaction/F_State.java | 351 -- .../clients/transaction/F_TxAttributeEB.java | 251 -- .../clients/transaction/F_TxAttributeEC.java | 95 - .../clients/transaction/F_TxAttributeEC2.java | 96 - .../clients/transaction/F_TxAttributeSF.java | 95 - .../clients/transaction/F_TxAttributeSL.java | 96 - .../clients/transaction/F_TxAttributeSY.java | 93 - .../clients/transaction/G_TxAttributeSY.java | 95 - .../jonas/jtests/clients/transaction/README | 14 - .../objectweb/jonas/jtests/tables/DBEnv.java | 38 - .../jonas/jtests/tables/DBEnvHome.java | 40 - .../jonas/jtests/tables/DBEnvSL.java | 100 - .../org/objectweb/jonas/jtests/tables/README | 63 - .../jonas/jtests/tables/Tannuaire.java | 94 - .../jonas/jtests/tables/Tapplimet.java | 86 - .../jonas/jtests/tables/Tbeanexc.java | 102 - .../objectweb/jonas/jtests/tables/Tbmt.java | 86 - .../jonas/jtests/tables/Tbytearray.java | 96 - .../jonas/jtests/tables/Tcluster.java | 90 - .../jonas/jtests/tables/Tebasic.java | 222 - .../jonas/jtests/tables/Tfolder.java | 132 - .../jonas/jtests/tables/Tinherit.java | 88 - .../objectweb/jonas/jtests/tables/Tjdbc.java | 90 - .../jonas/jtests/tables/Tjdbcra.java | 98 - .../objectweb/jonas/jtests/tables/Tlcp.java | 111 - .../jonas/jtests/tables/Tmanager.java | 48 - .../jonas/jtests/tables/Tmessage.java | 84 - .../objectweb/jonas/jtests/tables/Tmou.java | 125 - .../objectweb/jonas/jtests/tables/Tobigd.java | 94 - .../jonas/jtests/tables/Toboolean.java | 112 - .../objectweb/jonas/jtests/tables/Tobyte.java | 102 - .../jonas/jtests/tables/Todouble.java | 105 - .../jonas/jtests/tables/Tofloat.java | 96 - .../jonas/jtests/tables/Tointeger.java | 94 - .../objectweb/jonas/jtests/tables/Tolong.java | 103 - .../objectweb/jonas/jtests/tables/Tomu.java | 125 - .../objectweb/jonas/jtests/tables/Toser.java | 95 - .../jonas/jtests/tables/Toshort.java | 96 - .../jonas/jtests/tables/Tosqldate.java | 124 - .../jonas/jtests/tables/Tosqltime.java | 131 - .../jonas/jtests/tables/Tosqlts.java | 131 - .../jonas/jtests/tables/Tpboolean.java | 109 - .../jonas/jtests/tables/Tpdouble.java | 102 - .../jonas/jtests/tables/Tpfloat.java | 94 - .../objectweb/jonas/jtests/tables/Tplong.java | 101 - .../jonas/jtests/tables/Tpshort.java | 94 - .../jonas/jtests/tables/Trcycle.java | 113 - .../jonas/jtests/tables/Tsecured.java | 83 - .../objectweb/jonas/jtests/tables/Ttier.java | 123 - .../jonas/jtests/tables/Ttransacted.java | 92 - .../jonas/jtests/tables/jonas-tables.xml | 40 - .../objectweb/jonas/jtests/tables/tables.xml | 60 - .../jonas/jtests/templates/C_templates.java | 53 - .../jonas/jtests/templates/F_Suite_1.java | 96 - .../org/objectweb/jonas/jtests/util/Env.java | 94 - .../objectweb/jonas/jtests/util/JBean.java | 105 - .../jonas/jtests/util/JTestCase.java | 432 -- jonas_tests/deployment/build.xml | 93 - jonas_tests/deployment/src/DDTest.java | 487 --- jonas_tests/deployment/test.sh | 8 - jonas_tests/doc/common.css | 21 - jonas_tests/doc/index.html | 617 --- jonas_tests/etc/footer.html | 2 - jonas_tests/etc/header.html | 154 - .../etc/style/environment/junit-noframes.xsl | 155 - .../etc/style/include/junit-noframes.xsl | 355 -- .../etc/style/standalone/junit-noframes.xsl | 591 --- .../etc/style/standalone_perfs/compare.xsl | 559 --- .../style/standalone_perfs/junit-noframes.xsl | 588 --- jonas_tests/etc/suiteslist.html | 18 - jonas_tests/examples/.cvsignore | 2 - jonas_tests/examples/base/.gitignore | 3 - jonas_tests/examples/base/examples/README | 48 - .../examples/base/examples/alarm/README | 78 - .../org/objectweb/alarm/beans/AlarmData.java | 157 - .../alarm/beans/AlarmListenerBean.java | 111 - .../objectweb/alarm/beans/AlarmManager.java | 281 -- .../objectweb/alarm/beans/AlarmRecord.java | 90 - .../alarm/beans/AlarmRecordBean.java | 316 -- .../alarm/beans/AlarmRecordHome.java | 96 - .../org/objectweb/alarm/beans/Debug.java | 64 - .../org/objectweb/alarm/beans/Profil.java | 206 - .../beans/org/objectweb/alarm/beans/View.java | 88 - .../org/objectweb/alarm/beans/ViewBean.java | 198 - .../org/objectweb/alarm/beans/ViewHome.java | 46 - .../org/objectweb/alarm/beans/ViewProxy.java | 240 -- .../beans/org/objectweb/alarm/beans/alarm.xml | 100 - .../org/objectweb/alarm/beans/jonas-alarm.xml | 86 - .../examples/base/examples/alarm/build.xml | 96 - .../org/objectweb/alarm/AlarmGenerator.java | 214 - .../examples/base/examples/alarm/db1.prp | 325 -- .../base/examples/alarm/etc/alarm.xml | 100 - .../base/examples/alarm/etc/application.xml | 18 - .../base/examples/alarm/etc/jonas-alarm.xml | 86 - .../base/examples/alarm/etc/jonas-web.xml | 16 - .../examples/base/examples/alarm/etc/web.xml | 58 - .../alarm/src/org/objectweb/alarm/Sender.java | 115 - .../base/examples/alarm/web/generator.html | 37 - .../examples/alarm/web/images/alarmArchi.gif | Bin 51084 -> 0 bytes .../base/examples/alarm/web/images/jetty.png | Bin 15107 -> 0 bytes .../examples/alarm/web/images/logo_jonas.jpg | Bin 3293 -> 0 bytes .../base/examples/alarm/web/images/return.gif | Bin 1231 -> 0 bytes .../base/examples/alarm/web/images/tomcat.gif | Bin 1441 -> 0 bytes .../base/examples/alarm/web/index.html | 68 - .../alarm/web/secured/createfilter.jsp | 12 - .../examples/alarm/web/secured/current.jsp | 115 - .../base/examples/alarm/web/secured/list.jsp | 107 - .../examples/alarm/web/secured/remove.jsp | 13 - .../alarm/web/secured/removefilter.jsp | 11 - .../examples/alarm/web/secured/setfilter.jsp | 13 - .../base/examples/alarm/web/secured/top.html | 15 - .../alarm/web/secured/unsetfilter.jsp | 10 - .../examples/base/examples/build.properties | 42 - jonas_tests/examples/base/examples/build.xml | 100 - .../examples/base/examples/cmp2/README | 109 - .../examples/base/examples/cmp2/build.xml | 75 - .../cmp2/etc/resources/web/index.html | 111 - .../examples/cmp2/etc/resources/web/style.css | 13 - .../examples/cmp2/etc/xml/application.xml | 23 - .../base/examples/cmp2/etc/xml/cmp2.xml | 715 ---- .../base/examples/cmp2/etc/xml/jonas-cmp2.xml | 74 - .../base/examples/cmp2/etc/xml/web.xml | 103 - .../src/com/titan/address/AddressBean.java | 83 - .../com/titan/address/AddressHomeLocal.java | 26 - .../src/com/titan/address/AddressLocal.java | 21 - .../cmp2/src/com/titan/cabin/CabinBean.java | 87 - .../src/com/titan/cabin/CabinHomeLocal.java | 28 - .../src/com/titan/cabin/CabinHomeRemote.java | 14 - .../cmp2/src/com/titan/cabin/CabinLocal.java | 17 - .../cmp2/src/com/titan/cabin/CabinRemote.java | 14 - .../cmp2/src/com/titan/cruise/CruiseBean.java | 45 - .../src/com/titan/cruise/CruiseHomeLocal.java | 23 - .../src/com/titan/cruise/CruiseLocal.java | 18 - .../src/com/titan/customer/AddressDO.java | 28 - .../com/titan/customer/CreditCardBean.java | 48 - .../titan/customer/CreditCardHomeLocal.java | 18 - .../com/titan/customer/CreditCardLocal.java | 21 - .../src/com/titan/customer/CustomerBean.java | 182 - .../com/titan/customer/CustomerHomeLocal.java | 48 - .../titan/customer/CustomerHomeRemote.java | 13 - .../src/com/titan/customer/CustomerLocal.java | 35 - .../com/titan/customer/CustomerRemote.java | 26 - .../cmp2/src/com/titan/customer/Name.java | 18 - .../cmp2/src/com/titan/phone/PhoneBean.java | 36 - .../src/com/titan/phone/PhoneHomeLocal.java | 19 - .../cmp2/src/com/titan/phone/PhoneLocal.java | 11 - .../titan/reservation/ReservationBean.java | 52 - .../reservation/ReservationHomeLocal.java | 20 - .../titan/reservation/ReservationLocal.java | 25 - .../cmp2/src/com/titan/ship/ShipBean.java | 38 - .../src/com/titan/ship/ShipHomeLocal.java | 25 - .../cmp2/src/com/titan/ship/ShipLocal.java | 13 - .../titan/travelagent/RTravelAgentBean.java | 63 - .../travelagent/RTravelAgentHomeRemote.java | 11 - .../titan/travelagent/RTravelAgentRemote.java | 12 - .../titan/travelagent/TravelAgentBean.java | 63 - .../travelagent/TravelAgentHomeRemote.java | 11 - .../titan/travelagent/TravelAgentRemote.java | 12 - .../cmp2/src/servlets/ServletTest.java | 410 -- .../cmp2/src/servlets/ServletTest2.java | 857 ---- .../cmp2/src/servlets/ServletTest3.java | 777 ---- .../examples/base/examples/earsample/README | 94 - .../base/examples/earsample/build.xml | 143 - .../earsample/etc/resources/jaas/jaas.config | 13 - .../earsample/etc/resources/web/img/jetty.gif | Bin 6649 -> 0 bytes .../etc/resources/web/img/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../etc/resources/web/img/ow_logo.png | Bin 11700 -> 0 bytes .../etc/resources/web/img/tomcat.gif | Bin 1934 -> 0 bytes .../etc/resources/web/img/valid-xhtml11.png | Bin 1917 -> 0 bytes .../earsample/etc/resources/web/img/vcss.png | Bin 1134 -> 0 bytes .../earsample/etc/resources/web/index.html | 52 - .../earsample/etc/resources/web/ow_jonas.css | 222 - .../earsample/etc/xml/application-client.xml | 73 - .../earsample/etc/xml/application.xml | 61 - .../earsample/etc/xml/jonas-client1.xml | 19 - .../earsample/etc/xml/jonas-client2.xml | 18 - .../earsample/etc/xml/jonas-secusb.xml | 12 - .../examples/earsample/etc/xml/jonas-web.xml | 13 - .../base/examples/earsample/etc/xml/ra.xml | 40 - .../examples/earsample/etc/xml/secusb.xml | 60 - .../base/examples/earsample/etc/xml/web.xml | 112 - .../objectweb/earsample/beans/secusb/Op.java | 52 - .../earsample/beans/secusb/OpBean.java | 247 -- .../earsample/beans/secusb/OpHome.java | 47 - .../earsample/beans/secusb/OpLocal.java | 48 - .../earsample/beans/secusb/OpLocalHome.java | 45 - .../objectweb/earsample/clients/Client.java | 189 - .../resourceadapters/ResourceAdapterImpl.java | 191 - .../earsample/servlets/ServletOp.java | 304 -- .../base/examples/emb-sample/.cvsignore | 1 - .../examples/base/examples/emb-sample/README | 70 - .../base/examples/emb-sample/build.xml | 182 - .../base/examples/emb-sample/emb-core/README | 9 - .../examples/emb-sample/etc/application.xml | 67 - .../emb-sample/etc/embSampleSession.xml | 56 - .../emb-sample/etc/jonas-embSampleSession.xml | 8 - .../base/examples/emb-sample/etc/web.xml | 230 - .../base/examples/emb-sample/lib/README | 2 - .../lib/commons-fileupload-1.1.1.jar | Bin 31909 -> 0 bytes .../base/examples/emb-sample/lib/emb-core.ear | Bin 188671 -> 0 bytes .../examples/emb-sample/lib/emb-jsr86-api.jar | Bin 34258 -> 0 bytes .../emb-sample/lib/emb-ow-mfb-core.jar | Bin 68941 -> 0 bytes .../emb-sample/lib/emb-ow-plugins-api.jar | Bin 16888 -> 0 bytes .../base/examples/emb-sample/plugins/README | 8 - .../resources/icons/valid-xhtml11.png | Bin 1917 -> 0 bytes .../emb-sample/resources/icons/vcss.png | Bin 1134 -> 0 bytes .../emb-sample/resources/jsps/footer.jsp | 6 - .../emb-sample/resources/jsps/header.jsp | 31 - .../emb-sample/resources/jsps/mediaList.jsp | 109 - .../emb-sample/resources/jsps/navigation.jsp | 12 - .../resources/jsps/templatePage.jsp | 67 - .../emb-sample/resources/jsps/uploadForm.jsp | 85 - .../resources/samples/Java_CompatEE.gif | Bin 2200 -> 0 bytes .../emb-sample/resources/samples/apache.svg | 759 ---- .../emb-sample/resources/samples/frame.png | Bin 8358 -> 0 bytes .../resources/samples/iss-fireworks.mp3 | Bin 249838 -> 0 bytes .../emb-sample/resources/samples/jonas.mp4 | Bin 936410 -> 0 bytes .../emb-sample/resources/samples/jonas.png | Bin 39577 -> 0 bytes .../emb-sample/resources/samples/mask.png | Bin 642 -> 0 bytes .../resources/samples/objectweb.png | Bin 8853 -> 0 bytes .../resources/samples/samples.properties | 83 - .../emb-sample/resources/samples/snow.jpg | Bin 65725 -> 0 bytes .../emb-sample/resources/samples/starfish.jpg | Bin 97071 -> 0 bytes .../resources/samples/white-valley.jpg | Bin 41827 -> 0 bytes .../emb-sample/resources/theme/style.css | 132 - .../src/emb/sample/MediaSampleException.java | 75 - .../emb/sample/servlet/ActionDispatcher.java | 116 - .../emb/sample/servlet/BaseSampleServlet.java | 335 -- .../sample/servlet/ConvertSampleImageBW.java | 84 - .../servlet/ConvertSampleImageChained.java | 90 - .../servlet/ConvertSampleImageFormat.java | 88 - .../servlet/ConvertSampleImageFrame.java | 112 - .../servlet/ConvertSampleImageHalfSize.java | 87 - .../servlet/ConvertSampleImageOverlayed.java | 102 - .../servlet/ConvertSampleImageSvgToPng.java | 89 - .../servlet/ConvertSampleVideoTo3GPP.java | 89 - .../servlet/ConvertSampleVideoToMpeg.java | 90 - .../servlet/ConvertSampleVideoToMpegTs.java | 89 - .../emb/sample/servlet/ExtractHeaderData.java | 110 - .../src/emb/sample/servlet/HomeSample.java | 85 - .../emb/sample/servlet/HttpSessionMgr.java | 72 - .../emb/sample/servlet/ListSampleMedia.java | 118 - .../emb/sample/servlet/LoadSampleMedia.java | 220 - .../sample/servlet/RetrieveSampleMedia.java | 124 - .../emb/sample/servlet/UploadSampleMedia.java | 160 - .../emb/sample/session/HttpSessionMgr.java | 70 - .../session/MediaSampleSessionBean.java | 586 --- .../session/MediaSampleSessionLocal.java | 132 - .../session/MediaSampleSessionLocalHome.java | 48 - .../base/examples/fdf/MyJOnASCluster.fdf | 103 - .../examples/base/examples/hibernate/README | 93 - .../base/examples/hibernate/build.properties | 28 - .../base/examples/hibernate/build.xml | 238 -- .../hibernate/etc/resources/Cat.hbm.xml | 28 - .../hibernate/etc/resources/hibernate.cfg.xml | 20 - .../examples/hibernate/etc/sql/initdb.sql | 8 - .../examples/hibernate/etc/sql/resetdb.sql | 1 - .../examples/hibernate/etc/xml/jonas-web.xml | 9 - .../base/examples/hibernate/etc/xml/web.xml | 27 - .../examples/hibernate/lib/antlr-2.7.6rc1.jar | Bin 444689 -> 0 bytes .../examples/hibernate/lib/c3p0-0.9.0.jar | Bin 487360 -> 0 bytes .../examples/hibernate/lib/cglib-2.1.3.jar | Bin 282338 -> 0 bytes .../hibernate/lib/cglib-nodep-2.1_3.jar | Bin 324238 -> 0 bytes .../examples/hibernate/lib/dom4j-1.6.1.jar | Bin 313898 -> 0 bytes .../examples/hibernate/lib/ehcache-1.1.jar | Bin 47531 -> 0 bytes .../hibernate/lib/hibernate-3.1.2.jar | Bin 1955860 -> 0 bytes .../hibernate/lib/jaxen-1.1-beta-7.jar | Bin 226877 -> 0 bytes .../examples/hibernate/lib/oscache-2.1.jar | Bin 114308 -> 0 bytes .../examples/hibernate/lib/proxool-0.8.3.jar | Bin 475943 -> 0 bytes .../hibernate/lib/swarmcache-1.0rc2.jar | Bin 30602 -> 0 bytes .../examples/hibernate/lib/versioncheck.jar | Bin 5762 -> 0 bytes .../hibernate/examples/quickstart/Cat.java | 43 - .../examples/quickstart/TestServlet.java | 165 - .../base/examples/j2eemanagement/README | 147 - .../base/examples/j2eemanagement/build.xml | 165 - .../etc/resources/web/img/logo_jonas.jpg | Bin 3293 -> 0 bytes .../etc/resources/web/index.html | 109 - .../etc/resources/web/style.css | 13 - .../j2eemanagement/etc/xml/application.xml | 19 - .../j2eemanagement/etc/xml/jonas-web.xml | 12 - .../examples/j2eemanagement/etc/xml/web.xml | 97 - .../servlets/ClustMgmtServlet.java | 253 -- .../servlets/ClusterDaemonServlet.java | 220 - .../servlets/J2eemanagementBaseServlet.java | 232 - .../servlets/JmsAdminServlet.java | 188 - .../j2eemanagement/servlets/MgmtServlet.java | 849 ---- .../servlets/MonologListener.java | 86 - .../j2eemanagement/servlets/MyListener.java | 73 - .../servlets/NewServerMgmtServlet.java | 323 -- .../examples/base/examples/j_common.xml | 227 - .../examples/base/examples/jaasclient/README | 90 - .../base/examples/jaasclient/build.xml | 167 - .../etc/xml/application-client-swing.xml | 20 - .../jaasclient/etc/xml/application-client.xml | 20 - .../jaasclient/etc/xml/jonas-client1.xml | 20 - .../jaasclient/etc/xml/jonas-client2.xml | 18 - .../jaasclient/etc/xml/jonas-client3.xml | 18 - .../jaasclient/etc/xml/jonas-secusb.xml | 12 - .../examples/jaasclient/etc/xml/secusb.xml | 47 - .../src/jaasclient/ClientJAASOp.java | 221 - .../jaasclient/ClientJAASOpContClient.java | 162 - .../ClientJAASOpContClientSwing.java | 184 - .../src/jaasclient/beans/secusb/JAASOp.java | 53 - .../jaasclient/beans/secusb/JAASOpBean.java | 240 -- .../jaasclient/beans/secusb/JAASOpHome.java | 48 - .../examples/base/examples/jdo/Bank_src.zip | Bin 11176 -> 0 bytes jonas_tests/examples/base/examples/jdo/README | 65 - .../examples/base/examples/jdo/build.xml | 165 - .../examples/base/examples/jonas-common.xml | 275 -- .../examples/base/examples/src/build.xml | 79 - .../examples/base/examples/src/eb/Account.idb | 23 - .../base/examples/src/eb/Account.java | 47 - .../base/examples/src/eb/Account.pgsql | 12 - .../examples/base/examples/src/eb/Account.sql | 12 - .../base/examples/src/eb/AccountExplBean.java | 541 --- .../base/examples/src/eb/AccountHome.java | 49 - .../examples/src/eb/AccountImpl2Bean.java | 218 - .../base/examples/src/eb/AccountImplBean.java | 248 -- .../base/examples/src/eb/Accounthsqldb.sql | 12 - .../base/examples/src/eb/ClientAccount.java | 170 - .../examples/base/examples/src/eb/README | 42 - .../examples/src/eb/application-client.xml | 11 - .../examples/base/examples/src/eb/build.xml | 81 - .../examples/base/examples/src/eb/db1.prp | 325 -- .../examples/base/examples/src/eb/eb.xml | 114 - .../base/examples/src/eb/jonas-eb.xml | 59 - .../examples/base/examples/src/lb/Client.java | 202 - .../base/examples/src/lb/ManacEC.java | 225 - .../base/examples/src/lb/ManacLocal.java | 43 - .../base/examples/src/lb/ManacLocalHome.java | 49 - .../base/examples/src/lb/Manager.java | 49 - .../base/examples/src/lb/ManagerHome.java | 40 - .../base/examples/src/lb/ManagerSF.java | 281 -- .../examples/base/examples/src/lb/README | 55 - .../examples/src/lb/application-client.xml | 11 - .../examples/base/examples/src/lb/build.xml | 66 - .../examples/base/examples/src/lb/db1.prp | 325 -- .../base/examples/src/lb/jonas-lb.xml | 74 - .../examples/base/examples/src/lb/lb.xml | 133 - .../examples/src/mailsb/ClientMailer.java | 282 -- .../examples/src/mailsb/MimePartDSMailer.java | 55 - .../src/mailsb/MimePartDSMailerBean.java | 228 - .../src/mailsb/MimePartDSMailerHome.java | 49 - .../examples/base/examples/src/mailsb/README | 37 - .../examples/src/mailsb/SessionMailer.java | 56 - .../src/mailsb/SessionMailerBean.java | 234 - .../src/mailsb/SessionMailerHome.java | 49 - .../src/mailsb/application-client.xml | 11 - .../base/examples/src/mailsb/build.xml | 65 - .../base/examples/src/mailsb/jonas-mailsb.xml | 24 - .../base/examples/src/mailsb/mailsb.xml | 52 - .../src/mdb/newsamplemdb/MdbBean.java | 71 - .../src/mdb/newsamplemdb/MdbBean_a.java | 96 - .../src/mdb/newsamplemdb/MdbBean_b.java | 72 - .../src/mdb/newsamplemdb/MdbClient.java | 99 - .../base/examples/src/mdb/newsamplemdb/README | 33 - .../mdb/newsamplemdb/application-client.xml | 11 - .../examples/src/mdb/newsamplemdb/build.xml | 61 - .../mdb/newsamplemdb/jonas-newsamplemdb.xml | 18 - .../src/mdb/newsamplemdb/newsamplemdb.xml | 48 - .../src/mdb/newsamplemdb2/MdbBean.java | 71 - .../src/mdb/newsamplemdb2/MdbBean_a.java | 96 - .../src/mdb/newsamplemdb2/MdbBean_b.java | 72 - .../src/mdb/newsamplemdb2/MdbClient.java | 97 - .../examples/src/mdb/newsamplemdb2/README | 33 - .../mdb/newsamplemdb2/application-client.xml | 11 - .../examples/src/mdb/newsamplemdb2/build.xml | 61 - .../mdb/newsamplemdb2/jonas-newsamplemdb2.xml | 18 - .../src/mdb/newsamplemdb2/newsamplemdb2.xml | 48 - .../examples/src/mdb/sampleappli/Env.java | 44 - .../examples/src/mdb/sampleappli/EnvBean.java | 238 -- .../examples/src/mdb/sampleappli/EnvHome.java | 43 - .../src/mdb/sampleappli/OrderBean.java | 124 - .../base/examples/src/mdb/sampleappli/README | 69 - .../mdb/sampleappli/SampleAppliClient.java | 309 -- .../examples/src/mdb/sampleappli/Stock.java | 49 - .../src/mdb/sampleappli/StockBean.java | 207 - .../src/mdb/sampleappli/StockHandlerBean.java | 180 - .../src/mdb/sampleappli/StockHome.java | 49 - .../mdb/sampleappli/application-client.xml | 11 - .../examples/src/mdb/sampleappli/build.xml | 63 - .../base/examples/src/mdb/sampleappli/db1.prp | 325 -- .../src/mdb/sampleappli/jonas-sampleappli.xml | 66 - .../src/mdb/sampleappli/sampleappli.xml | 158 - .../examples/src/mdb/samplemdb/MdbBean.java | 105 - .../examples/src/mdb/samplemdb/MdbClient.java | 101 - .../base/examples/src/mdb/samplemdb/README | 43 - .../src/mdb/samplemdb/application-client.xml | 11 - .../base/examples/src/mdb/samplemdb/build.xml | 64 - .../src/mdb/samplemdb/jonas-samplemdb.xml | 18 - .../examples/src/mdb/samplemdb/samplemdb.xml | 49 - .../base/examples/src/sb/ClientOp.java | 170 - .../examples/base/examples/src/sb/Op.java | 55 - .../examples/base/examples/src/sb/OpBean.java | 259 -- .../examples/base/examples/src/sb/OpHome.java | 50 - .../examples/base/examples/src/sb/README | 36 - .../examples/src/sb/application-client.xml | 11 - .../examples/base/examples/src/sb/build.xml | 63 - .../base/examples/src/sb/jonas-sb.xml | 14 - .../examples/base/examples/src/sb/sb.xml | 34 - .../examples/base/examples/src/src_common.xml | 69 - .../base/examples/statelessbean/build.xml | 59 - .../base/examples/statelessbean/etc/web.xml | 22 - .../statelessbean/ClientServletStateless.java | 179 - .../statelessbean/ClientStateless.java | 119 - .../examples/statelessbean/StatelessBean.java | 111 - .../statelessbean/StatelessInterceptor.java | 79 - .../statelessbean/StatelessLocal.java | 61 - .../StatelessOnlyAddMethodInterceptor.java | 59 - .../statelessbean/StatelessRemote.java | 36 - .../examples/statelessbean/package.html | 36 - .../examples/base/examples/webservices/README | 64 - .../examples/webservices/beans/ws/build.xml | 223 - .../beans/ws/etc/xml/jonas-webservices.xml | 61 - .../beans/ws/etc/xml/ssbEndpointMapping.xml | 44 - .../beans/ws/etc/xml/webservices.xml | 21 - .../beans/ws/etc/xml/wsdl/ssbEndpoint.wsdl | 98 - .../wssample/beans/ws/WSBeanEndpoint.java | 50 - .../wssample/beans/ws/WSBeanEndpointSLL.java | 116 - .../wssample/beans/ws/jonas-wsearsample.xml | 12 - .../wssample/beans/ws/wsearsample.xml | 44 - .../webservices/beans/wsclient/build.xml | 220 - .../beans/wsclient/etc/web/images/jetty.gif | Bin 6649 -> 0 bytes .../beans/wsclient/etc/web/images/jonas.ico | Bin 630 -> 0 bytes .../wsclient/etc/web/images/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../beans/wsclient/etc/web/images/ow_logo.png | Bin 11700 -> 0 bytes .../beans/wsclient/etc/web/images/tomcat.gif | Bin 1934 -> 0 bytes .../beans/wsclient/etc/web/index.html | 41 - .../beans/wsclient/etc/web/search-google.jsp | 84 - .../beans/wsclient/etc/web/style/ow_jonas.css | 119 - .../wsclient/etc/xml/application-wsclient.xml | 24 - .../beans/wsclient/etc/xml/ejb-jar.xml | 47 - .../beans/wsclient/etc/xml/googleMapping.xml | 37 - .../beans/wsclient/etc/xml/jonas-ejb-jar.xml | 11 - .../wsclient/etc/xml/web-wsclient-front.xml | 16 - .../wsclient/etc/xml/wsdl/GoogleSearch.wsdl | 198 - .../beans/wsclient/GoogleClientBean.java | 49 - .../beans/wsclient/GoogleClientBeanHome.java | 48 - .../beans/wsclient/GoogleClientBeanSLR.java | 162 - .../genbean/google/DirectoryCategory.java | 152 - .../genbean/google/GoogleSearchPort.java | 14 - .../genbean/google/GoogleSearchResult.java | 450 -- .../genbean/google/GoogleSearchService.java | 16 - .../genbean/google/ResultElement.java | 386 -- .../base/examples/webservices/build.xml | 77 - .../webservices/etc/xml/application.xml | 19 - .../webservices/webs/webclient/build.xml | 180 - .../webclient/etc/resources/googleByJSP.jsp | 90 - .../etc/resources/googleByServlet.html | 30 - .../webclient/etc/resources/images/jetty.gif | Bin 6649 -> 0 bytes .../webclient/etc/resources/images/jonas.ico | Bin 630 -> 0 bytes .../etc/resources/images/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../etc/resources/images/ow_logo.png | Bin 11700 -> 0 bytes .../webclient/etc/resources/images/tomcat.gif | Bin 1934 -> 0 bytes .../webs/webclient/etc/resources/index.html | 26 - .../etc/resources/style/ow_jonas.css | 119 - .../webs/webclient/etc/xml/googleMapping.xml | 37 - .../webs/webclient/etc/xml/jonas-web.xml | 25 - .../webs/webclient/etc/xml/web.xml | 44 - .../webclient/etc/xml/wsdl/GoogleSearch.wsdl | 198 - .../gen/google/DirectoryCategory.java | 152 - .../wssample/gen/google/GoogleSearchPort.java | 14 - .../gen/google/GoogleSearchResult.java | 450 -- .../gen/google/GoogleSearchService.java | 16 - .../wssample/gen/google/ResultElement.java | 386 -- .../servlets/wsclient/WsClientServlet.java | 183 - .../webservices/webs/webendpoint/README | 40 - .../webservices/webs/webendpoint/build.xml | 176 - .../etc/resources/credentials.properties | 2 - .../etc/resources/sample-crypto.properties | 8 - .../webs/webendpoint/etc/web/images/jetty.gif | Bin 6649 -> 0 bytes .../webs/webendpoint/etc/web/images/jonas.ico | Bin 630 -> 0 bytes .../etc/web/images/ow_jonas_logo.gif | Bin 4162 -> 0 bytes .../webendpoint/etc/web/images/ow_logo.png | Bin 11700 -> 0 bytes .../webendpoint/etc/web/images/tomcat.gif | Bin 1934 -> 0 bytes .../webs/webendpoint/etc/web/index.html | 31 - .../webs/webendpoint/etc/web/jaxrpcTest.jsp | 49 - .../webendpoint/etc/web/style/ow_jonas.css | 119 - .../webendpoint/etc/xml/clientMapping.xml | 11 - .../etc/xml/jaxrpcEndpointMapping.xml | 11 - .../webendpoint/etc/xml/jonas-webservices.xml | 21 - .../webs/webendpoint/etc/xml/web.xml | 210 - .../webs/webendpoint/etc/xml/webservices.xml | 119 - .../etc/xml/wsdl/jaxrpcEndpoint.wsdl | 104 - .../gen/jaxrpc/JaxRpcEndpointInterface.java | 13 - .../JaxRpcEndpointInterfaceService.java | 20 - .../security/ServerSideCallbackHandler.java | 90 - .../wssample/servlets/ws/JaxRpcEndpoint.java | 83 - .../servlets/ws/JaxRpcEndpointInterface.java | 50 - .../wsclient/JOnASJaxRpcClientServlet.java | 191 - .../base/examples/xdoclet/ClientCustomer.java | 154 - .../base/examples/xdoclet/CustomerBean.java | 262 -- .../examples/base/examples/xdoclet/Name.java | 46 - .../base/examples/xdoclet/PhoneBean.java | 114 - .../examples/base/examples/xdoclet/README | 131 - .../examples/base/examples/xdoclet/build.xml | 165 - .../examples/xdoclet/lib/xdoclet-1.2.2.jar | Bin 146897 -> 0 bytes .../lib/xdoclet-apache-module-1.2.2.jar | Bin 80149 -> 0 bytes .../xdoclet/lib/xdoclet-ejb-module-1.2.2.jar | Bin 211057 -> 0 bytes .../lib/xdoclet-exolab-module-1.2.2.jar | Bin 9971 -> 0 bytes .../lib/xdoclet-objectweb-module-1.2.2.jar | Bin 279234 -> 0 bytes .../xdoclet/lib/xdoclet-web-module-1.2.2.jar | Bin 44973 -> 0 bytes .../examples/xdoclet/lib/xjavadoc-1.1.jar | Bin 231114 -> 0 bytes jonas_tests/examples/build.xml | 192 - .../jonas/examples/clients/alarm/C_alarm.java | 239 -- .../jonas/examples/clients/cmp2/C_cmp2.java | 150 - .../clients/earsample/C_earsample.java | 169 - .../jonas/examples/clients/eb/C_eb.java | 189 - .../clients/hibernate/C_hibernate.java | 110 - .../j2eemanagement/C_j2eemanagement.java | 109 - .../jonas/examples/clients/lb/C_lb.java | 149 - .../examples/clients/mailsb/C_mailsb.java | 149 - .../jonas/examples/clients/mdb/C_mdb.java | 69 - .../examples/clients/mdb/F_sampleappli.java | 163 - .../examples/clients/mdb/F_samplemdb.java | 152 - .../sampleCluster2/C_sampleCluster2.java | 141 - .../jonas/examples/clients/sb/C_sb.java | 147 - .../examples/clients/suite/C_WebExamples.java | 70 - .../jonas/examples/clients/suite/C_suite.java | 89 - .../clients/webservices/A_WebServices.java | 69 - .../webservices/A_WebServicesEndpoint.java | 182 - .../clients/webservices/C_webservices.java | 74 - .../clients/webservices/F_WsAccessTest.java | 124 - .../clients/webservices/F_WsEarSample.java | 139 - .../clients/webservices/F_WsWarSample.java | 151 - .../jonas/examples/util/JExampleTestCase.java | 500 --- .../jonas/examples/util/JPrintStream.java | 100 - .../examples/util/NoExitSecurityManager.java | 44 - jonas_tests/j2eeca/.cvsignore | 2 - jonas_tests/j2eeca/build.xml | 205 - .../j2eeca/rars/ErsatzEIS/ErsatzEIS.rar | Bin 37633 -> 0 bytes .../rars/ErsatzEIS/META-INF/jonas-ra.xml | 28 - .../j2eeca/rars/ErsatzEIS/META-INF/ra.xml | 95 - .../ErsatzLoTransaction/META-INF/jonas-ra.xml | 28 - .../rars/ErsatzLoTransaction/META-INF/ra.xml | 95 - .../rars/ErsatzNolog/META-INF/jonas-ra.xml | 28 - .../j2eeca/rars/ErsatzNolog/META-INF/ra.xml | 95 - .../rars/ErsatzSecurity/META-INF/jonas-ra.xml | 28 - .../rars/ErsatzSecurity/META-INF/ra.xml | 101 - .../ErsatzXATransaction/META-INF/jonas-ra.xml | 28 - .../rars/ErsatzXATransaction/META-INF/ra.xml | 95 - .../META-INF/jonas-ra.xml | 35 - .../rars/JtestResourceAdapter/META-INF/ra.xml | 54 - .../j2eeca/rars/Nolog/META-INF/jonas-ra.xml | 35 - jonas_tests/j2eeca/rars/Nolog/META-INF/ra.xml | 54 - .../j2eeca/rars/Reauth/META-INF/jonas-ra.xml | 35 - .../j2eeca/rars/Reauth/META-INF/ra.xml | 54 - .../rars/Security/META-INF/jonas-ra.xml | 34 - .../j2eeca/rars/Security/META-INF/ra.xml | 54 - .../rars/Transaction/META-INF/jonas-ra.xml | 35 - .../j2eeca/rars/Transaction/META-INF/ra.xml | 54 - .../rars/XATransaction/META-INF/jonas-ra.xml | 35 - .../j2eeca/rars/XATransaction/META-INF/ra.xml | 54 - .../resourceadapter/ActivationSpecImpl.java | 74 - .../ConnectionFactoryImpl.java | 162 - .../resourceadapter/ConnectionImpl.java | 152 - .../ConnectionMetaDataImpl.java | 57 - .../ConnectionRequestInfoImpl.java | 142 - .../resourceadapter/ConnectionSpecImpl.java | 43 - .../DefaultConnectionManager.java | 75 - .../resourceadapter/ExecutionContext.java | 46 - .../resourceadapter/InteractionImpl.java | 94 - .../resourceadapter/InteractionSpecImpl.java | 38 - .../resourceadapter/LocalTransactionImpl.java | 155 - .../ManagedConnectionFactoryImpl.java | 406 -- .../ManagedConnectionImpl.java | 381 -- .../ManagedConnectionMetaDataImpl.java | 56 - .../resourceadapter/MessageTakerMD.java | 86 - .../resourceadapter/MsgListenerInterface.java | 16 - .../resourceadapter/RecordFactoryImpl.java | 49 - .../ersatz/resourceadapter/RecordImpl.java | 68 - .../resourceadapter/ResourceAdapterImpl.java | 242 -- .../ResourceAdapterMetaDataImpl.java | 52 - .../src/ersatz/resourceadapter/Utility.java | 90 - .../resourceadapter/WorkAdapterImpl.java | 86 - .../src/ersatz/resourceadapter/WorkImpl.java | 91 - .../resourceadapter/XAResourceImpl.java | 153 - .../resourceadapter/CommonClient.java | 262 -- .../resourceadapter/ConnectionImpl.java | 196 - .../resourceadapter/JtestInteraction.java | 203 - .../resourceadapter/JtestResourceAdapter.java | 851 ---- .../resourceadapter/LocalTransactionImpl.java | 172 - .../resourceadapter/XAResourceImpl.java | 173 - jonas_tests/jaxws/jaxws-felix/pom.xml | 521 --- .../src/main/config/config.properties | 183 - .../jonas-autodeploy-bundles.properties | 73 - .../jaxws-felix/src/main/config/testng.xml | 13 - .../jaxws/jaxws-test-base/ejb3/pom.xml | 26 - .../main/java/org/ow2/jonas/ejb3/Hello.java | 33 - .../java/org/ow2/jonas/ejb3/HelloBean.java | 49 - .../jaxws-ejb-descriptor/pom.xml | 26 - .../jaxws/test/ejb/JAXWSBean_descriptor.java | 82 - .../jonas/ws/jaxws/test/ejb/JAXWSGreeter.java | 34 - .../src/main/resources/META-INF/easybeans.xml | 8 - .../main/resources/META-INF/webservices.xml | 22 - .../META-INF/wsdl/JAXWSBean_descriptor.wsdl | 85 - .../jaxws-ejb-injection/pom.xml | 26 - .../main/java/org/ow2/jonas/ejb3/Hello.java | 33 - .../ws/jaxws/test/ejb/JAXWSBeanInjection.java | 101 - .../jonas/ws/jaxws/test/ejb/JAXWSGreeter.java | 33 - .../META-INF/wsdl/JAXWSBeanInjection.wsdl | 85 - .../jaxws-ejb-interceptor/pom.xml | 26 - .../jaxws/test/ejb/EJBWSwihtInterceptors.java | 103 - .../jaxws/test/ejb/EJBWSwithAroundInvoke.java | 101 - .../ws/jaxws/test/ejb/GreeterInterceptor.java | 49 - .../jonas/ws/jaxws/test/ejb/JAXWSGreeter.java | 33 - .../jaxws/test/ejb/JAXWSGreeterForWithWM.java | 35 - .../META-INF/wsdl/EJBWSwihtInterceptors.wsdl | 85 - .../META-INF/wsdl/EJBWSwithAroundInvoke.wsdl | 85 - .../jaxws-ejb-webmethod/pom.xml | 26 - .../test/ejb/JAXWSBeanWithWebMethod.java | 91 - .../test/ejb/JAXWSBeanWithoutWebMethod.java | 92 - .../jonas/ws/jaxws/test/ejb/JAXWSGreeter.java | 32 - .../jaxws/test/ejb/JAXWSGreeterForWithWM.java | 10 - .../META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl | 155 - .../wsdl/JAXWSBeanWithoutWebMethod.wsdl | 155 - .../jaxws-pojo-complex/pom.xml | 25 - .../jonas/ws/jaxws/test/pojo/JAXWSBean3.java | 58 - .../ow2/jonas/ws/jaxws/test/pojo/Person.java | 57 - .../ws/jaxws/test/pojo/jaxws/GetPersons1.java | 24 - .../test/pojo/jaxws/GetPersons1Response.java | 35 - .../ws/jaxws/test/pojo/jaxws/GetPersons2.java | 24 - .../test/pojo/jaxws/GetPersons2Response.java | 35 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../WEB-INF/wsdl/JAXWSBean3Service.wsdl | 89 - .../jaxws-pojo-descriptor/pom.xml | 25 - .../main/java/org/ow2/jonas/ejb3/Hello.java | 8 - .../java/org/ow2/jonas/ejb3/HelloBean.java | 24 - .../test/pojo/GreeterLogicalHandler.java | 63 - .../jaxws/test/pojo/GreeterSOAPHandler.java | 96 - .../ws/jaxws/test/pojo/SimpleService.java | 47 - .../test/pojo/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/jonas-web.xml | 11 - .../src/main/webapp/WEB-INF/web.xml | 48 - .../src/main/webapp/WEB-INF/webservices.xml | 34 - .../main/webapp/WEB-INF/wsdl/SService.wsdl | 52 - .../webapp/WEB-INF/wsdl/SimpleService.wsdl | 0 .../jaxws-pojo-handlers/pom.xml | 25 - .../test/handlers/GreeterLogicalHandler.java | 63 - .../test/handlers/GreeterSOAPHandler.java | 100 - .../ws/jaxws/test/handlers/SimpleService.java | 52 - .../test/handlers/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/handlers.xml | 17 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../webapp/WEB-INF/wsdl/SimpleService.wsdl | 52 - .../jaxws-pojo-injection/pom.xml | 25 - .../main/java/org/ow2/jonas/ejb3/Hello.java | 33 - .../jaxws/test/injection/SimpleService.java | 59 - .../injection/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/handlers.xml | 17 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../webapp/WEB-INF/wsdl/SimpleService.wsdl | 52 - .../jaxws-pojo-simple-with-wsdl/pom.xml | 25 - .../ws/jaxws/test/pojo/SimpleService.java | 45 - .../test/pojo/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../webapp/WEB-INF/wsdl/SimpleService.wsdl | 52 - .../jaxws-pojo-simple-without-wsdl/pom.xml | 25 - .../ws/jaxws/test/pojo/SimpleService.java | 45 - .../test/pojo/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../jaxws-pojo-soap-binding/pom.xml | 25 - .../ws/jaxws/test/pojo/SimpleService.java | 49 - .../test/pojo/SimpleServiceInterface.java | 34 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - .../webapp/WEB-INF/wsdl/SimpleService.wsdl | 36 - .../jaxws-pojo-wsProvider/pom.xml | 25 - .../jonas/ws/jaxws/test/CalculatorImpl.java | 116 - .../src/main/webapp/WEB-INF/jonas-web.xml | 10 - .../src/main/webapp/WEB-INF/web.xml | 47 - jonas_tests/jaxws/jaxws-test-base/pom.xml | 58 - jonas_tests/jaxws/jaxws-test-clients/pom.xml | 135 - .../main/java/org/ow2/jonas/ejb3/Hello.java | 33 - .../DispatchAPIWebserviceClientTestCase.java | 135 - .../DynamicProxyWebserviceClientTestCase.java | 87 - .../ws/jaxws/test/EJBClientTestCases.java | 247 -- .../ws/jaxws/test/PojoClientTestCases.java | 453 -- .../jaxws/test/util/JWebServicesTestCase.java | 510 --- .../test/util/SimpleServiceInterface.java | 35 - .../src/main/resources/request1.xml | 23 - jonas_tests/jaxws/pom.xml | 48 - jonas_tests/jonas5_tests.ipr | 254 -- jonas_tests/jonasadmin/.cvsignore | 2 - jonas_tests/jonasadmin/build.xml | 175 - .../resources/jonasAdminTests.properties | 8 - .../test/catalina/C_JonasAdminCatalina.java | 70 - .../test/catalina/ConnectorUtils.java | 565 --- .../test/catalina/F_JonasAdminConnector.java | 572 --- .../test/deploy/C_JonasAdminDeploy.java | 71 - .../test/deploy/F_JonasAdminDeploy.java | 291 -- .../test/deploy/F_JonasAdminDeployJar.java | 338 -- .../test/deploy/F_JonasAdminDeployRar.java | 342 -- .../test/deploy/F_JonasAdminDeployWar.java | 340 -- .../test/domain/C_JonasAdminDomain.java | 71 - .../test/domain/F_JonasAdminDomain.java | 451 -- .../domain/F_JonasAdminDomainAddServer.java | 223 - .../jonasserver/C_JonasAdminJonasserver.java | 71 - .../jonasserver/F_JonasAdminInfoServer.java | 483 --- .../test/jonasserver/F_JonasAdminSaveAll.java | 215 - .../jonasadmin/test/jonasserver/XMLTest.java | 133 - .../test/joram/C_JonasAdminJoram.java | 87 - .../joram/F_JonasAdminJoramDestination.java | 679 --- .../joram/F_JonasAdminJoramProperties.java | 286 -- .../test/joram/F_JonasAdminJoramUser.java | 445 -- .../test/logging/C_JonasAdminLogging.java | 70 - .../test/logging/F_JonasAdminLogger.java | 363 -- .../jonasadmin/test/logging/LoggerUtils.java | 326 -- .../monitoring/C_JonasAdminMonitoring.java | 72 - .../F_JonasAdminActivatedMonitoring.java | 183 - .../F_JonasAdminNumberOfMeasures.java | 272 -- .../test/monitoring/F_JonasAdminRange.java | 263 -- .../navigation/C_JonasAdminNavigation.java | 71 - .../test/navigation/F_JonasAdminLogout.java | 173 - .../navigation/F_JonasAdminNavigation.java | 759 ---- .../test/resource/C_JonasAdminResource.java | 72 - .../F_JonasAdminResourceDatasource.java | 592 --- .../resource/F_JonasAdminResourceMail.java | 731 ---- .../container/C_JonasAdminContainer.java | 74 - .../F_JonasAdminApplicationContainer.java | 461 -- .../container/F_JonasAdminEjbContainer.java | 1304 ------ .../container/F_JonasAdminWebContainer.java | 733 ---- .../database/C_JonasAdminServiceDatabase.java | 71 - .../database/F_JonasAdminDatabase.java | 500 --- .../C_JonasAdminServiceDiscovery.java | 71 - .../discovery/F_JonasAdminDiscovery.java | 217 - .../jtm/C_JonasAdminServiceTransaction.java | 71 - .../jtm/F_JonasAdminServiceTransaction.java | 640 --- .../service/mail/C_JonasAdminServiceMail.java | 71 - .../service/mail/F_JonasAdminServiceMail.java | 565 --- .../resource/C_JonasAdminServiceResource.java | 71 - .../resource/F_JonasAdminResource.java | 881 ---- .../test/service/resource/ResourceUtils.java | 70 - .../security/C_JonasAdminServiceSecurity.java | 71 - .../security/F_JonasAdminServiceSecurity.java | 241 -- .../jonasadmin/test/suite/C_JonasAdmin.java | 113 - .../test/template/C_JonasAdminTemplate.java | 75 - .../test/template/F_JonasAdminTemplate.java | 154 - .../jonasadmin/test/util/JProperties.java | 533 --- .../jonasadmin/test/util/JonasAdminAuth.java | 75 - .../test/util/JonasAdminConnexion.java | 78 - .../jonasadmin/test/util/JonasAdminFiles.java | 259 -- .../test/util/JonasAdminTestCase.java | 909 ---- .../jonasadmin/test/util/JonasAdminTree.java | 108 - .../jonasadmin/test/util/JonasAdminUtils.java | 242 -- jonas_tests/junit.bat | 142 - jonas_tests/junit.sh | 154 - jonas_tests/junitime.sh | 134 - jonas_tests/protocols/README | 60 - jonas_tests/protocols/build.properties | 1 - jonas_tests/protocols/build.xml | 50 - .../protocols/clientconf/carol.properties | 140 - .../clientconf/traceclient.properties | 46 - .../modules/appli/META-INF/application.xml | 18 - .../protocols/modules/appli/build/build.xml | 97 - .../client/META-INF/application-client.xml | 30 - .../modules/client/META-INF/jonas-client.xml | 15 - .../protocols/modules/client/build/build.xml | 127 - .../modules/client/resources/jaas.config | 16 - .../protocols/test/client/AnyClient.java | 68 - .../jonas/protocols/test/client/Measure.java | 86 - .../jonas/protocols/test/client/MyClient.java | 422 -- .../protocols/test/client/MyClient01.java | 322 -- .../modules/ejbs/META-INF/ejb-jar.xml | 111 - .../modules/ejbs/META-INF/jonas-ejb-jar.xml | 28 - .../protocols/modules/ejbs/build/build.xml | 113 - .../jonas/protocols/test/ejbs/BackA1EJB.java | 36 - .../jonas/protocols/test/ejbs/BackA2EJB.java | 36 - .../jonas/protocols/test/ejbs/BackAEJB.java | 168 - .../jonas/protocols/test/ejbs/BackAHome.java | 38 - .../protocols/test/ejbs/BackServiceA.java | 40 - .../jonas/protocols/test/ejbs/MyService.java | 49 - .../protocols/test/ejbs/MyServiceEJB.java | 449 -- .../protocols/test/ejbs/MyServiceHome.java | 36 - .../jonas/protocols/test/ejbs/Request.java | 78 - jonas_tests/protocols/scripts/client.cmd | 30 - jonas_tests/protocols/scripts/client.sh | 35 - jonas_tests/protocols/scripts/suiteMulti.sh | 52 - .../protocols/scripts/suiteMultiSerial.sh | 52 - jonas_tests/protocols/scripts/synt.sh | 55 - jonas_tests/samplehttp/README | 37 - jonas_tests/samplehttp/beans/Sess.java | 14 - jonas_tests/samplehttp/beans/SessClient.java | 42 - jonas_tests/samplehttp/beans/SessHome.java | 16 - jonas_tests/samplehttp/beans/SessLocal.java | 13 - .../samplehttp/beans/SessLocalHome.java | 15 - jonas_tests/samplehttp/beans/SessSLR.java | 151 - jonas_tests/samplehttp/beans/jonas-sess.xml | 18 - jonas_tests/samplehttp/beans/sess.xml | 43 - jonas_tests/samplehttp/build.xml | 139 - .../samplehttp/client/SampleClient.java | 162 - jonas_tests/samplehttp/client/Sender.java | 116 - jonas_tests/samplehttp/etc/application.xml | 17 - jonas_tests/samplehttp/etc/web.xml | 32 - .../samplehttp/servlet/SampleServlet.java | 140 - jonas_tests/ws/.cvsignore | 5 - jonas_tests/ws/README | 64 - jonas_tests/ws/build.xml | 400 -- .../ws/etc/apps/port-component-link.xml | 32 - jonas_tests/ws/etc/apps/time-test.xml | 19 - .../ws/etc/clients/application-client.xml | 29 - jonas_tests/ws/etc/clients/jonas-client.xml | 11 - jonas_tests/ws/etc/clients/timeMapping.xml | 11 - jonas_tests/ws/etc/clients/wsdl/TimePort.wsdl | 72 - .../etc/ejbjars/mcontext/META-INF/ejb-jar.xml | 75 - .../mcontext/META-INF/jonas-ejb-jar.xml | 23 - .../ejbjars/mcontext/META-INF/mappingMCT.xml | 12 - .../ejbjars/mcontext/META-INF/webservices.xml | 34 - .../META-INF/wsdl/MessageContext.wsdl | 119 - .../ws/etc/ejbjars/time/META-INF/ejb-jar.xml | 38 - .../ejbjars/time/META-INF/jonas-ejb-jar.xml | 11 - .../ws/etc/ejbjars/time/META-INF/mapping.xml | 12 - .../etc/ejbjars/time/META-INF/webservices.xml | 33 - .../time/META-INF/wsdl/AddressBook.xsd | 17 - .../time/META-INF/wsdl/AddressBookPort.wsdl | 127 - .../etc/ejbjars/time/META-INF/wsdl/Time.wsdl | 46 - .../ejbjars/time/META-INF/wsdl/TimePort.wsdl | 52 - .../wsclient/META-INF/XMethodsMapping.xml | 53 - .../etc/ejbjars/wsclient/META-INF/ejb-jar.xml | 46 - .../wsclient/META-INF/jonas-ejb-jar.xml | 16 - .../ejbjars/wsclient/META-INF/wsdl/query.wsdl | 116 - .../ejbjars/wsclient/META-INF/wsdl/query.xsd | 56 - .../etc/webapps/alone/jonas-webservices.xml | 17 - jonas_tests/ws/etc/webapps/alone/mapping.xml | 22 - jonas_tests/ws/etc/webapps/alone/web.xml | 10 - .../ws/etc/webapps/alone/webservices.xml | 23 - .../ws/etc/webapps/alone/wsdl/AddressBook.xsd | 31 - .../webapps/alone/wsdl/AddressBookPort.wsdl | 148 - .../ws/etc/webapps/portlink/AdressBook.xml | 21 - .../ws/etc/webapps/portlink/jonas-web.xml | 13 - jonas_tests/ws/etc/webapps/portlink/web.xml | 18 - .../ws/etc/webapps/portlink/web/index.jsp | 124 - .../portlink/wsdl/AddressBookPort.wsdl | 176 - .../etc/webapps/secured/jonas-webservices.xml | 60 - .../ws/etc/webapps/secured/mapping.xml | 22 - jonas_tests/ws/etc/webapps/secured/web.xml | 14 - .../ws/etc/webapps/secured/webservices.xml | 38 - .../etc/webapps/secured/wsdl/AddressBook.xsd | 31 - .../webapps/secured/wsdl/AddressBookPort.wsdl | 148 - .../ws/resources/call-props-empty-j2ee.xml | 12 - .../ws/resources/call-props-empty-jonas.xml | 12 - jonas_tests/ws/resources/call-props-j2ee.xml | 12 - jonas_tests/ws/resources/call-props-jonas.xml | 28 - .../ws/resources/call-props-null-j2ee.xml | 6 - .../ws/resources/call-props-null-jonas.xml | 4 - .../ws/resources/mapping/AxisServiceTest.xml | 11 - .../ws/resources/no-port2wsdl-map-j2ee.xml | 6 - .../ws/resources/no-port2wsdl-map-jonas.xml | 4 - .../ws/resources/no-wsdd-specified-j2ee.xml | 4 - .../ws/resources/no-wsdd-specified-jonas.xml | 4 - .../resources/port-name-list-empty-j2ee.xml | 6 - .../resources/port-name-list-empty-jonas.xml | 4 - .../ws/resources/port-name-list-j2ee.xml | 12 - .../ws/resources/port-name-list-jonas.xml | 28 - .../ws/resources/port2wsdl-map-j2ee.xml | 12 - .../ws/resources/port2wsdl-map-jonas.xml | 12 - .../ws/resources/service-qname-auto-j2ee.xml | 6 - .../ws/resources/service-qname-auto-jonas.xml | 4 - .../resources/service-qname-explicit-j2ee.xml | 7 - .../service-qname-explicit-jonas.xml | 4 - .../ws/resources/stub-props-empty-j2ee.xml | 12 - .../ws/resources/stub-props-empty-jonas.xml | 12 - jonas_tests/ws/resources/stub-props-j2ee.xml | 12 - jonas_tests/ws/resources/stub-props-jonas.xml | 28 - .../ws/resources/stub-props-null-j2ee.xml | 6 - .../ws/resources/stub-props-null-jonas.xml | 4 - .../ws/resources/wsdd-specified-j2ee.xml | 4 - .../ws/resources/wsdd-specified-jonas.xml | 8 - jonas_tests/ws/resources/wsdd/deploy.wsdd | 5 - .../ws/resources/wsdl-url-default-j2ee.xml | 6 - .../ws/resources/wsdl-url-default-jonas.xml | 4 - .../ws/resources/wsdl-url-override-j2ee.xml | 7 - .../ws/resources/wsdl-url-override-jonas.xml | 5 - jonas_tests/ws/resources/wsdl/oneService.wsdl | 52 - jonas_tests/ws/resources/wsdl/twoService.wsdl | 54 - .../timeclient/StaticPassValue.java | 91 - .../appclients/timeclient/TimeClient.java | 118 - .../timeclient/TimeClientHandler.java | 75 - .../jtests/beans/mcontext/BeanAccessor.java | 14 - .../beans/mcontext/BeanAccessorHome.java | 15 - .../beans/mcontext/BeanAccessorSLR.java | 77 - .../beans/mcontext/TestMC1Endpoint.java | 38 - .../jtests/beans/mcontext/TestMC1Local.java | 13 - .../beans/mcontext/TestMC1LocalHome.java | 13 - .../jtests/beans/mcontext/TestMC1SLL.java | 83 - .../jonas/jtests/beans/mcontext/TestMC2.java | 14 - .../beans/mcontext/TestMC2Endpoint.java | 36 - .../jtests/beans/mcontext/TestMC2Home.java | 15 - .../jtests/beans/mcontext/TestMC2SLR.java | 83 - .../jtests/beans/time/StaticPassValue.java | 77 - .../jtests/beans/time/TimeBeanHandler.java | 122 - .../jonas/jtests/beans/time/TimeBeanSLR.java | 77 - .../jonas/jtests/beans/time/TimeEndpoint.java | 42 - .../jtests/beans/wsclient/WsClient1.java | 16 - .../jtests/beans/wsclient/WsClient1Home.java | 15 - .../jtests/beans/wsclient/WsClient1SLR.java | 105 - .../jtests/clients/endpoint/C_endpoint.java | 57 - .../clients/endpoint/F_TimeEndpoint.java | 137 - .../jonas/jtests/clients/mbeans/C_mbeans.java | 49 - .../clients/mbeans/F_WebServicesMBeans.java | 296 -- .../clients/mcontext/F_MessageContext.java | 126 - .../clients/service/A_ServiceUsage.java | 49 - .../jtests/clients/service/C_service.java | 50 - .../service/F_AgnosticServiceUsage.java | 96 - .../jtests/clients/service/F_AxisService.java | 408 -- .../clients/service/F_PortComponentLink.java | 137 - .../jtests/clients/service/ServiceRefTLE.java | 28 - .../jonas/jtests/clients/wsgen/A_WsGen.java | 123 - .../jonas/jtests/clients/wsgen/C_wsgen.java | 50 - .../jtests/clients/wsgen/F_Generate.java | 87 - .../jonas/jtests/clients/wsgen/F_WsGen.java | 177 - .../jtests/clients/wssecured/C_wssecured.java | 57 - .../F_WsSecuredMultipleEndpoint.java | 131 - .../jonas/jtests/gen/xmethods/IDNamePair.java | 56 - .../jtests/gen/xmethods/ServiceDetail.java | 287 -- .../jtests/gen/xmethods/ServiceSummary.java | 119 - .../jtests/gen/xmethods/XMethodsQuery.java | 20 - .../xmethods/XMethodsQuerySoapPortType.java | 24 - .../jonas/jtests/gen/zip/IODCODESPOSTAUX.java | 18 - .../gen/zip/IODCODESPOSTAUXservice.java | 16 - .../HelloPortComponentSoapBindingStub.java | 112 - .../objectweb/jonas/jtests/hello/HelloWs.java | 12 - .../jonas/jtests/hello/HelloWs2.java | 12 - .../jonas/jtests/hello/HelloWsService.java | 16 - .../jtests/hello/HelloWsServiceLocator.java | 111 - .../jtests/servlets/endpoint/Address.java | 41 - .../jtests/servlets/endpoint/AddressBook.java | 13 - .../endpoint/AddressBookException.java | 8 - .../servlets/endpoint/AddressBookImpl.java | 52 - .../jtests/servlets/portlink/Address.java | 41 - .../jtests/servlets/portlink/AddressBook.java | 15 - .../portlink/AddressBookException.java | 8 - .../jtests/util/JWebServicesTestCase.java | 454 -- {jonas_doc/olddoc => olddoc}/Admin.html | 0 {jonas_doc/olddoc => olddoc}/Cmi.html | 0 {jonas_doc/olddoc => olddoc}/Deployer.html | 0 {jonas_doc/olddoc => olddoc}/Domain.html | 0 {jonas_doc/olddoc => olddoc}/JOnASWP.html | 0 .../olddoc => olddoc}/JOnASWebServices.html | 0 {jonas_doc/olddoc => olddoc}/MBeans.html | 0 {jonas_doc/olddoc => olddoc}/PG_Client.html | 0 .../olddoc => olddoc}/PG_Connector.html | 0 .../olddoc => olddoc}/PG_Deployment.html | 0 .../olddoc => olddoc}/PG_EarDeployment.html | 0 {jonas_doc/olddoc => olddoc}/PG_Entity.html | 0 .../olddoc => olddoc}/PG_Environment.html | 0 {jonas_doc/olddoc => olddoc}/PG_J2eeApps.html | 0 {jonas_doc/olddoc => olddoc}/PG_JmsGuide.html | 0 .../olddoc => olddoc}/PG_LogModules.html | 0 .../olddoc => olddoc}/PG_MsgDrvBean.html | 0 .../olddoc => olddoc}/PG_Packaging.html | 0 {jonas_doc/olddoc => olddoc}/PG_Security.html | 0 {jonas_doc/olddoc => olddoc}/PG_Session.html | 0 .../olddoc => olddoc}/PG_Transaction.html | 0 {jonas_doc/olddoc => olddoc}/PG_War.html | 0 {jonas_doc/olddoc => olddoc}/Services.html | 0 {jonas_doc/olddoc => olddoc}/ant-ejbjar.html | 0 {jonas_doc/olddoc => olddoc}/clusterd.html | 0 {jonas_doc/olddoc => olddoc}/clustering.html | 0 {jonas_doc/olddoc => olddoc}/common.css | 0 .../olddoc => olddoc}/howto/Clustering.html | 0 .../olddoc => olddoc}/howto/Firewall.html | 0 .../howto/JMSClustering.html | 0 .../howto/JORAMdistributed_JOnAS_4_1.html | 0 .../howto/JSR160_support.html | 0 .../olddoc => olddoc}/howto/JonasArchi.html | 0 .../howto/JonasMBeansHowTo.html | 0 .../olddoc => olddoc}/howto/WebSphereMQ.html | 0 .../olddoc => olddoc}/howto/Win32Service.html | 0 .../AutomaticClusterConfiguration.html | 0 .../ManualClusterConfiguration.html | 0 .../howto/clusterdetails/c-jdbc.html | 0 .../howto/clusterdetails/director.html | 0 .../clusterdetails/mod_jk2-to-mod_jk.html | 0 .../mod_jk2_embeddedtomcat.html | 0 .../clusterdetails/mod_jk_embeddedtomcat.html | 0 .../howto/clusterdetails/sequoia.html | 0 {jonas_doc/olddoc => olddoc}/howto/common.css | 0 .../howto/emb-images/emb-component.png | Bin .../howto/emb-images/emb-deps.png | Bin .../howto/emb-images/mfb.png | Bin .../howto/emb-images/src/emb-component.svg | 0 .../howto/emb-images/src/emb-deps.svg | 0 .../howto/emb-images/src/mfb.svg | 0 .../howto/images/JOnASJMX.gif | Bin .../howto/images/cluster1.gif | Bin .../howto/images/clusterfiles/Apache.jpg | Bin .../howto/images/clusterfiles/Archi1.jpg | Bin .../howto/images/clusterfiles/Archi2.jpg | Bin .../howto/images/clusterfiles/Archi3.jpg | Bin .../howto/images/clusterfiles/Archi4.jpg | Bin .../howto/images/clusterfiles/Archi5.jpg | Bin .../images/clusterfiles/Architecture.jpg | Bin .../howto/images/clusterfiles/EJBCont.jpg | Bin .../howto/images/clusterfiles/FullJOnAS.jpg | Bin .../howto/images/clusterfiles/JOnASEJB.jpg | Bin .../howto/images/clusterfiles/JOnASWeb.jpg | Bin .../howto/images/clusterfiles/Node.jpg | Bin .../howto/images/clusterfiles/Thumbs.db | Bin .../howto/images/clusterfiles/WebCont.jpg | Bin .../howto/images/clusterfiles/common.css | 0 .../clusterfiles/sampleCluster2Screen.GIF | Bin .../jmsclustering/JmsClustering-queues.jpg | Bin .../jmsclustering/JmsClustering-topics.jpg | Bin .../howto/images/jmsclustering/joram.jpg | Bin .../howto/images/jmsclustering/joram_ha.jpg | Bin .../howto/images/jmsclustering/mdb.jpg | Bin .../howto/images/jmsclustering/mdb_config.jpg | Bin .../howto/images/jmsclustering/queue.jpg | Bin .../howto/images/jmsclustering/topic.jpg | Bin .../howto/images/jonas_cmp.gif | Bin .../howto/images/jonasarch.gif | Bin .../recovimg1.jpg | Bin .../recovimg2.jpg | Bin .../recovimg3.jpg | Bin .../recovimg4.jpg | Bin .../recovimg5.jpg | Bin .../recovimg6.jpg | Bin .../recovimg7.jpg | Bin .../recovimg8.jpg | Bin .../howto/images/logo_jonas.jpg | Bin .../olddoc => olddoc}/howto/install_j2ee.html | 0 .../howto/install_jonas.html | 0 .../howto/ws/sample-deploy.wsdd | 0 .../howto/ws/sample-server-config.wsdd | 0 .../olddoc => olddoc}/howto/ws/sample-web.xml | 0 .../olddoc => olddoc}/images/AreaGraph.png | Bin .../olddoc => olddoc}/images/JonasAdmin.gif | Bin .../olddoc => olddoc}/images/JonasAreas.png | Bin .../olddoc => olddoc}/images/WP_distr.gif | Bin .../olddoc => olddoc}/images/classloaders.png | Bin .../olddoc => olddoc}/images/cluster1.gif | Bin .../olddoc => olddoc}/images/clusterd.gif | Bin .../olddoc => olddoc}/images/clustering.gif | Bin .../images/cmi-cluster-stub.gif | Bin .../olddoc => olddoc}/images/cmi-jndi.gif | Bin {jonas_doc/olddoc => olddoc}/images/cmi.gif | Bin .../olddoc => olddoc}/images/domain_new.gif | Bin .../olddoc => olddoc}/images/eb_img_31.gif | Bin .../olddoc => olddoc}/images/favicon.ico | Bin {jonas_doc/olddoc => olddoc}/images/j2ee.gif | Bin .../olddoc => olddoc}/images/jcaarch.gif | Bin .../olddoc => olddoc}/images/jconsole.png | Bin .../images/jonas48repscenarios.jpg | Bin .../olddoc => olddoc}/images/jonasTree.png | Bin .../olddoc => olddoc}/images/jonasarch.gif | Bin .../olddoc => olddoc}/images/logo_jonas.jpg | Bin {jonas_doc/olddoc => olddoc}/images/pix.gif | Bin .../olddoc => olddoc}/images/roles1.gif | Bin .../olddoc => olddoc}/images/sfsb-rep.jpg | Bin .../olddoc => olddoc}/images/ws_client.jpg | Bin .../olddoc => olddoc}/images/ws_endpoint.jpg | Bin {jonas_doc/olddoc => olddoc}/index.html | 0 jonas_doc/pom.xml => pom.xml | 0 .../src => src}/docbook/doc-en/Glossary.xml | 0 .../docbook/doc-en/admin/JSR160_support.xml | 0 .../docbook/doc-en/admin/admindefs.xml | 0 .../docbook/doc-en/admin/adminfunctions.xml | 0 .../docbook/doc-en/admin/adminmbeans.xml | 0 .../docbook/doc-en/admin/admintools.xml | 0 .../docbook/doc-en/admin/adminuse.xml | 0 .../docbook/doc-en/admin/install.xml | 0 .../src => src}/docbook/doc-en/admin/mejb.xml | 0 .../docbook/doc-en/admin/mejbaccess.xml | 0 .../docbook/doc-en/admin/threadStackDump.xml | 0 .../docbook/doc-en/administration_guide.xml | 0 .../src => src}/docbook/doc-en/ant_tasks.xml | 0 .../docbook/doc-en/anttasks/ant_ejbjar.xml | 0 .../docbook/doc-en/anttasks/ant_genic.xml | 0 .../docbook/doc-en/anttasks/ant_jonas.xml | 0 .../docbook/doc-en/anttasks/ant_jonasbase.xml | 0 .../docbook/doc-en/anttasks/ant_newjc.xml | 0 .../docbook/doc-en/anttasks/ant_property.xml | 0 .../doc-en/anttasks/ant_serverdeploy.xml | 0 .../docbook/doc-en/anttasks/ant_wsgen.xml | 0 .../clustering/clustering-variables.xml | 0 .../doc-en/clustering/configuration/ejb.xml | 0 .../doc-en/clustering/configuration/jms.xml | 0 .../doc-en/clustering/configuration/web.xml | 0 .../clustering/examples/sampleCluster2.xml | 0 .../clustering/examples/sampleCluster3.xml | 0 .../docbook/doc-en/clustering/faq/faq.xml | 0 .../doc-en/clustering/management/cluster.xml | 0 .../doc-en/clustering/management/clusterd.xml | 0 .../doc-en/clustering/management/cmi.xml | 0 .../doc-en/clustering/management/domain.xml | 0 .../doc-en/clustering/management/ha.xml | 0 .../clustering/principles/clustering.xml | 0 .../clustering/principles/management.xml | 0 .../clustering/principles/terminology.xml | 0 .../doc-en/clustering/tooling/jasmine.xml | 0 .../doc-en/clustering/tooling/jkmanager.xml | 0 .../docbook/doc-en/clustering_guide.xml | 0 .../docbook/doc-en/command_guide.xml | 0 .../doc-en/commands/configuration_newjb.xml | 0 .../doc-en/commands/configuration_newjc.xml | 0 .../commands/configuration_raconfig.xml | 0 .../docbook/doc-en/commands/genic.xml | 0 .../docbook/doc-en/commands/jclient.xml | 0 .../docbook/doc-en/commands/jms.xml | 0 .../docbook/doc-en/commands/jonas.xml | 0 .../doc-en/config/jonas_properties.xml | 0 .../docbook/doc-en/config/jonasbase_conf.xml | 0 .../doc-en/config/jonasbase_creation.xml | 0 .../doc-en/config/jonasbase_structure.xml | 0 .../doc-en/config/jonasroot_structure.xml | 0 .../docbook/doc-en/configuration_guide.xml | 0 .../docbook/doc-en/connector_pg.xml | 0 .../doc-en/continuous_integration_guide.xml | 0 .../src => src}/docbook/doc-en/deploy/ear.xml | 0 .../docbook/doc-en/deploy/ejb2.xml | 0 .../docbook/doc-en/deploy/principes.xml | 0 .../src => src}/docbook/doc-en/deploy/war.xml | 0 .../docbook/doc-en/deploy/webapps.xml | 0 .../docbook/doc-en/deployer_guide.xml | 0 .../deployment-plan-common.xml | 0 .../deployment-plan-element-attribute.xml | 0 .../deployment-plan-mixed.xml | 0 .../deployment-plan-sample-example.xml | 0 .../deployment-plans/deployment-plan-type.xml | 0 .../deployment-plans/deployment-plan.xml | 0 .../doc-en/deployment-plans/introduction.xml | 0 .../jonas/jonas-deployment-plan.xml | 0 .../doc-en/deployment-plans/repositories.xml | 0 .../deployment-type-specific-data.xml | 0 .../typespecific/maven2-deployment-data.xml | 0 .../typespecific/obr-deployment-data.xml | 0 .../typespecific/url-deployment-data.xml | 0 .../docbook/doc-en/deployment-plans_guide.xml | 0 .../docbook/doc-en/developerguide.xml | 0 .../doc-en/developerguide/building.xml | 0 .../doc-en/developerguide/code_convention.xml | 0 .../doc-en/developerguide/contributing.xml | 0 .../developerguide/getting_from_svn.xml | 0 .../docbook/doc-en/developerguide/running.xml | 0 .../doc-en/developerguide/usingexamples.xml | 0 .../src => src}/docbook/doc-en/eardeploy.xml | 0 .../docbook/doc-en/ejb2_programmer_guide.xml | 0 .../docbook/doc-en/ejb3_programmer_guide.xml | 0 .../src => src}/docbook/doc-en/essai.xml | 0 .../src => src}/docbook/doc-en/essai2.xml | 0 .../src => src}/docbook/doc-en/essaibook.xml | 0 .../docbook/doc-en/getting_started_guide.xml | 0 .../src => src}/docbook/doc-en/howto.xml | 0 .../doc-en/howto_distributed_joram.xml | 0 .../docbook/doc-en/howto_firewall.xml | 0 .../doc-en/howto_install_jdbc_driver.xml | 0 .../docbook/doc-en/howto_mbeans.xml | 0 .../docbook/doc-en/howto_services.xml | 0 .../doc-en/howto_services_on_demand.xml | 0 .../howto_track_jdbc_connectionleaks.xml | 0 .../docbook/doc-en/howto_use_cdi.xml | 0 .../docbook/doc-en/howto_use_jaxrs.xml | 0 .../docbook/doc-en/howto_webspheremq.xml | 0 .../docbook/doc-en/howto_win32_service.xml | 0 .../src => src}/docbook/doc-en/index.html | 0 .../docbook/doc-en/install/install_j2ee.xml | 0 .../docbook/doc-en/install/install_jonas.xml | 0 .../docbook/doc-en/j2ee/classloader.xml | 0 .../docbook/doc-en/j2ee/j2ee-app.xml | 0 .../docbook/doc-en/j2ee/j2ee-ejb.xml | 0 .../docbook/doc-en/j2ee/j2ee-web.xml | 0 .../docbook/doc-en/j2eeclient_pg.xml | 0 .../docbook/doc-en/j2eeprogrammerguide.xml | 0 .../docbook/doc-en/jaxws_developer_guide.xml | 0 .../doc-en/loaders/basics-of-classloading.xml | 0 .../doc-en/loaders/classloading-in-jonas.xml | 0 .../docbook/doc-en/loaders/configuration.xml | 0 .../docbook/doc-en/loaders/glossary.xml | 0 .../docbook/doc-en/loaders/tips.xml | 0 .../docbook/doc-en/loaders/tooling.xml | 0 .../src => src}/docbook/doc-en/log/config.xml | 0 .../doc-en/mastering-jonas-classloaders.xml | 0 .../docbook/doc-en/migration/jonas_4_7.xml | 0 .../docbook/doc-en/migration/jonas_4_8.xml | 0 .../docbook/doc-en/migration/jonas_4_9.xml | 0 .../docbook/doc-en/migration/jonas_5_0.xml | 0 .../docbook/doc-en/migration/versionAPI.xml | 0 .../doc-en/migration/versionModules.xml | 0 .../docbook/doc-en/migration_guide.xml | 0 .../docbook/doc-en/protocols/config.xml | 0 .../src => src}/docbook/doc-en/ra/JDBCRA.xml | 0 .../src => src}/docbook/doc-en/ra/JDBCXML.xml | 0 .../src => src}/docbook/doc-en/ra/JMSRA.xml | 0 .../doc-en/security/configsecurity.xml | 0 .../docbook/doc-en/services/cmi/config.xml | 0 .../docbook/doc-en/services/db/config.xml | 0 .../docbook/doc-en/services/dbm/config.xml | 0 .../doc-en/services/dbm/jdbcdatasource.xml | 0 .../doc-en/services/depmonitor/config.xml | 0 .../doc-en/services/discovery/config.xml | 0 .../docbook/doc-en/services/ear/config.xml | 0 .../doc-en/services/ejb2/cmp2_usage.xml | 0 .../docbook/doc-en/services/ejb2/config.xml | 0 .../doc-en/services/ejb2/db_access_bmp.xml | 0 .../doc-en/services/ejb2/db_access_cmp.xml | 0 .../docbook/doc-en/services/ejb2/deploy.xml | 0 .../docbook/doc-en/services/ejb2/entity.xml | 0 .../doc-en/services/ejb2/entity_tuning.xml | 0 .../doc-en/services/ejb2/environment.xml | 0 .../docbook/doc-en/services/ejb2/mdb.xml | 0 .../doc-en/services/ejb2/mdb_tuning.xml | 0 .../doc-en/services/ejb2/packaging.xml | 0 .../docbook/doc-en/services/ejb2/security.xml | 0 .../docbook/doc-en/services/ejb2/session.xml | 0 .../doc-en/services/ejb2/session_tuning.xml | 0 .../doc-en/services/ejb2/transaction.xml | 0 .../docbook/doc-en/services/ejb3/config.xml | 0 .../docbook/doc-en/services/ha/config.xml | 0 .../docbook/doc-en/services/jaxrpc/config.xml | 0 .../docbook/doc-en/services/jaxws/config.xml | 0 .../docbook/doc-en/services/jmx/config.xml | 0 .../docbook/doc-en/services/jtm/config.xml | 0 .../docbook/doc-en/services/mail/config.xml | 0 .../doc-en/services/registry/config.xml | 0 .../doc-en/services/resource/config.xml | 0 .../services/resource/connector_packaging.xml | 0 .../resource/connector_principles.xml | 0 .../services/resource/connector_using.xml | 0 .../doc-en/services/resource/jonas-ra.xml | 0 .../doc-en/services/security/config.xml | 0 .../doc-en/services/smartclient/config.xml | 0 .../doc-en/services/versioning/about.xml | 0 .../doc-en/services/versioning/config.xml | 0 .../services/versioning/versioning-ejb.xml | 0 .../services/versioning/versioning-web.xml | 0 .../docbook/doc-en/services/wc/config.xml | 0 .../docbook/doc-en/services/web/config.xml | 0 .../doc-en/services/web/webcomponent.xml | 0 .../docbook/doc-en/services/web/webdeploy.xml | 0 .../doc-en/services/web/webpackaging.xml | 0 .../docbook/doc-en/services/wm/config.xml | 0 .../doc-en/services/wsdl-publisher/config.xml | 0 .../docbook/doc-en/terminology.xml | 0 .../src => src}/docbook/doc-en/variables.xml | 0 .../src => src}/docbook/doc-en/web_pg.xml | 0 .../src => src}/docbook/doc-en/xmltips.xml | 0 .../docbook/doc-fr/howtoJOnASDocBook.xml | 0 {jonas_doc/src => src}/pom/jonas-doc-en.pom | 0 .../resources/WEB-INF/jonas-web.xml | 0 .../src => src}/resources/WEB-INF/web.xml | 0 {jonas_doc/src => src}/resources/chunk.xsl | 0 {jonas_doc/src => src}/resources/common.css | 0 {jonas_doc/src => src}/resources/fo.xsl | 0 {jonas_doc/src => src}/resources/footer.xml | 0 {jonas_doc/src => src}/resources/html.xsl | 0 .../resources/images}/JonasSmall.png | Bin .../src => src}/resources/images/WP_distr.gif | Bin .../images/admin-webmodule-virtual.png | Bin .../resources/images/admintree.gif | Bin .../images/bamboo/Bamboo_WorkDirectory.gif | Bin .../bamboo/BuildPlan_AntBuildDependency.gif | Bin .../resources/images/bamboo/Builders.gif | Bin .../bamboo/Dashboard_CurrentActivty.gif | Bin .../resources/images/bamboo/JDK_tailor.gif | Bin .../bamboo/TestBuildPlan_ActivityLog.gif | Bin .../bamboo/TestBuildPlan_Dashboard_Run.gif | Bin .../images/bamboo/TestsBuild_Artifacts.gif | Bin .../bamboo/TestsBuild_BuilderConfig.gif | Bin .../images/bamboo/TestsBuild_PlanDetail.gif | Bin .../images/bamboo/TestsBuild_sourcerepos.gif | Bin .../images/bamboo/ant_BuilderConfig.gif | Bin .../images/bamboo/ant_createplan.gif | Bin .../resources/images/bamboo/jb.config.gif | Bin .../resources/images/bamboo/main_tailor.gif | Bin .../images/bamboo/maven_BuildArtifacts.gif | Bin .../images/bamboo/maven_BuildNotification.gif | Bin .../images/bamboo/maven_BuilderConfig.gif | Bin .../bamboo/maven_CheckoutAndBuilding.gif | Bin .../images/bamboo/maven_PlanDetail.gif | Bin .../images/bamboo/maven_PostAction.gif | Bin .../images/bamboo/maven_sourcerepos_step2.gif | Bin .../resources/images/bamboo/variables.gif | Bin .../resources/images/callouts/1.png | Bin .../resources/images/callouts/10.png | Bin .../resources/images/callouts/11.png | Bin .../resources/images/callouts/12.png | Bin .../resources/images/callouts/13.png | Bin .../resources/images/callouts/14.png | Bin .../resources/images/callouts/15.png | Bin .../resources/images/callouts/2.png | Bin .../resources/images/callouts/3.png | Bin .../resources/images/callouts/4.png | Bin .../resources/images/callouts/5.png | Bin .../resources/images/callouts/6.png | Bin .../resources/images/callouts/7.png | Bin .../resources/images/callouts/8.png | Bin .../resources/images/callouts/9.png | Bin .../src => src}/resources/images/caution.png | Bin .../resources/images/clusterfiles/Apache.jpg | Bin .../resources/images/clusterfiles/Archi1.jpg | Bin .../resources/images/clusterfiles/Archi2.jpg | Bin .../resources/images/clusterfiles/Archi3.jpg | Bin .../resources/images/clusterfiles/Archi4.jpg | Bin .../resources/images/clusterfiles/Archi5.jpg | Bin .../images/clusterfiles/Architecture.jpg | Bin .../resources/images/clusterfiles/EJBCont.jpg | Bin .../images/clusterfiles/FullJOnAS.jpg | Bin .../images/clusterfiles/JOnASEJB.jpg | Bin .../images/clusterfiles/JOnASWeb.jpg | Bin .../resources/images/clusterfiles/Node.jpg | Bin .../resources/images/clusterfiles/WebCont.jpg | Bin .../clusterfiles/sampleCluster2Screen.GIF | Bin .../resources/images/clustering/clusterd.png | Bin .../resources/images/clustering/clusterd.svg | 0 .../images/clustering/clustersolution.png | Bin .../images/clustering/clustersolution.svg | 0 .../images/clustering/cmi_cluster.png | Bin .../images/clustering/cmi_cluster.svg | 0 .../images/clustering/cmi_cluster_config.svg | 0 .../cmi_cluster_config_2tiers_client.png | Bin .../cmi_cluster_config_2tiers_server.png | Bin .../cmi_cluster_config_javaclient.png | Bin .../resources/images/clustering/cmiv2.png | Bin .../images/clustering/domain.cmi.cluster.png | Bin .../clustering/domain.jk.cluster.member.png | Bin .../images/clustering/domain.jk.cluster.png | Bin .../images/clustering/domainmngt.png | Bin .../images/clustering/domainmngt.svg | 0 .../images/clustering/easybeans-logo.png | Bin .../images/clustering/ejbcluster.png | Bin .../images/clustering/ejbcluster.svg | 0 .../resources/images/clustering/ejbfarm.png | Bin .../resources/images/clustering/ejbfarm.svg | 0 .../images/clustering/httpcluster.png | Bin .../images/clustering/httpcluster.svg | 0 .../resources/images/clustering/httpfarm.png | Bin .../resources/images/clustering/httpfarm.svg | 0 .../images/clustering/jmscluster_a.png | Bin .../images/clustering/jmscluster_a.svg | 0 .../images/clustering/jmscluster_b.png | Bin .../images/clustering/jmscluster_b.svg | 0 .../resources/images/clustering/jmsfarm_a.png | Bin .../resources/images/clustering/jmsfarm_a.svg | 0 .../resources/images/clustering/jmsfarm_b.png | Bin .../resources/images/clustering/jmsfarm_b.svg | 0 .../images/clustering/jonas48repscenarios.jpg | Bin .../images/clustering/logo_jonas2.png | Bin .../images/clustering/myTomcatCluster.gif | Bin .../clustering/registry_replication.png | Bin .../clustering/registry_replication.svg | 0 .../images/clustering/sampleCluster2.png | Bin .../images/clustering/sampleCluster2.svg | 0 .../images/clustering/sampleCluster3.png | Bin .../images/clustering/sampleCluster3.svg | 0 .../images/clustering/sc/jasmine_design.png | Bin .../images/clustering/sc/jasmine_eos.png | Bin .../images/clustering/sc/jkmanager.png | Bin .../sc/jonasadmin_cmi_cluster_tab.png | Bin .../sc/jonasadmin_cmi_mbeans_attr.png | Bin .../sc/jonasadmin_cmi_object_info.png | Bin .../clustering/sc/jonasadmin_cmi_policies.png | Bin .../sc/jonasadmin_cmi_server_info.png | Bin .../clustering/sc/jonasadmin_cmi_servers.png | Bin .../sc/jonasadmin_cmi_strategies.png | Bin .../clustering/sc/jonasadmin_cmi_tab.png | Bin .../screenshot_jonasadmin_cmi_cluster_tab.png | Bin .../screenshot_jonasadmin_cmi_cluster_tab.svg | 0 .../screenshot_jonasadmin_cmi_mbeans_attr.png | Bin .../screenshot_jonasadmin_cmi_mbeans_attr.svg | 0 .../screenshot_jonasadmin_cmi_object_info.png | Bin .../screenshot_jonasadmin_cmi_object_info.svg | 0 .../screenshot_jonasadmin_cmi_policies.png | Bin .../screenshot_jonasadmin_cmi_policies.svg | 0 .../screenshot_jonasadmin_cmi_server_info.png | Bin .../screenshot_jonasadmin_cmi_server_info.svg | 0 .../screenshot_jonasadmin_cmi_servers.png | Bin .../screenshot_jonasadmin_cmi_servers.svg | 0 .../screenshot_jonasadmin_cmi_strategies.png | Bin .../screenshot_jonasadmin_cmi_strategies.svg | 0 .../screenshot_jonasadmin_cmi_tab.png | Bin .../screenshot_jonasadmin_cmi_tab.svg | 0 .../src => src}/resources/images/cmi.gif | Bin .../src => src}/resources/images/connect.gif | Bin .../resources/images/defilement.gif | Bin .../resources/images/deployment.gif | Bin .../src => src}/resources/images/draft.png | Bin .../resources/images/earsample-add-author.png | Bin .../images/earsample-architecture.png | Bin .../images/earsample-authentication.png | Bin .../resources/images/earsample-jpa-model.png | Bin .../images/earsample-list-content.png | Bin .../resources/images/eb_img_31.gif | Bin .../resources/images/editbuttons.gif | Bin .../resources/images/filtering-loader.png | Bin .../resources/images/firstpage.gif | Bin .../resources/images/forgeadmin.gif | Bin .../src => src}/resources/images/jcaarch.gif | Bin .../images/jconsoleStackDumpList.png | Bin .../images/jconsoleStackDumpOperations.png | Bin .../jmsclustering/Cluster JMS-JORAM-JOnAS.ppt | Bin .../jmsclustering/JmsClustering-queues.jpg | Bin .../jmsclustering/JmsClustering-queues.ppt | Bin .../jmsclustering/JmsClustering-topics.jpg | Bin .../jmsclustering/JmsClustering-topics.ppt | Bin .../resources/images/jmsclustering/joram.jpg | Bin .../images/jmsclustering/joram_ha.jpg | Bin .../resources/images/jmsclustering/mdbHa.ppt | Bin .../images/jmsclustering/mdbclustering.png | Bin .../images/jmsclustering/mdbclustering.svg | 0 .../images/jmsclustering/queuelb.png | Bin .../images/jmsclustering/queuelb.svg | 0 .../resources/images/jmsclustering/topic.jpg | Bin .../resources/images/jonas-classloaders.png | Bin .../resources/images/jonasAdminDomain.gif | Bin .../resources/images/jonasAdminStackDump.png | Bin .../resources/images/jonas_doc.gif | Bin .../images/loaders/bundle-class-space.png | Bin .../resources/images/loaders/console-osgi.png | Bin .../images/loaders/filtering-classloaders.png | Bin .../loaders/jonas-osgi-modules-libext.png | Bin .../loaders/jonas-osgi-modules-ultra-zoom.png | Bin .../images/loaders/jonas-osgi-modules.png | Bin .../resources/images/loaders/jonas-round.png | Bin .../images/loaders/osgi-classloading.gif | Bin .../images/loaders/system-loaders.png | Bin .../src => src}/resources/images/logoow.gif | Bin .../src => src}/resources/images/note.png | Bin .../src => src}/resources/images/output.gif | Bin .../src => src}/resources/images/publish.gif | Bin .../resources/images/service-dependencies.png | Bin .../images/versioning-ejb-schema.png | Bin .../images/versioning-general-schema.png | Bin {jonas_doc/src => src}/resources/index.html | 0 .../tools => tools}/docbook-5.0/ChangeLog | 0 {jonas_doc/tools => tools}/docbook-5.0/README | 0 .../tools => tools}/docbook-5.0/VERSION | 0 .../tools => tools}/docbook-5.0/catalog.xml | 0 .../tools => tools}/docbook-5.0/docbook.nvdl | 0 .../docbook-5.0/dtd/docbook.dtd | 0 .../docbook-5.0/rng/docbook.rnc | 0 .../docbook-5.0/rng/docbook.rng | 0 .../docbook-5.0/rng/docbookxi.rnc | 0 .../docbook-5.0/rng/docbookxi.rng | 0 .../docbook-5.0/sch/docbook.sch | 0 .../docbook-5.0/tools/db4-entities.pl | 0 .../docbook-5.0/tools/db4-upgrade.xsl | 0 .../docbook-5.0/xsd/docbook.xsd | 0 .../tools => tools}/docbook-5.0/xsd/xlink.xsd | 0 .../tools => tools}/docbook-5.0/xsd/xml.xsd | 0 .../.CatalogManager.properties.example | 0 .../docbook-xsl-1.73.2/.urilist | 0 .../docbook-xsl-1.73.2/AUTHORS | 0 .../tools => tools}/docbook-xsl-1.73.2/BUGS | 0 .../docbook-xsl-1.73.2/COPYING | 0 .../docbook-xsl-1.73.2/INSTALL | 0 .../tools => tools}/docbook-xsl-1.73.2/NEWS | 0 .../docbook-xsl-1.73.2/NEWS.html | 0 .../docbook-xsl-1.73.2/NEWS.xml | 0 .../tools => tools}/docbook-xsl-1.73.2/README | 0 .../docbook-xsl-1.73.2/RELEASE-NOTES.html | 0 .../docbook-xsl-1.73.2/RELEASE-NOTES.pdf | Bin .../docbook-xsl-1.73.2/RELEASE-NOTES.txt | 0 .../docbook-xsl-1.73.2/RELEASE-NOTES.xml | 0 .../tools => tools}/docbook-xsl-1.73.2/TODO | 0 .../docbook-xsl-1.73.2/VERSION | 0 .../docbook-xsl-1.73.2/catalog.xml | 0 .../docbook-xsl-1.73.2/common/af.xml | 0 .../docbook-xsl-1.73.2/common/am.xml | 0 .../docbook-xsl-1.73.2/common/ar.xml | 0 .../common/autoidx-kimber.xsl | 0 .../common/autoidx-kosek.xsl | 0 .../docbook-xsl-1.73.2/common/az.xml | 0 .../docbook-xsl-1.73.2/common/bg.xml | 0 .../docbook-xsl-1.73.2/common/bn.xml | 0 .../docbook-xsl-1.73.2/common/bs.xml | 0 .../docbook-xsl-1.73.2/common/ca.xml | 0 .../docbook-xsl-1.73.2/common/charmap.xml | 0 .../docbook-xsl-1.73.2/common/charmap.xsl | 0 .../docbook-xsl-1.73.2/common/common.xml | 0 .../docbook-xsl-1.73.2/common/common.xsl | 0 .../docbook-xsl-1.73.2/common/cs.xml | 0 .../docbook-xsl-1.73.2/common/cy.xml | 0 .../docbook-xsl-1.73.2/common/da.xml | 0 .../docbook-xsl-1.73.2/common/de.xml | 0 .../docbook-xsl-1.73.2/common/el.xml | 0 .../docbook-xsl-1.73.2/common/en.xml | 0 .../docbook-xsl-1.73.2/common/entities.ent | 0 .../docbook-xsl-1.73.2/common/eo.xml | 0 .../docbook-xsl-1.73.2/common/es.xml | 0 .../docbook-xsl-1.73.2/common/et.xml | 0 .../docbook-xsl-1.73.2/common/eu.xml | 0 .../docbook-xsl-1.73.2/common/fa.xml | 0 .../docbook-xsl-1.73.2/common/fi.xml | 0 .../docbook-xsl-1.73.2/common/fr.xml | 0 .../docbook-xsl-1.73.2/common/ga.xml | 0 .../docbook-xsl-1.73.2/common/gentext.xsl | 0 .../docbook-xsl-1.73.2/common/gu.xml | 0 .../docbook-xsl-1.73.2/common/he.xml | 0 .../docbook-xsl-1.73.2/common/hi.xml | 0 .../docbook-xsl-1.73.2/common/hr.xml | 0 .../docbook-xsl-1.73.2/common/hu.xml | 0 .../docbook-xsl-1.73.2/common/id.xml | 0 .../docbook-xsl-1.73.2/common/insertfile.xsl | 0 .../docbook-xsl-1.73.2/common/it.xml | 0 .../docbook-xsl-1.73.2/common/ja.xml | 0 .../docbook-xsl-1.73.2/common/kn.xml | 0 .../docbook-xsl-1.73.2/common/ko.xml | 0 .../docbook-xsl-1.73.2/common/l10n.dtd | 0 .../docbook-xsl-1.73.2/common/l10n.xml | 0 .../docbook-xsl-1.73.2/common/l10n.xsl | 0 .../docbook-xsl-1.73.2/common/la.xml | 0 .../docbook-xsl-1.73.2/common/labels.xsl | 0 .../docbook-xsl-1.73.2/common/lt.xml | 0 .../docbook-xsl-1.73.2/common/lv.xml | 0 .../docbook-xsl-1.73.2/common/mn.xml | 0 .../docbook-xsl-1.73.2/common/nl.xml | 0 .../docbook-xsl-1.73.2/common/nn.xml | 0 .../docbook-xsl-1.73.2/common/no.xml | 0 .../docbook-xsl-1.73.2/common/olink.xsl | 0 .../docbook-xsl-1.73.2/common/or.xml | 0 .../docbook-xsl-1.73.2/common/pa.xml | 0 .../docbook-xsl-1.73.2/common/pi.xml | 0 .../docbook-xsl-1.73.2/common/pi.xsl | 0 .../docbook-xsl-1.73.2/common/pl.xml | 0 .../docbook-xsl-1.73.2/common/pt.xml | 0 .../docbook-xsl-1.73.2/common/pt_br.xml | 0 .../docbook-xsl-1.73.2/common/refentry.xml | 0 .../docbook-xsl-1.73.2/common/refentry.xsl | 0 .../docbook-xsl-1.73.2/common/ro.xml | 0 .../docbook-xsl-1.73.2/common/ru.xml | 0 .../docbook-xsl-1.73.2/common/sk.xml | 0 .../docbook-xsl-1.73.2/common/sl.xml | 0 .../docbook-xsl-1.73.2/common/sq.xml | 0 .../docbook-xsl-1.73.2/common/sr.xml | 0 .../docbook-xsl-1.73.2/common/sr_Latn.xml | 0 .../docbook-xsl-1.73.2/common/stripns.xsl | 0 .../docbook-xsl-1.73.2/common/subtitles.xsl | 0 .../docbook-xsl-1.73.2/common/sv.xml | 0 .../docbook-xsl-1.73.2/common/ta.xml | 0 .../docbook-xsl-1.73.2/common/table.xsl | 0 .../common/targetdatabase.dtd | 0 .../docbook-xsl-1.73.2/common/targets.xsl | 0 .../docbook-xsl-1.73.2/common/th.xml | 0 .../docbook-xsl-1.73.2/common/titles.xsl | 0 .../docbook-xsl-1.73.2/common/tl.xml | 0 .../docbook-xsl-1.73.2/common/tr.xml | 0 .../docbook-xsl-1.73.2/common/uk.xml | 0 .../docbook-xsl-1.73.2/common/utility.xml | 0 .../docbook-xsl-1.73.2/common/utility.xsl | 0 .../docbook-xsl-1.73.2/common/vi.xml | 0 .../docbook-xsl-1.73.2/common/xh.xml | 0 .../docbook-xsl-1.73.2/common/zh_cn.xml | 0 .../docbook-xsl-1.73.2/common/zh_tw.xml | 0 .../docbook-xsl-1.73.2/docsrc/authors.xml | 0 .../docbook-xsl-1.73.2/docsrc/copyright.xml | 0 .../docbook-xsl-1.73.2/docsrc/license.xml | 0 .../docbook-xsl-1.73.2/docsrc/page.png | Bin .../docbook-xsl-1.73.2/docsrc/reference.css | 0 .../docbook-xsl-1.73.2/docsrc/reference.xml | 0 .../docsrc/reference.xml.included | 0 .../docbook-xsl-1.73.2/docsrc/warranty.xml | 0 .../docbook-xsl-1.73.2/eclipse/eclipse.xsl | 0 .../eclipse/profile-eclipse.xsl | 0 .../docbook-xsl-1.73.2/extensions/saxon65.jar | Bin .../docbook-xsl-1.73.2/extensions/xalan27.jar | Bin .../docbook-xsl-1.73.2/fo/admon.xsl | 0 .../docbook-xsl-1.73.2/fo/annotations.xsl | 0 .../docbook-xsl-1.73.2/fo/autoidx-kimber.xsl | 0 .../docbook-xsl-1.73.2/fo/autoidx-kosek.xsl | 0 .../docbook-xsl-1.73.2/fo/autoidx-ng.xsl | 0 .../docbook-xsl-1.73.2/fo/autoidx.xsl | 0 .../docbook-xsl-1.73.2/fo/autotoc.xsl | 0 .../docbook-xsl-1.73.2/fo/axf.xsl | 0 .../docbook-xsl-1.73.2/fo/biblio-iso690.xsl | 0 .../docbook-xsl-1.73.2/fo/biblio.xsl | 0 .../docbook-xsl-1.73.2/fo/block.xsl | 0 .../docbook-xsl-1.73.2/fo/callout.xsl | 0 .../docbook-xsl-1.73.2/fo/component.xsl | 0 .../docbook-xsl-1.73.2/fo/division.xsl | 0 .../docbook-xsl-1.73.2/fo/docbook.xsl | 0 .../docbook-xsl-1.73.2/fo/ebnf.xsl | 0 .../docbook-xsl-1.73.2/fo/fo-rtf.xsl | 0 .../docbook-xsl-1.73.2/fo/fo.xsl | 0 .../docbook-xsl-1.73.2/fo/footnote.xsl | 0 .../docbook-xsl-1.73.2/fo/fop.xsl | 0 .../docbook-xsl-1.73.2/fo/fop1.xsl | 0 .../docbook-xsl-1.73.2/fo/formal.xsl | 0 .../docbook-xsl-1.73.2/fo/glossary.xsl | 0 .../docbook-xsl-1.73.2/fo/graphics.xsl | 0 .../docbook-xsl-1.73.2/fo/highlight.xsl | 0 .../docbook-xsl-1.73.2/fo/htmltbl.xsl | 0 .../docbook-xsl-1.73.2/fo/index.xsl | 0 .../docbook-xsl-1.73.2/fo/info.xsl | 0 .../docbook-xsl-1.73.2/fo/inline.xsl | 0 .../docbook-xsl-1.73.2/fo/keywords.xsl | 0 .../docbook-xsl-1.73.2/fo/lists.xsl | 0 .../docbook-xsl-1.73.2/fo/math.xsl | 0 .../docbook-xsl-1.73.2/fo/pagesetup.xsl | 0 .../docbook-xsl-1.73.2/fo/param.xml | 0 .../docbook-xsl-1.73.2/fo/param.xsl | 0 .../docbook-xsl-1.73.2/fo/passivetex.xsl | 0 .../docbook-xsl-1.73.2/fo/pdf2index | 0 .../docbook-xsl-1.73.2/fo/pi.xml | 0 .../docbook-xsl-1.73.2/fo/pi.xsl | 0 .../docbook-xsl-1.73.2/fo/profile-docbook.xsl | 0 .../docbook-xsl-1.73.2/fo/ptc.xsl | 0 .../docbook-xsl-1.73.2/fo/qandaset.xsl | 0 .../docbook-xsl-1.73.2/fo/refentry.xsl | 0 .../docbook-xsl-1.73.2/fo/sections.xsl | 0 .../docbook-xsl-1.73.2/fo/spaces.xsl | 0 .../docbook-xsl-1.73.2/fo/synop.xsl | 0 .../docbook-xsl-1.73.2/fo/table.xml | 0 .../docbook-xsl-1.73.2/fo/table.xsl | 0 .../docbook-xsl-1.73.2/fo/task.xsl | 0 .../fo/titlepage.templates.xml | 0 .../fo/titlepage.templates.xsl | 0 .../docbook-xsl-1.73.2/fo/titlepage.xsl | 0 .../docbook-xsl-1.73.2/fo/toc.xsl | 0 .../docbook-xsl-1.73.2/fo/verbatim.xsl | 0 .../docbook-xsl-1.73.2/fo/xep.xsl | 0 .../docbook-xsl-1.73.2/fo/xref.xsl | 0 .../docbook-xsl-1.73.2/highlighting/c-hl.xml | 0 .../highlighting/common.xsl | 0 .../highlighting/delphi-hl.xml | 0 .../highlighting/ini-hl.xml | 0 .../highlighting/java-hl.xml | 0 .../docbook-xsl-1.73.2/highlighting/m2-hl.xml | 0 .../highlighting/myxml-hl.xml | 0 .../highlighting/php-hl.xml | 0 .../highlighting/xslthl-config.xml | 0 .../docbook-xsl-1.73.2/html/admon.xsl | 0 .../docbook-xsl-1.73.2/html/annotations.xsl | 0 .../html/autoidx-kimber.xsl | 0 .../docbook-xsl-1.73.2/html/autoidx-kosek.xsl | 0 .../docbook-xsl-1.73.2/html/autoidx-ng.xsl | 0 .../docbook-xsl-1.73.2/html/autoidx.xsl | 0 .../docbook-xsl-1.73.2/html/autotoc.xsl | 0 .../docbook-xsl-1.73.2/html/biblio-iso690.xsl | 0 .../docbook-xsl-1.73.2/html/biblio.xsl | 0 .../docbook-xsl-1.73.2/html/block.xsl | 0 .../docbook-xsl-1.73.2/html/callout.xsl | 0 .../docbook-xsl-1.73.2/html/changebars.xsl | 0 .../docbook-xsl-1.73.2/html/chunk-code.xsl | 0 .../docbook-xsl-1.73.2/html/chunk-common.xsl | 0 .../docbook-xsl-1.73.2/html/chunk.xsl | 0 .../docbook-xsl-1.73.2/html/chunker.xsl | 0 .../docbook-xsl-1.73.2/html/chunkfast.xsl | 0 .../docbook-xsl-1.73.2/html/chunktoc.xsl | 0 .../docbook-xsl-1.73.2/html/component.xsl | 0 .../docbook-xsl-1.73.2/html/division.xsl | 0 .../docbook-xsl-1.73.2/html/docbook.xsl | 0 .../docbook-xsl-1.73.2/html/ebnf.xsl | 0 .../docbook-xsl-1.73.2/html/footnote.xsl | 0 .../docbook-xsl-1.73.2/html/formal.xsl | 0 .../docbook-xsl-1.73.2/html/glossary.xsl | 0 .../docbook-xsl-1.73.2/html/graphics.xsl | 0 .../docbook-xsl-1.73.2/html/highlight.xsl | 0 .../docbook-xsl-1.73.2/html/html-rtf.xsl | 0 .../docbook-xsl-1.73.2/html/html.xsl | 0 .../docbook-xsl-1.73.2/html/htmltbl.xsl | 0 .../docbook-xsl-1.73.2/html/index.xsl | 0 .../docbook-xsl-1.73.2/html/info.xsl | 0 .../docbook-xsl-1.73.2/html/inline.xsl | 0 .../docbook-xsl-1.73.2/html/keywords.xsl | 0 .../docbook-xsl-1.73.2/html/lists.xsl | 0 .../docbook-xsl-1.73.2/html/maketoc.xsl | 0 .../docbook-xsl-1.73.2/html/manifest.xsl | 0 .../docbook-xsl-1.73.2/html/math.xsl | 0 .../docbook-xsl-1.73.2/html/oldchunker.xsl | 0 .../docbook-xsl-1.73.2/html/onechunk.xsl | 0 .../docbook-xsl-1.73.2/html/param.xml | 0 .../docbook-xsl-1.73.2/html/param.xsl | 0 .../docbook-xsl-1.73.2/html/pi.xml | 0 .../docbook-xsl-1.73.2/html/pi.xsl | 0 .../html/profile-chunk-code.xsl | 0 .../docbook-xsl-1.73.2/html/profile-chunk.xsl | 0 .../html/profile-docbook.xsl | 0 .../html/profile-onechunk.xsl | 0 .../docbook-xsl-1.73.2/html/qandaset.xsl | 0 .../docbook-xsl-1.73.2/html/refentry.xsl | 0 .../docbook-xsl-1.73.2/html/sections.xsl | 0 .../docbook-xsl-1.73.2/html/synop.xsl | 0 .../docbook-xsl-1.73.2/html/table.xsl | 0 .../docbook-xsl-1.73.2/html/task.xsl | 0 .../html/titlepage.templates.xml | 0 .../html/titlepage.templates.xsl | 0 .../docbook-xsl-1.73.2/html/titlepage.xsl | 0 .../docbook-xsl-1.73.2/html/toc.xsl | 0 .../docbook-xsl-1.73.2/html/verbatim.xsl | 0 .../docbook-xsl-1.73.2/html/xref.xsl | 0 .../htmlhelp/htmlhelp-common.xsl | 0 .../docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl | 0 .../htmlhelp/profile-htmlhelp-common.xsl | 0 .../htmlhelp/profile-htmlhelp.xsl | 0 .../docbook-xsl-1.73.2/images/annot-close.png | Bin .../docbook-xsl-1.73.2/images/annot-open.png | Bin .../docbook-xsl-1.73.2/images/blank.png | Bin .../docbook-xsl-1.73.2/images/callouts/1.gif | Bin .../docbook-xsl-1.73.2/images/callouts/1.png | Bin .../docbook-xsl-1.73.2/images/callouts/1.svg | 0 .../docbook-xsl-1.73.2/images/callouts/10.gif | Bin .../docbook-xsl-1.73.2/images/callouts/10.png | Bin .../docbook-xsl-1.73.2/images/callouts/10.svg | 0 .../docbook-xsl-1.73.2/images/callouts/11.gif | Bin .../docbook-xsl-1.73.2/images/callouts/11.png | Bin .../docbook-xsl-1.73.2/images/callouts/11.svg | 0 .../docbook-xsl-1.73.2/images/callouts/12.gif | Bin .../docbook-xsl-1.73.2/images/callouts/12.png | Bin .../docbook-xsl-1.73.2/images/callouts/12.svg | 0 .../docbook-xsl-1.73.2/images/callouts/13.gif | Bin .../docbook-xsl-1.73.2/images/callouts/13.png | Bin .../docbook-xsl-1.73.2/images/callouts/13.svg | 0 .../docbook-xsl-1.73.2/images/callouts/14.gif | Bin .../docbook-xsl-1.73.2/images/callouts/14.png | Bin .../docbook-xsl-1.73.2/images/callouts/14.svg | 0 .../docbook-xsl-1.73.2/images/callouts/15.gif | Bin .../docbook-xsl-1.73.2/images/callouts/15.png | Bin .../docbook-xsl-1.73.2/images/callouts/15.svg | 0 .../docbook-xsl-1.73.2/images/callouts/16.svg | 0 .../docbook-xsl-1.73.2/images/callouts/17.svg | 0 .../docbook-xsl-1.73.2/images/callouts/18.svg | 0 .../docbook-xsl-1.73.2/images/callouts/19.svg | 0 .../docbook-xsl-1.73.2/images/callouts/2.gif | Bin .../docbook-xsl-1.73.2/images/callouts/2.png | Bin .../docbook-xsl-1.73.2/images/callouts/2.svg | 0 .../docbook-xsl-1.73.2/images/callouts/20.svg | 0 .../docbook-xsl-1.73.2/images/callouts/21.svg | 0 .../docbook-xsl-1.73.2/images/callouts/22.svg | 0 .../docbook-xsl-1.73.2/images/callouts/23.svg | 0 .../docbook-xsl-1.73.2/images/callouts/24.svg | 0 .../docbook-xsl-1.73.2/images/callouts/25.svg | 0 .../docbook-xsl-1.73.2/images/callouts/26.svg | 0 .../docbook-xsl-1.73.2/images/callouts/27.svg | 0 .../docbook-xsl-1.73.2/images/callouts/28.svg | 0 .../docbook-xsl-1.73.2/images/callouts/29.svg | 0 .../docbook-xsl-1.73.2/images/callouts/3.gif | Bin .../docbook-xsl-1.73.2/images/callouts/3.png | Bin .../docbook-xsl-1.73.2/images/callouts/3.svg | 0 .../docbook-xsl-1.73.2/images/callouts/30.svg | 0 .../docbook-xsl-1.73.2/images/callouts/4.gif | Bin .../docbook-xsl-1.73.2/images/callouts/4.png | Bin .../docbook-xsl-1.73.2/images/callouts/4.svg | 0 .../docbook-xsl-1.73.2/images/callouts/5.gif | Bin .../docbook-xsl-1.73.2/images/callouts/5.png | Bin .../docbook-xsl-1.73.2/images/callouts/5.svg | 0 .../docbook-xsl-1.73.2/images/callouts/6.gif | Bin .../docbook-xsl-1.73.2/images/callouts/6.png | Bin .../docbook-xsl-1.73.2/images/callouts/6.svg | 0 .../docbook-xsl-1.73.2/images/callouts/7.gif | Bin .../docbook-xsl-1.73.2/images/callouts/7.png | Bin .../docbook-xsl-1.73.2/images/callouts/7.svg | 0 .../docbook-xsl-1.73.2/images/callouts/8.gif | Bin .../docbook-xsl-1.73.2/images/callouts/8.png | Bin .../docbook-xsl-1.73.2/images/callouts/8.svg | 0 .../docbook-xsl-1.73.2/images/callouts/9.gif | Bin .../docbook-xsl-1.73.2/images/callouts/9.png | Bin .../docbook-xsl-1.73.2/images/callouts/9.svg | 0 .../docbook-xsl-1.73.2/images/caution.gif | Bin .../docbook-xsl-1.73.2/images/caution.png | Bin .../docbook-xsl-1.73.2/images/caution.svg | 0 .../docbook-xsl-1.73.2/images/caution.tif | Bin .../docbook-xsl-1.73.2/images/draft.png | Bin .../docbook-xsl-1.73.2/images/home.gif | Bin .../docbook-xsl-1.73.2/images/home.png | Bin .../docbook-xsl-1.73.2/images/home.svg | 0 .../docbook-xsl-1.73.2/images/important.gif | Bin .../docbook-xsl-1.73.2/images/important.png | Bin .../docbook-xsl-1.73.2/images/important.svg | 0 .../docbook-xsl-1.73.2/images/important.tif | Bin .../docbook-xsl-1.73.2/images/next.gif | Bin .../docbook-xsl-1.73.2/images/next.png | Bin .../docbook-xsl-1.73.2/images/next.svg | 0 .../docbook-xsl-1.73.2/images/note.gif | Bin .../docbook-xsl-1.73.2/images/note.png | Bin .../docbook-xsl-1.73.2/images/note.svg | 0 .../docbook-xsl-1.73.2/images/note.tif | Bin .../docbook-xsl-1.73.2/images/prev.gif | Bin .../docbook-xsl-1.73.2/images/prev.png | Bin .../docbook-xsl-1.73.2/images/prev.svg | 0 .../docbook-xsl-1.73.2/images/tip.gif | Bin .../docbook-xsl-1.73.2/images/tip.png | Bin .../docbook-xsl-1.73.2/images/tip.svg | 0 .../docbook-xsl-1.73.2/images/tip.tif | Bin .../docbook-xsl-1.73.2/images/toc-blank.png | Bin .../docbook-xsl-1.73.2/images/toc-minus.png | Bin .../docbook-xsl-1.73.2/images/toc-plus.png | Bin .../docbook-xsl-1.73.2/images/up.gif | Bin .../docbook-xsl-1.73.2/images/up.png | Bin .../docbook-xsl-1.73.2/images/up.svg | 0 .../docbook-xsl-1.73.2/images/warning.gif | Bin .../docbook-xsl-1.73.2/images/warning.png | Bin .../docbook-xsl-1.73.2/images/warning.svg | 0 .../docbook-xsl-1.73.2/images/warning.tif | Bin .../docbook-xsl-1.73.2/install.sh | 0 .../docbook-xsl-1.73.2/javahelp/javahelp.xsl | 0 .../javahelp/profile-javahelp.xsl | 0 .../docbook-xsl-1.73.2/lib/lib.xsl | 0 .../manpages/ChangeLog.20020917 | 0 .../docbook-xsl-1.73.2/manpages/block.xsl | 0 .../manpages/charmap.groff.xsl | 0 .../docbook-xsl-1.73.2/manpages/docbook.xsl | 0 .../docbook-xsl-1.73.2/manpages/endnotes.xsl | 0 .../manpages/html-synop.xsl | 0 .../docbook-xsl-1.73.2/manpages/info.xsl | 0 .../docbook-xsl-1.73.2/manpages/inline.xsl | 0 .../docbook-xsl-1.73.2/manpages/lists.xsl | 0 .../docbook-xsl-1.73.2/manpages/other.xsl | 0 .../docbook-xsl-1.73.2/manpages/param.xml | 0 .../docbook-xsl-1.73.2/manpages/param.xsl | 0 .../manpages/profile-docbook.xsl | 0 .../docbook-xsl-1.73.2/manpages/refentry.xsl | 0 .../docbook-xsl-1.73.2/manpages/synop.xsl | 0 .../docbook-xsl-1.73.2/manpages/table.xsl | 0 .../docbook-xsl-1.73.2/manpages/utility.xsl | 0 .../params/abstract.notitle.enabled.xml | 0 .../params/abstract.properties.xml | 0 .../params/abstract.title.properties.xml | 0 .../docbook-xsl-1.73.2/params/active.toc.xml | 0 .../params/admon.graphics.extension.xml | 0 .../params/admon.graphics.path.xml | 0 .../params/admon.graphics.xml | 0 .../docbook-xsl-1.73.2/params/admon.style.xml | 0 .../params/admon.textlabel.xml | 0 .../params/admonition.properties.xml | 0 .../params/admonition.title.properties.xml | 0 .../docbook-xsl-1.73.2/params/alignment.xml | 0 .../params/annotate.toc.xml | 0 .../params/annotation.css.xml | 0 .../params/annotation.graphic.close.xml | 0 .../params/annotation.graphic.open.xml | 0 .../params/annotation.js.xml | 0 .../params/annotation.support.xml | 0 .../params/appendix.autolabel.xml | 0 .../params/arbortext.extensions.xml | 0 .../article.appendix.title.properties.xml | 0 .../params/author.othername.in.middle.xml | 0 .../params/autolayout-file.xml | 0 .../params/autotoc.label.in.hyperlink.xml | 0 .../params/autotoc.label.separator.xml | 0 .../params/axf.extensions.xml | 0 .../params/banner.before.navigation.xml | 0 .../docbook-xsl-1.73.2/params/base.dir.xml | 0 .../params/biblioentry.item.separator.xml | 0 .../params/biblioentry.properties.xml | 0 .../params/bibliography.collection.xml | 0 .../params/bibliography.numbered.xml | 0 .../params/bibliography.style.xml | 0 .../params/blockquote.properties.xml | 0 .../params/blurb.on.titlepage.enabled.xml | 0 .../params/body.attributes.xml | 0 .../params/body.bg.color.xml | 0 .../params/body.end.indent.xml | 0 .../params/body.font.family.xml | 0 .../params/body.font.master.xml | 0 .../params/body.font.size.xml | 0 .../params/body.margin.bottom.xml | 0 .../params/body.margin.top.xml | 0 .../params/body.start.indent.xml | 0 .../params/bridgehead.in.toc.xml | 0 .../params/bullet.image.xml | 0 .../params/callout.defaultcolumn.xml | 0 .../params/callout.graphics.extension.xml | 0 .../params/callout.graphics.number.limit.xml | 0 .../params/callout.graphics.path.xml | 0 .../params/callout.graphics.xml | 0 .../params/callout.icon.size.xml | 0 .../params/callout.list.table.xml | 0 .../params/callout.unicode.font.xml | 0 .../params/callout.unicode.number.limit.xml | 0 .../callout.unicode.start.character.xml | 0 .../params/callout.unicode.xml | 0 .../params/callouts.extension.xml | 0 .../params/chapter.autolabel.xml | 0 .../params/chunk.append.xml | 0 .../params/chunk.first.sections.xml | 0 .../params/chunk.quietly.xml | 0 .../params/chunk.section.depth.xml | 0 .../params/chunk.sections.xml | 0 .../params/chunk.separate.lots.xml | 0 .../docbook-xsl-1.73.2/params/chunk.toc.xml | 0 .../params/chunk.tocs.and.lots.has.title.xml | 0 .../params/chunk.tocs.and.lots.xml | 0 .../chunker.output.cdata-section-elements.xml | 0 .../params/chunker.output.doctype-public.xml | 0 .../params/chunker.output.doctype-system.xml | 0 .../params/chunker.output.encoding.xml | 0 .../params/chunker.output.indent.xml | 0 .../params/chunker.output.media-type.xml | 0 .../params/chunker.output.method.xml | 0 .../chunker.output.omit-xml-declaration.xml | 0 .../params/chunker.output.standalone.xml | 0 .../params/citerefentry.link.xml | 0 .../params/collect.xref.targets.xml | 0 .../params/column.count.back.xml | 0 .../params/column.count.body.xml | 0 .../params/column.count.front.xml | 0 .../params/column.count.index.xml | 0 .../params/column.count.lot.xml | 0 .../params/column.count.titlepage.xml | 0 .../params/column.gap.back.xml | 0 .../params/column.gap.body.xml | 0 .../params/column.gap.front.xml | 0 .../params/column.gap.index.xml | 0 .../params/column.gap.lot.xml | 0 .../params/column.gap.titlepage.xml | 0 .../params/compact.list.item.spacing.xml | 0 .../component.label.includes.part.label.xml | 0 .../params/component.title.properties.xml | 0 .../params/component.titlepage.properties.xml | 0 .../params/contrib.inline.enabled.xml | 0 .../params/crop.mark.bleed.xml | 0 .../params/crop.mark.offset.xml | 0 .../params/crop.mark.width.xml | 0 .../docbook-xsl-1.73.2/params/crop.marks.xml | 0 .../params/css.decoration.xml | 0 .../params/css.stylesheet.dir.xml | 0 .../params/css.stylesheet.xml | 0 .../params/current.docid.xml | 0 .../params/currentpage.marker.xml | 0 .../params/default.float.class.xml | 0 .../params/default.image.width.xml | 0 .../params/default.table.frame.xml | 0 .../params/default.table.width.xml | 0 .../params/default.units.xml | 0 .../params/dingbat.font.family.xml | 0 .../params/double.sided.xml | 0 .../docbook-xsl-1.73.2/params/draft.mode.xml | 0 .../params/draft.watermark.image.xml | 0 .../docbook-xsl-1.73.2/params/dry-run.xml | 0 .../docbook-xsl-1.73.2/params/dynamic.toc.xml | 0 .../params/ebnf.assignment.xml | 0 .../params/ebnf.statement.terminator.xml | 0 .../params/ebnf.table.bgcolor.xml | 0 .../params/ebnf.table.border.xml | 0 .../params/eclipse.autolabel.xml | 0 .../params/eclipse.plugin.id.xml | 0 .../params/eclipse.plugin.name.xml | 0 .../params/eclipse.plugin.provider.xml | 0 .../params/editedby.enabled.xml | 0 .../params/email.delimiters.enabled.xml | 0 .../params/emphasis.propagates.style.xml | 0 .../params/entry.propagates.style.xml | 0 .../params/equation.properties.xml | 0 .../params/example.properties.xml | 0 .../params/feedback.href.xml | 0 .../params/feedback.link.text.xml | 0 .../params/feedback.with.ids.xml | 0 .../params/figure.properties.xml | 0 .../params/filename-prefix.xml | 0 .../params/firstterm.only.link.xml | 0 .../params/foil.properties.xml | 0 .../params/foil.subtitle.properties.xml | 0 .../params/foil.title.master.xml | 0 .../params/foil.title.size.xml | 0 .../params/foilgroup.properties.xml | 0 .../params/foilgroup.toc.xml | 0 .../params/footer.column.widths.xml | 0 .../params/footer.content.properties.xml | 0 .../docbook-xsl-1.73.2/params/footer.hr.xml | 0 .../docbook-xsl-1.73.2/params/footer.rule.xml | 0 .../params/footer.table.height.xml | 0 .../params/footer.table.properties.xml | 0 .../params/footers.on.blank.pages.xml | 0 .../params/footnote.font.size.xml | 0 .../params/footnote.mark.properties.xml | 0 .../params/footnote.number.format.xml | 0 .../params/footnote.number.symbols.xml | 0 .../params/footnote.properties.xml | 0 .../params/footnote.sep.leader.properties.xml | 0 .../params/fop.extensions.xml | 0 .../params/fop1.extensions.xml | 0 .../params/formal.object.properties.xml | 0 .../params/formal.procedures.xml | 0 .../params/formal.title.placement.xml | 0 .../params/formal.title.properties.xml | 0 .../params/funcsynopsis.decoration.xml | 0 .../params/funcsynopsis.style.xml | 0 .../params/funcsynopsis.tabular.threshold.xml | 0 .../params/function.parens.xml | 0 .../params/generate.id.attributes.xml | 0 .../params/generate.index.xml | 0 .../params/generate.legalnotice.link.xml | 0 .../params/generate.manifest.xml | 0 .../params/generate.meta.abstract.xml | 0 .../params/generate.revhistory.link.xml | 0 .../params/generate.section.toc.level.xml | 0 .../params/generate.toc.xml | 0 .../params/glossary.as.blocks.xml | 0 .../params/glossary.collection.xml | 0 .../params/glossary.sort.xml | 0 .../params/glossentry.show.acronym.xml | 0 .../params/glosslist.as.blocks.xml | 0 .../params/glossterm.auto.link.xml | 0 .../params/glossterm.separation.xml | 0 .../params/glossterm.width.xml | 0 .../params/graphic.default.extension.xml | 0 .../graphical.admonition.properties.xml | 0 .../params/graphics.dir.xml | 0 .../params/graphicsize.extension.xml | 0 .../params/graphicsize.use.img.src.path.xml | 0 .../params/header.column.widths.xml | 0 .../params/header.content.properties.xml | 0 .../docbook-xsl-1.73.2/params/header.hr.xml | 0 .../docbook-xsl-1.73.2/params/header.rule.xml | 0 .../params/header.table.height.xml | 0 .../params/header.table.properties.xml | 0 .../params/headers.on.blank.pages.xml | 0 .../params/hidetoc.image.xml | 0 .../params/highlight.default.language.xml | 0 .../params/highlight.source.xml | 0 .../docbook-xsl-1.73.2/params/home.image.xml | 0 .../docbook-xsl-1.73.2/params/html.append.xml | 0 .../docbook-xsl-1.73.2/params/html.base.xml | 0 .../params/html.cellpadding.xml | 0 .../params/html.cellspacing.xml | 0 .../params/html.cleanup.xml | 0 .../docbook-xsl-1.73.2/params/html.ext.xml | 0 .../params/html.extra.head.links.xml | 0 .../html.head.legalnotice.link.multiple.xml | 0 .../html.head.legalnotice.link.types.xml | 0 .../params/html.longdesc.link.xml | 0 .../params/html.longdesc.xml | 0 .../params/html.stylesheet.type.xml | 0 .../params/html.stylesheet.xml | 0 .../params/htmlhelp.alias.file.xml | 0 .../params/htmlhelp.autolabel.xml | 0 .../params/htmlhelp.button.back.xml | 0 .../params/htmlhelp.button.forward.xml | 0 .../params/htmlhelp.button.hideshow.xml | 0 .../params/htmlhelp.button.home.url.xml | 0 .../params/htmlhelp.button.home.xml | 0 .../params/htmlhelp.button.jump1.title.xml | 0 .../params/htmlhelp.button.jump1.url.xml | 0 .../params/htmlhelp.button.jump1.xml | 0 .../params/htmlhelp.button.jump2.title.xml | 0 .../params/htmlhelp.button.jump2.url.xml | 0 .../params/htmlhelp.button.jump2.xml | 0 .../params/htmlhelp.button.locate.xml | 0 .../params/htmlhelp.button.next.xml | 0 .../params/htmlhelp.button.options.xml | 0 .../params/htmlhelp.button.prev.xml | 0 .../params/htmlhelp.button.print.xml | 0 .../params/htmlhelp.button.refresh.xml | 0 .../params/htmlhelp.button.stop.xml | 0 .../params/htmlhelp.button.zoom.xml | 0 .../params/htmlhelp.chm.xml | 0 .../params/htmlhelp.default.topic.xml | 0 .../params/htmlhelp.display.progress.xml | 0 .../params/htmlhelp.encoding.xml | 0 .../htmlhelp.enhanced.decompilation.xml | 0 .../params/htmlhelp.enumerate.images.xml | 0 .../params/htmlhelp.force.map.and.alias.xml | 0 .../params/htmlhelp.hhc.binary.xml | 0 .../htmlhelp.hhc.folders.instead.books.xml | 0 .../params/htmlhelp.hhc.section.depth.xml | 0 .../params/htmlhelp.hhc.show.root.xml | 0 .../params/htmlhelp.hhc.width.xml | 0 .../params/htmlhelp.hhc.xml | 0 .../params/htmlhelp.hhk.xml | 0 .../params/htmlhelp.hhp.tail.xml | 0 .../params/htmlhelp.hhp.window.xml | 0 .../params/htmlhelp.hhp.windows.xml | 0 .../params/htmlhelp.hhp.xml | 0 .../params/htmlhelp.map.file.xml | 0 .../params/htmlhelp.only.xml | 0 .../htmlhelp.remember.window.position.xml | 0 .../params/htmlhelp.show.advanced.search.xml | 0 .../params/htmlhelp.show.favorities.xml | 0 .../params/htmlhelp.show.menu.xml | 0 .../params/htmlhelp.show.toolbar.text.xml | 0 .../params/htmlhelp.title.xml | 0 .../params/htmlhelp.use.hhk.xml | 0 .../params/htmlhelp.window.geometry.xml | 0 .../params/hyphenate.verbatim.characters.xml | 0 .../params/hyphenate.verbatim.xml | 0 .../docbook-xsl-1.73.2/params/hyphenate.xml | 0 .../docbook-xsl-1.73.2/params/id.warnings.xml | 0 .../params/ignore.image.scaling.xml | 0 .../params/img.src.path.xml | 0 .../params/index.div.title.properties.xml | 0 .../params/index.entry.properties.xml | 0 .../params/index.method.xml | 0 .../params/index.number.separator.xml | 0 .../params/index.on.role.xml | 0 .../params/index.on.type.xml | 0 .../params/index.page.number.properties.xml | 0 .../params/index.prefer.titleabbrev.xml | 0 .../index.preferred.page.properties.xml | 0 .../params/index.range.separator.xml | 0 .../params/index.term.separator.xml | 0 .../params/informal.object.properties.xml | 0 .../params/informalequation.properties.xml | 0 .../params/informalexample.properties.xml | 0 .../params/informalfigure.properties.xml | 0 .../params/informaltable.properties.xml | 0 .../params/inherit.keywords.xml | 0 .../params/insert.link.page.number.xml | 0 .../params/insert.olink.page.number.xml | 0 .../params/insert.olink.pdf.frag.xml | 0 .../params/insert.xref.page.number.xml | 0 .../params/itemizedlist.label.properties.xml | 0 .../params/itemizedlist.label.width.xml | 0 .../params/itemizedlist.properties.xml | 0 .../params/javahelp.encoding.xml | 0 .../params/keep.relative.image.uris.xml | 0 .../params/keyboard.nav.xml | 0 .../params/l10n.gentext.default.language.xml | 0 .../params/l10n.gentext.language.xml | 0 .../params/l10n.gentext.use.xref.language.xml | 0 .../params/l10n.lang.value.rfc.compliant.xml | 0 .../params/label.from.part.xml | 0 .../docbook-xsl-1.73.2/params/line-height.xml | 0 .../params/linenumbering.everyNth.xml | 0 .../params/linenumbering.extension.xml | 0 .../params/linenumbering.separator.xml | 0 .../params/linenumbering.width.xml | 0 .../params/link.mailto.url.xml | 0 .../params/list.block.properties.xml | 0 .../params/list.block.spacing.xml | 0 .../params/list.item.spacing.xml | 0 .../params/make.graphic.viewport.xml | 0 .../params/make.index.markup.xml | 0 .../params/make.single.year.ranges.xml | 0 .../params/make.valid.html.xml | 0 .../params/make.year.ranges.xml | 0 .../params/man.authors.section.enabled.xml | 0 .../params/man.break.after.slash.xml | 0 .../params/man.charmap.enabled.xml | 0 .../params/man.charmap.subset.profile.xml | 0 .../params/man.charmap.uri.xml | 0 .../params/man.charmap.use.subset.xml | 0 .../params/man.copyright.section.enabled.xml | 0 .../params/man.endnotes.are.numbered.xml | 0 .../params/man.endnotes.list.enabled.xml | 0 .../params/man.endnotes.list.heading.xml | 0 .../params/man.font.funcprototype.xml | 0 .../params/man.font.funcsynopsisinfo.xml | 0 .../params/man.font.table.headings.xml | 0 .../params/man.font.table.title.xml | 0 .../params/man.hyphenate.computer.inlines.xml | 0 .../params/man.hyphenate.filenames.xml | 0 .../params/man.hyphenate.urls.xml | 0 .../params/man.hyphenate.xml | 0 .../params/man.indent.blurbs.xml | 0 .../params/man.indent.lists.xml | 0 .../params/man.indent.refsect.xml | 0 .../params/man.indent.verbatims.xml | 0 .../params/man.indent.width.xml | 0 .../docbook-xsl-1.73.2/params/man.justify.xml | 0 .../params/man.links.are.underlined.xml | 0 .../params/man.output.base.dir.xml | 0 .../params/man.output.encoding.xml | 0 .../params/man.output.in.separate.dir.xml | 0 .../man.output.lang.in.name.enabled.xml | 0 .../params/man.output.manifest.enabled.xml | 0 .../params/man.output.manifest.filename.xml | 0 .../params/man.output.quietly.xml | 0 .../params/man.output.subdirs.enabled.xml | 0 .../params/man.segtitle.suppress.xml | 0 .../man.string.subst.map.local.post.xml | 0 .../params/man.string.subst.map.local.pre.xml | 0 .../params/man.string.subst.map.xml | 0 .../params/man.subheading.divider.enabled.xml | 0 .../params/man.subheading.divider.xml | 0 .../params/man.table.footnotes.divider.xml | 0 .../params/man.th.extra1.suppress.xml | 0 .../params/man.th.extra2.max.length.xml | 0 .../params/man.th.extra2.suppress.xml | 0 .../params/man.th.extra3.max.length.xml | 0 .../params/man.th.extra3.suppress.xml | 0 .../params/man.th.title.max.length.xml | 0 .../params/manifest.in.base.dir.xml | 0 .../docbook-xsl-1.73.2/params/manifest.xml | 0 .../docbook-xsl-1.73.2/params/manual.toc.xml | 0 .../params/margin.note.float.type.xml | 0 .../params/margin.note.properties.xml | 0 .../params/margin.note.title.properties.xml | 0 .../params/margin.note.width.xml | 0 .../params/marker.section.level.xml | 0 .../params/menuchoice.menu.separator.xml | 0 .../params/menuchoice.separator.xml | 0 .../docbook-xsl-1.73.2/params/minus.image.xml | 0 .../params/monospace.font.family.xml | 0 .../params/monospace.properties.xml | 0 .../params/monospace.verbatim.properties.xml | 0 .../params/multiframe.bottom.bgcolor.xml | 0 .../params/multiframe.navigation.height.xml | 0 .../params/multiframe.top.bgcolor.xml | 0 .../docbook-xsl-1.73.2/params/multiframe.xml | 0 .../params/nav.separator.xml | 0 .../params/nav.table.summary.xml | 0 .../docbook-xsl-1.73.2/params/navbgcolor.xml | 0 .../params/navbodywidth.xml | 0 .../params/navig.graphics.extension.xml | 0 .../params/navig.graphics.path.xml | 0 .../params/navig.graphics.xml | 0 .../params/navig.showtitles.xml | 0 .../docbook-xsl-1.73.2/params/navtocwidth.xml | 0 .../docbook-xsl-1.73.2/params/next.image.xml | 0 .../params/no.home.image.xml | 0 .../params/no.next.image.xml | 0 .../params/no.prev.image.xml | 0 .../params/no.toc.image.xml | 0 .../docbook-xsl-1.73.2/params/no.up.image.xml | 0 .../params/nominal.image.depth.xml | 0 .../params/nominal.image.width.xml | 0 .../params/nominal.table.width.xml | 0 .../nongraphical.admonition.properties.xml | 0 .../params/normal.para.spacing.xml | 0 .../params/olink.base.uri.xml | 0 .../docbook-xsl-1.73.2/params/olink.debug.xml | 0 .../params/olink.doctitle.xml | 0 .../params/olink.fragid.xml | 0 .../params/olink.lang.fallback.sequence.xml | 0 .../params/olink.outline.ext.xml | 0 .../params/olink.properties.xml | 0 .../docbook-xsl-1.73.2/params/olink.pubid.xml | 0 .../params/olink.resolver.xml | 0 .../docbook-xsl-1.73.2/params/olink.sysid.xml | 0 .../params/orderedlist.label.properties.xml | 0 .../params/orderedlist.label.width.xml | 0 .../params/orderedlist.properties.xml | 0 .../othercredit.like.author.enabled.xml | 0 .../docbook-xsl-1.73.2/params/output-root.xml | 0 .../params/output.indent.xml | 0 .../docbook-xsl-1.73.2/params/overlay.js.xml | 0 .../params/overlay.logo.xml | 0 .../docbook-xsl-1.73.2/params/overlay.xml | 0 .../params/page.height.portrait.xml | 0 .../docbook-xsl-1.73.2/params/page.height.xml | 0 .../params/page.margin.bottom.xml | 0 .../params/page.margin.inner.xml | 0 .../params/page.margin.outer.xml | 0 .../params/page.margin.top.xml | 0 .../params/page.orientation.xml | 0 .../params/page.width.portrait.xml | 0 .../docbook-xsl-1.73.2/params/page.width.xml | 0 .../params/pages.template.xml | 0 .../docbook-xsl-1.73.2/params/paper.type.xml | 0 .../params/para.propagates.style.xml | 0 .../params/part.autolabel.xml | 0 .../params/passivetex.extensions.xml | 0 .../params/pgwide.properties.xml | 0 .../params/phrase.propagates.style.xml | 0 .../params/pixels.per.inch.xml | 0 .../docbook-xsl-1.73.2/params/plus.image.xml | 0 .../params/points.per.em.xml | 0 .../params/preface.autolabel.xml | 0 .../params/prefer.internal.olink.xml | 0 .../params/preferred.mediaobject.role.xml | 0 .../docbook-xsl-1.73.2/params/prev.image.xml | 0 .../params/procedure.properties.xml | 0 .../params/process.empty.source.toc.xml | 0 .../params/process.source.toc.xml | 0 .../params/profile.arch.xml | 0 .../params/profile.attribute.xml | 0 .../params/profile.audience.xml | 0 .../params/profile.condition.xml | 0 .../params/profile.conformance.xml | 0 .../params/profile.lang.xml | 0 .../docbook-xsl-1.73.2/params/profile.os.xml | 0 .../params/profile.revision.xml | 0 .../params/profile.revisionflag.xml | 0 .../params/profile.role.xml | 0 .../params/profile.security.xml | 0 .../params/profile.separator.xml | 0 .../params/profile.status.xml | 0 .../params/profile.userlevel.xml | 0 .../params/profile.value.xml | 0 .../params/profile.vendor.xml | 0 .../params/profile.wordsize.xml | 0 .../params/punct.honorific.xml | 0 .../params/qanda.defaultlabel.xml | 0 .../params/qanda.in.toc.xml | 0 .../params/qanda.inherit.numeration.xml | 0 .../params/qanda.nested.in.toc.xml | 0 .../params/qanda.title.level1.properties.xml | 0 .../params/qanda.title.level2.properties.xml | 0 .../params/qanda.title.level3.properties.xml | 0 .../params/qanda.title.level4.properties.xml | 0 .../params/qanda.title.level5.properties.xml | 0 .../params/qanda.title.level6.properties.xml | 0 .../params/qanda.title.properties.xml | 0 .../params/qandadiv.autolabel.xml | 0 .../docbook-xsl-1.73.2/params/rebuild-all.xml | 0 .../params/refclass.suppress.xml | 0 .../params/refentry.date.profile.enabled.xml | 0 .../params/refentry.date.profile.xml | 0 .../params/refentry.generate.name.xml | 0 .../params/refentry.generate.title.xml | 0 .../refentry.manual.fallback.profile.xml | 0 .../refentry.manual.profile.enabled.xml | 0 .../params/refentry.manual.profile.xml | 0 .../params/refentry.meta.get.quietly.xml | 0 .../params/refentry.pagebreak.xml | 0 .../params/refentry.separator.xml | 0 .../refentry.source.fallback.profile.xml | 0 .../refentry.source.name.profile.enabled.xml | 0 .../params/refentry.source.name.profile.xml | 0 .../params/refentry.source.name.suppress.xml | 0 .../params/refentry.title.properties.xml | 0 .../refentry.version.profile.enabled.xml | 0 .../params/refentry.version.profile.xml | 0 .../params/refentry.version.suppress.xml | 0 .../params/refentry.xref.manvolnum.xml | 0 .../params/reference.autolabel.xml | 0 .../params/region.after.extent.xml | 0 .../params/region.before.extent.xml | 0 .../revhistory.table.cell.properties.xml | 0 .../params/revhistory.table.properties.xml | 0 .../params/revhistory.title.properties.xml | 0 .../params/root.filename.xml | 0 .../params/root.properties.xml | 0 .../docbook-xsl-1.73.2/params/rootid.xml | 0 .../runinhead.default.title.end.punct.xml | 0 .../params/runinhead.title.end.punct.xml | 0 .../params/running.foot.properties.xml | 0 .../params/sans.font.family.xml | 0 .../params/saxon.callouts.xml | 0 .../params/saxon.character.representation.xml | 0 .../params/saxon.linenumbering.xml | 0 .../params/saxon.tablecolumns.xml | 0 .../docbook-xsl-1.73.2/params/script.dir.xml | 0 .../params/section.autolabel.max.depth.xml | 0 .../params/section.autolabel.xml | 0 .../params/section.container.element.xml | 0 ...section.label.includes.component.label.xml | 0 .../params/section.level1.properties.xml | 0 .../params/section.level2.properties.xml | 0 .../params/section.level3.properties.xml | 0 .../params/section.level4.properties.xml | 0 .../params/section.level5.properties.xml | 0 .../params/section.level6.properties.xml | 0 .../params/section.properties.xml | 0 .../section.title.level1.properties.xml | 0 .../section.title.level2.properties.xml | 0 .../section.title.level3.properties.xml | 0 .../section.title.level4.properties.xml | 0 .../section.title.level5.properties.xml | 0 .../section.title.level6.properties.xml | 0 .../params/section.title.properties.xml | 0 .../params/segmentedlist.as.table.xml | 0 .../params/sequential.links.xml | 0 .../params/shade.verbatim.style.xml | 0 .../params/shade.verbatim.xml | 0 .../params/show.comments.xml | 0 .../params/show.foil.number.xml | 0 .../params/show.revisionflag.xml | 0 .../params/showtoc.image.xml | 0 .../params/side.float.properties.xml | 0 .../params/sidebar.float.type.xml | 0 .../params/sidebar.float.width.xml | 0 .../params/sidebar.properties.xml | 0 .../params/sidebar.title.properties.xml | 0 .../params/simplesect.in.toc.xml | 0 .../params/slide.font.family.xml | 0 .../params/slide.title.font.family.xml | 0 .../docbook-xsl-1.73.2/params/slides.js.xml | 0 .../params/slides.properties.xml | 0 .../params/spacing.paras.xml | 0 .../params/speakernote.properties.xml | 0 .../params/subscript.properties.xml | 0 .../params/superscript.properties.xml | 0 .../params/suppress.footer.navigation.xml | 0 .../params/suppress.header.navigation.xml | 0 .../params/suppress.homepage.title.xml | 0 .../params/suppress.navigation.xml | 0 .../params/symbol.font.family.xml | 0 .../params/table.borders.with.css.xml | 0 .../params/table.cell.border.color.xml | 0 .../params/table.cell.border.style.xml | 0 .../params/table.cell.border.thickness.xml | 0 .../params/table.cell.padding.xml | 0 .../params/table.entry.padding.xml | 0 .../params/table.footnote.number.format.xml | 0 .../params/table.footnote.number.symbols.xml | 0 .../params/table.footnote.properties.xml | 0 .../params/table.frame.border.color.xml | 0 .../params/table.frame.border.style.xml | 0 .../params/table.frame.border.thickness.xml | 0 .../params/table.properties.xml | 0 .../params/table.spacer.image.xml | 0 .../params/table.table.properties.xml | 0 .../params/tablecolumns.extension.xml | 0 .../params/target.database.document.xml | 0 .../params/targets.filename.xml | 0 .../docbook-xsl-1.73.2/params/template.xml | 0 .../params/tex.math.delims.xml | 0 .../params/tex.math.file.xml | 0 .../params/tex.math.in.alt.xml | 0 .../docbook-xsl-1.73.2/params/text.home.xml | 0 .../docbook-xsl-1.73.2/params/text.next.xml | 0 .../docbook-xsl-1.73.2/params/text.prev.xml | 0 .../docbook-xsl-1.73.2/params/text.toc.xml | 0 .../docbook-xsl-1.73.2/params/text.up.xml | 0 .../docbook-xsl-1.73.2/params/textbgcolor.xml | 0 .../params/textdata.default.encoding.xml | 0 .../params/textinsert.extension.xml | 0 .../params/title.font.family.xml | 0 .../params/title.margin.left.xml | 0 .../params/titlefoil.html.xml | 0 .../params/toc.bg.color.xml | 0 .../params/toc.blank.graphic.xml | 0 .../params/toc.blank.image.xml | 0 .../params/toc.blank.text.xml | 0 .../params/toc.hide.show.xml | 0 .../docbook-xsl-1.73.2/params/toc.html.xml | 0 .../docbook-xsl-1.73.2/params/toc.image.xml | 0 .../params/toc.indent.width.xml | 0 .../params/toc.line.properties.xml | 0 .../params/toc.list.type.xml | 0 .../params/toc.margin.properties.xml | 0 .../params/toc.max.depth.xml | 0 .../params/toc.pointer.graphic.xml | 0 .../params/toc.pointer.image.xml | 0 .../params/toc.pointer.text.xml | 0 .../params/toc.row.height.xml | 0 .../params/toc.section.depth.xml | 0 .../params/toc.spacer.graphic.xml | 0 .../params/toc.spacer.image.xml | 0 .../params/toc.spacer.text.xml | 0 .../docbook-xsl-1.73.2/params/toc.width.xml | 0 .../docbook-xsl-1.73.2/params/ua.js.xml | 0 .../params/ulink.footnotes.xml | 0 .../params/ulink.hyphenate.chars.xml | 0 .../params/ulink.hyphenate.xml | 0 .../docbook-xsl-1.73.2/params/ulink.show.xml | 0 .../params/ulink.target.xml | 0 .../docbook-xsl-1.73.2/params/up.image.xml | 0 .../params/use.embed.for.svg.xml | 0 .../params/use.extensions.xml | 0 .../params/use.id.as.filename.xml | 0 .../params/use.id.function.xml | 0 .../params/use.local.olink.style.xml | 0 .../params/use.role.as.xrefstyle.xml | 0 .../params/use.role.for.mediaobject.xml | 0 .../docbook-xsl-1.73.2/params/use.svg.xml | 0 .../params/variablelist.as.blocks.xml | 0 .../params/variablelist.as.table.xml | 0 .../params/variablelist.max.termlength.xml | 0 .../params/variablelist.term.break.after.xml | 0 .../params/variablelist.term.separator.xml | 0 .../params/verbatim.properties.xml | 0 .../params/wordml.template.xml | 0 .../params/xbCollapsibleLists.js.xml | 0 .../docbook-xsl-1.73.2/params/xbDOM.js.xml | 0 .../params/xbLibrary.js.xml | 0 .../docbook-xsl-1.73.2/params/xbStyle.js.xml | 0 .../params/xep.extensions.xml | 0 .../params/xep.index.item.properties.xml | 0 .../params/xref.label-page.separator.xml | 0 .../params/xref.label-title.separator.xml | 0 .../params/xref.properties.xml | 0 .../params/xref.title-page.separator.xml | 0 .../params/xref.with.number.and.title.xml | 0 .../profiling/profile-mode.xsl | 0 .../docbook-xsl-1.73.2/profiling/profile.xsl | 0 .../profiling/strip-attributes.xsl | 0 .../profiling/xsl2profile.xsl | 0 .../roundtrip/blocks-spec.xml | 0 .../roundtrip/blocks2dbk.dtd | 0 .../roundtrip/blocks2dbk.xsl | 0 .../docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl | 0 .../roundtrip/dbk2pages.xsl | 0 .../roundtrip/dbk2wordml.xsl | 0 .../docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl | 0 .../roundtrip/docbook-pages.xsl | 0 .../docbook-xsl-1.73.2/roundtrip/docbook.xsl | 0 .../roundtrip/normalise2sections.xsl | 0 .../roundtrip/pages-normalise.xsl | 0 .../roundtrip/pages2normalise.xsl | 0 .../docbook-xsl-1.73.2/roundtrip/param.xml | 0 .../docbook-xsl-1.73.2/roundtrip/param.xsl | 0 .../roundtrip/sections-spec.xml | 0 .../roundtrip/sections2blocks.xsl | 0 .../roundtrip/specifications.xml | 0 .../roundtrip/supported.xml | 0 .../roundtrip/template-pages.xml | 0 .../docbook-xsl-1.73.2/roundtrip/template.dot | Bin .../docbook-xsl-1.73.2/roundtrip/template.xml | 0 .../roundtrip/wordml-blocks.xsl | 0 .../roundtrip/wordml-final.xsl | 0 .../roundtrip/wordml-normalise.xsl | 0 .../roundtrip/wordml-sections.xsl | 0 .../docbook-xsl-1.73.2/roundtrip/wordml.xsl | 0 .../roundtrip/wordml2normalise.xsl | 0 .../slides/browser/CTOCWidget.js | 0 .../slides/browser/overlay.js | 0 .../slides/browser/slides-default.css | 0 .../slides/browser/slides-frames.css | 0 .../slides/browser/slides-plain.css | 0 .../slides/browser/slides-table.css | 0 .../slides/browser/slides-w3c.css | 0 .../slides/browser/slides.css | 0 .../slides/browser/slides.js | 0 .../docbook-xsl-1.73.2/slides/browser/ua.js | 0 .../slides/browser/xbCollapsibleLists.js | 0 .../slides/browser/xbDOM.js | 0 .../slides/browser/xbDebug.js | 0 .../slides/browser/xbLibrary.js | 0 .../slides/browser/xbStyle-css.js | 0 .../slides/browser/xbStyle-nn4.js | 0 .../slides/browser/xbStyle-not-supported.js | 0 .../slides/browser/xbStyle.js | 0 .../docbook-xsl-1.73.2/slides/fo/param.xml | 0 .../docbook-xsl-1.73.2/slides/fo/param.xsl | 0 .../slides/fo/plain-titlepage.xml | 0 .../slides/fo/plain-titlepage.xsl | 0 .../docbook-xsl-1.73.2/slides/fo/plain.xsl | 0 .../slides/graphics/active/arr-next.png | Bin .../slides/graphics/active/arr-prev.png | Bin .../slides/graphics/active/but-fforward.png | Bin .../slides/graphics/active/but-info.png | Bin .../slides/graphics/active/but-next.png | Bin .../slides/graphics/active/but-prev.png | Bin .../slides/graphics/active/but-rewind.png | Bin .../slides/graphics/active/nav-home.png | Bin .../slides/graphics/active/nav-next.png | Bin .../slides/graphics/active/nav-prev.png | Bin .../slides/graphics/active/nav-toc.png | Bin .../slides/graphics/active/nav-up.png | Bin .../slides/graphics/active/w3c-next.png | Bin .../slides/graphics/active/w3c-prev.png | Bin .../slides/graphics/active/w3c-toc.png | Bin .../slides/graphics/arrow.gif | Bin .../slides/graphics/blank.gif | Bin .../slides/graphics/blank.png | Bin .../slides/graphics/hidetoc.gif | Bin .../slides/graphics/inactive/but-fforward.png | Bin .../slides/graphics/inactive/but-info.png | Bin .../slides/graphics/inactive/but-next.png | Bin .../slides/graphics/inactive/but-prev.png | Bin .../slides/graphics/inactive/but-rewind.png | Bin .../slides/graphics/inactive/nav-home.png | Bin .../slides/graphics/inactive/nav-next.png | Bin .../slides/graphics/inactive/nav-prev.png | Bin .../slides/graphics/inactive/nav-toc.png | Bin .../slides/graphics/inactive/nav-up.png | Bin .../slides/graphics/inactive/w3c-next.png | Bin .../slides/graphics/inactive/w3c-prev.png | Bin .../slides/graphics/inactive/w3c-toc.png | Bin .../slides/graphics/plus.gif | Bin .../slides/graphics/pointer.png | Bin .../slides/graphics/showtoc.gif | Bin .../slides/graphics/toc/bullet.png | Bin .../slides/graphics/toc/closed.png | Bin .../slides/graphics/toc/open.png | Bin .../docbook-xsl-1.73.2/slides/html/css.xsl | 0 .../slides/html/default.xsl | 0 .../docbook-xsl-1.73.2/slides/html/flat.xsl | 0 .../docbook-xsl-1.73.2/slides/html/frames.xsl | 0 .../slides/html/graphics.xsl | 0 .../slides/html/jscript.xsl | 0 .../docbook-xsl-1.73.2/slides/html/param.xml | 0 .../docbook-xsl-1.73.2/slides/html/param.xsl | 0 .../docbook-xsl-1.73.2/slides/html/plain.xsl | 0 .../slides/html/slides-common.xsl | 0 .../docbook-xsl-1.73.2/slides/html/tables.xsl | 0 .../slides/html/vslides.xsl | 0 .../docbook-xsl-1.73.2/slides/html/w3c.xsl | 0 .../slides/htmlhelp/htmlhelp.xsl | 0 .../slides/keynote/default.xsl | 0 .../slides/keynote/xsltsl/cmp.xsl | 0 .../slides/keynote/xsltsl/date-time.xsl | 0 .../slides/keynote/xsltsl/example.xsl | 0 .../slides/keynote/xsltsl/markup.xsl | 0 .../slides/keynote/xsltsl/math.xsl | 0 .../slides/keynote/xsltsl/node.xsl | 0 .../slides/keynote/xsltsl/stdlib.xsl | 0 .../slides/keynote/xsltsl/string.xsl | 0 .../slides/keynote/xsltsl/svg.xsl | 0 .../slides/keynote/xsltsl/uri.xsl | 0 .../docbook-xsl-1.73.2/slides/svg/default.xsl | 0 .../docbook-xsl-1.73.2/slides/xhtml/css.xsl | 0 .../slides/xhtml/default.xsl | 0 .../docbook-xsl-1.73.2/slides/xhtml/flat.xsl | 0 .../slides/xhtml/frames.xsl | 0 .../slides/xhtml/graphics.xsl | 0 .../slides/xhtml/jscript.xsl | 0 .../docbook-xsl-1.73.2/slides/xhtml/param.xsl | 0 .../docbook-xsl-1.73.2/slides/xhtml/plain.xsl | 0 .../slides/xhtml/slides-common.xsl | 0 .../slides/xhtml/tables.xsl | 0 .../slides/xhtml/vslides.xsl | 0 .../docbook-xsl-1.73.2/slides/xhtml/w3c.xsl | 0 .../docbook-xsl-1.73.2/template/titlepage.xml | 0 .../docbook-xsl-1.73.2/template/titlepage.xsl | 0 .../tools/bin/docbook-xsl-update | 0 .../tools/make/Makefile.DocBook | 0 .../tools/make/Makefile.combine | 0 .../tools/make/Makefile.docParam | 0 .../docbook-xsl-1.73.2/website/autolayout.xsl | 0 .../website/chunk-common.xsl | 0 .../website/chunk-tabular.xsl | 0 .../website/chunk-website.xsl | 0 .../docbook-xsl-1.73.2/website/head.xsl | 0 .../website/makefile-dep.xsl | 0 .../docbook-xsl-1.73.2/website/olink.xsl | 0 .../docbook-xsl-1.73.2/website/param.xml | 0 .../docbook-xsl-1.73.2/website/param.xsl | 0 .../docbook-xsl-1.73.2/website/rss.xsl | 0 .../docbook-xsl-1.73.2/website/tabular.xsl | 0 .../website/toc-tabular.xsl | 0 .../docbook-xsl-1.73.2/website/toc.xsl | 0 .../website/website-common.xsl | 0 .../website/website-targets.xsl | 0 .../docbook-xsl-1.73.2/website/website.xsl | 0 .../docbook-xsl-1.73.2/website/xbel.xsl | 0 .../docbook-xsl-1.73.2/xhtml/admon.xsl | 0 .../docbook-xsl-1.73.2/xhtml/annotations.xsl | 0 .../xhtml/autoidx-kimber.xsl | 0 .../xhtml/autoidx-kosek.xsl | 0 .../docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl | 0 .../docbook-xsl-1.73.2/xhtml/autoidx.xsl | 0 .../docbook-xsl-1.73.2/xhtml/autotoc.xsl | 0 .../xhtml/biblio-iso690.xsl | 0 .../docbook-xsl-1.73.2/xhtml/biblio.xsl | 0 .../docbook-xsl-1.73.2/xhtml/block.xsl | 0 .../docbook-xsl-1.73.2/xhtml/callout.xsl | 0 .../docbook-xsl-1.73.2/xhtml/changebars.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunk-code.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunk-common.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunk.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunker.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunkfast.xsl | 0 .../docbook-xsl-1.73.2/xhtml/chunktoc.xsl | 0 .../docbook-xsl-1.73.2/xhtml/component.xsl | 0 .../docbook-xsl-1.73.2/xhtml/division.xsl | 0 .../docbook-xsl-1.73.2/xhtml/docbook.xsl | 0 .../docbook-xsl-1.73.2/xhtml/ebnf.xsl | 0 .../docbook-xsl-1.73.2/xhtml/footnote.xsl | 0 .../docbook-xsl-1.73.2/xhtml/formal.xsl | 0 .../docbook-xsl-1.73.2/xhtml/glossary.xsl | 0 .../docbook-xsl-1.73.2/xhtml/graphics.xsl | 0 .../docbook-xsl-1.73.2/xhtml/highlight.xsl | 0 .../docbook-xsl-1.73.2/xhtml/html-rtf.xsl | 0 .../docbook-xsl-1.73.2/xhtml/html.xsl | 0 .../docbook-xsl-1.73.2/xhtml/htmltbl.xsl | 0 .../docbook-xsl-1.73.2/xhtml/index.xsl | 0 .../docbook-xsl-1.73.2/xhtml/info.xsl | 0 .../docbook-xsl-1.73.2/xhtml/inline.xsl | 0 .../docbook-xsl-1.73.2/xhtml/keywords.xsl | 0 .../docbook-xsl-1.73.2/xhtml/lists.xsl | 0 .../docbook-xsl-1.73.2/xhtml/maketoc.xsl | 0 .../docbook-xsl-1.73.2/xhtml/manifest.xsl | 0 .../docbook-xsl-1.73.2/xhtml/math.xsl | 0 .../docbook-xsl-1.73.2/xhtml/oldchunker.xsl | 0 .../docbook-xsl-1.73.2/xhtml/onechunk.xsl | 0 .../docbook-xsl-1.73.2/xhtml/param.xsl | 0 .../docbook-xsl-1.73.2/xhtml/pi.xsl | 0 .../xhtml/profile-chunk-code.xsl | 0 .../xhtml/profile-chunk.xsl | 0 .../xhtml/profile-docbook.xsl | 0 .../xhtml/profile-onechunk.xsl | 0 .../docbook-xsl-1.73.2/xhtml/qandaset.xsl | 0 .../docbook-xsl-1.73.2/xhtml/refentry.xsl | 0 .../docbook-xsl-1.73.2/xhtml/sections.xsl | 0 .../docbook-xsl-1.73.2/xhtml/synop.xsl | 0 .../docbook-xsl-1.73.2/xhtml/table.xsl | 0 .../docbook-xsl-1.73.2/xhtml/task.xsl | 0 .../xhtml/titlepage.templates.xsl | 0 .../docbook-xsl-1.73.2/xhtml/titlepage.xsl | 0 .../docbook-xsl-1.73.2/xhtml/toc.xsl | 0 .../docbook-xsl-1.73.2/xhtml/verbatim.xsl | 0 .../docbook-xsl-1.73.2/xhtml/xref.xsl | 0 {jonas_doc/tools => tools}/fop-0.95/KEYS | 0 {jonas_doc/tools => tools}/fop-0.95/LICENSE | 0 {jonas_doc/tools => tools}/fop-0.95/NOTICE | 0 {jonas_doc/tools => tools}/fop-0.95/README | 0 .../tools => tools}/fop-0.95/build/fop.jar | Bin .../tools => tools}/fop-0.95/conf/fop.xconf | 0 {jonas_doc/tools => tools}/fop-0.95/fop | 0 {jonas_doc/tools => tools}/fop-0.95/fop.bat | 0 .../tools => tools}/fop-0.95/lib/README.txt | 0 .../fop-0.95/lib/avalon-framework-4.2.0.jar | Bin .../fop-0.95/lib/avalon-framework.LICENSE.txt | 0 .../fop-0.95/lib/avalon-framework.NOTICE.TXT | 0 .../fop-0.95/lib/batik-all-1.7.jar | Bin .../fop-0.95/lib/batik.LICENSE.txt | 0 .../fop-0.95/lib/batik.NOTICE.txt | 0 .../fop-0.95/lib/commons-io-1.3.1.jar | Bin .../fop-0.95/lib/commons-io.LICENSE.txt | 0 .../fop-0.95/lib/commons-io.NOTICE.txt | 0 .../fop-0.95/lib/commons-logging-1.0.4.jar | Bin .../fop-0.95/lib/commons-logging.LICENSE.txt | 0 .../fop-0.95/lib/commons-logging.NOTICE.txt | 0 .../fop-0.95/lib/serializer-2.7.0.jar | Bin .../fop-0.95/lib/serializer.LICENSE.txt | 0 .../fop-0.95/lib/serializer.NOTICE.txt | 0 .../fop-0.95/lib/xalan-2.7.0.jar | Bin .../fop-0.95/lib/xalan.BCEL.LICENSE.txt | 0 .../fop-0.95/lib/xalan.LICENSE.txt | 0 .../fop-0.95/lib/xalan.NOTICE.txt | 0 .../fop-0.95/lib/xalan.regexp.LICENSE.txt | 0 .../fop-0.95/lib/xalan.runtime.LICENSE.txt | 0 .../fop-0.95/lib/xerces.LICENSE.txt | 0 .../fop-0.95/lib/xercesImpl-2.7.1.jar | Bin .../fop-0.95/lib/xercesImpl.LICENSE.txt | 0 .../fop-0.95/lib/xercesImpl.NOTICE.txt | 0 .../fop-0.95/lib/xml-apis-1.3.04.jar | Bin .../fop-0.95/lib/xml-apis-ext-1.3.04.jar | Bin ...xml-apis-ext.LICENSE.dom-documentation.txt | 0 .../lib/xml-apis-ext.LICENSE.dom-software.txt | 0 .../lib/xml-apis-ext.LICENSE.sac.html | 0 .../fop-0.95/lib/xml-apis-ext.LICENSE.txt | 0 .../fop-0.95/lib/xml-apis-ext.NOTICE.txt | 0 .../fop-0.95/lib/xml-apis-ext.README.dom.txt | 0 .../fop-0.95/lib/xml-apis.LICENSE-SAX.html | 0 .../xml-apis.LICENSE.DOM-documentation.html | 0 .../lib/xml-apis.LICENSE.DOM-software.html | 0 .../fop-0.95/lib/xml-apis.LICENSE.txt | 0 .../fop-0.95/lib/xml-apis.NOTICE.txt | 0 .../lib/xmlgraphics-commons-1.3.1.jar | Bin .../lib/xmlgraphics-commons.LICENSE.txt | 0 .../lib/xmlgraphics-commons.NOTICE.txt | 0 .../tools => tools}/fop-0.95/status.xml | 0 .../tools => tools}/maven-ant-tasks-2.0.9.jar | Bin {jonas_doc/tools => tools}/win32/iconv.dll | Bin {jonas_doc/tools => tools}/win32/libexslt.dll | Bin {jonas_doc/tools => tools}/win32/libxml2.dll | Bin {jonas_doc/tools => tools}/win32/libxslt.dll | Bin {jonas_doc/tools => tools}/win32/xsltproc.exe | Bin {jonas_doc/tools => tools}/win32/zlib1.dll | Bin 7542 files changed, 839826 deletions(-) rename jonas_doc/.gitignore => .gitignore (100%) rename jonas_doc/.project => .project (100%) rename jonas_doc/README => README (100%) rename jonas_doc/build.properties => build.properties (100%) rename jonas_doc/build.xml => build.xml (100%) delete mode 100644 jonas/.checkstyle delete mode 100644 jonas/.checkstyle_eclipse_config delete mode 100644 jonas/.classpath delete mode 100644 jonas/.gitignore delete mode 100644 jonas/.project delete mode 100644 jonas/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jonas/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jonas/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jonas/LicenceAgreement.txt delete mode 100644 jonas/README delete mode 100644 jonas/ReleaseNotes.txt delete mode 100644 jonas/assemblies/binaries/pom.xml delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/GenIC delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/GenIC.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/JmsServer delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/JmsServer.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/RAConfig delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/RAConfig.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/WsGen delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/WsGen.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/jcl.bash delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jcl.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/jcl.ksh delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jcl.sh delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/jclient delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jclient.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/jclusterd delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jclusterd.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/jonas delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jonas.bat delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/jonasnt.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/newjb delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/newjb.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/newjc delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/newjc.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/probeJgroups delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/probeJgroups.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/registry delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/registry.bat delete mode 100644 jonas/assemblies/binaries/src/main/resources/bin/setenv delete mode 100755 jonas/assemblies/binaries/src/main/resources/bin/setenv.bat delete mode 100644 jonas/assemblies/client-jar/pom.xml delete mode 100644 jonas/assemblies/configuration/pom.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/FirebirdSQL.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/HSQL1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/InstantDB1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/InterBase1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/MailMimePartDS1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/MailSession1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/McKoi1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/MySQL.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/Oracle1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/PostgreSQL1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/Sybase1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/a3debug.cfg delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/a3servers.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/banner.txt delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/carol.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/classloader-default-filtering.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/clusterd.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/cmi-config.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/db2.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/domain.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/env.sh.include delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/env.start.sh.include delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/file1.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/initial-repositories.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jaas.config delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jacorb.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/java.policy delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jgroups-cmi.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jgroups-discovery.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jgroups-ha.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jmx.access delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jmx.passwords delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jmx.rolebased.access delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jonas-client.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jonas-realm.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jonas.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/joramAdmin.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/jotm.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/spy.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/trace.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/traceclient.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/uddi.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/wrapper.conf delete mode 100644 jonas/assemblies/configuration/src/main/resources/conf/wrapper_extra.conf delete mode 100644 jonas/assemblies/configuration/src/main/resources/deploy/jdbc-ds.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjb/build-jb.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjb/build-jb.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjc/build-db.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjc/build-jc.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjc/build-jc.xml delete mode 100644 jonas/assemblies/configuration/src/main/resources/newjc/build-master.properties delete mode 100644 jonas/assemblies/configuration/src/main/resources/windows_service/build.xml delete mode 100644 jonas/assemblies/examples/pom.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/build.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/PortConfiguration.txt delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientConfig/carol.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientConfig/cmi-config.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientConfig/traceclient.properties delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientException.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientException.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientFOSFSB.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientFOSFSB.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBHome.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBHome.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBLookup.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBLookup.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBRemote.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/bin-client/clientLBRemote.sh delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/build.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/WEB-INF/jonas-web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/WEB-INF/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/policy/round-robin-policy.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/web/index.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/web/jsp/checkRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/web/jsp/exceptionRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/web/jsp/releaseRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/resources/web/jsp/sessionRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/ejb-jar.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/jonas-ejb-jar.ha.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/jonas-ejb-jar.lb.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/jonas-ejb-jar.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/transaction/ejb-jar.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/etc/xml/transaction/jonas-ejb-jar.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/example-config/tomcat6-jk.conf delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/example-config/tomcat6-mod_jk.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/example-config/workers.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/applicationHA.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/hatransactions/HaTransactionHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/hatransactions/HaTransactionLocal.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/hatransactions/HaTransactionLocalHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/hatransactions/HaTransactionRemote.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/hatransactions/HaTransactionSLR.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEjb1.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEjb1Home.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEjb1SLR.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEntityHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEntityLocal.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEntityLocalHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEntityRemote.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyEntitySLR.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyException.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStateful.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStatefulHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStatefulInner.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStatefulInnerLocal.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStatefulInnerLocalHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/beans/samplecluster2/MyStatefulSFR.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientBase.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientException.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientFOSFSB.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientLBHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientLBLookup.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientLBRemote.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/ClientUtility.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/client/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/servlets/AbstractServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/servlets/CheckServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/servlets/ExceptionServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/servlets/ReleaseServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-j2ee14/src/java/org/ow2/jonas/examples/cluster/j2ee14/servlets/SessionServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/PortConfiguration.txt delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientConfig/carol.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientConfig/cmi-config.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientConfig/traceclient.properties delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientException.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientException.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientFOSFSB.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientFOSFSB.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientLBRemote.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/bin-client/clientLBRemote.sh delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/build.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/WEB-INF/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/jonas-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/persistence.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/policy/round-robin-policy.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/web/index.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/web/jsp/checkRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/web/jsp/exceptionRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/web/jsp/releaseRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/resources/web/jsp/sessionRsp.jsp delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/xml/easybeans.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/etc/xml/ejb-jar.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/example-config/tomcat6-jk.conf delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/example-config/tomcat6-mod_jk.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/example-config/workers.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyException.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStateful.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStatefulBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStatefulInner.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStatefulInnerBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStateless.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/MyStatelessBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/beans/samplecluster3/Node.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/client/ClientBase.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/client/ClientException.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/client/ClientFOSFSB.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/client/ClientLBRemote.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/client/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/servlets/AbstractServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/servlets/CheckServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/servlets/ExceptionServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/servlets/ReleaseServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/cluster-javaee5/src/java/org/ow2/jonas/examples/cluster/javaee5/servlets/SessionServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/jaas/jaas.config delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/jetty.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/logoOW2.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/ow_jonas_logo.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/tomcat.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/valid-xhtml11.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/img/vcss.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/index.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/resources/web/ow2_jonas.css delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/application-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/jonas-client1.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/jonas-client2.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/jonas-secusb.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/jonas-web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/ra.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/secusb.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/etc/xml/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/beans/secusb/Op.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/beans/secusb/OpBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/beans/secusb/OpHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/beans/secusb/OpLocal.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/beans/secusb/OpLocalHome.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/clients/Client.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/resourceadapters/ResourceAdapterImpl.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/src/java/org/ow2/jonas/earsample/servlets/ServletOp.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/j2ee1.4/velocity.log delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/README delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientConfig/carol.properties delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientConfig/traceclient.properties delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientJaasSecuredApplication.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientJaasSecuredApplication.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientJmsApplication.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientJmsApplication.sh delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientNotSecuredApplication.bat delete mode 100755 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/bin-client/clientNotSecuredApplication.sh delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/META-INF/MANIFEST.MF delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/jaas-secured-application-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/jaas-secured-jonas-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/jaas.config delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/jms-application-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/jms-jonas-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/not-secured-application-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/not-secured-jonas-client.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/persistence.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/architecture.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/jetty.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/logoOW2.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/ow_jonas_logo.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/tomcat.gif delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/valid-xhtml11.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/img/vcss.png delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/index.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/etc/web/ow2_jonas.css delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/client/JMSApplicationClient.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/client/NotSecuredApplicationClient.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/client/SecuredApplicationClient.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/client/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/entity/Author.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/entity/Book.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/entity/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/init/Initializer.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/init/InitializerBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/init/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/mail/Mailer.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/mail/MailerBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/mail/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/mdb/JMSMessageBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/mdb/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/reader/LocalReader.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/reader/Reader.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/reader/ReaderBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/reader/RemoteReader.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/reader/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/web/AdminServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/web/ExampleServlet.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/web/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/writer/LocalWriter.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/writer/RemoteWriter.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/writer/Writer.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/writer/WriterBean.java delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/javaee5-earsample/src/java/org/ow2/jonas/examples/ear/writer/package.html delete mode 100644 jonas/assemblies/examples/src/main/resources/examples/jonas-common.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/README delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/client/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/client/etc/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/client/etc/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/client/src/java/org/ow2/jonas/tutorial/jaxws/client/QuoteMain.java delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/build.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/etc/application.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/etc/web.xml delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/src/java/org/ow2/jonas/tutorial/jaxws/quote/Quote.java delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/src/java/org/ow2/jonas/tutorial/jaxws/quote/QuoteReporter.java delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jaxws-sample/service/src/java/org/ow2/jonas/tutorial/jaxws/quote/QuoteReporterPOJO.java delete mode 100644 jonas/assemblies/examples/src/main/resources/tutorial/jonas-common.xml delete mode 100644 jonas/assemblies/pom.xml delete mode 100644 jonas/assemblies/profiles/full/pom.xml delete mode 100644 jonas/assemblies/profiles/full/src/main/assembly/assembly.xml delete mode 100644 jonas/assemblies/profiles/full/src/main/assembly/templates-component.xml delete mode 100644 jonas/assemblies/profiles/minimal/pom.xml delete mode 100644 jonas/assemblies/profiles/minimal/src/main/assembly/assembly.xml delete mode 100644 jonas/assemblies/profiles/pom.xml delete mode 100644 jonas/assemblies/profiles/src/main/assembly/component.xml delete mode 100644 jonas/assemblies/profiles/src/main/resources/logs/README delete mode 100644 jonas/assemblies/source/pom.xml delete mode 100644 jonas/assemblies/source/src/main/assembly/assembly.xml delete mode 100644 jonas/clientbuild.xml delete mode 100644 jonas/eclipse-settings/checkstyle-convention.xml delete mode 100644 jonas/eclipse-settings/eclipse-java-code-formatter.xml delete mode 100644 jonas/eclipse-settings/eclipse-java-codestyle-organize-import delete mode 100644 jonas/eclipse-settings/jonas-style-convention.xml delete mode 100644 jonas/eclipse-settings/plugin-checkstyle-config.xml delete mode 100644 jonas/modules/apis/jonas-deployment-api/pom.xml delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/DTDs.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IDeploymentDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IDescriptionGroupDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IEJBLocalRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IEJBRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IEnvEntryDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IJNDIEnvRefsGroupDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IMessageDestinationRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IPersistenceUnitRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IResourceEnvRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IResourceRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/IServiceRefDesc.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/java/org/ow2/jonas/deployment/api/Schemas.java delete mode 100644 jonas/modules/apis/jonas-deployment-api/src/main/resources/META-INF/jonas-deployment-api.bnd delete mode 100644 jonas/modules/apis/jonas-management-api/pom.xml delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/base/api/IBaseManagement.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/base/api/J2EEMBeanAttributeInfo.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/base/api/ManagementException.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/cluster/api/ICluster.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/clusterdaemon/api/IClusterdaemon.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/container/api/IContainerManagement.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/domain/api/IDomain.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/server/api/IServer.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/java/org/ow2/jonas/management/extensions/server/api/IServerManagement.java delete mode 100644 jonas/modules/apis/jonas-management-api/src/main/resources/META-INF/jonas-management-api.bnd delete mode 100644 jonas/modules/apis/jonas-services-api/pom.xml delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/adm/AdmException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/adm/AdmInterface.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/audit/AuditService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/cmi/CmiService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/configuration/ConfigurationManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/configuration/DeploymentPlanDeployer.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/db/DBService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/dbm/DataBaseService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/depmonitor/MonitoringService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/discovery/DiscoveryEvent.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/discovery/DiscoveryService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/discovery/DiscoveryState.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ear/EarService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ear/EarServiceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ejb2/EJBService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ejb2/JTimerHandleInfo.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ejb2/TimerHandleDelegate.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ejb3/IEasyBeansService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ha/HaService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jms/JmsAdministration.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jms/JmsManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jms/JmsService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jmx/JManagementIdentifier.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jmx/JmxService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jndi/checker/api/IResourceChecker.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jndi/checker/api/IResourceCheckerInfo.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jndi/checker/api/IResourceCheckerManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/jndi/checker/api/ResourceCheckpoints.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/mail/MailService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/mail/MailServiceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/mail/factory/JavaMail.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/management/J2EEServerService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/management/ServiceManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/naming/JComponentContextFactory.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/naming/JComponentContextFactoryDelegate.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/naming/JNamingManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/properties/ServerProperties.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/registry/RegistryService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/resource/Rar.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/resource/ResourceService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/resource/ResourceServiceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/resourcemonitor/ResourceMonitorService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/security/SecurityService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/security/realm/factory/JResource.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/security/realm/factory/JResourceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/security/realm/lib/HashPassword.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/security/realm/principal/JUser.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/service/JonasAlreadyStartedException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/service/Service.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/service/ServiceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/smartclient/SmartclientService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/smartclient/SmartclientServiceBase.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/tm/Enlistable.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/tm/TransactionManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/tm/TransactionService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/tm/TxResourceManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/versioning/VersioningService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/versioning/VersioningServiceBase.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/versioning/VirtualContextJMXInterface.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/web/IOnDemandHttpService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/web/JWebContainerService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/web/JWebContainerServiceException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/workcleaner/CleanTask.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/workcleaner/LogEntry.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/workcleaner/WorkCleanerException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/workcleaner/WorkCleanerService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/workmanager/WorkManagerService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxrpc/IJAXRPCService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxrpc/WSException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/EndpointType.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IJAXWSService.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWSRequest.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWSResponse.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWebServiceDeploymentManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWebServiceEndpoint.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWebservicesContainer.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/IWebservicesModule.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/PortIdentifier.java delete mode 100755 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/PortMetaData.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/WSException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/IEJBWebserviceEndpoint.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/ISecurityConstraint.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/IWebDeployer.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/context/ContextNamingStrategyException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/context/IContextNamingInfo.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/jaxws/ejb/context/IContextNamingStrategy.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/AbsWSDLPublisher.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/PublicationInfo.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/PublishableDefinition.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/WSDLPublisher.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/WSDLPublisherException.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/java/org/ow2/jonas/ws/publish/WSDLPublisherManager.java delete mode 100644 jonas/modules/apis/jonas-services-api/src/main/resources/META-INF/jonas-services-api.bnd delete mode 100644 jonas/modules/apis/pom.xml delete mode 100644 jonas/modules/client-bootstrap/pom.xml delete mode 100644 jonas/modules/client-bootstrap/src/main/java/org/ow2/jonas/client/boot/Bootstrap.java delete mode 100644 jonas/modules/client-bootstrap/src/main/resources/META-INF/client-bootstrap.bnd delete mode 100644 jonas/modules/client/pom.xml delete mode 100644 jonas/modules/client/src/main/java/org/ow2/jonas/client/ClientContainer.java delete mode 100644 jonas/modules/client/src/main/java/org/ow2/jonas/client/ClientContainerException.java delete mode 100644 jonas/modules/client/src/main/java/org/ow2/jonas/client/naming/ClientInitialContextFactory.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/cp/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/cp/src/main/rar/META-INF/jonas-ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/cp/src/main/rar/META-INF/ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/dm/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/dm/src/main/rar/META-INF/jonas-ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/dm/src/main/rar/META-INF/ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/ds/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/ds/src/main/rar/META-INF/jonas-ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/ds/src/main/rar/META-INF/ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ConnectionImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ConnectionManagerImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ConnectionPoolMCFImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ConnectionRequestInfoImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/DataSourceImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/DataSourceMCFImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/DriverManagerMCFImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/DriverWrapper.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/MCFData.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ManagedConnectionFactoryImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/ManagedConnectionImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/MetaDataImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/XAExceptionUtils.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/XAMCFImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/glue/src/main/java/org/ow2/jonas/ee/jdbc/XAResourceImpl.java delete mode 100644 jonas/modules/ee-components/jca/jdbc/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/xa/pom.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/xa/src/main/rar/META-INF/jonas-ra.xml delete mode 100644 jonas/modules/ee-components/jca/jdbc/xa/src/main/rar/META-INF/ra.xml delete mode 100644 jonas/modules/ee-components/jca/pom.xml delete mode 100644 jonas/modules/ee-components/jca/scout/glue/pom.xml delete mode 100644 jonas/modules/ee-components/jca/scout/glue/src/main/java/org/ow2/jonas/ee/scout/JAXRResourceAdapter.java delete mode 100644 jonas/modules/ee-components/jca/scout/glue/src/main/java/org/ow2/jonas/ee/scout/JConnectionFactory.java delete mode 100644 jonas/modules/ee-components/jca/scout/glue/src/main/java/org/ow2/jonas/ee/scout/ManagedConnectionFactoryImpl.java delete mode 100644 jonas/modules/ee-components/jca/scout/pom.xml delete mode 100644 jonas/modules/ee-components/jca/scout/rar/pom.xml delete mode 100644 jonas/modules/ee-components/jca/scout/rar/src/main/rar/META-INF/jonas-ra.xml delete mode 100644 jonas/modules/ee-components/jca/scout/rar/src/main/rar/META-INF/ra.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/pom.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/ApplicationLocales.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/ApplyTopAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/EditTopAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JettyObjectName.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/Jlists.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JmsConnFact.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JonasAdminException.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JonasAdminJmx.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JonasBaseAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JonasServerItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/JonasTreeBuilder.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/LogOutAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/MBeanTreeBuilder.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/ServiceName.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/SetUpTreeAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/SetupWhereAreYouAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/TopForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/TreeAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/WhereAreYou.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ApplyConnectorAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ApplyConnectorsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ApplyConnectorsConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/CatalinaBaseAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ConnectorForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ConnectorItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ConnectorItemByPort.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/CreateConnectorAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/EditConnectorAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ItemsConnectorsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/ListConnectorsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/catalina/SaveCatalinaAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/ApplyJonasServersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/ClusterDaemonItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/ClusterdServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/DaemonProxyClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/DaemonProxyClusterApplyModifAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/DaemonProxyClusterConfigureServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/DaemonProxyClusterModifyAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/EditAllClusterDaemonsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/EditClusterDaemonAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/EditClusterdVmMemoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/HaltJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/MemoryForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/ServerConfigModifiedAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/StartJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/StartStandbyJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/StopJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/clusterd/servlet/MemoryGraphRemoteHostServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/ApplyCmiAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/ClusterAttribute.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/ClusterPropertyAttribute.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiObject.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiObjectAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiObjectForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiProtocolAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiProtocolForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/CmiServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/LBAttribute.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/Protocol.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/cmi/Provider.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/BeanComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/ItemsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/LabelValueByLabelComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/ModuleItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/ModuleItemByName.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/ObjectNameComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/common/TargetItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyDeployAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyDeployConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyDomainDeployAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyDomainDeployConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyRemoveAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyRemoveConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/ApplyUploadAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/BaseDeployAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/DeployForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/DomainDeployForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/EditDeployAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/EditDomainDeployAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/EditRemoveAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/EditUploadAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/OperationInProgressException.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/RemoveForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/deploy/UploadForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ApplyClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ApplyJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ApplyJonasServersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ApplyJonasServersConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ApplyJonasServersConfirmMoveAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/CreateClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/CreateJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/DomainForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/EditDomainAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/HaltJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ItemsServersForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/JonasServerItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/JonasServersMoveAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/ModuleItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/NewClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/NewServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StartClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StartClusterDaemonAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StartJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StartStandbyJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StopClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StopClusterDaemonAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StopJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/domain/StopStandbyJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/ConnectionFactoryEditAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/ConnectionFactoryEditForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationAddAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationAddConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationAddConfirmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationAddForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationDeleteAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationDeleteConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationDeleteConfirmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationDeleteForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationEditAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationEditForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/DestinationsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/JonasMqConnectAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/JonasMqConnectForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/JonasMqConnectPlatformAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/JonasMqConnectPlatformForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/MdbEditAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/MdbEditForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/MdbsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/MdbsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/ItemDestination.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/ItemMdb.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/LogUtils.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/MqObjectNames.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/PropertiesComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/PropertiesUtil.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasmqconnect/util/Property.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/BasicJonasServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/CmiRegistryResource.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/EditJmxServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/EditJonasServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/EditJvmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/EditRegistryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/EditServletServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JmxServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JndiResourceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JndiResourceItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JndiResourcesForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JonasServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JonasServerRunGCAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JonasServerStopAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/JvmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/ListRegistryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/jonasserver/ServletServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/AddJoramReaderAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/AddJoramWriterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyJoramQueueAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyJoramReaderAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyJoramTopicAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyJoramWriterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ApplyUserAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/CreateJoramDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/CreateJoramUserAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/DestinationForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/DestinationItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/DestinationItemByNameComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramBaseAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramPlatformAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramQueueAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramRemoteServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramServerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramTopicAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/EditJoramUserAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ExportRepository.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ItemBase.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ItemDestination.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ItemDestinationByName.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ItemServer.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ItemUser.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramAdapterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramDestinationForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramLocalQueueForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramLocalServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramLocalTopicForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramPlatformForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramQueueForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramReaderWriterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramRemoteServerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramServersForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramTopicForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/JoramUserForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/MonitoringDestForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/ReloadJoramAdmin.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveConfirmDestinationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveConfirmUsersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveDestinationsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveJoramDestinationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveJoramUsersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/joramplatform/RemoveUsersForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ApplyCatalinaAccessLoggerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ApplyLoggersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ApplyLoggersConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ApplyLoggingJonasAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/BaseLoggerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/CatalinaAccessLogValveForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/CatalinaValveForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/EditCatalinaAccessLoggerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/EditLoggingJonasAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ListLoggersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/LoggerItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/LoggingJonasForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/TopicLevel.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ViewLoggingJonasAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/logging/ViewLoggingJonasForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ApplyMbeanFilteringAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListJ2eeMBeansAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListMBeanAttributesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListMBeanDetailsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListMBeanOperationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListMBeanPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListMBeansAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListOwnerMBeansAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/ListUnknownMBeansAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/mbean/MbeanFilteringForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/ApplyCmiClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/ApplyMemoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/ApplyMonitoringAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/ApplyStackDumpAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/BaseClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/ClusterdAttribute.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/CmiClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/CmiMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/CmiMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/DaemonProxyClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/DaemonProxyClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/DaemonProxyMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/DaemonProxyMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/DisplayNodeInfoAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EditMemoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EditMonitoringAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EditStackDumpAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EjbHaClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EjbHaClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EjbHaMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/EjbHaMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JkClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JkClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JkMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JkMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JoramClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JoramClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JoramMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/JoramMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/LogicalClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/LogicalClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/LogicalMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/LogicalMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/MemoryForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/MemoryGraphServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/MonitoringForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/NodeInfoForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/PingAllJonasServersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/StackDumpForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/StartAllJonasServersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/StopAllJonasServersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/TomcatClusterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/TomcatClusterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/TomcatMemberAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/TomcatMemberForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/ServerGraphForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/ServerGraphsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/ServerThreadCountAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/ServerTransactionsCountAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/ServerCurrentTxServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/ThreadCountServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/BegunTransactionsServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/BytesReceivedByConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/BytesSentByConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ConnectionFailuresJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ConnectionLeaksJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ConnectionLeaksJDBCResourceServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentBusyJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentBusyJDBCResourceServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentNumberOfEJBServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentNumberOfEntityBeanServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentNumberOfMDBServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentNumberOfSBFServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentNumberOfSBLServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/CurrentUsedMemoryServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/EditMemoryServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ErrorCountByConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/JmsQMsgDeliverServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/JmsQMsgReceiveServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/JmsTopicMsgDeliverServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/JmsTopicMsgReceiveServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/LoadCPUServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ProcessingTimeByConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/RejectedOpenJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/RejectedOpenJDBCResourceServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/RequestCountByConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ServedOpenJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ServedOpenJDBCResourceServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/ThreadBusyConnectorTomcatServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/TotalCommittedTransactionsServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/TotalExpiredTransactionsServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/TotalRolledbackTransactionsServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/WaiterCountJCAConnectionServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/WaiterCountJDBCResourceServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/servlets/server/WorkersServlet.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/monitoring/graph/utils/GraphUtils.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyConfirmDestinationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyDatasourcePropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyDestinationsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplyMimePartMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ApplySessionMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/DatasourcePropertiesForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/DestinationForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/DestinationItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/DestinationItemByNameComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/EditDatasourcePropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/EditDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/EditMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/EditMimePartMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/EditSessionMailFactoryPropertiesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ItemsDestinationsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ListDatasourcesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ListJmsResourcesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/ListMailFactoriesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/MailFactoryItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/MailFactoryPropertiesForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resource/SaveDestinationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ApplyCreateResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ApplyTemplateCreateResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resourceadapter/CreateResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/resourceadapter/CreateResourceAdapterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyConfirmMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyConfirmRealmsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyDatasourceRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyGroupMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyLdapRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyRealmsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyRoleMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ApplyUserMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/BaseMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/BaseSecurityAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ClearCacheAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/DatasourceRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditDatasourceRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditGroupMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditLdapRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditMemoryRealmGroupsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditMemoryRealmRolesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditMemoryRealmUsersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditNewGroupMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditNewRoleMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditNewUserMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditRoleMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditSecurityCatalinaRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/EditUserMemoryRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/FactoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/GroupMemoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ItemsMemoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ItemsRealmsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/LdapRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/ListRealmsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/MemoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/RoleMemoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/SaveRealmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/security/UserMemoryRealmForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/EditServiceSecurityAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ListServicesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ModuleForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ServiceItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ServiceItemByNameComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/StartJonasServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/StopJonasServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyContainersStatisticAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyEjbContainersStatisticAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyWebAppCatalinaAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyWebAppJettyAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyWebAppVirtualCatalinaAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ApplyWebsConfirmAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/BaseWebAppAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ContainerForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ContainerItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ContainerItemByFile.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EarForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditContainerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditContainerStatisticAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditEarAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditEjbCsStatisticAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditWarAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditWebAppAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditWebAppCatalinaAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EditWebAppJettyAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/EjbContainersStatisticForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ListAppContainersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ListContainersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ListWebContainersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/SelectedItemsForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ViewContainerAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/ViewContainerEjbsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WarForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppCatalinaForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppItemByPathContext.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppJettyForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/container/WebAppVirtualCatalinaForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/ApplyDatasourceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/ApplyDatasourceStatAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/DatasourceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/DatasourceItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/DatasourceItemByNameComparator.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/EditDatasourceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/EditDatasourceStatAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/db/ListDatabasesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/depmonitor/ApplyDepmonitorConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/depmonitor/DepMonitorServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/depmonitor/EditServiceDepmonitorAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/discovery/DiscoveryServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/discovery/DiscoveryServiceStartMasterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/discovery/EditServiceDiscoveryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/ApplyEjbSessionConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EditEjbAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EditEjbEntityAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EditEjbMessageAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EditEjbSessionAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EditEjbSessionSblAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EjbDependency.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EjbEntityForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EjbForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EjbMessageForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/EjbSessionForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/ejb/ExecuteEjbAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/CfForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/EditJmsServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/JmsServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/ListConnectionFactoriesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/ListQueuesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/ListTopicsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/PresentConnectionFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/PresentQueueAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/PresentTopicAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/QueueForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jms/TopicForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ApplyConfirmXaResourceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ApplyJtmConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/EditJtmServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/EditTransactionMonitorAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/EditTransactionRecoveryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/EditTransactionStatisticAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ItemsXaResourceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/JtmServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/JtmServiceMonitorForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/JtmServiceRecoveryForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/JtmServiceStatisticForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/JtmServiceXAResourceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ListXaResourceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ResetCountersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ResetRecoveryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/ResetTransactionsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/TxItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/TxRecovery.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/jtm/TxXaresource.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/ApplyMimePartMailFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/ApplySessionMailFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/EditMailFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/EditMailServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/EditMimePartMailFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/EditSessionMailFactoryAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/ListMimePartMailFactoriesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/ListSessionMailFactoriesAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/MailFactoryForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/MailFactoryItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/mail/MailServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ApplyResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ApplyResourceAdapterCFAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterAOAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterASAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterCFAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterCFStatAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/EditResourceAdapterStatAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ListResourceAdaptersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceAdapterAOForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceAdapterASForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceAdapterCFForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceAdapterForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/resource/ResourceItemByFile.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/smartclient/EditSmartclientServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/smartclient/SmartclientServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/versioning/ApplyVersioningConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/versioning/EditVersioningServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/versioning/VersioningServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/HandlersDetailsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/ListWebServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/PortComponentsDetailsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/ViewHandlersAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/ViewPortComponentsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/WebServiceDetailsAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/JOnASProvider.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/element/HandlerItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/element/InitParamItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/element/PortComponentItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/element/ServiceImplBean.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/webservice/provider/element/WebServiceDescriptionItem.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workcleaner/ApplyWorkcleanerConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workcleaner/EditWorkcleanerServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workcleaner/WorkcleanerServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workmanager/ApplyWorkmanagerConfigurationAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workmanager/EditWorkmanagerServiceAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/service/workmanager/WorkmanagerServiceForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ApplyArchiveConfigAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ArchiveConfigAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ArchiveConfigAdvancedAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ArchiveConfigForm.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ArchiveConfigSelectAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/ArchiveUtilAction.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/XMLToFormUtil.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/AttributeRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/ElementRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/SchemaRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/SchemaRestrictionsFactory.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/hardcoded/HCAttributeRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/hardcoded/HCElementRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/jonasadmin/xml/xs/hardcoded/HCSchemaRestrictions.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/GridBaseTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/GridColTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/GridRowTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/GridTableBaseTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/GridTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasButtonTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridColTitleTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridNameTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridNameTitleTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridRowTitleTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridValueTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasGridValueTitleTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/JonasSubmitTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/LabelValueBean.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelSeparatorTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/RefreshTreeTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabsTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TitleContentTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeBuilder.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControl.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlNode.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlRenderTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/WhereAreYouTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XMLEditorTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XmlFileTag.java delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources.properties delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources_fr.properties delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/jonas-ra-xml.vm delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ra-xml.vm delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/TestFont.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/TestNavigator.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/controls.tld delete mode 100755 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/flex/services-config.xml delete mode 100755 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/granite/granite-config.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/sj.tld delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-bean.tld delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-config.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-html.tld delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-logic.tld delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-template.tld delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/begin.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/blank.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connector.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectors.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectorsConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/DaemonProxyClusterDisplayServerConfig.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/addServerCd.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/daemonProxyClusterModify.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/graph/vmMemory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/serversConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiClusterInfo.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiInfo.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiObjectInfo.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiProtocolInfo.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiServerInfo.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/common/begin.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/common/end.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deploy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deployConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeploy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployProgress.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainUndeployConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/remove.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/removeConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/upload.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/uploadResult.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServer.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServerCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/clustercmi.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/domain.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirmMove.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/end.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/error.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/framemain.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/frameright.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/globalerror.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/button/GraphButton.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/button/button.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot1.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot5.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/BalJonasGreen.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/BalJonasTree.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Database.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Datasource.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/FolderBalJonas.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/JonasQuestion.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bean.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bullet.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/caution.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/connector.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/connectors.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomainManage.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_ear.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_jar.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_rar.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_war.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_datasource.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_ear.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_jar.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_rar.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_war.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployed.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployed_not.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/domain_jonas.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/ear.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/help.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/info.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jar.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_connector.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_queue.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_topic.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/logger_http.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/logger_jonas.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/loggers.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_mime.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_session.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbean.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbeandomain.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbeans.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbeantype.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/monitoring.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/protocol.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/resourceAdapter.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/resources.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security_database.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security_ldap.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security_memory.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_application.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_database.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_discovery.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_ejb.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_jms.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_mail.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_resource.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_security.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_smartclient.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_transaction.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_versioning.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_web.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_workcleaner.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_workmanager.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/services.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/tag_blue.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/tag_green.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/war.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/jonasAdmin.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSadSmall.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSadSmall_Orange.jpg delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSmall_White.jpg delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/balJonasAdmin.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/balJonasAdminLogin.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/jonasAdmin.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/jonasAdminModified.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/jonasAdminWelcomeMessage.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/logoOW2.png delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tableftF.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tabrightF.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_first.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_last.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_middle.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close_first.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close_last.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close_middle.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_first.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_last.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_middle.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/noline.gif delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/index.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/ConnectionFactoryEdit.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAdd.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAddConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDelete.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDeleteConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationEdit.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Destinations.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnect.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnectPlatform.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/MdbEdit.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Mdbs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jmxserver.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasserver.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasversions.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jvm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/listRegistry.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/registry.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/servletServer.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addreader.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addwriter.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createdestination.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createuser.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramadapter.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdestinations.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdeststatistics.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramplatform.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueue.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuereaders.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuewriters.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremotedestinations.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremoteserver.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramservers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopic.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicreaders.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicwriters.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramusers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramxml.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/queueUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeDestinationsConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeUsersConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/topicUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/catalinaAccessLogger.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggersConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingJonas.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingView.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/login.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listJ2eeMBeans.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanAttributes.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanOperations.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanProperties.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeans.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listOwnerMBeans.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listUnknownMBeans.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/displaynode.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverGraphs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverTransactionCount.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/memory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/monitoring.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/stackDump.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatCluster.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatMember.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/createDestination.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasourceProperties.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasources.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployDatasource.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployMailFactory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/destinationsConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/jmsResources.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactories.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactoryProperties.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mimePartFactoryProperties.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/sessionFactoryProperties.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createJDBCResourceAdapter.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createOtherResourceAdapter.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createResourceAdapter.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/script/jonasAdmin.js delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/confirmActionMemoryRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/datasourceRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/groupMemoryRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/ldapRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmGroups.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmRoles.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmUsers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realms.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsStopped.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/roleMemoryRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/securityCatalinaRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/security/userMemoryRealm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/appContainers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/cfUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/confirmActionXaResource.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/container.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerEjbs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerStatistic.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/databases.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasource.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceStatistics.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/depmonitorService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/discovery.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ear.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earJars.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earRars.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earWars.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earXmlDeployment.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejb.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainerService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainersStatistic.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbDependency.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbEntity.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbMessage.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbSession.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbVirtual.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactories.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsDestinations.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueue.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueues.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopic.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopics.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmServiceStopped.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mailService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactories.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartMailFactoryUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/queueUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10Stats.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AO.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AOs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AS.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15ASs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CF.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFStats.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFs.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarPoolStatistics.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarStatistics.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy10.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy15.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rars.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/security.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/securityStopped.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/services.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactories.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactory.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionMailFactoryUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/smartclientService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/topicUsedBy.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionMonitor.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionRecovery.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionStatistic.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/versioningService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/war.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warJonasXml.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warServlets.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warWebXml.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webApp.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppCatalina.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppJetty.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppVirtualCatalina.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webContainers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workcleanerService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workmanagerService.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/handlersDetails.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/portComponentsDetails.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewHandlers.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewPortComponents.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDescriptions.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDetails.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/service/xaresourceRecovery.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/style/iepngfix.htc delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/style/jonasAdmin.css delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/top.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/tree.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/welcomeContent.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfig.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAdvanced.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAjax.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigConfirm.jsp delete mode 100644 jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigSelect.jsp delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/pom.xml delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/index.jsp delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/jetty.gif delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/logoOW2.png delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow2_jonas.css delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow_jonas_logo.gif delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/style.css delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/tomcat.gif delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/valid-xhtml11.png delete mode 100644 jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/vcss.png delete mode 100644 jonas/modules/ee-components/mejb/pom.xml delete mode 100644 jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ListenerRegistrationImpl.java delete mode 100644 jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ManagementBean.java delete mode 100644 jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagement.java delete mode 100644 jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagementHome.java delete mode 100644 jonas/modules/ee-components/pom.xml delete mode 100644 jonas/modules/generators/jonas-genbase/pom.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/GenBaseException.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/NoJ2EEWebservicesException.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/AbsArchive.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Application.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Archive.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Client.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyApplication.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyWebApp.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Ejb.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbJar.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbRefModule.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/FileArchive.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/J2EEArchive.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/JarArchive.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WebApp.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsClient.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsEndpoint.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/AbsGenerator.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/Config.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactories.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsApplicationModifier.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsModifierFactory.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/ArchiveModifier.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/ArchiveStorer.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/DirStorer.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/JarStorer.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/TempRepository.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/XMLUtils.java delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/META-INF/jonas-generators-base.bnd delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/I18n.properties delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/application.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/context.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/jonas-web.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web-jetty.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web.xml delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/generator/I18n.properties delete mode 100644 jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/utils/I18n.properties delete mode 100644 jonas/modules/generators/jonas-genclientstub/pom.xml delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGen.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGenException.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/Generator.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/GeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/AbsArchiveModifier.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ApplicationModifier.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ClientModifier.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/EjbJarModifier.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ModifierFactory.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/WebAppModifier.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/wrapper/ClientGenStubWrapper.java delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/resources/META-INF/jonas-generators-clientstubs.bnd delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/generator/I18n.properties delete mode 100644 jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/modifier/I18n.properties delete mode 100644 jonas/modules/generators/jonas-genic/pom.xml delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/BeanSources.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenIC.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICException.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICParameters.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/Source.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VContextFactory.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcCMRField.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcField.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcMethod.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParam.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParamWhere.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VelocityMonologLogger.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/wrapper/GenicServiceWrapper.java delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/META-INF/jonas-genic.bnd delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/GenICMacros.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2CoherenceItf.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmpJdbc.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHandle.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocal.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocalHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityRemote.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpoint.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpointHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocal.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocalHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulRemote.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocal.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocalHome.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessRemote.vm delete mode 100644 jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/README delete mode 100644 jonas/modules/generators/jonas-wsgen/pom.xml delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGen.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGenException.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/ContextDDModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/DeploymentDescModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebJettyDDModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebServicesDDModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsClientDDModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsEndpointDDModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GeneralWSFinder.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GenericWSFinder.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/J2EEWebServicesFinder.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/ServiceRefFinder.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/WebServicesXmlFinder.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/Generator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/GeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/SecurityGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsClientGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsEndpointGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisGeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsClientGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsEndpointGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/JVelocity.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VContextFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcArrayMapping.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBean.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBeanMapping.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHandler.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHeader.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcInitParam.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcPortComponent.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcTypeMapping.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASEmitter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASGeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASInterfaceServiceImplWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceImplWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASWSDL2Java.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSGeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsClientGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsEndpointGenerator.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/JOnASJ2EEWebServicesContext.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/ServiceReferenceContextImpl.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/FullEmitter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/JOnASWSEmitter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASClientGeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASEndpointGeneratorFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEClientDeployWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEServerDeployWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASDeployWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSBindingWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceImplWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceIntfWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASTypeWriter.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFHandler.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFInitParam.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFSOAPHeader.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ApplicationModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ClientModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/EjbJarModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ModifierFactory.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WebAppModifier.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WsGenModifierConstants.java delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/META-INF/jonas-generators-wsgen.bnd delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/I18n.properties delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/I18n.properties delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_client.vm delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_endpoint.vm delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/ews/I18n.properties delete mode 100644 jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/modifier/I18n.properties delete mode 100644 jonas/modules/generators/pom.xml delete mode 100644 jonas/modules/generators/raconfig/pom.xml delete mode 100644 jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfig.java delete mode 100644 jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfigException.java delete mode 100644 jonas/modules/generators/raconfig/src/main/resources/META-INF/jonas-generators-raconfig.bnd delete mode 100644 jonas/modules/itests/applications/classloader/pom.xml delete mode 100644 jonas/modules/itests/applications/classloader/src/main/java/org/ow2/jonas/tests/applications/classloader/ClassLoaderChecker.java delete mode 100644 jonas/modules/itests/applications/classloader/src/main/resources/metadata.xml delete mode 100644 jonas/modules/itests/applications/connection-leaks/pom.xml delete mode 100644 jonas/modules/itests/applications/connection-leaks/src/main/java/org/ow2/jonas/tests/applications/connectionsleaks/ConnectionLeakServlet.java delete mode 100644 jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/assemblies/ear/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/assemblies/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/api/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/api/src/main/java/org/ow2/jonas/tests/applications/wsadd/api/IAddBean.java delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/beans/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/java/org/ow2/jonas/tests/applications/wsadd/beans/AddBean.java delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/resources/META-INF/ejb-jar.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/AuditPropagationServlet.java delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/IWSAdd.java delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/WSAdd.java delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/itests/applications/jaxws-add/pom.xml delete mode 100644 jonas/modules/itests/applications/jaxws-sample/pom.xml delete mode 100644 jonas/modules/itests/applications/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/non-versioned-war/non-versioned-war.war delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/.classpath delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/.project delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/root-war.war delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithContext.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithoutContext.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/test.jsp delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/secured-war/secured-war.war delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.classpath delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.project delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ear/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/test-versioning.ear delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/test.jsp delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.classpath delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.project delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ear/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/test-versioning.ear delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/pom.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithContext.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithoutContext.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/test.jsp delete mode 100644 jonas/modules/itests/cargo/iiop/pom.xml delete mode 100644 jonas/modules/itests/cargo/irmi/pom.xml delete mode 100644 jonas/modules/itests/cargo/jrmp/pom.xml delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas290Test.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas292Test.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas96Test.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CargoTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/ClassLoaderTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CookieManager.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JDBCConnectionLeakTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSAddTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/TestCommons.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/VersioningTest.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/WebServicesAuditTestCase.java delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/resources/jonas-290.war delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/resources/jonas-292.jar delete mode 100644 jonas/modules/itests/cargo/jrmp/src/test/resources/org/ow2/jonas/itests/cargo/jrmp/soap-request-add.xml delete mode 100644 jonas/modules/itests/cargo/pom.xml delete mode 100644 jonas/modules/itests/cargo/security/pom.xml delete mode 100644 jonas/modules/itests/cargo/security/src/test/java/org/ow2/jonas/itests/cargo/jmx_security/JmxSecurityTest.java delete mode 100644 jonas/modules/itests/cargo/tomcat7/pom.xml delete mode 100644 jonas/modules/itests/intravm/pom.xml delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/JOnASLauncher.java delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/OSGiHttpServiceTest.java delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/resource/RegisterResourceTestActivator.java delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/RegisterServletTestActivator.java delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/SimpleTestServlet.java delete mode 100644 jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/workdir/TestWorkDir.java delete mode 100644 jonas/modules/itests/intravm/src/test/resources/index.html delete mode 100644 jonas/modules/itests/intravm/src/test/resources/test.html delete mode 100644 jonas/modules/itests/osgi/equinox/pom.xml delete mode 100644 jonas/modules/itests/osgi/felix/pom.xml delete mode 100644 jonas/modules/itests/osgi/knopflerfish/pom.xml delete mode 100644 jonas/modules/itests/osgi/pom.xml delete mode 100644 jonas/modules/itests/osgi/src/test/configuration/testng.xml delete mode 100644 jonas/modules/itests/pom.xml delete mode 100755 jonas/modules/libraries/externals/asm/pom.xml delete mode 100755 jonas/modules/libraries/externals/asm/src/main/resources/META-INF/asm.bnd delete mode 100644 jonas/modules/libraries/externals/javaee-api/pom.xml delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/assembly/assembly.xml delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/ContextFinder.java delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/TypeConstraintException.java delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/META-INF/javaee-api.bnd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_0.xsd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_1.xsd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.dtd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.xsd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd delete mode 100644 jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd delete mode 100644 jonas/modules/libraries/externals/jaxp-ri/pom.xml delete mode 100644 jonas/modules/libraries/externals/jaxp-ri/src/main/resources/META-INF/jaxp-ri.bnd delete mode 100644 jonas/modules/libraries/externals/monolog/pom.xml delete mode 100644 jonas/modules/libraries/externals/monolog/src/main/resources/META-INF/monolog.bnd delete mode 100755 jonas/modules/libraries/externals/neethi/pom.xml delete mode 100755 jonas/modules/libraries/externals/neethi/src/main/resources/META-INF/neethi.bnd delete mode 100644 jonas/modules/libraries/externals/pom.xml delete mode 100644 jonas/modules/libraries/externals/saaj-ri/pom.xml delete mode 100644 jonas/modules/libraries/externals/saaj-ri/src/main/java/com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.java delete mode 100644 jonas/modules/libraries/externals/saaj-ri/src/main/resources/META-INF/saaj-ri.bnd delete mode 100644 jonas/modules/libraries/externals/ws-security/pom.xml delete mode 100644 jonas/modules/libraries/externals/ws-security/src/main/resources/META-INF/ws-security.bnd delete mode 100644 jonas/modules/libraries/externals/xmlbeans/pom.xml delete mode 100644 jonas/modules/libraries/externals/xmlbeans/src/main/resources/META-INF/xmlbeans.bnd delete mode 100644 jonas/modules/libraries/jonas-audit-jms/pom.xml delete mode 100644 jonas/modules/libraries/jonas-audit-jms/src/main/java/org/ow2/jonas/audit/jms/interceptor/JMSClientInterceptor.java delete mode 100644 jonas/modules/libraries/jonas-audit-jms/src/main/resources/META-INF/jonas-audit-jms.bnd delete mode 100644 jonas/modules/libraries/jonas-bootstrap-loader/pom.xml delete mode 100644 jonas/modules/libraries/jonas-bootstrap-loader/src/main/java/org/ow2/jonas/lib/bootstrap/loader/JClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-bootstrap-loader/src/main/resources/META-INF/jonas-bootstrap-loader.bnd delete mode 100644 jonas/modules/libraries/jonas-commons/pom.xml delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/Bootstrap.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JFileFilter.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JProp.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JURLs.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/LoaderManager.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/RemoteClassLoaderSpi.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManager.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManagerException.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarList.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarListException.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/ExecutionResult.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/IExecution.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/RunnableHelper.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/AbsModuleClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ClientClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/EjbJarClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/FilteringClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/OSGiClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/SimpleWebappClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ThreadContextClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/WebappClassLoader.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/DirURLFactory.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/JarURLFactory.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/URLFactory.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/DirLocator.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/JarFileLocator.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/Locator.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/xml/FiltersDefinition.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/service/AbsServiceImpl.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Base64.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/BeanNaming.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Cmd.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ConfigurationConstants.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/DirFilter.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Env.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/I18n.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JJarFile.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JModule.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JNDIUtils.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JonasObjectName.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JoramObjectName.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Log.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ModuleNamingUtils.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/NetUtils.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/PropDump.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/XMLSerializer.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/windows/WinSysEnv.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/AbsCleanTask.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLog.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLogException.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/LogEntryImpl.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/resources/META-INF/jonas-commons.bnd delete mode 100644 jonas/modules/libraries/jonas-commons/src/main/resources/org/ow2/jonas/lib/loader/mapping/classloader-default-filtering-mapping.xml delete mode 100644 jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/cpmanager/JarListTestCase.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/loader/FilteringClassLoaderTestCase.java delete mode 100644 jonas/modules/libraries/jonas-commons/src/test/resources/test-app-filters.xml delete mode 100644 jonas/modules/libraries/jonas-commons/src/test/resources/test-default-filters.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/binding/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/binding/src/main/resources/jonas-datasources-1.0.xsd delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/api/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/api/src/main/java/org/ow2/jonas/datasource/deploy/deployable/api/DatasourceDeployable.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/impl/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/impl/src/main/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableImpl.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableTest.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/FileDeployableFactoryTest.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/resources/exemple-datasource.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/deploy/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/api/IDatasourceDeployer.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/impl/DatasourceDeployer.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestDatasourceDeployer.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestRarDeployer.java delete mode 100644 jonas/modules/libraries/jonas-datasources/deployer/src/test/resources/datasources.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/pom.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceValidator.java delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceXmlReader.java delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/IDatasourceXmlReader.java delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceReaderTest.java delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceValidatorTest.java delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-bad.xml delete mode 100644 jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-good.xml delete mode 100644 jonas/modules/libraries/jonas-deployment/pom.xml delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/lib/ClientDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/ApplicationClientRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasClientRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasSecurityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/wrapper/ClientManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/ApplicationClient.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasClient.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasSecurity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfiguration.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfigurationException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/lib/ClusterDaemonConfigurationManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ClusterDaemonRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/DiscoveryRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ServerRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/ClusterDaemon.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Discovery.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Server.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/AbsDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DescriptionGroupDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbLocalRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EnvEntryDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/HandlerDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/JndiEnvRefsGroupDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/MessageDestinationRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/PersistenceUnitRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceEnvRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/SecurityRoleRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JDigester.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JEntityResolverWithDigester.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JErrorHandler.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/AbsDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/DeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JEntityResolver.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSInput.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSResourceResolver.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JavaType.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/AnonymousQNameRule.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbLocalRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvEntryRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvironmentRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/HandlerRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/IconRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/InitParamRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JRuleSetBase.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasCustomParamRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEjbRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEnvironmentRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasInitParamRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasPortComponentRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceEnvRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasServiceRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/PortComponentRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/QNameRule.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceEnvRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/RunAsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceQnameRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceRefRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SoapHeaderRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/WsdlPortRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/util/ResourceHelper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsDescriptionElement.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsElement.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsEnvironmentElement.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasEnvironmentElement.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasParam.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/DescriptionGroupXml.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbLocalRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Element.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EnvEntry.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Handler.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Icon.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/InitParam.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JLinkedList.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JndiEnvRefsGroupXml.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasCallProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasEjbRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasInitParam.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasJndiEnvRefsGroupXml.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestination.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestinationRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasParam.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasPortComponentRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResource.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResourceEnv.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasServiceRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasStubProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestination.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestinationRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PersistenceUnitRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PortComponentRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Qname.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceEnvRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/RunAs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRole.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRoleRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ServiceRef.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/TopLevelElement.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMap.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMapException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/lib/DomainMapManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterDaemonRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/DomainRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/LocationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ServerRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/wrapper/DomainManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Cluster.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/ClusterDaemon.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Domain.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Location.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Server.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/JonasEarSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/lib/EarDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ApplicationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasApplicationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRoleMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ModuleRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/SecurityRoleRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/WebRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/wrapper/EarManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Application.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasApplication.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasSecurity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Module.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRole.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRoleMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Web.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigPropertyDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/BeanDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/CommonMethodDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb1_1.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb2.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationshipRoleDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityBmpDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp1Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp2Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmpDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp1Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp2Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ExcludeListDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldJdbcDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MessageDrivenDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodCmp2Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodJdbcCmp1Desc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodPermissionDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatefulDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatelessDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAbstractSchemaName.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAggregateSelectExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticFactor.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticTerm.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBetweenExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCmpPathExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberDeclaration.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionValuedPathExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTComparisonExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalFactor.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalTerm.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTDatetimeExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEJBQL.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEmptyCollectionComparisonExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEntityBeanExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFloatingPointLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFromClause.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningNumerics.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningStrings.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentificationVariable.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentifier.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInputParameter.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIntegerLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLikeExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitClause.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTNullComparisonExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByClause.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByItem.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTPath.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTRangeVariableDeclaration.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectClause.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedCmrPathExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedPathExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringExpression.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringLiteral.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTWhereClause.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.jjt delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQLConstants.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQLTokenManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQLTreeConstants.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQLVisitor.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/JJTEJBQLState.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/Node.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ParseException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/README delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/SimpleCharStream.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/SimpleNode.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/Token.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/TokenMgrError.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/bnf_ejbql_2_0.txt delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/bnf_ejbql_2_1.txt delete mode 100755 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/build.sh delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/lib/EjbDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/lib/util/ClusterUtil.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ActivationConfigPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ActivationConfigRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/AsContextRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/AssemblyDescriptorRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ClusterArrayPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ClusterPropertiesRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ClusterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ClusterSimplePropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/CmpFieldJdbcMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/CmpFieldRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/CmrFieldRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ContainerTransactionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/EjbJarRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/EjbRelationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/EjbRelationshipRoleRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/EnterpriseBeansRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/EntityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ExcludeListRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/FinderMethodJdbcMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/ForeignKeyJdbcMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/IorSecurityConfigRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JdbcMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasEjbJarRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasEjbRelationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasEjbRelationshipRoleRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasEntityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasInitParamRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasMessageDrivenDestinationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasMessageDrivenRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasMethodRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasRunAsMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/JonasSessionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/MessageDrivenDestinationRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/MessageDrivenRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/MethodParamsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/MethodPermissionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/MethodRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/PoolRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/QueryMethodRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/QueryRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/RelationshipRoleSourceRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/RelationshipsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/SasContextRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/SecurityIdentityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/SessionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/TransportConfigRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/rules/UseCallerIdentityRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/wrapper/EjbManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/ActivationConfig.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/ActivationConfigProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/AsContextMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/AssemblyDescriptor.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/CmpField.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/CmpFieldJdbcMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/CmrField.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/CommonEjb.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/CommonEjbXml.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/ContainerTransaction.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/EjbJar.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/EjbRelation.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/EjbRelationshipRole.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/EnterpriseBeans.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/Entity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/ExcludeList.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/FinderMethodJdbcMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/ForeignKeyJdbcMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/IorSecurityConfigMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JdbcMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasCommonEjb.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasCommonEjbXml.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasEjbJar.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasEjbRelation.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasEjbRelationshipRole.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasEntity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasInitParam.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasMessageDriven.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasMessageDrivenDestination.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasMethod.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasRunAsMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/JonasSession.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/MessageDriven.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/MessageDrivenDestination.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/Method.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/MethodParams.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/MethodPermission.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/Query.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/QueryMethod.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/RelationshipRoleSource.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/Relationships.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/SasContextMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/SecurityIdentity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/Session.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/TransportConfigMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/xml/UseCallerIdentity.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ActivationspecDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/AdminobjectDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/AuthenticationMechanismDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ConfigPropertyDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ConnectionDefinitionDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ConnectorDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ConnectorDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ConnectorSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/IconDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/InboundResourceadapterDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JdbcConnParamsDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasActivationspecDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasAdminobjectDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasConfigPropertyDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasConnectionDefinitionDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasConnectorDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasConnectorDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasConnectorSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/JonasSecurityMappingDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/LicenseDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/MessageadapterDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/MessagelistenerDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/OutboundResourceadapterDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/PoolParamsDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/RarDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/RarDeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/RequiredConfigPropertyDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/ResourceadapterDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/SecurityEntryDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/SecurityPermissionDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/TmConfigPropertyDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/TmParamsDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/Utility.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/lib/RarDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/ActivationspecRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/AdminobjectRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/AuthenticationMechanismRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/ConfigPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/ConnectionDefinitionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/ConnectorRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/IconRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/InboundResourceadapterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JdbcConnParamsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasActivationspecRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasAdminobjectRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasConfigPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasConnectionDefinitionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasConnectorRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/JonasSecurityMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/LicenseRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/MessageadapterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/MessagelistenerRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/OutboundResourceadapterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/PoolParamsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/RequiredConfigPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/ResourceadapterRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/SecurityEntryRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/SecurityPermissionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/TmConfigPropertyRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/rules/TmParamsRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/wrapper/RarManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Activationspec.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Adminobject.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/AuthenticationMechanism.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/ConfigProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/ConnectionDefinition.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Connector.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Icon.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/InboundResourceadapter.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JdbcConnParams.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasActivationspec.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasAdminobject.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasConfigProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasConnectionDefinition.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasConnector.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/JonasSecurityMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/License.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Messageadapter.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Messagelistener.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/OutboundResourceadapter.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/PoolParams.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/RequiredConfigProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/Resourceadapter.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/SecurityEntry.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/SecurityPermission.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/TmConfigProperty.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/rar/xml/TmParams.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/JonasWebAppDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/JonasWebAppSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/MethodDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/MethodsDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/Pattern.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/PatternEntry.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/SecurityConstraintListDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/SecurityRoleDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/ServletDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/TransportGuaranteeDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/WebAppDTDs.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/WebAppSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/WebContainerDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/WebContainerDeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/lib/WarDeployableMetadataFactoryHolder.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/lib/WebDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/AuthConstraintRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/DistributableRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/JonasServletRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/JonasWebAppRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/SecurityConstraintRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/ServletMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/ServletRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/UserDataConstraintRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/WebAppRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/rules/WebResourceCollectionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/wrapper/WebManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/AuthConstraint.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/JonasServlet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/JonasWebApp.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/SecurityConstraint.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/Servlet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/ServletMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/UserDataConstraint.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/WebApp.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/web/xml/WebResourceCollection.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/JaxRpcPortComponentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/JaxrpcMappingSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/JonasWsSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/MappingFile.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/PortComponentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/PortComponentDescFactory.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/PortComponentRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/SSBPortComponentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/ServiceDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/ServiceRefDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/WSDLFile.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/WSDeploymentDesc.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/WSDeploymentDescException.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/WsSchemas.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/lib/MappingFileManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/lib/WSDeploymentDescManager.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/AnonymousTypeQnameRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/JavaWsdlMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/JavaXmlTypeMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/JonasPortComponentRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/JonasWebserviceDescriptionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/JonasWebservicesRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/PackageMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/PortComponentRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/RootTypeQnameRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/ServiceImplBeanRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/VariableMappingRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/WebserviceDescriptionRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/rules/WebservicesRuleSet.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/wrapper/MappingFileManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/wrapper/WSManagerWrapper.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/JavaWsdlMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/JavaXmlTypeMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/JonasPortComponent.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/JonasWebserviceDescription.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/JonasWebservices.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/PackageMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/PortComponent.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/ServiceImplBean.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/VariableMapping.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/WebserviceDescription.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ws/xml/Webservices.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/META-INF/jonas-deployment.bnd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/XMLSchema.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/application-client_1_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/application-client_1_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/application-client_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/application-client_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_3_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_4_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_4_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/client/jonas-client_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/clusterd/jonas-clusterd_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/datatypes.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/domain/jonas-domain_4_7.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/domain/jonas-domain_4_9.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/domain/jonas-domain_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/domain/jonas-domain_5_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/application_1_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/application_1_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/application_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/application_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/jonas-application_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ear/jonas-application_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_1_1.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_2_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_2_0_ws.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_2_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_3_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/ejb-jar_3_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_2_4.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_2_5.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_2_ws.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_3_1.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_3_3_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_10.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_3.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_6.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_7.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_4_8.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_5_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ejb/jonas-ejb-jar_5_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/j2ee_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/j2ee_web_services_client_1_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/javaee_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/javaee_6.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/javaee_web_services_client_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/javaee_web_services_client_1_3.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas-clusterd_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas-deployment-plan_0_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas_j2ee_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas_j2ee_4_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas_j2ee_4_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas_j2ee_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/jonas_j2ee_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/connector_1_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/connector_1_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_3_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_4_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_4_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/rar/jonas-connector_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/configure_1_1.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/configure_1_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_2_6.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_3_1.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_3_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_4_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_4_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jonas-web-app_5_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jsp_2_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jsp_2_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/jsp_2_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-app_2_2.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-app_2_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-app_2_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-app_2_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-app_3_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-common_3_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-facesconfig_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/web/web-jsptaglibrary_2_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/I18n.properties delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/I18n_fr.properties delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/j2ee_jaxrpc_mapping_1_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/j2ee_jaxrpc_mapping_1_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/j2ee_web_services_1_0.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/j2ee_web_services_1_1.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/javaee_web_services_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/javaee_web_services_client_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas-webservices_3_3.dtd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_4_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_4_1_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_4_1_4.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_4_2.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_4_5.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/ws/jonas_j2ee_web_services_5_0.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/main/resources/org/ow2/jonas/deployment/xml.xsd delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/client/tests/ClientDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/client/tests/JonasClientDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/domain/tests/DomainMapTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/ear/tests/EarDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/ejb/tests/EJBDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/ejb/tests/JonasEJBDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/rar/tests/JonasRarDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/rar/tests/RarDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/tests/AbsDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/web/tests/JonasWebDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/web/tests/WebDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/ws/tests/JonasWsDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-deployment/src/test/java/org/ow2/jonas/deployment/ws/tests/WsDeploymentTest.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/pom.xml delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/src/main/java/org/ow2/jonas/lib/svc/JHandleIIOP.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/src/main/java/org/ow2/jonas/lib/svc/JHomeHandleIIOP.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/src/main/java/org/ow2/jonas/lib/svc/JMetaData.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/src/main/java/org/ow2/jonas/lib/svc/Utility.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container-svc/src/main/resources/META-INF/jonas-ejb-container-svc.bnd delete mode 100644 jonas/modules/libraries/jonas-ejb-container/pom.xml delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/BeanFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/CollectionEnum.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/Container.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/EJBInvocation.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/EntityCounters.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/ExceptionHelper.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/HomeFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JContainer.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityHandle.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityLocal.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityLocalHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntityRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitch.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchCRC.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchCRU.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchCRW.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchCS.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchCST.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchDB.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JEntitySwitchRO.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JHandleDelegate.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JHomeHandle.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JLocal.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JLocalHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JMdbEndpointFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JMdbFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JMessageDrivenBean.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JMessageEndpoint.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JMessageEndpointProxy.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JObjectInputStream.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JServiceEndpoint.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JServiceEndpointHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionHandle.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionLocal.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionLocalHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JSessionSwitch.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatefulContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatefulFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatefulInputStream.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatefulOutputStream.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatefulSwitch.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatelessContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatelessFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JStatelessSwitch.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JTimer.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JTimerHandle.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JTimerService.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JWrapper.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/JavaType.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/MarshallTool.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/MonitoringEvent.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/PermissionManager.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/PrincipalFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/Protocols.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/RequestCtx.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/Swapper.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/TraceEjb.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/TxListener.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/CMP2Bean.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/Coder.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/Collection.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/CollectionElement.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/FloatPkFieldMapping.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/GenClassElement.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/GenClassImpl.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/GenClassListener.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/JEntityContext.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/JormFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/JormType.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/MapperManager.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/MedorFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/PObject.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/PObjectHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/RdbFactory.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/RdbMappingBuilder.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/jorm/Set.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlAbstractVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlLimitVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlLimiterRange.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlOrderByVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlQueryFilterVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlQueryTreeHolder.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlSelectVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/EjbqlVariableVisitor.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/SqlDateFieldMapping.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/SqlTimeFieldMapping.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/java/org/ow2/jonas/lib/ejb21/sql/SqlTimestampFieldMapping.java delete mode 100644 jonas/modules/libraries/jonas-ejb-container/src/main/resources/META-INF/jonas-ejb-container.bnd delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/pom.xml delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/EntityBeanRefImpl.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepEntityHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepEntityLocal.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepEntityLocalHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepEntityRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulInputStream.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulLocal.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulLocalHome.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulObjectId.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulOutputStream.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatefulRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepStatelessRemote.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/JRepUtil.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/java/org/ow2/jonas/lib/ejb21/ha/StatefulBeanRefImpl.java delete mode 100644 jonas/modules/libraries/jonas-ejb2.1-ha/src/main/resources/META-INF/jonas-ejb2.1-ha.bnd delete mode 100644 jonas/modules/libraries/jonas-mbeans/pom.xml delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/J2EEServer.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/J2EEServerMBean.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/JavaVm.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/LogManager.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/LogManagerMBean.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/MBeansRegistration.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogBuffer.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogBufferMBean.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogManagement.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogManagementMBean.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogNotificationListener.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/LogRecordComparator.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/log/RecordFeeder.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/java/org/ow2/jonas/lib/jmbeans/monitoring/MemoryMonitoring.java delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/resources/META-INF/jonas-mbeans.bnd delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/resources/metadata.xml delete mode 100644 jonas/modules/libraries/jonas-mbeans/src/main/resources/org/ow2/jonas/lib/jmbeans/mbeans-descriptors.xml delete mode 100644 jonas/modules/libraries/jonas-naming/pom.xml delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/ComponentContext.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/ComponentNameParser.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/SingletonComponentContextFactory.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/SingletonNamingManager.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/URLFactory.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/java/javaURLContext.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/java/org/ow2/jonas/lib/naming/java/javaURLContextFactory.java delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/resources/META-INF/jonas-naming.bnd delete mode 100644 jonas/modules/libraries/jonas-naming/src/main/resources/metadata.xml delete mode 100644 jonas/modules/libraries/jonas-service-manager/pom.xml delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/DeployableEnumeration.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/RequireJOnASServicesHandler.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/ServiceItem.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/ServiceManagerImpl.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/ServiceTracker.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/java/org/ow2/jonas/lib/service/manager/ServiceUtil.java delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/resources/META-INF/jonas-service-manager.bnd delete mode 100644 jonas/modules/libraries/jonas-service-manager/src/main/resources/metadata.xml delete mode 100644 jonas/modules/libraries/jonas-timer/pom.xml delete mode 100644 jonas/modules/libraries/jonas-timer/src/main/java/org/ow2/jonas/lib/timer/TimerEvent.java delete mode 100644 jonas/modules/libraries/jonas-timer/src/main/java/org/ow2/jonas/lib/timer/TimerEventListener.java delete mode 100644 jonas/modules/libraries/jonas-timer/src/main/java/org/ow2/jonas/lib/timer/TimerManager.java delete mode 100644 jonas/modules/libraries/jonas-timer/src/main/java/org/ow2/jonas/lib/timer/TraceTimer.java delete mode 100644 jonas/modules/libraries/jonas-timer/src/main/resources/META-INF/jonas-timer.bnd delete mode 100644 jonas/modules/libraries/jonas-version/pom.xml delete mode 100644 jonas/modules/libraries/jonas-version/src/main/java/org/ow2/jonas/Version.java delete mode 100644 jonas/modules/libraries/jonas-version/src/main/resources/META-INF/jonas-version.bnd delete mode 100644 jonas/modules/libraries/management/domain/pom.xml delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/AuthenticationInformation.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/DeployAction.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/DomainMonitor.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/J2EEDomain.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/BaseCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/BaseClusterMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/cmi/CmiCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/cmi/CmiClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/cmi/CmiClusterMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/cmi/CmiClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/cmi/CmiClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ha/EjbHaCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ha/EjbHaClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ha/EjbHaClusterMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ha/EjbHaClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/ha/EjbHaClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/jk/JkCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/jk/JkClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/jk/JkClusterMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/jk/JkClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/jk/JkClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/logical/LogicalCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/logical/LogicalClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/logical/LogicalClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/logical/LogicalClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/tomcat/TomcatCluster.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/tomcat/TomcatClusterFactory.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/tomcat/TomcatClusterMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/tomcat/TomcatClusterMember.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/cluster/tomcat/TomcatClusterMemberMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/ConnectorUtils.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/JMXProxy.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/clusterd/ClusterDaemonProxy.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/clusterd/ClusterDaemonProxyMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/server/ServerProxy.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/server/ServerProxyMBean.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/java/org/ow2/jonas/lib/management/domain/proxy/server/ServerProxyProperties.java delete mode 100644 jonas/modules/libraries/management/domain/src/main/resources/META-INF/jonas-domain.bnd delete mode 100644 jonas/modules/libraries/management/extensions/pom.xml delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/AdminException.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/AdminHelper.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/AdminJmxHelper.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/BaseManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/BaseObjectName.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/ConnectorItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/JonasManagementRepr.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/LocalManagementContext.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/NameItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/RealmItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/RealmItemByNameComparator.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/CatalinaObjectName.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/J2EEObjectNames.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/J2eeMbeanItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/MbeanItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/ObjectNameItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/base/mbean/OwnerMbeanItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/cluster/ClusterManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/clusterdaemon/ClusterdaemonManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/container/ContainerManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/container/ejb/EjbItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/container/ejb/EjbItemByNameComparator.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/domain/DomainManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/manager/ManagementEntryPoint.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/server/ServerItem.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/server/ServerManagement.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/server/ServerMonitoring.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/util/ConnectorUtils.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/java/org/ow2/jonas/lib/management/extensions/util/FileManagementUtils.java delete mode 100644 jonas/modules/libraries/management/extensions/src/main/resources/META-INF/jonas-management-extensions.bnd delete mode 100644 jonas/modules/libraries/management/javaee/pom.xml delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/apache/commons/modeler/ManagedBean.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEDeployedObject.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEDeployedObjectMBean.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEManagedObject.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEManagedObjectMBean.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEModule.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEModuleMBean.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEResource.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEServerState.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2EEServiceState.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/J2eeObjectName.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/JSR77ManagementIdentifier.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/java/org/ow2/jonas/lib/management/javaee/ManagedObject.java delete mode 100644 jonas/modules/libraries/management/javaee/src/main/resources/META-INF/jonas-management-javaee.bnd delete mode 100644 jonas/modules/libraries/management/pom.xml delete mode 100644 jonas/modules/libraries/management/reconfig/pom.xml delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/IConfigurationActuator.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/IConfigurationData.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/PropertiesConfigurationData.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/ReconfigException.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/ReconfigManager.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/ReconfigManagerMBean.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/XMLConfigurationData.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/actuator/BaseConfigurationActuator.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/actuator/PropertiesConfigurationActuator.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/java/org/ow2/jonas/lib/management/reconfig/actuator/XMLConfigurationActuator.java delete mode 100644 jonas/modules/libraries/management/reconfig/src/main/resources/META-INF/jonas-management-reconfig.bnd delete mode 100644 jonas/modules/libraries/management/services/pom.xml delete mode 100644 jonas/modules/libraries/management/services/src/main/java/org/ow2/jonas/lib/management/services/JOnASServiceModelMBean.java delete mode 100644 jonas/modules/libraries/management/services/src/main/java/org/ow2/jonas/lib/management/services/ReconfigNotifications.java delete mode 100644 jonas/modules/libraries/management/services/src/main/resource/META-INF/jonas-management-services.bnd delete mode 100644 jonas/modules/libraries/management/services/src/main/resource/org/ow2/jonas/lib/management/services/mbeans-descriptors.xml delete mode 100644 jonas/modules/libraries/pom.xml delete mode 100644 jonas/modules/libraries/security/auth/pom.xml delete mode 100644 jonas/modules/libraries/security/auth/src/main/java/org/ow2/jonas/lib/security/auth/JGroup.java delete mode 100644 jonas/modules/libraries/security/auth/src/main/java/org/ow2/jonas/lib/security/auth/JPrincipal.java delete mode 100644 jonas/modules/libraries/security/auth/src/main/java/org/ow2/jonas/lib/security/auth/JRole.java delete mode 100644 jonas/modules/libraries/security/auth/src/main/java/org/ow2/jonas/lib/security/auth/JSigned.java delete mode 100644 jonas/modules/libraries/security/auth/src/main/java/org/ow2/jonas/lib/security/auth/JSubject.java delete mode 100644 jonas/modules/libraries/security/auth/src/main/resources/META-INF/jonas-security-auth.bnd delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/pom.xml delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2ClientInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2Const.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2Initializer.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2InterceptorException.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2IorInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/Csiv2ServerInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/ORBHelper.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/SecurityContextHelper.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/initializer/SecurityContextInitializer.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/iiop/initializer/SecurityContextInitializerException.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/interceptors/iiop/CorbaClientSecurityInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/interceptors/iiop/CorbaServerSecurityInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/interceptors/iiop/SecurityInitializer.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/java/org/ow2/jonas/security/interceptors/iiop/SecurityInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/resources/META-INF/jonas-sec-interceptors-iiop.bnd delete mode 100644 jonas/modules/libraries/security/interceptors/iiop/src/main/resources/metadata.xml delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/pom.xml delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/ClientSecurityInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/SecurityInitializer.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/SecurityServiceContext.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/ServerSecurityInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/ctxcheck/CtxCheckConfig.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/ctxcheck/Initializer.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/java/org/ow2/jonas/security/interceptors/jrmp/ctxcheck/ServerInterceptor.java delete mode 100644 jonas/modules/libraries/security/interceptors/jrmp/src/main/resources/META-INF/jonas-sec-interceptors-jrmp.bnd delete mode 100644 jonas/modules/libraries/security/interceptors/pom.xml delete mode 100644 jonas/modules/libraries/security/jacc-handlers/pom.xml delete mode 100644 jonas/modules/libraries/security/jacc-handlers/src/main/java/org/ow2/jonas/lib/security/jacc/handlers/JPolicyContextHandler.java delete mode 100644 jonas/modules/libraries/security/jacc-handlers/src/main/java/org/ow2/jonas/lib/security/jacc/handlers/JPolicyContextHandlerCurrent.java delete mode 100644 jonas/modules/libraries/security/jacc-handlers/src/main/java/org/ow2/jonas/lib/security/jacc/handlers/JPolicyContextHandlerData.java delete mode 100644 jonas/modules/libraries/security/jacc-handlers/src/main/resources/META-INF/jonas-security-jacc-handlers.bnd delete mode 100644 jonas/modules/libraries/security/jacc/pom.xml delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/AbsPermissionManager.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/PermissionManagerException.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicy.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicyConfiguration.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicyConfigurationFactory.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicyConfigurationKeeper.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicyException.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/JPolicyWrapper.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/java/org/ow2/jonas/lib/security/jacc/PolicyConfigurationFactoryWrapper.java delete mode 100644 jonas/modules/libraries/security/jacc/src/main/resources/META-INF/jonas-security-jacc.bnd delete mode 100644 jonas/modules/libraries/security/jacc/src/main/resources/org/ow2/jonas/lib/security/jacc/I18n.properties delete mode 100644 jonas/modules/libraries/security/pom.xml delete mode 100644 jonas/modules/libraries/security/propagation/pom.xml delete mode 100644 jonas/modules/libraries/security/propagation/src/main/java/org/ow2/jonas/lib/security/context/Marshalling.java delete mode 100644 jonas/modules/libraries/security/propagation/src/main/java/org/ow2/jonas/lib/security/context/SecurityContext.java delete mode 100644 jonas/modules/libraries/security/propagation/src/main/java/org/ow2/jonas/lib/security/context/SecurityCurrent.java delete mode 100644 jonas/modules/libraries/security/propagation/src/main/java/org/ow2/jonas/lib/security/mapping/JPolicyUserRoleMapping.java delete mode 100644 jonas/modules/libraries/security/propagation/src/main/resources/META-INF/jonas-security-propagation.bnd delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/pom.xml delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/src/main/java/org/ow2/jonas/tm/jotm/ots/OTSClientTransactionInterceptor.java delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/src/main/java/org/ow2/jonas/tm/jotm/ots/OTSInterceptor.java delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/src/main/java/org/ow2/jonas/tm/jotm/ots/OTSORBInitializer.java delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/src/main/java/org/ow2/jonas/tm/jotm/ots/OTSServerTransactionInterceptor.java delete mode 100644 jonas/modules/libraries/transaction/interceptors/iiop/src/main/resources/META-INF/jonas-trans-interceptors-iiop.bnd delete mode 100644 jonas/modules/libraries/transaction/interceptors/pom.xml delete mode 100644 jonas/modules/libraries/transaction/pom.xml delete mode 100644 jonas/modules/pom.xml delete mode 100644 jonas/modules/services/bootstrap/pom.xml delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/JOnASConfiguration.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/JOnASDeploymentPlanDeployer.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/PlatformMBeanServerDelegate.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/deploymentplan/JOnASDeploymentPlan.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/deploymentplan/JOnASDeploymentPlanMBean.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/repository/JOnASRepositories.java delete mode 100644 jonas/modules/services/bootstrap/src/main/java/org/ow2/jonas/services/bootstrap/repository/JOnASRepositoriesMBean.java delete mode 100644 jonas/modules/services/bootstrap/src/main/resources/META-INF/bootstrap.bnd delete mode 100644 jonas/modules/services/bootstrap/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/cdi-weld/pom.xml delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/IDeploymentBuilder.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/IWeldService.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/DefaultWeldService.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/WeldDeployableInfo.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/deployment/DefaultBeanDeploymentArchive.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/deployment/DefaultDeployment.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/deployment/DefaultDeploymentBuilder.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/ejb/JBusinessInterfaceDescriptor.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/ejb/JEjbDescriptor.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/resource/ApplicationResourceLoader.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/services/JOnASServletServices.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/standard/CDIAnnotationProcessor.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/tomcat/WeldContextCustomizer.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/java/org/ow2/jonas/cdi/weld/internal/tomcat/WeldLifeCycleListener.java delete mode 100644 jonas/modules/services/cdi-weld/src/main/resources/META-INF/jonas-cdi-weld.bnd delete mode 100644 jonas/modules/services/cdi-weld/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/DefaultWeldServiceTestCase.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/deployment/DefaultBeanDeploymentArchiveTestCase.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/deployment/DefaultDeploymentBuilderTestCase.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/deployment/UserTestBean.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/mock/MockBeanDeploymentArchive.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/java/org/ow2/jonas/cdi/weld/internal/mock/MockWeldService.java delete mode 100644 jonas/modules/services/cdi-weld/src/test/resources/library.jar delete mode 100644 jonas/modules/services/cmi/pom.xml delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/BundleContent.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/CmiServiceException.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/CmiServiceHelper.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/CmiServiceImpl.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/CmiServicePolicyStrategyManager.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/CmiServiceProperty.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/LoadBalancingListener.java delete mode 100644 jonas/modules/services/cmi/src/main/java/org/ow2/jonas/cmi/internal/event/BeanEventListener.java delete mode 100644 jonas/modules/services/cmi/src/main/resources/META-INF/jonas-cmi.bnd delete mode 100644 jonas/modules/services/cmi/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/deployable-monitor/pom.xml delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/DeployableMonitor.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/DeployableMonitorException.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/DeployableMonitorService.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/ExclusionFilenameFilter.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/LexicographicallyFileComparator.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/java/org/ow2/jonas/deployablemonitor/mbean/DeployableMonitorServiceMBean.java delete mode 100644 jonas/modules/services/deployable-monitor/src/main/resources/META-INF/jonas-deployable-monitor.bnd delete mode 100644 jonas/modules/services/deployable-monitor/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/deployable-monitor/src/main/resources/org/ow2/jonas/deployablemonitor/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/ejb/easybeans/pom.xml delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/config/easybeans-jonas.xml delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/EJB3CleanTask.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/EasyBeansDeployer.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/EasyBeansService.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/JOnASENCInterceptor.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/JOnASResourceAdapterFinder.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/JOnASSecurityContextWrapper.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/JOnASSecurityCurrent.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/java/org/ow2/jonas/ejb/easybeans/PrefixedNamingStrategy.java delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/resources/META-INF/jonas-ejb-easybeans.bnd delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/resources/easybeans-cluster-jonas.xml delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/ejb/easybeans/src/main/resources/org/ow2/jonas/ejb/easybeans/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/ejb/ejb-2.1/pom.xml delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/EJB21Deployer.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/JOnASEJBService.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/JOnASEJBServiceMBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/JarCleanTask.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/PrincipalFactoryImpl.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/delegate/HandleDelegateCCFDelegate.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/delegate/JTimerHandleDelegate.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/EJB.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/EJBModule.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/EntityBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/MessageDrivenBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/SessionBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/StatefulSessionBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/java/org/ow2/jonas/ejb2/internal/mbean/StatelessSessionBean.java delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/resources/META-INF/jonas-ejb-2.1.bnd delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/ejb/ejb-2.1/src/main/resources/org/ow2/jonas/ejb2/internal/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/ejb/pom.xml delete mode 100644 jonas/modules/services/jaxrs-jersey/pom.xml delete mode 100644 jonas/modules/services/jaxrs-jersey/src/main/java/org/ow2/jonas/jaxrs/jersey/internal/JerseyService.java delete mode 100644 jonas/modules/services/jaxrs-jersey/src/main/resources/META-INF/jaxrs-jersey.bnd delete mode 100644 jonas/modules/services/jaxrs-jersey/src/main/resources/META-INF/services/javax.ws.rs.ext.MessageBodyWriter delete mode 100644 jonas/modules/services/jaxrs-jersey/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jndi-interceptors/pom.xml delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/config/jndi-interceptors.xml delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/checker/impl/ResourceCheckerManager.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/AbsContextInterceptor.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/Interceptors.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/JNDIInterceptorsComponent.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/JNDIInterceptorsComponentException.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/audit/AuditSystemContextInterceptor.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/audit/AuditSystemContextInterceptorAdapter.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/datasource/ConnectionProxy.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/datasource/DataSourceLeakDetectorContextInterceptor.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/datasource/DatasourceWrapper.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/easybeans/ResourceCheckerConfigurationExtension.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/java/org/ow2/jonas/jndi/interceptors/impl/easybeans/ResourceCheckerInterceptor.java delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/resources/META-INF/jndi-interceptors.bnd delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/resources/org/ow2/jonas/jndi/interceptors/impl/mapping/jndi-interceptors-mapping.xml delete mode 100644 jonas/modules/services/jndi-interceptors/src/main/resources/org/ow2/jonas/jndi/interceptors/impl/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-audit/pom.xml delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/JOnASAuditServiceImpl.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/AuditComponentListener.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/AuditLogComponentMBean.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/AuditLogService.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/AuditLogServiceAdapter.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/AuditLogServiceException.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/NodeReport.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/NodeReportType.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/api/IAuditComponentListener.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/api/IAuditLogListener.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/pool/DatedFileLogPool.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/pool/FileLogPool.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/util/AuditLogReportHelper.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/logger/util/LogConfigurator.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/webauditor/filters/HttpAuditFilter.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/webauditor/filters/HttpAuditFilterAdapter.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/java/org/ow2/jonas/audit/internal/webauditor/report/WebInvocationAuditReportFactory.java delete mode 100644 jonas/modules/services/jonas-audit/src/main/resources/META-INF/jonas-audit.bnd delete mode 100644 jonas/modules/services/jonas-audit/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-audit/src/main/resources/org/ow2/jonas/audit/internal/logger/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-audit/src/main/resources/org/ow2/jonas/audit/internal/webauditor/filters/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-audit/src/test/java/org/ow2/jonas/audit/internal/webauditor/filters/HttpAuditFilterTestCase.java delete mode 100644 jonas/modules/services/jonas-carol-registry/pom.xml delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/carol/jndi/spi/VirtualJNDIContextFactory.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/carol/jndi/spi/VirtualJNDILookup.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/jonas/registry/carol/CarolRegistryService.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/jonas/registry/carol/delegate/JacORBPRODelegate.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/jonas/registry/carol/delegate/ORBCCFDelegate.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/jonas/registry/carol/osgi/CarolRegistryConfigurationPlugin.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/java/org/ow2/jonas/registry/carol/osgi/ConfigurationActivator.java delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/resources/META-INF/jonas-carol-registry.bnd delete mode 100644 jonas/modules/services/jonas-carol-registry/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-datasources/pom.xml delete mode 100644 jonas/modules/services/jonas-datasources/src/main/java/org/ow2/jonas/datasource/deployer/DatasourceDeployableRegistration.java delete mode 100644 jonas/modules/services/jonas-datasources/src/main/java/org/ow2/jonas/datasource/deployer/JonasDatasourceCleanTask.java delete mode 100644 jonas/modules/services/jonas-datasources/src/main/java/org/ow2/jonas/datasource/deployer/JonasDatasourceDeployer.java delete mode 100644 jonas/modules/services/jonas-datasources/src/main/resources/META-INF/jonas-services-datasource.bnd delete mode 100644 jonas/modules/services/jonas-datasources/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-db/base/pom.xml delete mode 100644 jonas/modules/services/jonas-db/base/src/main/java/org/ow2/jonas/db/base/AbsDBServiceImpl.java delete mode 100644 jonas/modules/services/jonas-db/base/src/main/java/org/ow2/jonas/db/base/AbsDBServiceImplMBean.java delete mode 100644 jonas/modules/services/jonas-db/base/src/main/java/org/ow2/jonas/db/base/User.java delete mode 100644 jonas/modules/services/jonas-db/base/src/main/resources/META-INF/jonas-db-base.bnd delete mode 100644 jonas/modules/services/jonas-db/hsql/pom.xml delete mode 100644 jonas/modules/services/jonas-db/hsql/src/main/java/org/ow2/jonas/db/hsqldb/HsqlDBServiceImpl.java delete mode 100644 jonas/modules/services/jonas-db/hsql/src/main/resources/META-INF/jonas-db-hsql.bnd delete mode 100644 jonas/modules/services/jonas-db/hsql/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-db/pom.xml delete mode 100644 jonas/modules/services/jonas-dbm/pom.xml delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/DBMConstants.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/JOnASDataBaseManagerService.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/JOnASDataBaseManagerServiceMBean.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/ConnectionManager.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/IConnection.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/JConnection.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/JManagedConnection.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/JStatement.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/Pool.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/cm/naming/DataSourceFactory.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/mbean/JDBCDataSource.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/mbean/JDBCDataSourceMBean.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/mbean/JDBCDriver.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/java/org/ow2/jonas/dbm/internal/mbean/JDBCResource.java delete mode 100644 jonas/modules/services/jonas-dbm/src/main/resources/META-INF/jonas-dbm.bnd delete mode 100644 jonas/modules/services/jonas-dbm/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-dbm/src/main/resources/org/ow2/jonas/dbm/internal/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-discovery/base/pom.xml delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/BaseDiscovery.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/DiscHelper.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/DiscoveryServiceImplMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/DuplicateServerNameException.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/comm/ClusterdDiscoveryEvent.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/comm/DiscEvent.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/comm/DiscGreeting.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/java/org/ow2/jonas/discovery/base/comm/DiscMessage.java delete mode 100644 jonas/modules/services/jonas-discovery/base/src/main/resources/META-INF/jonas-discovery-base.bnd delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/pom.xml delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/DiscRunnable.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/JgroupsDiscoveryServiceImpl.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/JgroupsDiscoveryServiceImplMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/CommDiscoveryInfo.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/DiscCommManager.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/api/DiscComm.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/api/DiscCommReceiver.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/exception/StopDiscException.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/handler/DiscCommGreetingHandler.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/comm/handler/DiscCommHandlerImpl.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/manager/DiscoveryManager.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/utils/Data.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/utils/DiscoveryUtils.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/utils/IDiscoveryChannel.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/java/org/ow2/jonas/discovery/jgroups/utils/JGroupsDiscoveryUtils.java delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/resources/META-INF/jonas-discovery-jgroups.bnd delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-discovery/jgroups/src/main/resources/org/ow2/jonas/discovery/jgroups/utils/jgroups-discovery.xml delete mode 100644 jonas/modules/services/jonas-discovery/multicast/pom.xml delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/MulticastDiscoveryServiceImpl.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/MulticastDiscoveryServiceImplMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/client/DiscoveryClient.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/client/DiscoveryClientListener.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/client/DiscoveryClientMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/comm/DiscoveryComm.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/comm/DiscoveryGreetingListener.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/comm/DiscoveryGreetingResponder.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/enroller/DiscoveryListener.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/enroller/Enroller.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/enroller/EnrollerMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/manager/DiscoveryManager.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/manager/DiscoveryManagerMBean.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/java/org/ow2/jonas/discovery/internal/utils/DiscoveryHelper.java delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/resources/META-INF/jonas-discovery-multicast.bnd delete mode 100644 jonas/modules/services/jonas-discovery/multicast/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-discovery/pom.xml delete mode 100644 jonas/modules/services/jonas-ear/pom.xml delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/AppClientModuleInfo.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/EARModule.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/EarCleanTask.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/EarDeployer.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/JOnASEARService.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/JOnASEARServiceMBean.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/mbean/AppClientModule.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/mbean/EARModuleIdentifier.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/mbean/EARModuleMBean.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/java/org/ow2/jonas/ear/internal/mbean/Ear.java delete mode 100644 jonas/modules/services/jonas-ear/src/main/resources/META-INF/jonas-ear.bnd delete mode 100644 jonas/modules/services/jonas-ear/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-ear/src/main/resources/org/ow2/jonas/ear/internal/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-ejb-ha/pom.xml delete mode 100644 jonas/modules/services/jonas-ejb-ha/src/main/java/org/ow2/jonas/ha/internal/HaServiceImpl.java delete mode 100644 jonas/modules/services/jonas-ejb-ha/src/main/resources/META-INF/jonas-ejb-ha.bnd delete mode 100644 jonas/modules/services/jonas-ejb-ha/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-extension-loader/pom.xml delete mode 100644 jonas/modules/services/jonas-extension-loader/src/main/java/org/ow2/jonas/extension/loader/Bnd.java delete mode 100644 jonas/modules/services/jonas-extension-loader/src/main/java/org/ow2/jonas/extension/loader/Bundlizable.java delete mode 100644 jonas/modules/services/jonas-extension-loader/src/main/java/org/ow2/jonas/extension/loader/ExtensionLoaderComponent.java delete mode 100644 jonas/modules/services/jonas-extension-loader/src/main/resources/META-INF/jonas-extension-loader.bnd delete mode 100644 jonas/modules/services/jonas-extension-loader/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-jmx/pom.xml delete mode 100644 jonas/modules/services/jonas-jmx/src/main/java/org/ow2/jonas/jmx/internal/BaseJMXService.java delete mode 100644 jonas/modules/services/jonas-jmx/src/main/java/org/ow2/jonas/jmx/internal/JOnASJMXService.java delete mode 100644 jonas/modules/services/jonas-jmx/src/main/resources/META-INF/jonas-jmx.bnd delete mode 100644 jonas/modules/services/jonas-jmx/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-mail/pom.xml delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/JOnASMailService.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/AbstractJavaMail.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/JavaMailMimePartDS.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/JavaMailMimePartDSFactory.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/JavaMailSession.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/JavaMailSessionFactory.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/lib/JAuthenticator.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/mbean/JavaMailMimePartDSResource.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/mbean/JavaMailResource.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/mbean/JavaMailResourceMBean.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/java/org/ow2/jonas/mail/internal/factory/mbean/JavaMailSessionResource.java delete mode 100644 jonas/modules/services/jonas-mail/src/main/resources/META-INF/jonas-mail.bnd delete mode 100644 jonas/modules/services/jonas-mail/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-mail/src/main/resources/org/ow2/jonas/mail/internal/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-resource-monitor/pom.xml delete mode 100644 jonas/modules/services/jonas-resource-monitor/src/main/java/org/ow2/jonas/resourcemonitor/internal/JOnASResourceMonitorService.java delete mode 100644 jonas/modules/services/jonas-resource-monitor/src/main/java/org/ow2/jonas/resourcemonitor/internal/JOnASResourceMonitorServiceMBean.java delete mode 100644 jonas/modules/services/jonas-resource-monitor/src/main/resources/META-INF/jonas-resource-monitor.bnd delete mode 100644 jonas/modules/services/jonas-resource-monitor/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-resource/pom.xml delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/IJDBCConnection.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/JOnASResourceService.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/JOnASResourceServiceMBean.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/RARDeployer.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/Rar.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/ResourceBootstrapContext.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/ResourceServiceConstants.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/ResourceUtility.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/SQLManager.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/ConnectionManagerImpl.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/ConnectionManagerPoolParams.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/ConnectionResourceHint.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/ManagedConnectionInfo.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/jta/JResourceManagerEvent.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/jta/JSynchronization.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/jta/LocalXAResource.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/sql/PreparedStatementWrapper.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/cm/sql/SQLConnectionInvocationHandler.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/ArchiveConfigMBean.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAActivationSpec.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAAdminObject.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAConnectionFactory.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAConnectionFactoryMBean.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAManagedConnectionFactory.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/JCAResource.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/README delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/RarConfigMBean.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/ResourceAdapter.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/mbean/ResourceAdapterModule.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/naming/ResourceObjectFactory.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/Pool.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/PoolItemStats.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/PoolMatchFactory.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/PoolProvider.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/PoolResource.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/lib/HArrayPool.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/java/org/ow2/jonas/resource/internal/pool/lib/HArrayPoolMonitor.java delete mode 100644 jonas/modules/services/jonas-resource/src/main/resources/META-INF/jonas-resource.bnd delete mode 100644 jonas/modules/services/jonas-resource/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-resource/src/main/resources/org/ow2/jonas/resource/internal/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-security/pom.xml delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/callback/CertificateCallback.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/callback/DialogCallbackHandler.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/callback/LoginCallbackHandler.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/callback/NoInputCallbackHandler.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/CRLLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/ClientLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/JDirectResourceLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/JResourceLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/RemoteLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/RoleBasedAuthorizationModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/auth/spi/SignLoginModule.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/AbsSecurityContextHelper.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/JResources.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/JonasSecurityServiceImpl.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/JonasSecurityServiceImplMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/PolicyProvider.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/SecurityServiceException.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/AbstractJResource.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceDS.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceDSMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceLDAP.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceLDAPMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceMemory.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceMemoryMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceRemote.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/factory/JResourceRemoteImpl.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/lib/HashHelper.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/lib/XML.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/Group.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/GroupMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/LDAPUser.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/Role.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/RoleMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/User.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/internal/realm/principal/UserMBean.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/lib/JErrorHandler.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/lib/JResourceManager.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/rules/JDSRuleSet.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/rules/JLDAPRuleSet.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/rules/JMemoryRuleSet.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/ws/SecurityContextHelper.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/ws/initializer/SecurityContextInitializer.java delete mode 100644 jonas/modules/services/jonas-security/src/main/java/org/ow2/jonas/security/ws/initializer/SecurityContextInitializerException.java delete mode 100644 jonas/modules/services/jonas-security/src/main/resources/META-INF/jonas-security.bnd delete mode 100644 jonas/modules/services/jonas-security/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-security/src/main/resources/org/ow2/jonas/security/internal/realm/factory/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-security/src/main/resources/org/ow2/jonas/security/realm/dtd/jonas-realm_1_0.dtd delete mode 100644 jonas/modules/services/jonas-tm-jotm/pom.xml delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/JOTMTransactionManager.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/JOTMTransactionResourceManager.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/JOTMTransactionService.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/UserTransactionFactory.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/delegate/ServerTransactionCCFDelegate.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/delegate/TransactionCCFDelegate.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/delegate/UserTransactionCCFDelegate.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/mbean/JTAResource.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/java/org/ow2/jonas/tm/jotm/mbean/JTAResourceMBean.java delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/resources/META-INF/jonas-tm-jotm.bnd delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-tm-jotm/src/main/resources/org/ow2/jonas/tm/jotm/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/jonas-workcleaner/pom.xml delete mode 100644 jonas/modules/services/jonas-workcleaner/src/main/java/org/ow2/jonas/workcleaner/internal/JOnASWorkCleanerService.java delete mode 100644 jonas/modules/services/jonas-workcleaner/src/main/java/org/ow2/jonas/workcleaner/internal/JOnASWorkCleanerServiceMBean.java delete mode 100644 jonas/modules/services/jonas-workcleaner/src/main/java/org/ow2/jonas/workcleaner/internal/WorkCleanerTimer.java delete mode 100644 jonas/modules/services/jonas-workcleaner/src/main/resources/META-INF/jonas-workcleaner.bnd delete mode 100644 jonas/modules/services/jonas-workcleaner/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/jonas-workmanager/pom.xml delete mode 100644 jonas/modules/services/jonas-workmanager/src/main/java/org/ow2/jonas/workmanager/internal/JOnASWorkManagerService.java delete mode 100644 jonas/modules/services/jonas-workmanager/src/main/java/org/ow2/jonas/workmanager/internal/JWorkManager.java delete mode 100644 jonas/modules/services/jonas-workmanager/src/main/java/org/ow2/jonas/workmanager/internal/JWorkManagerMBean.java delete mode 100644 jonas/modules/services/jonas-workmanager/src/main/resources/META-INF/jonas-workmanager.bnd delete mode 100644 jonas/modules/services/jonas-workmanager/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/pom.xml delete mode 100644 jonas/modules/services/smartclient/pom.xml delete mode 100644 jonas/modules/services/smartclient/src/main/java/org/ow2/jonas/smartclient/internal/SmartclientServiceImpl.java delete mode 100644 jonas/modules/services/smartclient/src/main/java/org/ow2/jonas/smartclient/internal/SmartclientServiceImplMBean.java delete mode 100644 jonas/modules/services/smartclient/src/main/java/org/ow2/jonas/smartclient/internal/SmartclientServiceRegistryComponent.java delete mode 100644 jonas/modules/services/smartclient/src/main/resources/META-INF/jonas-smartclient.bnd delete mode 100644 jonas/modules/services/smartclient/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/validation/hibernate-validation/pom.xml delete mode 100644 jonas/modules/services/validation/hibernate-validation/src/main/java/org/ow2/jonas/validation/hibernate/JOnASHibernateValidationServiceImpl.java delete mode 100644 jonas/modules/services/validation/hibernate-validation/src/main/resources/META-INF/jonas-validation-hibernate.bnd delete mode 100644 jonas/modules/services/validation/hibernate-validation/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/validation/pom.xml delete mode 100644 jonas/modules/services/versioning/pom.xml delete mode 100644 jonas/modules/services/versioning/src/main/java/org/ow2/jonas/versioning/contexts/VirtualJNDIBinding.java delete mode 100644 jonas/modules/services/versioning/src/main/java/org/ow2/jonas/versioning/contexts/VirtualJNDIBindingMBean.java delete mode 100644 jonas/modules/services/versioning/src/main/java/org/ow2/jonas/versioning/internal/VersioningServiceImpl.java delete mode 100644 jonas/modules/services/versioning/src/main/java/org/ow2/jonas/versioning/internal/VersioningServiceImplMBean.java delete mode 100644 jonas/modules/services/versioning/src/main/resources/META-INF/jonas-versioning.bnd delete mode 100644 jonas/modules/services/versioning/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/web-container/base/pom.xml delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/BaseWebContainerService.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/BaseWebContainerServiceMBean.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/WARDeployer.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/War.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/WarCleanTask.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/WarMBean.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/lib/PermissionManager.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/osgi/httpservice/DefaultHttpContextImpl.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/osgi/httpservice/HttpServiceFactory.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/osgi/httpservice/JOnASHttpService.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/osgi/httpservice/OSGIResourcesServlet.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/ContextInfo.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/CopyingStream.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/HTTPResponse.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/HttpOnDemandProxy.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/HttpOnDemandProxyException.java delete mode 100644 jonas/modules/services/web-container/base/src/main/java/org/ow2/jonas/web/base/proxy/HttpSocketHandler.java delete mode 100644 jonas/modules/services/web-container/base/src/main/resources/META-INF/jonas-web-container-base.bnd delete mode 100644 jonas/modules/services/web-container/base/src/main/resources/org/ow2/jonas/web/base/proxy/wait.gif delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/pom.xml delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/java/org/ow2/jonas/web/jetty6/AnnotationProcessorServletHandler.java delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/java/org/ow2/jonas/web/jetty6/Jetty6Service.java delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/java/org/ow2/jonas/web/jetty6/security/JettyPrincipal.java delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/java/org/ow2/jonas/web/jetty6/security/Realm.java delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/resources/META-INF/jonas-web-container-jetty-6.1.bnd delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/resources/jetty6-web.xml delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/resources/jetty6.xml delete mode 100644 jonas/modules/services/web-container/jetty/6.1.x/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/web-container/jetty/pom.xml delete mode 100644 jonas/modules/services/web-container/pom.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/pom.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/apache/catalina/connector/Connector.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/apache/catalina/connector/Response.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/apache/catalina/startup/TldConfig.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/apache/catalina/util/DefaultAnnotationProcessor.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/CheckOpenResourcesValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/FilterValveWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/JCatalinaRuleSet.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/JOnASContextConfig.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/JOnASStandardContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ResetAuthenticationValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/Tomcat6Service.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/custom/ContextCustomizer.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/handler/DirContextURLStreamHandlerService.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/loader/NoSystemAccessWebappClassLoader.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/osgi/httpservice/HttpServiceFactory.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/osgi/httpservice/HttpServiceImpl.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/osgi/httpservice/OSGIContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/osgi/httpservice/OSGIServletContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/osgi/httpservice/OSGIWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/security/Realm.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/tx/TransactionValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/AbsVirtualContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/ContextFinder.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/FilteredOutputStream.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/VersionedPathBean.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/VersioningValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/VirtualContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/VirtualContextMBean.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/versioning/WebModuleContext.java delete mode 100755 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/EndpointInstanceListener.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/URLUtils.java delete mode 100755 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/WSContextLifecycleListener.java delete mode 100755 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/WSDeployment.java delete mode 100755 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/WebServiceEndpointStandardWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/WebservicesWebDeployer.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/security/SecureWebDeploymentDescBuilder.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/strategy/EjbJarContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/strategy/FixedContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/java/org/ow2/jonas/web/tomcat6/ws/strategy/ServiceContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/patches/Response.patch delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/META-INF/jonas-web-container-tomcat-6.0.bnd delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/org/ow2/jonas/web/tomcat6/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/tomcat6-context.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/tomcat6-server.xml delete mode 100644 jonas/modules/services/web-container/tomcat/6.0.x/src/main/resources/tomcat6-web.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/pom.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/apache/AnnotationProcessor.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/CheckOpenResourcesValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/FilterValveWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/JCatalinaRuleSet.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/JOnASContextConfig.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/JOnASStandardContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ResetAuthenticationValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/Tomcat7Service.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/custom/ContextCustomizer.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/handler/DirContextURLStreamHandlerService.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/loader/NoSystemAccessWebappClassLoader.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/osgi/httpservice/HttpServiceFactory.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/osgi/httpservice/HttpServiceImpl.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/osgi/httpservice/OSGIContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/osgi/httpservice/OSGIServletContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/osgi/httpservice/OSGIWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/security/Realm.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/tx/TransactionValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/AbsVirtualContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/ContextFinder.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/EmptyServlet.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/FilteredOutputStream.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/VersionedPathBean.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/VersioningValve.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/VirtualContext.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/VirtualContextMBean.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/versioning/WebModuleContext.java delete mode 100755 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/EndpointInstanceListener.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/URLUtils.java delete mode 100755 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/WSContextLifecycleListener.java delete mode 100755 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/WSDeployment.java delete mode 100755 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/WebServiceEndpointStandardWrapper.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/WebservicesWebDeployer.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/security/SecureWebDeploymentDescBuilder.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/strategy/EjbJarContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/strategy/FixedContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/java/org/ow2/jonas/web/tomcat7/ws/strategy/ServiceContextNamingStrategy.java delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/patches/Response.patch delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/META-INF/jonas-web-container-tomcat-7.0.bnd delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/org/ow2/jonas/web/tomcat7/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/tomcat7-context.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/tomcat7-server.xml delete mode 100644 jonas/modules/services/web-container/tomcat/7.0.x/src/main/resources/tomcat7-web.xml delete mode 100644 jonas/modules/services/web-container/tomcat/pom.xml delete mode 100644 jonas/modules/services/webservices/axis/pom.xml delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/AxisService.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JAxisServiceFactory.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JAxisServlet.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JCall.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JOnASEJBProvider.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JService.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JServiceProxy.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JServletEngineConfigurationFactory.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/JonasHandler.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/NoopProvider.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/QSUpdateServiceWSDLHandler.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/URLMapper.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/WSDDJOnASEJBProvider.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/java/org/ow2/jonas/ws/axis/WSDDNoopProvider.java delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/META-INF/jonas-webservices-axis.bnd delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/META-INF/services/org.apache.axis.EngineConfigurationFactory delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/org/ow2/jonas/ws/axis/I18n.properties delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/org/ow2/jonas/ws/axis/client-config.wsdd delete mode 100644 jonas/modules/services/webservices/axis/src/main/resources/org/ow2/jonas/ws/axis/server-config.wsdd delete mode 100644 jonas/modules/services/webservices/axis2/pom.xml delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/Axis2Service.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/JOnASJaxWsImplementorInfo.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/JaxWsImplementorInfo.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2EJBWebserviceEndpoint.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2EjbMessageReceiver.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2EndpointController.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2EndpointLifecycleManager.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2EndpointLifecycleManagerFactory.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/Axis2ServiceDispatcher.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/EasybeansAxis2Invoker.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/ext/Axis2ConfigurationExtension.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/ext/JAXWS20ResourceInjector.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/ext/LifeCycleCallback.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/easybeans/ext/WebServiceContextInjectionHandler.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/http/Axis2RequestResponseTransport.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/http/Axis2TransportInfo.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/http/AxisServiceGenerator.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/http/WSDLQueryHandler.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/Axis2WSEndpoint.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/WebservicesContainer.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/AttachmentDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/DescriptionFactoryImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/DescriptionUtils.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/EndpointDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/FaultDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/OperationDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/ParameterDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/PortInfoImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/ServiceDescriptionImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/jaxws/description/impl/URIResolverImpl.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/Axis2Java2WSDLBuilder.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/AxisService2WSDL11.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/JAXWSTools.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/JAXWSUtils.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/SimpleURIResolver.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/SimpleWSDLLocator.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/java/org/ow2/jonas/ws/axis2/util/WSDLUtils.java delete mode 100644 jonas/modules/services/webservices/axis2/src/main/resources/META-INF/axis2.xml delete mode 100644 jonas/modules/services/webservices/axis2/src/main/resources/META-INF/jonas-webservices-axis2.bnd delete mode 100644 jonas/modules/services/webservices/axis2/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/ejb3/JAXWSBean.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/ejb3/JAXWSGreeter.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/pojo/HelloService.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/pojo/word/Word.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/test/Axis2HandlerChainTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/axis2/test/Axis2WSEndpointTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/jaxws/http/servlet/test/ServletInputStreamForTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/jaxws/http/servlet/test/ServletOutputStreamForTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/jaxws/http/servlet/test/ServletRequestAdapterForTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/jaxws/http/servlet/test/ServletResponseAdapterForTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/java/org/ow2/jonas/ws/jaxws/http/servlet/test/StatelessSessionFactoryForTest.java delete mode 100644 jonas/modules/services/webservices/axis2/src/test/resources/WEB-INF/handlers.xml delete mode 100644 jonas/modules/services/webservices/axis2/src/test/resources/WEB-INF/test_service_pojo.xml delete mode 100644 jonas/modules/services/webservices/axis2/src/test/resources/WEB-INF/wsdl/TestPojo.wsdl delete mode 100644 jonas/modules/services/webservices/cxf/pom.xml delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/BusCreator.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/CXFService.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/JOnASJaxWsImplementorInfo.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/JOnASJaxWsServerFactoryBean.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/client/CxfWebServiceRefBuilder.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/client/factory/CxfWebServiceRefObjectFactory.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/client/factory/HandlerResolverDelegate.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/CXFEJBWebserviceEndpoint.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/CXFResourceInjector.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/EasyBeansInvokerFactory.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/EasyBeansJaxWsServerFactoryBean.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/EasyBeansJaxWsServiceFactoryBean.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/EasyBeansMethodInvoker.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/ext/CXFConfigurationExtension.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/ext/JAXWS20ResourceInjector.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/ext/LifeCycleCallback.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/easybeans/ext/WebServiceContextInjectionHandler.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/http/JOnASDestination.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/http/JOnASHTTPTransportFactory.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/http/JOnASWSDLQueryHandler.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/jaxws/CXFWSEndpoint.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/jaxws/WebservicesContainer.java delete mode 100644 jonas/modules/services/webservices/cxf/src/main/java/org/ow2/jonas/ws/cxf/util/WSDLUtils.java delete mode 100755 jonas/modules/services/webservices/cxf/src/main/resources/META-INF/jonas-webservices-cxf.bnd delete mode 100755 jonas/modules/services/webservices/cxf/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/webservices/jaxrpc/pom.xml delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/base/ClientJServiceFactoryFinder.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/base/JAXRPCService.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/base/JAXRPCServiceMBean.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/factory/JServiceFactory.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/mbean/AbstractWebServiceMBean.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/mbean/Handler.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/mbean/PortComponent.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/mbean/Service.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/java/org/ow2/jonas/ws/jaxrpc/mbean/WebServicesObjectName.java delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/resources/META-INF/jonas-webservices-jaxrpc.bnd delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/resources/org/ow2/jonas/ws/jaxrpc/base/I18n.properties delete mode 100644 jonas/modules/services/webservices/jaxrpc/src/main/resources/org/ow2/jonas/ws/jaxrpc/mbean/mbeans-descriptors.xml delete mode 100755 jonas/modules/services/webservices/jaxws/pom.xml delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/JAXWSService.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/JAXWSServiceMBean.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/JAXWSWebservicesContainer.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/JAXWSWebservicesModule.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/audit/AbstractJaxwsAuditHandler.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/audit/JaxwsAuditReport.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/audit/JaxwsClientAuditHandler.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/audit/JaxwsEndpointAuditHandler.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/base/audit/mbean/AuditHandlerAdapter.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/client/JAXWSWebServiceRefBuilder.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/client/factory/JAXWSWebServiceRefObjectFactory.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/easybeans/EasyBeansContextNamingInfo.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/easybeans/EasyBeansSecurityConstraint.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/easybeans/naming/WebServiceRefExtensionListener.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/HandlerResourceProcessor.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/JOnASHandlerResolver.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/PostConstructProcessor.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/builder/AnnotationHandlerChainBuilder.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/builder/BindingUtils.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/builder/DescriptorHandlerChainBuilder.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/builder/HandlerBuilder.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/handler/builder/HandlerChainBuilder.java delete mode 100755 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/JAXWSServlet.java delete mode 100755 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/ServletRequestAdapter.java delete mode 100755 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/http/servlet/ServletResponseAdapter.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/java/org/ow2/jonas/ws/jaxws/util/JAXWSClassUtils.java delete mode 100755 jonas/modules/services/webservices/jaxws/src/main/resources/META-INF/jonas-webservices-jaxws.bnd delete mode 100644 jonas/modules/services/webservices/jaxws/src/main/resources/org/ow2/jonas/ws/jaxws/base/audit/mbean/mbeans-descriptors.xml delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/axis2/pojo/HelloService.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/axis2/pojo/word/Word.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/axis2/test/handlers/GreeterLogicalHandler.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/axis2/test/handlers/GreeterSOAPHandler.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/base/audit/JaxwsClientAuditHandlerTestCase.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/base/audit/JaxwsEndpointAuditHandlerTestCase.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/java/org/ow2/jonas/ws/jaxws/test/JOnASHandlerResolverTest.java delete mode 100644 jonas/modules/services/webservices/jaxws/src/test/resources/WEB-INF/handlers.xml delete mode 100644 jonas/modules/services/webservices/pom.xml delete mode 100644 jonas/modules/services/webservices/publish/pom.xml delete mode 100644 jonas/modules/services/webservices/publish/src/main/java/org/ow2/jonas/ws/publish/internal/file/FileWSDLPublisher.java delete mode 100644 jonas/modules/services/webservices/publish/src/main/java/org/ow2/jonas/ws/publish/internal/file/JDefinitionWriter.java delete mode 100644 jonas/modules/services/webservices/publish/src/main/java/org/ow2/jonas/ws/publish/internal/manager/DefaultWSDLPublisherManager.java delete mode 100644 jonas/modules/services/webservices/publish/src/main/java/org/ow2/jonas/ws/publish/internal/manager/WSDLPublisherFactory.java delete mode 100644 jonas/modules/services/webservices/publish/src/main/java/org/ow2/jonas/ws/publish/internal/registry/RegistryWSDLPublisher.java delete mode 100644 jonas/modules/services/webservices/publish/src/main/resources/META-INF/jonas-webservices-publish.bnd delete mode 100755 jonas/modules/services/webservices/publish/src/main/resources/metadata.xml delete mode 100644 jonas/modules/services/webservices/publish/src/main/resources/org/ow2/jonas/ws/publish/internal/manager/I18n.properties delete mode 100644 jonas/modules/services/webservices/publish/src/main/resources/org/ow2/jonas/ws/publish/internal/manager/mbeans-descriptors.xml delete mode 100644 jonas/modules/tools/commands/pom.xml delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/CLIArgument.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/CLIConstants.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/ClientAdmin.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/UtilAdmin.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/util/ExceptionUtils.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/util/JMXConnectionHelper.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/admin/util/PrintUtils.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/check/CheckEnv.java delete mode 100644 jonas/modules/tools/commands/src/main/java/org/ow2/jonas/commands/wrapper/GenerateWrapperConf.java delete mode 100644 jonas/modules/tools/eclipse-compiler/pom.xml delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/CompilationContext.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/CompilerError.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/JOnASCompilationUnit.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/JOnASCompiler.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/JOnASCompilerRequestor.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/JOnASNameEnvironment.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/java/org/ow2/jonas/eclipse/compiler/Util.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/main/resources/META-INF/eclipse-compiler.bnd delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/input/test/UpperCase/UpperCasePackage.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/input/test/inheritance/Inheritance.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/input/test/multiple/Multiple.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/input/test/simple/Simple.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/java/org/ow2/jonas/eclipse/compiler/EclipseCompilerTestCase.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/java/test/inheritance/Interface.java delete mode 100644 jonas/modules/tools/eclipse-compiler/src/test/java/test/inheritance/SuperClass.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/pom.xml delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/EjbJar.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/GenICTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/JOnASBaseTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/JOnASClusterConfigTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/JOnASTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/JProperty.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/ServerDeploy.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/objectweb/jonas/ant/WsGenTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/BootstrapTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/DescriptorHandler.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/EJBDeploymentTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/EjbJar.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/GenICTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/GenericDeploymentTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/HotDeploymentTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/InnerClassFilenameFilter.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JOnASAntTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JOnASBaseTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JOnASClusterConfigTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JOnASTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JProperty.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JonasDeploymentTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/JonasHotDeploymentTool.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/PropertyStatement.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/ServerDeploy.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/WsGenTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/CarolCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/ClusterDaemon.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/ClusterTasks.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/CmiCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/Common.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/DbCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/DbmCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/DeployableCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/DeploymentCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/Director.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/DiscoveryCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/EjbLevel.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/HaCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/JdbcRaCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/JdbcXmlCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/JmsCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/LibCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/MailCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/ModJk.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/Script.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/ServicesCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/WebContainerCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/WebLevel.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/cluster/WsdlPublishCluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Archives.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/BaseTaskItf.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Carol.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Cmi.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Db.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Dbm.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/DeployableSelector.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/DeployableTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/DeploymentPlans.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Discovery.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Ha.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JCopy.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JEcho.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JMkdir.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JReplace.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JTouch.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JdbcRa.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JdbcXml.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Jms.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JmsRa.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/JonasProperties.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Lib.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Mail.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/PropertyTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Replace.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Services.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/Tasks.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/WebContainer.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/XMLSerializerTask.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/jaas/JResourceLoginModule.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/jaas/Jaas.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/jaas/JaasEntry.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/jaas/LoginModule.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Ajp.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Cluster.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Director.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Http.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Https.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Jetty.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/web/Tomcat.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/wsdl/File.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/wsdl/Uddi.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/java/org/ow2/jonas/ant/jonasbase/wsdl/WsdlPublish.java delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/resources/META-INF/jonas-ant-tasks.bnd delete mode 100644 jonas/modules/tools/jonas-ant-tasks/src/main/resources/org/ow2/jonas/ant/antlib.xml delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/pom.xml delete mode 100755 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/ClusterDaemon.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/ClusterDaemonAdmin.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/ClusterDaemonException.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/ClusterDaemonMBean.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/ClusterDaemonTools.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/mbean/JMXRemoteException.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/mbean/JMXRemoteHelper.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/mbean/MBeanServerException.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/java/org/ow2/jonas/cluster/daemon/mbean/MBeanServerHelper.java delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/main/resources/META-INF/jonas-cluster-daemon.bnd delete mode 100644 jonas/modules/tools/jonas-cluster-daemon/src/resources/META-INF/jonas-cluster-daemon.bnd delete mode 100644 jonas/modules/tools/launchers/felix-launcher/pom.xml delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/DefaultConfigurationProvider.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/IConfigurationProvider.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/JOnAS.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/VersionNumber.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/util/IOUtils.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/util/JOnASUtils.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/java/org/ow2/jonas/launcher/felix/util/Maven2Utils.java delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/resources/META-INF/felix-launcher.bnd delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/defaults.properties delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/gateway.properties delete mode 100644 jonas/modules/tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/javase-profiles.properties delete mode 100644 jonas/modules/tools/launchers/pom.xml delete mode 100644 jonas/modules/tools/maven/genic-plugin/pom.xml delete mode 100644 jonas/modules/tools/maven/genic-plugin/src/main/java/org/ow2/jonas/tool/maven/genic/plugin/GenICMojo.java delete mode 100644 jonas/modules/tools/maven/pom.xml delete mode 100644 jonas/modules/tools/maven/wsgen-plugin/pom.xml delete mode 100644 jonas/modules/tools/maven/wsgen-plugin/src/main/java/org/ow2/jonas/tool/maven/wsgen/plugin/WsGenMojo.java delete mode 100644 jonas/modules/tools/migration-jboss/pom.xml delete mode 100644 jonas/modules/tools/migration-jboss/src/main/java/org/ow2/jonas/migration/jboss/Migrate.java delete mode 100644 jonas/modules/tools/migration-jboss/src/main/java/org/ow2/jonas/migration/jboss/Transformer.java delete mode 100644 jonas/modules/tools/migration-jboss/src/main/java/org/ow2/jonas/migration/jboss/jboss.xml delete mode 100644 jonas/modules/tools/migration-jboss/src/main/java/org/ow2/jonas/migration/jboss/jbosscmp-jdbc.xml delete mode 100644 jonas/modules/tools/migration-jboss/src/main/java/org/ow2/jonas/migration/jboss/jonas-ejb-jar.xml delete mode 100644 jonas/modules/tools/pom.xml delete mode 100644 jonas/pom.xml delete mode 100644 jonas_doc/src/resources/images/JonasSmall.png delete mode 100644 jonas_tests/.classpath delete mode 100644 jonas_tests/.cvsignore delete mode 100644 jonas_tests/.project delete mode 100644 jonas_tests/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jonas_tests/README delete mode 100644 jonas_tests/applications/.cvsignore delete mode 100644 jonas_tests/applications/build.xml delete mode 100644 jonas_tests/applications/src/org/objectweb/jonas/applications/clients/apps/mejb/F_MonitoringEndpoint.java delete mode 100644 jonas_tests/applications/src/org/objectweb/jonas/applications/util/JApplicationsTestCase.java delete mode 100644 jonas_tests/build.dtd delete mode 100644 jonas_tests/build.properties delete mode 100644 jonas_tests/build.xml delete mode 100644 jonas_tests/cluster/build-client.xml delete mode 100644 jonas_tests/cluster/build.properties delete mode 100644 jonas_tests/cluster/build.xml delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/AbsTestClient.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/Checker.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/ClientTask.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/JOnASTask.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/RunnableTask.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/TestEnum.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/Worker.java delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/build-jc.properties delete mode 100644 jonas_tests/cluster/commons/src/org/ow2/jonas/cluster/test/common/defConf.properties delete mode 100644 jonas_tests/cluster/etc/footer.html delete mode 100644 jonas_tests/cluster/etc/header.html delete mode 100644 jonas_tests/cluster/etc/style/environment/junit-noframes.xsl delete mode 100644 jonas_tests/cluster/etc/style/include/junit-noframes.xsl delete mode 100644 jonas_tests/cluster/etc/style/standalone/junit-noframes.xsl delete mode 100644 jonas_tests/cluster/etc/style/standalone_perfs/compare.xsl delete mode 100644 jonas_tests/cluster/etc/style/standalone_perfs/junit-noframes.xsl delete mode 100644 jonas_tests/cluster/etc/suiteslist.html delete mode 100644 jonas_tests/cluster/logging/logging.properties delete mode 100644 jonas_tests/cluster/resources/cmi-client.xml delete mode 100644 jonas_tests/cluster/resources/test-config.properties delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/j2ee14/ClientTest.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/j2ee14/SampleCluster2Test.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/javaee5/ClientTest.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/javaee5/SampleCluster3Test.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/javaee5/client/ClientException.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/javaee5/client/ClientFOSFSB.java delete mode 100644 jonas_tests/cluster/samples/src/org/ow2/jonas/cluster/test/javaee5/client/ClientLBRemote.java delete mode 100644 jonas_tests/cluster/testing-applications/build.xml delete mode 100644 jonas_tests/cluster/testing-applications/jmx/build.xml delete mode 100644 jonas_tests/cluster/testing-applications/jmx/etc/META-INF/MANIFEST.MF delete mode 100644 jonas_tests/cluster/testing-applications/jmx/etc/application.xml delete mode 100644 jonas_tests/cluster/testing-applications/jmx/etc/cmi-jmx-client-application.xml delete mode 100644 jonas_tests/cluster/testing-applications/jmx/etc/cmi-jmx-client-jonas.xml delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/client/ClientJMXTester.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/client/JMXTest.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/common/ClientBase.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/common/ClientUtility.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/ClusterFangBean.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/ClusterJMXTester.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/ClusterJMXTesterBean.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/LocalClusterJMXTester.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/RemoteClusterFangBean.java delete mode 100644 jonas_tests/cluster/testing-applications/jmx/src/main/java/org/ow2/jonas/cluster/test/jmx/ejb/RemoteClusterJMXTester.java delete mode 100644 jonas_tests/cluster/testing-applications/jonas-common.xml delete mode 100644 jonas_tests/cluster/tools/maven-ant-tasks-2.0.9.jar delete mode 100644 jonas_tests/conformance/.cvsignore delete mode 100644 jonas_tests/conformance/.gitignore delete mode 100644 jonas_tests/conformance/build.xml delete mode 100644 jonas_tests/conformance/build_hotdeploy.xml delete mode 100644 jonas_tests/conformance/src/hotdeploy1/Helper.java delete mode 100644 jonas_tests/conformance/src/hotdeploy1/HotDeploy.java delete mode 100644 jonas_tests/conformance/src/hotdeploy1/HotDeployHome.java delete mode 100644 jonas_tests/conformance/src/hotdeploy1/HotDeploySLR.java delete mode 100644 jonas_tests/conformance/src/hotdeploy1/hotdeploy.xml delete mode 100644 jonas_tests/conformance/src/hotdeploy1/jonas-hotdeploy.xml delete mode 100644 jonas_tests/conformance/src/hotdeploy2/Helper.java delete mode 100644 jonas_tests/conformance/src/hotdeploy2/HotDeploy.java delete mode 100644 jonas_tests/conformance/src/hotdeploy2/HotDeployHome.java delete mode 100644 jonas_tests/conformance/src/hotdeploy2/HotDeploySLR.java delete mode 100644 jonas_tests/conformance/src/hotdeploy2/hotdeploy.xml delete mode 100644 jonas_tests/conformance/src/hotdeploy2/jonas-hotdeploy.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/Personne.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/PersonneEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/PersonneEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/PersonneHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/annuaire.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/annuaire/jonas-annuaire.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/Appli.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/AppliHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/AppliLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/AppliLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/AppliSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/Dao.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/Met.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/MetHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/MetLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/MetLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/MetSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/applimet.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/applimet/jonas-applimet.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/AccountEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/AccountLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/AccountLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/Manager.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/ManagerHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/ManagerSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/bank.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bank/jonas-bank.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountCommon.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountE.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountEHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountS.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountSHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AccountSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/AppException.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/BTAccountSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/beanexc.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/beanexc/jonas-beanexc.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bmt/Moscone.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bmt/MosconeHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bmt/MosconeST.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bmt/bmt.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/bmt/jonas-bmt.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/Identity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/IdentityEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/IdentityHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/cluster.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/cluster/jonas-cluster.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/Account.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/AccountEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/AccountEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/AccountHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/BDate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/BDateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/BDateHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/E4Query.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/E4QueryEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/E4QueryHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/Person.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/PersonEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/PersonEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/PersonHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/Simple.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/SimpleEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/SimpleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/SimpleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/SimpleHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/ebasic.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/jonas-ebasic.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/pkautoObject.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/pkautoObjectEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/pkautoObjectEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ebasic/pkautoObjectHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressDO.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/AddressRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CabinBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CabinHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CabinHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CabinLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CabinRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCardBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCardHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCardHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCardLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCompanyBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCompanyHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CreditCompanyLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CruiseBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CruiseHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CruiseHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CruiseLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CruiseRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CustomerBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CustomerHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CustomerHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CustomerLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/CustomerRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/Name.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/PhoneBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/PhoneHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/PhoneHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/PhoneLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ReservationBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ReservationHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ReservationHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ReservationLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ReservationRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceSessionHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceSessionLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceSessionLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SequenceSessionSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SessionTestBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SessionTestHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/SessionTestRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ShipBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ShipHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ShipHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ShipLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ShipRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/ejbql.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/ejbql/jonas-ejbql.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/EtypeBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/ByteArray.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/ByteArrayEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/ByteArrayEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/ByteArrayHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/bytearray.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/bytearray/jonas-bytearray.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/Obigdecimal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/ObigdecimalEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/ObigdecimalEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/ObigdecimalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/jonas-obigd.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obigd/obigd.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/Oboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/ObooleanEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/ObooleanEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/ObooleanHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/jonas-oboolean.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oboolean/oboolean.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/Obyte.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/ObyteEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/ObyteEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/ObyteHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/jonas-obyte.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/obyte/obyte.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/Odouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/OdoubleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/OdoubleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/OdoubleHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/jonas-odouble.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/odouble/odouble.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/Ofloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/OfloatEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/OfloatEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/OfloatHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/jonas-ofloat.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat/ofloat.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/Ofloat4pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/Ofloat4pkEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/Ofloat4pkEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/Ofloat4pkHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/jonas-ofloat4pk.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ofloat4pk/ofloat4pk.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/Ointeger.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/OintegerEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/OintegerEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/OintegerHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/jonas-ointeger.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/ointeger/ointeger.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/Olong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/OlongEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/OlongEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/OlongHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/jonas-olong.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/olong/olong.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/Oobj.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/OobjEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/OobjEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/OobjHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/jonas-oobj.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oobj/oobj.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/Name.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/Oser.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/OserEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/OserEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/OserHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/jonas-oser.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oser/oser.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/Oshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/OshortEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/OshortEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/OshortHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/jonas-oshort.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/oshort/oshort.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/Osqldate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/OsqldateEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/OsqldateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/OsqldateHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/jonas-osqldate.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqldate/osqldate.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/Osqltime.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/OsqltimeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/OsqltimeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/OsqltimeHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/jonas-osqltime.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqltime/osqltime.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/Osqlts.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/OsqltsEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/OsqltsEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/OsqltsHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/jonas-osqlts.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts/osqlts.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Osqlts4pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Osqlts4pkEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Osqlts4pkHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Osqlts4pkHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Osqlts4pkLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/Pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/jonas-osqlts4pk.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/osqlts4pk/osqlts4pk.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/outildate/Outildate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/outildate/OutildateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/outildate/OutildateHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/outildate/jonas-outildate.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/outildate/outildate.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/Pboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/PbooleanEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/PbooleanEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/PbooleanHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/jonas-pboolean.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pboolean/pboolean.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/Pdouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/PdoubleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/PdoubleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/PdoubleHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/jonas-pdouble.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pdouble/pdouble.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/Pfloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/PfloatEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/PfloatEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/PfloatHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/jonas-pfloat.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pfloat/pfloat.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/Plong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/PlongEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/PlongEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/PlongHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/jonas-plong.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/plong/plong.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/Pshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/PshortEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/PshortEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/PshortHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/jonas-pshort.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/etype/pshort/pshort.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/File.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FileEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FileHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FileLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FileLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Folder.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FolderHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/FolderSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper2EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper2Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper2LocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper3EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper3Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/Paper3LocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/PaperEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/PaperEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/PaperLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/PaperLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/folder.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/folder/jonas-folder.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/BasicIdPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/DerivedUserEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/IdPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/Itf1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/Person.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/PersonEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/PersonHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/PersonImpl.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/Top.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/User.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/UserEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/UserHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/UserImpl.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/inherit.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/inherit/jonas-inherit.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/connectorCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/connectorCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/connectorCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/j2eeca.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/jonas-j2eeca.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/runtimeCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/runtimeCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/runtimeCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/securedCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/securedCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/securedCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/transactedCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/transactedCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/j2eeca/transactedCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/ConnectorCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/ConnectorCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/ConnectorCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/InboundCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/InboundCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/InboundCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/RuntimeCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/RuntimeCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/RuntimeCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/SecuredCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/SecuredCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/SecuredCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/TransactedCA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/TransactedCAHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/TransactedCASLR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/Utility.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/jca15.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jca15/jonas-jca15.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbc/Manager.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbc/ManagerHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbc/ManagerSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbc/jdbc.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbc/jonas-jdbc.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA1EBRBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA1Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA2EBRBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/JdbcRA2Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/jdbcra/jonas-JdbcRA.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/Entry.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/EntryHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/EntrySL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/SimpleSessionSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/Target.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSFHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSFLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSLHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/TargetSLLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/jonas-local.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/local/local.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Info.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Listener.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/MRecord.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/MRecordEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/MRecordHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/MRecordPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Q1txreqMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Q2txnotMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Q3commitMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Q3rollbackMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_1Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_1SF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_2Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/Sender1_2SF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/SenderHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/SenderSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/T1txnotMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/T1txreqMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/T2txnotMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/T2txreqMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/jonas-message.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/message/message.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressDO.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/AddressR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CarBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CarHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CarHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CarL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CarR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CreditCardBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CreditCardHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CreditCardHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CreditCardL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CreditCardR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CustomerBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CustomerHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CustomerHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CustomerL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/CustomerR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InsuranceBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InsuranceHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InsuranceHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InsuranceL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InsuranceR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InvoiceBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InvoiceHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InvoiceHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InvoiceL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/InvoiceR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/Name.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/PhoneBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/PhoneHL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/PhoneHR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/PhoneL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/PhoneR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/cascade.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/cascade/jonas-cascade.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/DassHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P1EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P1HomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P1HomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P1Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P1Remote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P2EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P2HomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P2HomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P2Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P2Remote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3HomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3HomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3PK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P3Remote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4HomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4HomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4PK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/P4Remote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/dass.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/dass/jonas-dass.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/People.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/PeopleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/PeopleHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/PeopleHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/PeopleLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/family.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/family/jonas-family.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDException.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLECHILDPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENT.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTException.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/SIMPLEPARENTPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/Session2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/Session2Bean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/Session2Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/Session2Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/Session2LocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/jonas-lcp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/lcp/lcp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/jonas-mnb.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnb/mnb.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/jonas-mnu.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mnu/mnu.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/jonas-mou.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/mou/mou.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/Front.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/FrontHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/FrontSFR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/Product.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/jonas-omb.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omb/omb.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/jonas-omu.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/omu/omu.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/Front.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/FrontHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/FrontSFR.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/jonas-oob.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oob/oob.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/jonas-oou.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/oou/oou.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/APK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/jonas-pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkcomp/pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/beans/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/beans/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/itf/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/jonas-pkg.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/pkg/pkg.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/PersonEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/PersonHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/PersonHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/PersonLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/PersonRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/Util.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/jonas-rcycle.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/rcycle/rcycle.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/Attribute.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/AttributeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/AttributeHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/Main.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/MainEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/MainHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/jonas-remon.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/remon/remon.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/PK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/jonas-s1pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s1pkcomp/s1pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/Pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/jonas-s2pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s2pkcomp/s2pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/AEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/AHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/AHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/ALocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/ARemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/BEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/BHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/BHomeRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/BLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/BRemote.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/Pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/jonas-s3pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/s3pkcomp/s3pkcomp.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceEJB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceSessionBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceSessionLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceSessionLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceSessionUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/SequenceUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TestFacade.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TestFacadeBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TestFacadeEJB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TestFacadeHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TestFacadeUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorEJB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiemorValue.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyEJB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TiephyValue.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierEJB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierUtil.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/TierValue.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/jonas-tier.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relation/tier/tier.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relatives/RelativeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relatives/RelativeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relatives/RelativeLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relatives/jonas-relatives.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/relatives/relatives.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/RSuite.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/RemoteRunner.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/RemoteRunnerHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/RemoteRunnerSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/jonas-remoterunner.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/remoterunner/remoterunner.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseCommon.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseE.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseEHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseS.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseSHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/BaseSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Derived.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/DerivedHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/DerivedLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/DerivedLocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/DerivedSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Entity1Bean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Entity1Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Entity1LocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Listener.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session1Bean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session1Home.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session2Bean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session2Local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/Session2LocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/jonas-secured.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/secured/secured.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceSes.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceSesHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/SequenceSesSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoHomeLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoSes.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoSesHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/WoSesSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/jonas-sequence.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/sequence/sequence.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/Simple.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleCommon.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleEHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleELocalHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleLocal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleSHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SimpleSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/SynchroSimple.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/jonas-transacted.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/transacted/transacted.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/worker/Worker.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/worker/WorkerHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/worker/WorkerSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/worker/jonas-worker.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/beans/worker/worker.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_bank.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_bankLoad.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_bankLwrite.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_bankRead.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_bankWrite.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/A_thread.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/C_distribution.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_Cluster.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_Frontal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_FrontalCMP2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_Jdbc.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_Sequence.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCRC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCRCpf.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCRW.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCS.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCST.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankCSpf.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankDB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankDBpf.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/F_bankRO.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/G_Frontal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/G_bankCRW.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/G_bankCS.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bank.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bankCRC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bankCRW.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bankCS.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bankCST.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_bankCSpf.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/distribution/S_distribution.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_AdvancedHomeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_BasicHomeInterface.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_BasicHomeInterfaceEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_Cmp2Util.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeByteArray.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeObigdecimal.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeObyte.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOdouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOfloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOfloat4pk.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOinteger.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOlong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOobj.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOser.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOsqldate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOsqltime.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOsqlts.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypeOutildate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypePboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypePdouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypePfloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypePlong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_EtypePshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_Handle.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_Isolation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_PKDate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_Timer.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_VariousPKEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_mnb.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_mnu.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_mou.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_omb.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_omu.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_oob.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/A_oou.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/B_AdvancedHomeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/B_BasicHomeInterface.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/B_Isolation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_AdvancedHomeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_BasicHomeInterface.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_Ejbql.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_EtypeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_EtypeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_Handle.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_Isolation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_PkAuto.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_Relation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_VariousPK.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_cmp1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/C_entity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_AdvancedHomeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_AdvancedHomeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_BasicEjbqlEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_BasicHomeInterfaceEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_BasicHomeInterfaceEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_BasicHomeInterfaceEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_BasicHomeSharedEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Cascade.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_ConEnlist.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Dass.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EjbqlEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeByteArrayEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeByteArrayEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObigdecimalEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObigdecimalEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObooleanEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObooleanEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObyteEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeObyteEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOdoubleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOdoubleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOfloat4pkEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOfloatEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOfloatEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOintegerEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOintegerEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOlongEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOlongEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOobjEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOserEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOserEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOshortEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOshortEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqldateEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqldateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqltimeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqltimeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqlts4pkEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqltsEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOsqltsEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypeOutildateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePbooleanEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePbooleanEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePdoubleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePdoubleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePfloatEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePfloatEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePlongEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePlongEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePshortEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_EtypePshortEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_FamilyEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_HandleEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_HandleEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_HandleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Inherit.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_IsModified.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_IsolationEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_IsolationEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_IsolationEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_MultiRelation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_PKDateEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_PkAutoEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_PkAutoEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_RcycleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation2_mouEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation_lcpEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation_pkcompEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation_s1pkcompEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation_s2pkcompEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Relation_s3pkcompEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_Remon.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_TierEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_TimerEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_TimerEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_VariousPKEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_VariousPKEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mnb_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mnb_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mnu_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mnu_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mou_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_mou_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_omb_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_omb_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_omu_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_omu_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_oob_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_oob_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_oou_CRW_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/F_oou_CS_EC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_AdvancedHomeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_AdvancedHomeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_BasicHomeInterfaceEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_IsolationEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_MultiRelation.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_mnbEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_mnuEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_mouEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_ombEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_omuEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_oobEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/G_Relation_oouEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/S_BasicEjbqlEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/S_RcycleEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/entity/S_entity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/A_Catcher.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/A_CatcherEntity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/A_CatcherSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/C_CatcherEntity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/C_CatcherSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/C_exception.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherBMT.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/F_CatcherSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/exception/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/hotdeploy/C_hotdeploy.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/hotdeploy/F_EjbJarHotDeploy.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/C_connector.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/C_j2eeca.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/C_runtime.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/C_security.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/C_transaction.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/F_connectorTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/F_runtimeTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/F_securityTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/F_transactionTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/F_xatransactionTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/j2eeca/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_connector.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_inbound.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_jca15.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_runtime.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_security.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/C_transaction.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_Worker.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_connectorTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_inboundTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_runtimeTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_securityTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_transactionTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/F_xatransactionTest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jca15/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jdbcra/C_JOnAS_jdbcXA.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jdbcra/F_JdbcRATest.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jdbcra/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/C_jms.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/F_BasicMDB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/F_NoBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/F_RollbackMDB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/F_TestsWithBMT.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/jms/G_BasicMDB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/A_ClientView.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/C_ClientView.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/C_local.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/F_ClientViewSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/F_ClientViewSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/local/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/management/C_management.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/management/F_Connectors.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/management/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/A_AccessControl.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/B_AccessControl.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/C_AccessControl.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/C_security.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/F_AccessControlEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/F_AccessControlEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/F_AccessControlSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/F_RunAs.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/security/G_AccessControlSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/A_ClientView.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/B_ClientView.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/C_ClientView.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/C_session.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/F_Applimet.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/F_ClientViewNoTxSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/F_ClientViewSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/F_ClientViewSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/F_Smt.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/G_ClientViewNoTxSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/G_ClientViewSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/G_ClientViewSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/session/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/suite/C_suite.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/A_Timer.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/A_TimerEntity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/A_TimerSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/C_timer.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/F_TimerEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/F_TimerEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/F_TimerFromSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/F_TimerMD.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/timer/F_TimerSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/A_TxAttrSession.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/A_TxAttribute.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/A_TxAttributeEntity.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/B_TxAttribute.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/C_TxAttribute.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/C_transaction.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_BeanManagedTx.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_BeanToBeanTx.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_BeanToLocalTx.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_ContManagedTx.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_EntityCMT.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_Jotm.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_State.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeEB.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeEC.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeEC2.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeSF.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/F_TxAttributeSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/G_TxAttributeSY.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/clients/transaction/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/DBEnv.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/DBEnvHome.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/DBEnvSL.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/README delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tannuaire.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tapplimet.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tbeanexc.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tbmt.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tbytearray.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tcluster.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tebasic.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tfolder.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tinherit.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tjdbc.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tjdbcra.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tlcp.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tmanager.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tmessage.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tmou.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tobigd.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Toboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tobyte.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Todouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tofloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tointeger.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tolong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tomu.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Toser.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Toshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tosqldate.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tosqltime.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tosqlts.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tpboolean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tpdouble.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tpfloat.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tplong.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tpshort.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Trcycle.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Tsecured.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Ttier.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/Ttransacted.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/jonas-tables.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/tables/tables.xml delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/templates/C_templates.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/templates/F_Suite_1.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/util/Env.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/util/JBean.java delete mode 100644 jonas_tests/conformance/src/org/objectweb/jonas/jtests/util/JTestCase.java delete mode 100644 jonas_tests/deployment/build.xml delete mode 100644 jonas_tests/deployment/src/DDTest.java delete mode 100755 jonas_tests/deployment/test.sh delete mode 100644 jonas_tests/doc/common.css delete mode 100644 jonas_tests/doc/index.html delete mode 100644 jonas_tests/etc/footer.html delete mode 100644 jonas_tests/etc/header.html delete mode 100644 jonas_tests/etc/style/environment/junit-noframes.xsl delete mode 100644 jonas_tests/etc/style/include/junit-noframes.xsl delete mode 100644 jonas_tests/etc/style/standalone/junit-noframes.xsl delete mode 100644 jonas_tests/etc/style/standalone_perfs/compare.xsl delete mode 100644 jonas_tests/etc/style/standalone_perfs/junit-noframes.xsl delete mode 100644 jonas_tests/etc/suiteslist.html delete mode 100644 jonas_tests/examples/.cvsignore delete mode 100644 jonas_tests/examples/base/.gitignore delete mode 100644 jonas_tests/examples/base/examples/README delete mode 100644 jonas_tests/examples/base/examples/alarm/README delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmData.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmListenerBean.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmManager.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmRecord.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmRecordBean.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/AlarmRecordHome.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/Debug.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/Profil.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/View.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/ViewBean.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/ViewHome.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/ViewProxy.java delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/alarm.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/beans/org/objectweb/alarm/beans/jonas-alarm.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/build.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/client/org/objectweb/alarm/AlarmGenerator.java delete mode 100644 jonas_tests/examples/base/examples/alarm/db1.prp delete mode 100644 jonas_tests/examples/base/examples/alarm/etc/alarm.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/etc/application.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/etc/jonas-alarm.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/etc/jonas-web.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/etc/web.xml delete mode 100644 jonas_tests/examples/base/examples/alarm/src/org/objectweb/alarm/Sender.java delete mode 100644 jonas_tests/examples/base/examples/alarm/web/generator.html delete mode 100644 jonas_tests/examples/base/examples/alarm/web/images/alarmArchi.gif delete mode 100644 jonas_tests/examples/base/examples/alarm/web/images/jetty.png delete mode 100644 jonas_tests/examples/base/examples/alarm/web/images/logo_jonas.jpg delete mode 100644 jonas_tests/examples/base/examples/alarm/web/images/return.gif delete mode 100644 jonas_tests/examples/base/examples/alarm/web/images/tomcat.gif delete mode 100644 jonas_tests/examples/base/examples/alarm/web/index.html delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/createfilter.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/current.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/list.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/remove.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/removefilter.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/setfilter.jsp delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/top.html delete mode 100644 jonas_tests/examples/base/examples/alarm/web/secured/unsetfilter.jsp delete mode 100644 jonas_tests/examples/base/examples/build.properties delete mode 100644 jonas_tests/examples/base/examples/build.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/README delete mode 100644 jonas_tests/examples/base/examples/cmp2/build.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/resources/web/index.html delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/resources/web/style.css delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/xml/application.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/xml/cmp2.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/xml/jonas-cmp2.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/AddressDO.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/Name.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipHomeLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipLocal.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentHomeRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentBean.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentHomeRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentRemote.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest2.java delete mode 100644 jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest3.java delete mode 100644 jonas_tests/examples/base/examples/earsample/README delete mode 100644 jonas_tests/examples/base/examples/earsample/build.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/jaas/jaas.config delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/jetty.gif delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_jonas_logo.gif delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_logo.png delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/tomcat.gif delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/valid-xhtml11.png delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/img/vcss.png delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/index.html delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/resources/web/ow_jonas.css delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/application.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client1.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client2.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/jonas-secusb.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/jonas-web.xml delete mode 100755 jonas_tests/examples/base/examples/earsample/etc/xml/ra.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/secusb.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/Op.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpBean.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpHome.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocal.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocalHome.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/clients/Client.java delete mode 100755 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/resourceadapters/ResourceAdapterImpl.java delete mode 100644 jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/servlets/ServletOp.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/.cvsignore delete mode 100644 jonas_tests/examples/base/examples/emb-sample/README delete mode 100644 jonas_tests/examples/base/examples/emb-sample/build.xml delete mode 100644 jonas_tests/examples/base/examples/emb-sample/emb-core/README delete mode 100644 jonas_tests/examples/base/examples/emb-sample/etc/application.xml delete mode 100644 jonas_tests/examples/base/examples/emb-sample/etc/embSampleSession.xml delete mode 100644 jonas_tests/examples/base/examples/emb-sample/etc/jonas-embSampleSession.xml delete mode 100644 jonas_tests/examples/base/examples/emb-sample/etc/web.xml delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/README delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/commons-fileupload-1.1.1.jar delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/emb-core.ear delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/emb-jsr86-api.jar delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/emb-ow-mfb-core.jar delete mode 100644 jonas_tests/examples/base/examples/emb-sample/lib/emb-ow-plugins-api.jar delete mode 100644 jonas_tests/examples/base/examples/emb-sample/plugins/README delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/icons/valid-xhtml11.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/icons/vcss.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/footer.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/header.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/mediaList.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/navigation.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/templatePage.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/jsps/uploadForm.jsp delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/Java_CompatEE.gif delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/apache.svg delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/frame.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/iss-fireworks.mp3 delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/jonas.mp4 delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/jonas.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/mask.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/objectweb.png delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/samples.properties delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/snow.jpg delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/starfish.jpg delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/samples/white-valley.jpg delete mode 100644 jonas_tests/examples/base/examples/emb-sample/resources/theme/style.css delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/MediaSampleException.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ActionDispatcher.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/BaseSampleServlet.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageBW.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageChained.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageFormat.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageFrame.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageHalfSize.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageOverlayed.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleImageSvgToPng.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleVideoTo3GPP.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleVideoToMpeg.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ConvertSampleVideoToMpegTs.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ExtractHeaderData.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/HomeSample.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/HttpSessionMgr.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/ListSampleMedia.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/LoadSampleMedia.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/RetrieveSampleMedia.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/servlet/UploadSampleMedia.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/session/HttpSessionMgr.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/session/MediaSampleSessionBean.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/session/MediaSampleSessionLocal.java delete mode 100644 jonas_tests/examples/base/examples/emb-sample/src/emb/sample/session/MediaSampleSessionLocalHome.java delete mode 100644 jonas_tests/examples/base/examples/fdf/MyJOnASCluster.fdf delete mode 100644 jonas_tests/examples/base/examples/hibernate/README delete mode 100644 jonas_tests/examples/base/examples/hibernate/build.properties delete mode 100644 jonas_tests/examples/base/examples/hibernate/build.xml delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/resources/Cat.hbm.xml delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/resources/hibernate.cfg.xml delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/sql/initdb.sql delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/sql/resetdb.sql delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/xml/jonas-web.xml delete mode 100644 jonas_tests/examples/base/examples/hibernate/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/antlr-2.7.6rc1.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/c3p0-0.9.0.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/cglib-2.1.3.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/cglib-nodep-2.1_3.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/dom4j-1.6.1.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/ehcache-1.1.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/hibernate-3.1.2.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/jaxen-1.1-beta-7.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/oscache-2.1.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/proxool-0.8.3.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/swarmcache-1.0rc2.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/lib/versioncheck.jar delete mode 100644 jonas_tests/examples/base/examples/hibernate/src/org/hibernate/examples/quickstart/Cat.java delete mode 100644 jonas_tests/examples/base/examples/hibernate/src/org/hibernate/examples/quickstart/TestServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/README delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/build.xml delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/resources/web/img/logo_jonas.jpg delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/resources/web/index.html delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/resources/web/style.css delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/xml/application.xml delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/xml/jonas-web.xml delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/ClustMgmtServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/ClusterDaemonServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/J2eemanagementBaseServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/JmsAdminServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MgmtServlet.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MonologListener.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MyListener.java delete mode 100644 jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/NewServerMgmtServlet.java delete mode 100644 jonas_tests/examples/base/examples/j_common.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/README delete mode 100644 jonas_tests/examples/base/examples/jaasclient/build.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client-swing.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client1.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client2.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client3.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-secusb.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/etc/xml/secusb.xml delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOp.java delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClient.java delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClientSwing.java delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOp.java delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpBean.java delete mode 100644 jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpHome.java delete mode 100644 jonas_tests/examples/base/examples/jdo/Bank_src.zip delete mode 100644 jonas_tests/examples/base/examples/jdo/README delete mode 100644 jonas_tests/examples/base/examples/jdo/build.xml delete mode 100644 jonas_tests/examples/base/examples/jonas-common.xml delete mode 100644 jonas_tests/examples/base/examples/src/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/eb/Account.idb delete mode 100644 jonas_tests/examples/base/examples/src/eb/Account.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/Account.pgsql delete mode 100644 jonas_tests/examples/base/examples/src/eb/Account.sql delete mode 100644 jonas_tests/examples/base/examples/src/eb/AccountExplBean.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/AccountHome.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/AccountImpl2Bean.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/AccountImplBean.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/Accounthsqldb.sql delete mode 100644 jonas_tests/examples/base/examples/src/eb/ClientAccount.java delete mode 100644 jonas_tests/examples/base/examples/src/eb/README delete mode 100644 jonas_tests/examples/base/examples/src/eb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/eb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/eb/db1.prp delete mode 100644 jonas_tests/examples/base/examples/src/eb/eb.xml delete mode 100644 jonas_tests/examples/base/examples/src/eb/jonas-eb.xml delete mode 100644 jonas_tests/examples/base/examples/src/lb/Client.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/ManacEC.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/ManacLocal.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/ManacLocalHome.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/Manager.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/ManagerHome.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/ManagerSF.java delete mode 100644 jonas_tests/examples/base/examples/src/lb/README delete mode 100644 jonas_tests/examples/base/examples/src/lb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/lb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/lb/db1.prp delete mode 100644 jonas_tests/examples/base/examples/src/lb/jonas-lb.xml delete mode 100644 jonas_tests/examples/base/examples/src/lb/lb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/ClientMailer.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailer.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerHome.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/README delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/SessionMailer.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/SessionMailerBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/SessionMailerHome.java delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/jonas-mailsb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mailsb/mailsb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_a.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_b.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbClient.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/README delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/jonas-newsamplemdb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb/newsamplemdb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_a.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_b.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbClient.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/README delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/jonas-newsamplemdb2.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/newsamplemdb2.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/Env.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvHome.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/OrderBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/README delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/SampleAppliClient.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/Stock.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/StockBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHandlerBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHome.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/db1.prp delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/jonas-sampleappli.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/sampleappli/sampleappli.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbBean.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbClient.java delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/README delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/jonas-samplemdb.xml delete mode 100644 jonas_tests/examples/base/examples/src/mdb/samplemdb/samplemdb.xml delete mode 100644 jonas_tests/examples/base/examples/src/sb/ClientOp.java delete mode 100644 jonas_tests/examples/base/examples/src/sb/Op.java delete mode 100644 jonas_tests/examples/base/examples/src/sb/OpBean.java delete mode 100644 jonas_tests/examples/base/examples/src/sb/OpHome.java delete mode 100644 jonas_tests/examples/base/examples/src/sb/README delete mode 100644 jonas_tests/examples/base/examples/src/sb/application-client.xml delete mode 100644 jonas_tests/examples/base/examples/src/sb/build.xml delete mode 100644 jonas_tests/examples/base/examples/src/sb/jonas-sb.xml delete mode 100644 jonas_tests/examples/base/examples/src/sb/sb.xml delete mode 100644 jonas_tests/examples/base/examples/src/src_common.xml delete mode 100644 jonas_tests/examples/base/examples/statelessbean/build.xml delete mode 100644 jonas_tests/examples/base/examples/statelessbean/etc/web.xml delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientServletStateless.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientStateless.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessBean.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessInterceptor.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessLocal.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessOnlyAddMethodInterceptor.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessRemote.java delete mode 100644 jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/package.html delete mode 100644 jonas_tests/examples/base/examples/webservices/README delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/build.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/jonas-webservices.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/ssbEndpointMapping.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/webservices.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/wsdl/ssbEndpoint.wsdl delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpoint.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpointSLL.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/jonas-wsearsample.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/wsearsample.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/build.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jetty.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jonas.ico delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_jonas_logo.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_logo.png delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/tomcat.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/index.html delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/search-google.jsp delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/style/ow_jonas.css delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/application-wsclient.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/ejb-jar.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/googleMapping.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/jonas-ejb-jar.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/web-wsclient-front.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/wsdl/GoogleSearch.wsdl delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBean.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanHome.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanSLR.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/DirectoryCategory.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchPort.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchResult.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchService.java delete mode 100644 jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/ResultElement.java delete mode 100644 jonas_tests/examples/base/examples/webservices/build.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/etc/xml/application.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/build.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByJSP.jsp delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByServlet.html delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jetty.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jonas.ico delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_jonas_logo.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_logo.png delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/tomcat.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/index.html delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/style/ow_jonas.css delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/googleMapping.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/jonas-web.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/wsdl/GoogleSearch.wsdl delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/DirectoryCategory.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchPort.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchResult.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchService.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/ResultElement.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/servlets/wsclient/WsClientServlet.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/README delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/build.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/credentials.properties delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/sample-crypto.properties delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jetty.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jonas.ico delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_jonas_logo.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_logo.png delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/tomcat.gif delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/index.html delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/jaxrpcTest.jsp delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/style/ow_jonas.css delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/clientMapping.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jaxrpcEndpointMapping.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jonas-webservices.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/web.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/webservices.xml delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/wsdl/jaxrpcEndpoint.wsdl delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterface.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterfaceService.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/security/ServerSideCallbackHandler.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpoint.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpointInterface.java delete mode 100644 jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/wsclient/JOnASJaxRpcClientServlet.java delete mode 100644 jonas_tests/examples/base/examples/xdoclet/ClientCustomer.java delete mode 100644 jonas_tests/examples/base/examples/xdoclet/CustomerBean.java delete mode 100644 jonas_tests/examples/base/examples/xdoclet/Name.java delete mode 100644 jonas_tests/examples/base/examples/xdoclet/PhoneBean.java delete mode 100644 jonas_tests/examples/base/examples/xdoclet/README delete mode 100644 jonas_tests/examples/base/examples/xdoclet/build.xml delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-apache-module-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-ejb-module-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-exolab-module-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-objectweb-module-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-web-module-1.2.2.jar delete mode 100644 jonas_tests/examples/base/examples/xdoclet/lib/xjavadoc-1.1.jar delete mode 100644 jonas_tests/examples/build.xml delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/alarm/C_alarm.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/cmp2/C_cmp2.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/earsample/C_earsample.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/eb/C_eb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/hibernate/C_hibernate.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/j2eemanagement/C_j2eemanagement.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/lb/C_lb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mailsb/C_mailsb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/C_mdb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_sampleappli.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_samplemdb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sampleCluster2/C_sampleCluster2.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sb/C_sb.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_WebExamples.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_suite.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServices.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServicesEndpoint.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/C_webservices.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsAccessTest.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsEarSample.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsWarSample.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/util/JExampleTestCase.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/util/JPrintStream.java delete mode 100644 jonas_tests/examples/src/org/objectweb/jonas/examples/util/NoExitSecurityManager.java delete mode 100644 jonas_tests/j2eeca/.cvsignore delete mode 100644 jonas_tests/j2eeca/build.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzEIS/ErsatzEIS.rar delete mode 100644 jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Nolog/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Nolog/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Reauth/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Reauth/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Security/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Security/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Transaction/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/Transaction/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/rars/XATransaction/META-INF/jonas-ra.xml delete mode 100644 jonas_tests/j2eeca/rars/XATransaction/META-INF/ra.xml delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ActivationSpecImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionFactoryImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionMetaDataImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionRequestInfoImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionSpecImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/DefaultConnectionManager.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ExecutionContext.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionSpecImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/LocalTransactionImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionFactoryImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionMetaDataImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/MessageTakerMD.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/MsgListenerInterface.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/RecordFactoryImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/RecordImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ResourceAdapterImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/ResourceAdapterMetaDataImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/Utility.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/WorkAdapterImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/WorkImpl.java delete mode 100644 jonas_tests/j2eeca/src/ersatz/resourceadapter/XAResourceImpl.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/CommonClient.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/ConnectionImpl.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/JtestInteraction.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/JtestResourceAdapter.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/LocalTransactionImpl.java delete mode 100644 jonas_tests/j2eeca/src/fictional/resourceadapter/XAResourceImpl.java delete mode 100644 jonas_tests/jaxws/jaxws-felix/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-felix/src/main/config/config.properties delete mode 100644 jonas_tests/jaxws/jaxws-felix/src/main/config/jonas-autodeploy-bundles.properties delete mode 100644 jonas_tests/jaxws/jaxws-felix/src/main/config/testng.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/ejb3/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/Hello.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/HelloBean.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBean_descriptor.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/easybeans.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/webservices.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/wsdl/JAXWSBean_descriptor.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanInjection.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/resources/META-INF/wsdl/JAXWSBeanInjection.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwihtInterceptors.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwithAroundInvoke.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/GreeterInterceptor.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwihtInterceptors.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwithAroundInvoke.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithWebMethod.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithoutWebMethod.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithoutWebMethod.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/JAXWSBean3.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/Person.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1Response.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2Response.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/wsdl/JAXWSBean3Service.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/Hello.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/HelloBean.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterLogicalHandler.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterSOAPHandler.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/webservices.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterLogicalHandler.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterSOAPHandler.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/handlers.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/handlers.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/java/org/ow2/jonas/ws/jaxws/test/CalculatorImpl.java delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/jonas-web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/web.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-base/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/pom.xml delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ejb3/Hello.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DispatchAPIWebserviceClientTestCase.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DynamicProxyWebserviceClientTestCase.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/EJBClientTestCases.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/PojoClientTestCases.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/JWebServicesTestCase.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/SimpleServiceInterface.java delete mode 100644 jonas_tests/jaxws/jaxws-test-clients/src/main/resources/request1.xml delete mode 100644 jonas_tests/jaxws/pom.xml delete mode 100644 jonas_tests/jonas5_tests.ipr delete mode 100644 jonas_tests/jonasadmin/.cvsignore delete mode 100644 jonas_tests/jonasadmin/build.xml delete mode 100755 jonas_tests/jonasadmin/resources/jonasAdminTests.properties delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/C_JonasAdminCatalina.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/ConnectorUtils.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/F_JonasAdminConnector.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/C_JonasAdminDeploy.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeploy.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployJar.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployRar.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployWar.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/C_JonasAdminDomain.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomain.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomainAddServer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/C_JonasAdminJonasserver.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminInfoServer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminSaveAll.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/XMLTest.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/C_JonasAdminJoram.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramDestination.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramProperties.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramUser.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/C_JonasAdminLogging.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/F_JonasAdminLogger.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/LoggerUtils.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/C_JonasAdminMonitoring.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminActivatedMonitoring.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminNumberOfMeasures.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminRange.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/C_JonasAdminNavigation.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminLogout.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminNavigation.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/C_JonasAdminResource.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceDatasource.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceMail.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/C_JonasAdminContainer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminApplicationContainer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminEjbContainer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminWebContainer.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/C_JonasAdminServiceDatabase.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/F_JonasAdminDatabase.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/C_JonasAdminServiceDiscovery.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/F_JonasAdminDiscovery.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/C_JonasAdminServiceTransaction.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/F_JonasAdminServiceTransaction.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/C_JonasAdminServiceMail.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/F_JonasAdminServiceMail.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/C_JonasAdminServiceResource.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/F_JonasAdminResource.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/ResourceUtils.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/C_JonasAdminServiceSecurity.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/F_JonasAdminServiceSecurity.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/suite/C_JonasAdmin.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/C_JonasAdminTemplate.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/F_JonasAdminTemplate.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JProperties.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminAuth.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminConnexion.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminFiles.java delete mode 100644 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTestCase.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTree.java delete mode 100755 jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminUtils.java delete mode 100644 jonas_tests/junit.bat delete mode 100755 jonas_tests/junit.sh delete mode 100755 jonas_tests/junitime.sh delete mode 100644 jonas_tests/protocols/README delete mode 100644 jonas_tests/protocols/build.properties delete mode 100644 jonas_tests/protocols/build.xml delete mode 100644 jonas_tests/protocols/clientconf/carol.properties delete mode 100644 jonas_tests/protocols/clientconf/traceclient.properties delete mode 100644 jonas_tests/protocols/modules/appli/META-INF/application.xml delete mode 100644 jonas_tests/protocols/modules/appli/build/build.xml delete mode 100644 jonas_tests/protocols/modules/client/META-INF/application-client.xml delete mode 100644 jonas_tests/protocols/modules/client/META-INF/jonas-client.xml delete mode 100644 jonas_tests/protocols/modules/client/build/build.xml delete mode 100644 jonas_tests/protocols/modules/client/resources/jaas.config delete mode 100644 jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/AnyClient.java delete mode 100644 jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/Measure.java delete mode 100644 jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient.java delete mode 100644 jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient01.java delete mode 100644 jonas_tests/protocols/modules/ejbs/META-INF/ejb-jar.xml delete mode 100644 jonas_tests/protocols/modules/ejbs/META-INF/jonas-ejb-jar.xml delete mode 100644 jonas_tests/protocols/modules/ejbs/build/build.xml delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA1EJB.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA2EJB.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAEJB.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAHome.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackServiceA.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyService.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceEJB.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceHome.java delete mode 100644 jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/Request.java delete mode 100644 jonas_tests/protocols/scripts/client.cmd delete mode 100755 jonas_tests/protocols/scripts/client.sh delete mode 100755 jonas_tests/protocols/scripts/suiteMulti.sh delete mode 100755 jonas_tests/protocols/scripts/suiteMultiSerial.sh delete mode 100755 jonas_tests/protocols/scripts/synt.sh delete mode 100644 jonas_tests/samplehttp/README delete mode 100644 jonas_tests/samplehttp/beans/Sess.java delete mode 100644 jonas_tests/samplehttp/beans/SessClient.java delete mode 100644 jonas_tests/samplehttp/beans/SessHome.java delete mode 100644 jonas_tests/samplehttp/beans/SessLocal.java delete mode 100644 jonas_tests/samplehttp/beans/SessLocalHome.java delete mode 100644 jonas_tests/samplehttp/beans/SessSLR.java delete mode 100644 jonas_tests/samplehttp/beans/jonas-sess.xml delete mode 100644 jonas_tests/samplehttp/beans/sess.xml delete mode 100644 jonas_tests/samplehttp/build.xml delete mode 100644 jonas_tests/samplehttp/client/SampleClient.java delete mode 100644 jonas_tests/samplehttp/client/Sender.java delete mode 100644 jonas_tests/samplehttp/etc/application.xml delete mode 100644 jonas_tests/samplehttp/etc/web.xml delete mode 100644 jonas_tests/samplehttp/servlet/SampleServlet.java delete mode 100644 jonas_tests/ws/.cvsignore delete mode 100644 jonas_tests/ws/README delete mode 100644 jonas_tests/ws/build.xml delete mode 100644 jonas_tests/ws/etc/apps/port-component-link.xml delete mode 100644 jonas_tests/ws/etc/apps/time-test.xml delete mode 100644 jonas_tests/ws/etc/clients/application-client.xml delete mode 100644 jonas_tests/ws/etc/clients/jonas-client.xml delete mode 100644 jonas_tests/ws/etc/clients/timeMapping.xml delete mode 100644 jonas_tests/ws/etc/clients/wsdl/TimePort.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/mcontext/META-INF/ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/mcontext/META-INF/jonas-ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/mcontext/META-INF/mappingMCT.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/mcontext/META-INF/webservices.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/mcontext/META-INF/wsdl/MessageContext.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/jonas-ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/mapping.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/webservices.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBook.xsd delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBookPort.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/Time.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/TimePort.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/wsclient/META-INF/XMethodsMapping.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/wsclient/META-INF/ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/wsclient/META-INF/jonas-ejb-jar.xml delete mode 100644 jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.wsdl delete mode 100644 jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.xsd delete mode 100644 jonas_tests/ws/etc/webapps/alone/jonas-webservices.xml delete mode 100644 jonas_tests/ws/etc/webapps/alone/mapping.xml delete mode 100644 jonas_tests/ws/etc/webapps/alone/web.xml delete mode 100644 jonas_tests/ws/etc/webapps/alone/webservices.xml delete mode 100644 jonas_tests/ws/etc/webapps/alone/wsdl/AddressBook.xsd delete mode 100644 jonas_tests/ws/etc/webapps/alone/wsdl/AddressBookPort.wsdl delete mode 100644 jonas_tests/ws/etc/webapps/portlink/AdressBook.xml delete mode 100644 jonas_tests/ws/etc/webapps/portlink/jonas-web.xml delete mode 100644 jonas_tests/ws/etc/webapps/portlink/web.xml delete mode 100644 jonas_tests/ws/etc/webapps/portlink/web/index.jsp delete mode 100644 jonas_tests/ws/etc/webapps/portlink/wsdl/AddressBookPort.wsdl delete mode 100644 jonas_tests/ws/etc/webapps/secured/jonas-webservices.xml delete mode 100644 jonas_tests/ws/etc/webapps/secured/mapping.xml delete mode 100644 jonas_tests/ws/etc/webapps/secured/web.xml delete mode 100644 jonas_tests/ws/etc/webapps/secured/webservices.xml delete mode 100644 jonas_tests/ws/etc/webapps/secured/wsdl/AddressBook.xsd delete mode 100644 jonas_tests/ws/etc/webapps/secured/wsdl/AddressBookPort.wsdl delete mode 100644 jonas_tests/ws/resources/call-props-empty-j2ee.xml delete mode 100644 jonas_tests/ws/resources/call-props-empty-jonas.xml delete mode 100644 jonas_tests/ws/resources/call-props-j2ee.xml delete mode 100644 jonas_tests/ws/resources/call-props-jonas.xml delete mode 100644 jonas_tests/ws/resources/call-props-null-j2ee.xml delete mode 100644 jonas_tests/ws/resources/call-props-null-jonas.xml delete mode 100644 jonas_tests/ws/resources/mapping/AxisServiceTest.xml delete mode 100644 jonas_tests/ws/resources/no-port2wsdl-map-j2ee.xml delete mode 100644 jonas_tests/ws/resources/no-port2wsdl-map-jonas.xml delete mode 100644 jonas_tests/ws/resources/no-wsdd-specified-j2ee.xml delete mode 100644 jonas_tests/ws/resources/no-wsdd-specified-jonas.xml delete mode 100644 jonas_tests/ws/resources/port-name-list-empty-j2ee.xml delete mode 100644 jonas_tests/ws/resources/port-name-list-empty-jonas.xml delete mode 100644 jonas_tests/ws/resources/port-name-list-j2ee.xml delete mode 100644 jonas_tests/ws/resources/port-name-list-jonas.xml delete mode 100644 jonas_tests/ws/resources/port2wsdl-map-j2ee.xml delete mode 100644 jonas_tests/ws/resources/port2wsdl-map-jonas.xml delete mode 100644 jonas_tests/ws/resources/service-qname-auto-j2ee.xml delete mode 100644 jonas_tests/ws/resources/service-qname-auto-jonas.xml delete mode 100644 jonas_tests/ws/resources/service-qname-explicit-j2ee.xml delete mode 100644 jonas_tests/ws/resources/service-qname-explicit-jonas.xml delete mode 100644 jonas_tests/ws/resources/stub-props-empty-j2ee.xml delete mode 100644 jonas_tests/ws/resources/stub-props-empty-jonas.xml delete mode 100644 jonas_tests/ws/resources/stub-props-j2ee.xml delete mode 100644 jonas_tests/ws/resources/stub-props-jonas.xml delete mode 100644 jonas_tests/ws/resources/stub-props-null-j2ee.xml delete mode 100644 jonas_tests/ws/resources/stub-props-null-jonas.xml delete mode 100644 jonas_tests/ws/resources/wsdd-specified-j2ee.xml delete mode 100644 jonas_tests/ws/resources/wsdd-specified-jonas.xml delete mode 100644 jonas_tests/ws/resources/wsdd/deploy.wsdd delete mode 100644 jonas_tests/ws/resources/wsdl-url-default-j2ee.xml delete mode 100644 jonas_tests/ws/resources/wsdl-url-default-jonas.xml delete mode 100644 jonas_tests/ws/resources/wsdl-url-override-j2ee.xml delete mode 100644 jonas_tests/ws/resources/wsdl-url-override-jonas.xml delete mode 100644 jonas_tests/ws/resources/wsdl/oneService.wsdl delete mode 100644 jonas_tests/ws/resources/wsdl/twoService.wsdl delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/StaticPassValue.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClient.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClientHandler.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessor.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorHome.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorSLR.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Endpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Local.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1LocalHome.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1SLL.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Endpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Home.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2SLR.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/StaticPassValue.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanHandler.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanSLR.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeEndpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1Home.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1SLR.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/C_endpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/F_TimeEndpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/C_mbeans.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/F_WebServicesMBeans.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mcontext/F_MessageContext.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/A_ServiceUsage.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/C_service.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AgnosticServiceUsage.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AxisService.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_PortComponentLink.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/ServiceRefTLE.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/A_WsGen.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/C_wsgen.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_Generate.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_WsGen.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/C_wssecured.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/F_WsSecuredMultipleEndpoint.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/IDNamePair.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceDetail.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceSummary.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuery.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuerySoapPortType.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUX.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUXservice.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloPortComponentSoapBindingStub.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs2.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsService.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsServiceLocator.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/Address.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBook.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookException.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookImpl.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/Address.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBook.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBookException.java delete mode 100644 jonas_tests/ws/src/org/objectweb/jonas/jtests/util/JWebServicesTestCase.java rename {jonas_doc/olddoc => olddoc}/Admin.html (100%) rename {jonas_doc/olddoc => olddoc}/Cmi.html (100%) rename {jonas_doc/olddoc => olddoc}/Deployer.html (100%) rename {jonas_doc/olddoc => olddoc}/Domain.html (100%) rename {jonas_doc/olddoc => olddoc}/JOnASWP.html (100%) rename {jonas_doc/olddoc => olddoc}/JOnASWebServices.html (100%) rename {jonas_doc/olddoc => olddoc}/MBeans.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Client.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Connector.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Deployment.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_EarDeployment.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Entity.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Environment.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_J2eeApps.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_JmsGuide.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_LogModules.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_MsgDrvBean.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Packaging.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Security.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Session.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_Transaction.html (100%) rename {jonas_doc/olddoc => olddoc}/PG_War.html (100%) rename {jonas_doc/olddoc => olddoc}/Services.html (100%) rename {jonas_doc/olddoc => olddoc}/ant-ejbjar.html (100%) rename {jonas_doc/olddoc => olddoc}/clusterd.html (100%) rename {jonas_doc/olddoc => olddoc}/clustering.html (100%) rename {jonas_doc/olddoc => olddoc}/common.css (100%) rename {jonas_doc/olddoc => olddoc}/howto/Clustering.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/Firewall.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/JMSClustering.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/JORAMdistributed_JOnAS_4_1.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/JSR160_support.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/JonasArchi.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/JonasMBeansHowTo.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/WebSphereMQ.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/Win32Service.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/AutomaticClusterConfiguration.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/ManualClusterConfiguration.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/c-jdbc.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/director.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/mod_jk2-to-mod_jk.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/mod_jk2_embeddedtomcat.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/mod_jk_embeddedtomcat.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/clusterdetails/sequoia.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/common.css (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/emb-component.png (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/emb-deps.png (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/mfb.png (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/src/emb-component.svg (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/src/emb-deps.svg (100%) rename {jonas_doc/olddoc => olddoc}/howto/emb-images/src/mfb.svg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/JOnASJMX.gif (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/cluster1.gif (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Apache.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Archi1.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Archi2.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Archi3.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Archi4.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Archi5.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Architecture.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/EJBCont.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/FullJOnAS.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/JOnASEJB.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/JOnASWeb.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Node.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/Thumbs.db (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/WebCont.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/common.css (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/clusterfiles/sampleCluster2Screen.GIF (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/JmsClustering-queues.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/JmsClustering-topics.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/joram.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/joram_ha.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/mdb.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/mdb_config.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/queue.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jmsclustering/topic.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonas_cmp.gif (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonasarch.gif (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg1.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg2.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg3.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg4.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg5.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg6.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg7.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/jonastransactionrecoveryhowto/recovimg8.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/images/logo_jonas.jpg (100%) rename {jonas_doc/olddoc => olddoc}/howto/install_j2ee.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/install_jonas.html (100%) rename {jonas_doc/olddoc => olddoc}/howto/ws/sample-deploy.wsdd (100%) rename {jonas_doc/olddoc => olddoc}/howto/ws/sample-server-config.wsdd (100%) rename {jonas_doc/olddoc => olddoc}/howto/ws/sample-web.xml (100%) rename {jonas_doc/olddoc => olddoc}/images/AreaGraph.png (100%) rename {jonas_doc/olddoc => olddoc}/images/JonasAdmin.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/JonasAreas.png (100%) rename {jonas_doc/olddoc => olddoc}/images/WP_distr.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/classloaders.png (100%) rename {jonas_doc/olddoc => olddoc}/images/cluster1.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/clusterd.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/clustering.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/cmi-cluster-stub.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/cmi-jndi.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/cmi.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/domain_new.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/eb_img_31.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/favicon.ico (100%) rename {jonas_doc/olddoc => olddoc}/images/j2ee.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/jcaarch.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/jconsole.png (100%) rename {jonas_doc/olddoc => olddoc}/images/jonas48repscenarios.jpg (100%) rename {jonas_doc/olddoc => olddoc}/images/jonasTree.png (100%) rename {jonas_doc/olddoc => olddoc}/images/jonasarch.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/logo_jonas.jpg (100%) rename {jonas_doc/olddoc => olddoc}/images/pix.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/roles1.gif (100%) rename {jonas_doc/olddoc => olddoc}/images/sfsb-rep.jpg (100%) rename {jonas_doc/olddoc => olddoc}/images/ws_client.jpg (100%) rename {jonas_doc/olddoc => olddoc}/images/ws_endpoint.jpg (100%) rename {jonas_doc/olddoc => olddoc}/index.html (100%) rename jonas_doc/pom.xml => pom.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/Glossary.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/JSR160_support.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/admindefs.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/adminfunctions.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/adminmbeans.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/admintools.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/adminuse.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/install.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/mejb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/mejbaccess.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/admin/threadStackDump.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/administration_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ant_tasks.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_ejbjar.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_genic.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_jonas.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_jonasbase.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_newjc.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_property.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_serverdeploy.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/anttasks/ant_wsgen.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/clustering-variables.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/configuration/ejb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/configuration/jms.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/configuration/web.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/examples/sampleCluster2.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/examples/sampleCluster3.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/faq/faq.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/management/cluster.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/management/clusterd.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/management/cmi.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/management/domain.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/management/ha.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/principles/clustering.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/principles/management.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/principles/terminology.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/tooling/jasmine.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering/tooling/jkmanager.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/clustering_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/command_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/configuration_newjb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/configuration_newjc.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/configuration_raconfig.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/genic.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/jclient.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/jms.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/commands/jonas.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/config/jonas_properties.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/config/jonasbase_conf.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/config/jonasbase_creation.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/config/jonasbase_structure.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/config/jonasroot_structure.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/configuration_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/connector_pg.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/continuous_integration_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deploy/ear.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deploy/ejb2.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deploy/principes.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deploy/war.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deploy/webapps.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployer_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan-common.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan-element-attribute.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan-mixed.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan-sample-example.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan-type.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/deployment-plan.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/introduction.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/jonas/jonas-deployment-plan.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/repositories.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/typespecific/deployment-type-specific-data.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/typespecific/maven2-deployment-data.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/typespecific/obr-deployment-data.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans/typespecific/url-deployment-data.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/deployment-plans_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/building.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/code_convention.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/contributing.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/getting_from_svn.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/running.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/developerguide/usingexamples.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/eardeploy.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ejb2_programmer_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ejb3_programmer_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/essai.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/essai2.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/essaibook.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/getting_started_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_distributed_joram.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_firewall.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_install_jdbc_driver.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_mbeans.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_services.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_services_on_demand.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_track_jdbc_connectionleaks.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_use_cdi.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_use_jaxrs.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_webspheremq.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/howto_win32_service.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/index.html (100%) rename {jonas_doc/src => src}/docbook/doc-en/install/install_j2ee.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/install/install_jonas.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2ee/classloader.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2ee/j2ee-app.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2ee/j2ee-ejb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2ee/j2ee-web.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2eeclient_pg.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/j2eeprogrammerguide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/jaxws_developer_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/basics-of-classloading.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/classloading-in-jonas.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/configuration.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/glossary.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/tips.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/loaders/tooling.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/log/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/mastering-jonas-classloaders.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/jonas_4_7.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/jonas_4_8.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/jonas_4_9.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/jonas_5_0.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/versionAPI.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration/versionModules.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/migration_guide.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/protocols/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ra/JDBCRA.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ra/JDBCXML.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/ra/JMSRA.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/security/configsecurity.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/cmi/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/db/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/dbm/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/dbm/jdbcdatasource.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/depmonitor/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/discovery/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ear/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/cmp2_usage.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/db_access_bmp.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/db_access_cmp.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/deploy.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/entity.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/entity_tuning.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/environment.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/mdb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/mdb_tuning.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/packaging.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/security.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/session.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/session_tuning.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb2/transaction.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ejb3/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/ha/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/jaxrpc/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/jaxws/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/jmx/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/jtm/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/mail/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/registry/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/resource/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/resource/connector_packaging.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/resource/connector_principles.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/resource/connector_using.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/resource/jonas-ra.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/security/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/smartclient/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/versioning/about.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/versioning/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/versioning/versioning-ejb.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/versioning/versioning-web.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/wc/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/web/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/web/webcomponent.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/web/webdeploy.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/web/webpackaging.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/wm/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/services/wsdl-publisher/config.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/terminology.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/variables.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/web_pg.xml (100%) rename {jonas_doc/src => src}/docbook/doc-en/xmltips.xml (100%) rename {jonas_doc/src => src}/docbook/doc-fr/howtoJOnASDocBook.xml (100%) rename {jonas_doc/src => src}/pom/jonas-doc-en.pom (100%) rename {jonas_doc/src => src}/resources/WEB-INF/jonas-web.xml (100%) rename {jonas_doc/src => src}/resources/WEB-INF/web.xml (100%) rename {jonas_doc/src => src}/resources/chunk.xsl (100%) rename {jonas_doc/src => src}/resources/common.css (100%) rename {jonas_doc/src => src}/resources/fo.xsl (100%) rename {jonas_doc/src => src}/resources/footer.xml (100%) rename {jonas_doc/src => src}/resources/html.xsl (100%) rename {jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo => src/resources/images}/JonasSmall.png (100%) rename {jonas_doc/src => src}/resources/images/WP_distr.gif (100%) rename {jonas_doc/src => src}/resources/images/admin-webmodule-virtual.png (100%) rename {jonas_doc/src => src}/resources/images/admintree.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/Bamboo_WorkDirectory.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/BuildPlan_AntBuildDependency.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/Builders.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/Dashboard_CurrentActivty.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/JDK_tailor.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestBuildPlan_ActivityLog.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestBuildPlan_Dashboard_Run.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestsBuild_Artifacts.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestsBuild_BuilderConfig.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestsBuild_PlanDetail.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/TestsBuild_sourcerepos.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/ant_BuilderConfig.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/ant_createplan.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/jb.config.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/main_tailor.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_BuildArtifacts.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_BuildNotification.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_BuilderConfig.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_CheckoutAndBuilding.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_PlanDetail.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_PostAction.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/maven_sourcerepos_step2.gif (100%) rename {jonas_doc/src => src}/resources/images/bamboo/variables.gif (100%) rename {jonas_doc/src => src}/resources/images/callouts/1.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/10.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/11.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/12.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/13.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/14.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/15.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/2.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/3.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/4.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/5.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/6.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/7.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/8.png (100%) rename {jonas_doc/src => src}/resources/images/callouts/9.png (100%) rename {jonas_doc/src => src}/resources/images/caution.png (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Apache.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Archi1.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Archi2.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Archi3.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Archi4.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Archi5.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Architecture.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/EJBCont.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/FullJOnAS.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/JOnASEJB.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/JOnASWeb.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/Node.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/WebCont.jpg (100%) rename {jonas_doc/src => src}/resources/images/clusterfiles/sampleCluster2Screen.GIF (100%) rename {jonas_doc/src => src}/resources/images/clustering/clusterd.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/clusterd.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/clustersolution.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/clustersolution.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster_config.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster_config_2tiers_client.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster_config_2tiers_server.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmi_cluster_config_javaclient.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/cmiv2.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/domain.cmi.cluster.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/domain.jk.cluster.member.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/domain.jk.cluster.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/domainmngt.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/domainmngt.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/easybeans-logo.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/ejbcluster.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/ejbcluster.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/ejbfarm.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/ejbfarm.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/httpcluster.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/httpcluster.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/httpfarm.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/httpfarm.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmscluster_a.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmscluster_a.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmscluster_b.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmscluster_b.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmsfarm_a.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmsfarm_a.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmsfarm_b.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/jmsfarm_b.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/jonas48repscenarios.jpg (100%) rename {jonas_doc/src => src}/resources/images/clustering/logo_jonas2.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/myTomcatCluster.gif (100%) rename {jonas_doc/src => src}/resources/images/clustering/registry_replication.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/registry_replication.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/sampleCluster2.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sampleCluster2.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/sampleCluster3.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sampleCluster3.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jasmine_design.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jasmine_eos.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jkmanager.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_cluster_tab.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_mbeans_attr.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_object_info.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_policies.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_server_info.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_servers.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_strategies.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/sc/jonasadmin_cmi_tab.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_policies.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_policies.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_servers.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_servers.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.svg (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_tab.png (100%) rename {jonas_doc/src => src}/resources/images/clustering/screenshot_jonasadmin_cmi_tab.svg (100%) rename {jonas_doc/src => src}/resources/images/cmi.gif (100%) rename {jonas_doc/src => src}/resources/images/connect.gif (100%) rename {jonas_doc/src => src}/resources/images/defilement.gif (100%) rename {jonas_doc/src => src}/resources/images/deployment.gif (100%) rename {jonas_doc/src => src}/resources/images/draft.png (100%) rename {jonas_doc/src => src}/resources/images/earsample-add-author.png (100%) rename {jonas_doc/src => src}/resources/images/earsample-architecture.png (100%) rename {jonas_doc/src => src}/resources/images/earsample-authentication.png (100%) rename {jonas_doc/src => src}/resources/images/earsample-jpa-model.png (100%) rename {jonas_doc/src => src}/resources/images/earsample-list-content.png (100%) rename {jonas_doc/src => src}/resources/images/eb_img_31.gif (100%) rename {jonas_doc/src => src}/resources/images/editbuttons.gif (100%) rename {jonas_doc/src => src}/resources/images/filtering-loader.png (100%) rename {jonas_doc/src => src}/resources/images/firstpage.gif (100%) rename {jonas_doc/src => src}/resources/images/forgeadmin.gif (100%) rename {jonas_doc/src => src}/resources/images/jcaarch.gif (100%) rename {jonas_doc/src => src}/resources/images/jconsoleStackDumpList.png (100%) rename {jonas_doc/src => src}/resources/images/jconsoleStackDumpOperations.png (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/Cluster JMS-JORAM-JOnAS.ppt (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/JmsClustering-queues.jpg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/JmsClustering-queues.ppt (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/JmsClustering-topics.jpg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/JmsClustering-topics.ppt (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/joram.jpg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/joram_ha.jpg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/mdbHa.ppt (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/mdbclustering.png (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/mdbclustering.svg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/queuelb.png (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/queuelb.svg (100%) rename {jonas_doc/src => src}/resources/images/jmsclustering/topic.jpg (100%) rename {jonas_doc/src => src}/resources/images/jonas-classloaders.png (100%) rename {jonas_doc/src => src}/resources/images/jonasAdminDomain.gif (100%) rename {jonas_doc/src => src}/resources/images/jonasAdminStackDump.png (100%) rename {jonas_doc/src => src}/resources/images/jonas_doc.gif (100%) rename {jonas_doc/src => src}/resources/images/loaders/bundle-class-space.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/console-osgi.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/filtering-classloaders.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/jonas-osgi-modules-libext.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/jonas-osgi-modules-ultra-zoom.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/jonas-osgi-modules.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/jonas-round.png (100%) rename {jonas_doc/src => src}/resources/images/loaders/osgi-classloading.gif (100%) rename {jonas_doc/src => src}/resources/images/loaders/system-loaders.png (100%) rename {jonas_doc/src => src}/resources/images/logoow.gif (100%) rename {jonas_doc/src => src}/resources/images/note.png (100%) rename {jonas_doc/src => src}/resources/images/output.gif (100%) rename {jonas_doc/src => src}/resources/images/publish.gif (100%) rename {jonas_doc/src => src}/resources/images/service-dependencies.png (100%) rename {jonas_doc/src => src}/resources/images/versioning-ejb-schema.png (100%) rename {jonas_doc/src => src}/resources/images/versioning-general-schema.png (100%) rename {jonas_doc/src => src}/resources/index.html (100%) rename {jonas_doc/tools => tools}/docbook-5.0/ChangeLog (100%) rename {jonas_doc/tools => tools}/docbook-5.0/README (100%) rename {jonas_doc/tools => tools}/docbook-5.0/VERSION (100%) rename {jonas_doc/tools => tools}/docbook-5.0/catalog.xml (100%) rename {jonas_doc/tools => tools}/docbook-5.0/docbook.nvdl (100%) rename {jonas_doc/tools => tools}/docbook-5.0/dtd/docbook.dtd (100%) rename {jonas_doc/tools => tools}/docbook-5.0/rng/docbook.rnc (100%) rename {jonas_doc/tools => tools}/docbook-5.0/rng/docbook.rng (100%) rename {jonas_doc/tools => tools}/docbook-5.0/rng/docbookxi.rnc (100%) rename {jonas_doc/tools => tools}/docbook-5.0/rng/docbookxi.rng (100%) rename {jonas_doc/tools => tools}/docbook-5.0/sch/docbook.sch (100%) rename {jonas_doc/tools => tools}/docbook-5.0/tools/db4-entities.pl (100%) rename {jonas_doc/tools => tools}/docbook-5.0/tools/db4-upgrade.xsl (100%) rename {jonas_doc/tools => tools}/docbook-5.0/xsd/docbook.xsd (100%) rename {jonas_doc/tools => tools}/docbook-5.0/xsd/xlink.xsd (100%) rename {jonas_doc/tools => tools}/docbook-5.0/xsd/xml.xsd (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/.CatalogManager.properties.example (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/.urilist (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/AUTHORS (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/BUGS (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/COPYING (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/INSTALL (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/NEWS (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/NEWS.html (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/NEWS.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/README (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/RELEASE-NOTES.html (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/RELEASE-NOTES.pdf (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/RELEASE-NOTES.txt (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/RELEASE-NOTES.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/TODO (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/VERSION (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/catalog.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/af.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/am.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ar.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/autoidx-kimber.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/autoidx-kosek.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/az.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/bg.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/bn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/bs.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ca.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/charmap.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/charmap.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/common.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/cs.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/cy.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/da.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/de.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/el.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/en.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/entities.ent (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/eo.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/es.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/et.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/eu.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/fa.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/fi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/fr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ga.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/gentext.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/gu.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/he.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/hi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/hr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/hu.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/id.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/insertfile.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/it.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ja.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/kn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ko.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/l10n.dtd (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/l10n.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/l10n.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/la.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/labels.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/lt.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/lv.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/mn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/nl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/nn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/no.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/olink.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/or.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pa.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pi.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pt.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/pt_br.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/refentry.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/refentry.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ro.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ru.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sk.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sq.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sr_Latn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/stripns.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/subtitles.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/sv.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/ta.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/table.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/targetdatabase.dtd (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/targets.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/th.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/titles.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/tl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/tr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/uk.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/utility.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/utility.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/vi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/xh.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/zh_cn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/common/zh_tw.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/authors.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/copyright.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/license.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/page.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/reference.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/reference.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/reference.xml.included (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/docsrc/warranty.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/eclipse/eclipse.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/eclipse/profile-eclipse.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/extensions/saxon65.jar (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/extensions/xalan27.jar (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/admon.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/annotations.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/autoidx-kimber.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/autoidx-kosek.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/autoidx-ng.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/autoidx.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/autotoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/axf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/biblio-iso690.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/biblio.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/block.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/callout.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/component.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/division.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/ebnf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/fo-rtf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/fo.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/footnote.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/fop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/fop1.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/formal.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/glossary.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/graphics.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/highlight.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/htmltbl.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/index.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/info.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/inline.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/keywords.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/lists.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/math.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/pagesetup.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/passivetex.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/pdf2index (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/pi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/pi.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/profile-docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/ptc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/qandaset.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/refentry.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/sections.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/spaces.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/synop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/table.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/table.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/task.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/titlepage.templates.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/titlepage.templates.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/titlepage.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/toc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/verbatim.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/xep.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/fo/xref.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/c-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/delphi-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/ini-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/java-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/m2-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/myxml-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/php-hl.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/highlighting/xslthl-config.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/admon.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/annotations.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/autoidx-kimber.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/autoidx-kosek.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/autoidx-ng.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/autoidx.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/autotoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/biblio-iso690.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/biblio.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/block.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/callout.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/changebars.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunk-code.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunk-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunker.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunkfast.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/chunktoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/component.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/division.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/ebnf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/footnote.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/formal.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/glossary.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/graphics.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/highlight.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/html-rtf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/html.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/htmltbl.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/index.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/info.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/inline.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/keywords.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/lists.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/maketoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/manifest.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/math.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/oldchunker.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/onechunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/pi.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/pi.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/profile-chunk-code.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/profile-chunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/profile-docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/profile-onechunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/qandaset.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/refentry.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/sections.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/synop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/table.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/task.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/titlepage.templates.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/titlepage.templates.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/titlepage.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/toc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/verbatim.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/html/xref.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/htmlhelp/htmlhelp-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/annot-close.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/annot-open.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/blank.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/1.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/1.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/1.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/10.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/10.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/10.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/11.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/11.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/11.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/12.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/12.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/12.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/13.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/13.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/13.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/14.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/14.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/14.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/15.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/15.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/15.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/16.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/17.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/18.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/19.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/2.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/2.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/2.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/20.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/21.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/22.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/23.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/24.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/25.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/26.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/27.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/28.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/29.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/3.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/3.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/3.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/30.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/4.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/4.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/4.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/5.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/5.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/5.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/6.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/6.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/6.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/7.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/7.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/7.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/8.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/8.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/8.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/9.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/9.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/callouts/9.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/caution.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/caution.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/caution.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/caution.tif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/draft.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/home.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/home.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/home.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/important.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/important.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/important.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/important.tif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/next.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/next.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/note.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/note.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/note.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/note.tif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/prev.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/prev.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/tip.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/tip.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/tip.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/tip.tif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/toc-blank.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/toc-minus.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/toc-plus.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/up.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/up.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/up.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/warning.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/warning.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/warning.svg (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/images/warning.tif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/install.sh (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/javahelp/javahelp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/javahelp/profile-javahelp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/lib/lib.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/ChangeLog.20020917 (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/block.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/charmap.groff.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/endnotes.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/html-synop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/info.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/inline.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/lists.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/other.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/profile-docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/refentry.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/synop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/table.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/manpages/utility.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/abstract.notitle.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/abstract.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/abstract.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/active.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admon.graphics.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admon.graphics.path.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admon.graphics.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admon.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admon.textlabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admonition.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/admonition.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/alignment.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotate.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotation.css.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotation.graphic.close.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotation.graphic.open.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotation.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/annotation.support.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/appendix.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/arbortext.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/article.appendix.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/author.othername.in.middle.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/autolayout-file.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/autotoc.label.in.hyperlink.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/autotoc.label.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/axf.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/banner.before.navigation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/base.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/biblioentry.item.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/biblioentry.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/bibliography.collection.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/bibliography.numbered.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/bibliography.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/blockquote.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/blurb.on.titlepage.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.attributes.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.bg.color.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.end.indent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.font.master.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.font.size.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.margin.bottom.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.margin.top.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/body.start.indent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/bridgehead.in.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/bullet.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.defaultcolumn.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.graphics.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.graphics.number.limit.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.graphics.path.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.graphics.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.icon.size.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.list.table.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.unicode.font.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.unicode.number.limit.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.unicode.start.character.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callout.unicode.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/callouts.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chapter.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.append.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.first.sections.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.quietly.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.section.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.sections.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.separate.lots.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.has.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.cdata-section-elements.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.doctype-public.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.doctype-system.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.encoding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.indent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.media-type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.method.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.omit-xml-declaration.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/chunker.output.standalone.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/citerefentry.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/collect.xref.targets.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.back.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.body.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.front.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.index.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.lot.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.count.titlepage.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.back.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.body.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.front.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.index.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.lot.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/column.gap.titlepage.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/compact.list.item.spacing.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/component.label.includes.part.label.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/component.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/component.titlepage.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/contrib.inline.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/crop.mark.bleed.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/crop.mark.offset.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/crop.mark.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/crop.marks.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/css.decoration.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/css.stylesheet.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/css.stylesheet.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/current.docid.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/currentpage.marker.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/default.float.class.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/default.image.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/default.table.frame.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/default.table.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/default.units.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/dingbat.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/double.sided.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/draft.mode.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/draft.watermark.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/dry-run.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/dynamic.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ebnf.assignment.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ebnf.statement.terminator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ebnf.table.bgcolor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ebnf.table.border.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/eclipse.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/eclipse.plugin.id.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/eclipse.plugin.name.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/eclipse.plugin.provider.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/editedby.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/email.delimiters.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/emphasis.propagates.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/entry.propagates.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/equation.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/example.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/feedback.href.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/feedback.link.text.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/feedback.with.ids.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/figure.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/filename-prefix.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/firstterm.only.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foil.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foil.subtitle.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foil.title.master.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foil.title.size.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foilgroup.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/foilgroup.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.column.widths.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.content.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.hr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.rule.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.table.height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footer.table.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footers.on.blank.pages.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.font.size.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.mark.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.number.format.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.number.symbols.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/footnote.sep.leader.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/fop.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/fop1.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/formal.object.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/formal.procedures.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/formal.title.placement.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/formal.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/funcsynopsis.decoration.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/funcsynopsis.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/funcsynopsis.tabular.threshold.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/function.parens.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.id.attributes.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.index.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.legalnotice.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.manifest.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.meta.abstract.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.revhistory.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.section.toc.level.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/generate.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossary.as.blocks.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossary.collection.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossary.sort.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossentry.show.acronym.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glosslist.as.blocks.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossterm.auto.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossterm.separation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/glossterm.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/graphic.default.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/graphical.admonition.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/graphics.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/graphicsize.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/graphicsize.use.img.src.path.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.column.widths.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.content.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.hr.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.rule.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.table.height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/header.table.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/headers.on.blank.pages.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/hidetoc.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/highlight.default.language.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/highlight.source.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/home.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.append.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.base.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.cellpadding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.cellspacing.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.cleanup.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.ext.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.extra.head.links.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.head.legalnotice.link.multiple.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.head.legalnotice.link.types.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.longdesc.link.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.longdesc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.stylesheet.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/html.stylesheet.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.alias.file.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.back.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.forward.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.hideshow.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.home.url.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.home.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.url.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.url.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.locate.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.next.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.options.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.prev.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.print.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.refresh.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.stop.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.button.zoom.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.chm.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.default.topic.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.display.progress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.encoding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.enhanced.decompilation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.enumerate.images.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.force.map.and.alias.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.binary.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.folders.instead.books.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.section.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.show.root.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhk.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhp.tail.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhp.window.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhp.windows.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.hhp.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.map.file.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.only.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.remember.window.position.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.show.advanced.search.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.show.favorities.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.show.menu.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.show.toolbar.text.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.use.hhk.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/htmlhelp.window.geometry.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/hyphenate.verbatim.characters.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/hyphenate.verbatim.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/hyphenate.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/id.warnings.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ignore.image.scaling.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/img.src.path.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.div.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.entry.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.method.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.number.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.on.role.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.on.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.page.number.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.prefer.titleabbrev.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.preferred.page.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.range.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/index.term.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/informal.object.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/informalequation.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/informalexample.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/informalfigure.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/informaltable.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/inherit.keywords.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/insert.link.page.number.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/insert.olink.page.number.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/insert.olink.pdf.frag.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/insert.xref.page.number.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/itemizedlist.label.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/itemizedlist.label.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/itemizedlist.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/javahelp.encoding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/keep.relative.image.uris.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/keyboard.nav.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/l10n.gentext.default.language.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/l10n.gentext.language.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/l10n.gentext.use.xref.language.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/l10n.lang.value.rfc.compliant.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/label.from.part.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/line-height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/linenumbering.everyNth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/linenumbering.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/linenumbering.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/linenumbering.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/link.mailto.url.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/list.block.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/list.block.spacing.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/list.item.spacing.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/make.graphic.viewport.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/make.index.markup.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/make.single.year.ranges.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/make.valid.html.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/make.year.ranges.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.authors.section.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.break.after.slash.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.charmap.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.charmap.subset.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.charmap.uri.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.charmap.use.subset.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.copyright.section.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.endnotes.are.numbered.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.endnotes.list.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.endnotes.list.heading.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.font.funcprototype.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.font.funcsynopsisinfo.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.font.table.headings.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.font.table.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.hyphenate.computer.inlines.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.hyphenate.filenames.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.hyphenate.urls.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.hyphenate.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.indent.blurbs.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.indent.lists.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.indent.refsect.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.indent.verbatims.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.indent.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.justify.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.links.are.underlined.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.base.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.encoding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.in.separate.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.lang.in.name.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.manifest.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.manifest.filename.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.quietly.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.output.subdirs.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.segtitle.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.string.subst.map.local.post.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.string.subst.map.local.pre.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.string.subst.map.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.subheading.divider.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.subheading.divider.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.table.footnotes.divider.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.extra1.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.extra2.max.length.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.extra2.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.extra3.max.length.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.extra3.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/man.th.title.max.length.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/manifest.in.base.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/manifest.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/manual.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/margin.note.float.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/margin.note.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/margin.note.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/margin.note.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/marker.section.level.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/menuchoice.menu.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/menuchoice.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/minus.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/monospace.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/monospace.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/monospace.verbatim.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/multiframe.bottom.bgcolor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/multiframe.navigation.height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/multiframe.top.bgcolor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/multiframe.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nav.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nav.table.summary.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navbgcolor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navbodywidth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navig.graphics.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navig.graphics.path.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navig.graphics.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navig.showtitles.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/navtocwidth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/next.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/no.home.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/no.next.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/no.prev.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/no.toc.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/no.up.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nominal.image.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nominal.image.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nominal.table.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/nongraphical.admonition.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/normal.para.spacing.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.base.uri.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.debug.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.doctitle.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.fragid.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.lang.fallback.sequence.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.outline.ext.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.pubid.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.resolver.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/olink.sysid.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/orderedlist.label.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/orderedlist.label.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/orderedlist.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/othercredit.like.author.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/output-root.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/output.indent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/overlay.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/overlay.logo.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/overlay.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.height.portrait.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.margin.bottom.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.margin.inner.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.margin.outer.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.margin.top.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.orientation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.width.portrait.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/page.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/pages.template.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/paper.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/para.propagates.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/part.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/passivetex.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/pgwide.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/phrase.propagates.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/pixels.per.inch.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/plus.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/points.per.em.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/preface.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/prefer.internal.olink.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/preferred.mediaobject.role.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/prev.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/procedure.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/process.empty.source.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/process.source.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.arch.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.attribute.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.audience.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.condition.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.conformance.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.lang.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.os.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.revision.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.revisionflag.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.role.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.security.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.status.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.userlevel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.value.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.vendor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/profile.wordsize.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/punct.honorific.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.defaultlabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.in.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.inherit.numeration.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.nested.in.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level1.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level2.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level3.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level4.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level5.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.level6.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qanda.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/qandadiv.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/rebuild-all.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refclass.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.date.profile.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.date.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.generate.name.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.generate.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.manual.fallback.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.manual.profile.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.manual.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.meta.get.quietly.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.pagebreak.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.source.fallback.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.source.name.profile.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.source.name.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.source.name.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.version.profile.enabled.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.version.profile.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.version.suppress.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/refentry.xref.manvolnum.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/reference.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/region.after.extent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/region.before.extent.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/revhistory.table.cell.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/revhistory.table.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/revhistory.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/root.filename.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/root.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/rootid.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/runinhead.default.title.end.punct.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/runinhead.title.end.punct.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/running.foot.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sans.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/saxon.callouts.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/saxon.character.representation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/saxon.linenumbering.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/saxon.tablecolumns.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/script.dir.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.autolabel.max.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.autolabel.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.container.element.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.label.includes.component.label.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level1.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level2.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level3.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level4.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level5.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.level6.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level1.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level2.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level3.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level4.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level5.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.level6.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/section.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/segmentedlist.as.table.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sequential.links.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/shade.verbatim.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/shade.verbatim.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/show.comments.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/show.foil.number.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/show.revisionflag.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/showtoc.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/side.float.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sidebar.float.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sidebar.float.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sidebar.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/sidebar.title.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/simplesect.in.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/slide.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/slide.title.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/slides.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/slides.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/spacing.paras.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/speakernote.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/subscript.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/superscript.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/suppress.footer.navigation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/suppress.header.navigation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/suppress.homepage.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/suppress.navigation.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/symbol.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.borders.with.css.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.cell.border.color.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.cell.border.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.cell.border.thickness.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.cell.padding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.entry.padding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.footnote.number.format.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.footnote.number.symbols.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.footnote.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.frame.border.color.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.frame.border.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.frame.border.thickness.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.spacer.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/table.table.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/tablecolumns.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/target.database.document.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/targets.filename.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/template.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/tex.math.delims.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/tex.math.file.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/tex.math.in.alt.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/text.home.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/text.next.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/text.prev.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/text.toc.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/text.up.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/textbgcolor.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/textdata.default.encoding.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/textinsert.extension.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/title.font.family.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/title.margin.left.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/titlefoil.html.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.bg.color.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.blank.graphic.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.blank.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.blank.text.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.hide.show.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.html.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.indent.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.line.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.list.type.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.margin.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.max.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.pointer.graphic.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.pointer.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.pointer.text.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.row.height.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.section.depth.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.spacer.graphic.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.spacer.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.spacer.text.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/toc.width.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ua.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ulink.footnotes.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ulink.hyphenate.chars.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ulink.hyphenate.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ulink.show.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/ulink.target.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/up.image.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.embed.for.svg.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.id.as.filename.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.id.function.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.local.olink.style.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.role.as.xrefstyle.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.role.for.mediaobject.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/use.svg.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/variablelist.as.blocks.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/variablelist.as.table.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/variablelist.max.termlength.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/variablelist.term.break.after.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/variablelist.term.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/verbatim.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/wordml.template.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xbCollapsibleLists.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xbDOM.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xbLibrary.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xbStyle.js.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xep.extensions.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xep.index.item.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xref.label-page.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xref.label-title.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xref.properties.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xref.title-page.separator.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/params/xref.with.number.and.title.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/profiling/profile-mode.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/profiling/profile.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/profiling/strip-attributes.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/profiling/xsl2profile.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/blocks-spec.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/blocks2dbk.dtd (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/blocks2dbk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/dbk2pages.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/dbk2wordml.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/docbook-pages.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/normalise2sections.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/pages-normalise.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/pages2normalise.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/sections-spec.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/sections2blocks.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/specifications.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/supported.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/template-pages.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/template.dot (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/template.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml-blocks.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml-final.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml-normalise.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml-sections.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/roundtrip/wordml2normalise.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/CTOCWidget.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/overlay.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides-default.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides-frames.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides-plain.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides-table.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides-w3c.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides.css (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/slides.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/ua.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbCollapsibleLists.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbDOM.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbDebug.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbLibrary.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbStyle-css.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbStyle-nn4.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbStyle-not-supported.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/browser/xbStyle.js (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/fo/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/fo/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/fo/plain.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/arr-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/arr-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/but-fforward.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/but-info.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/but-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/but-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/but-rewind.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/nav-home.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/nav-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/nav-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/nav-toc.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/nav-up.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/w3c-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/w3c-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/active/w3c-toc.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/arrow.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/blank.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/blank.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/hidetoc.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/but-fforward.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/but-info.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/but-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/but-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/but-rewind.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/nav-home.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/nav-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/nav-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/nav-toc.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/nav-up.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-next.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-prev.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-toc.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/plus.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/pointer.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/showtoc.gif (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/toc/bullet.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/toc/closed.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/graphics/toc/open.png (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/css.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/default.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/flat.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/frames.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/graphics.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/jscript.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/plain.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/slides-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/tables.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/vslides.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/html/w3c.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/htmlhelp/htmlhelp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/default.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/cmp.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/date-time.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/example.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/markup.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/math.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/node.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/stdlib.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/string.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/svg.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/keynote/xsltsl/uri.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/svg/default.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/css.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/default.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/flat.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/frames.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/graphics.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/jscript.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/plain.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/slides-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/tables.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/vslides.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/slides/xhtml/w3c.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/template/titlepage.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/template/titlepage.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/tools/bin/docbook-xsl-update (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/tools/make/Makefile.DocBook (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/tools/make/Makefile.combine (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/tools/make/Makefile.docParam (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/autolayout.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/chunk-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/chunk-tabular.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/chunk-website.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/head.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/makefile-dep.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/olink.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/param.xml (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/rss.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/tabular.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/toc-tabular.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/toc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/website-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/website-targets.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/website.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/website/xbel.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/admon.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/annotations.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/autoidx-kimber.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/autoidx-kosek.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/autoidx.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/autotoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/biblio-iso690.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/biblio.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/block.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/callout.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/changebars.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunk-code.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunk-common.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunker.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunkfast.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/chunktoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/component.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/division.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/ebnf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/footnote.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/formal.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/glossary.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/graphics.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/highlight.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/html-rtf.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/html.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/htmltbl.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/index.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/info.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/inline.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/keywords.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/lists.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/maketoc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/manifest.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/math.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/oldchunker.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/onechunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/param.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/pi.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/profile-chunk-code.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/profile-chunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/profile-docbook.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/profile-onechunk.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/qandaset.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/refentry.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/sections.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/synop.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/table.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/task.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/titlepage.templates.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/titlepage.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/toc.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/verbatim.xsl (100%) rename {jonas_doc/tools => tools}/docbook-xsl-1.73.2/xhtml/xref.xsl (100%) rename {jonas_doc/tools => tools}/fop-0.95/KEYS (100%) rename {jonas_doc/tools => tools}/fop-0.95/LICENSE (100%) rename {jonas_doc/tools => tools}/fop-0.95/NOTICE (100%) rename {jonas_doc/tools => tools}/fop-0.95/README (100%) rename {jonas_doc/tools => tools}/fop-0.95/build/fop.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/conf/fop.xconf (100%) rename {jonas_doc/tools => tools}/fop-0.95/fop (100%) rename {jonas_doc/tools => tools}/fop-0.95/fop.bat (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/README.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/avalon-framework-4.2.0.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/avalon-framework.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/avalon-framework.NOTICE.TXT (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/batik-all-1.7.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/batik.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/batik.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-io-1.3.1.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-io.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-io.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-logging-1.0.4.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-logging.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/commons-logging.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/serializer-2.7.0.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/serializer.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/serializer.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan-2.7.0.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan.BCEL.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan.regexp.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xalan.runtime.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xerces.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xercesImpl-2.7.1.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xercesImpl.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xercesImpl.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-1.3.04.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext-1.3.04.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.LICENSE.dom-documentation.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.LICENSE.dom-software.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.LICENSE.sac.html (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis-ext.README.dom.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis.LICENSE-SAX.html (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis.LICENSE.DOM-documentation.html (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis.LICENSE.DOM-software.html (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xml-apis.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xmlgraphics-commons-1.3.1.jar (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xmlgraphics-commons.LICENSE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/lib/xmlgraphics-commons.NOTICE.txt (100%) rename {jonas_doc/tools => tools}/fop-0.95/status.xml (100%) rename {jonas_doc/tools => tools}/maven-ant-tasks-2.0.9.jar (100%) rename {jonas_doc/tools => tools}/win32/iconv.dll (100%) rename {jonas_doc/tools => tools}/win32/libexslt.dll (100%) rename {jonas_doc/tools => tools}/win32/libxml2.dll (100%) rename {jonas_doc/tools => tools}/win32/libxslt.dll (100%) rename {jonas_doc/tools => tools}/win32/xsltproc.exe (100%) rename {jonas_doc/tools => tools}/win32/zlib1.dll (100%) diff --git a/jonas_doc/.gitignore b/.gitignore similarity index 100% rename from jonas_doc/.gitignore rename to .gitignore diff --git a/jonas_doc/.project b/.project similarity index 100% rename from jonas_doc/.project rename to .project diff --git a/jonas_doc/README b/README similarity index 100% rename from jonas_doc/README rename to README diff --git a/jonas_doc/build.properties b/build.properties similarity index 100% rename from jonas_doc/build.properties rename to build.properties diff --git a/jonas_doc/build.xml b/build.xml similarity index 100% rename from jonas_doc/build.xml rename to build.xml diff --git a/jonas/.checkstyle b/jonas/.checkstyle deleted file mode 100644 index f197dee3b2..0000000000 --- a/jonas/.checkstyle +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/jonas/.checkstyle_eclipse_config b/jonas/.checkstyle_eclipse_config deleted file mode 100644 index 8bfd33c209..0000000000 --- a/jonas/.checkstyle_eclipse_config +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/.classpath b/jonas/.classpath deleted file mode 100644 index 9ffa8fbde5..0000000000 --- a/jonas/.classpath +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/.gitignore b/jonas/.gitignore deleted file mode 100644 index 015586ae37..0000000000 --- a/jonas/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Maven -# ----------------------------------- -target/ - -# IntelliJ Idea -# ----------------------------------- -.idea/ -*.iml -*.iws - -# Eclipse -# ----------------------------------- -.settings/ -.classpath -.project diff --git a/jonas/.project b/jonas/.project deleted file mode 100644 index 0af046e728..0000000000 --- a/jonas/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - jonas - - - - - - org.maven.ide.eclipse.maven2Builder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - com.atlassw.tools.eclipse.checkstyle.CheckstyleNature - - diff --git a/jonas/.settings/org.eclipse.jdt.core.prefs b/jonas/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 1d81c0f752..0000000000 --- a/jonas/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,268 +0,0 @@ -#Tue Aug 17 09:56:30 CEST 2010 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=1 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=128 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/jonas/.settings/org.eclipse.jdt.ui.prefs b/jonas/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 9d0ec04856..0000000000 --- a/jonas/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,57 +0,0 @@ -#Wed Sep 17 14:43:57 CEST 2008 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_JOnAS formatter -formatter_settings_version=11 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=false -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=true -sp_cleanup.make_private_fields_final=false -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=true -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/jonas/.settings/org.maven.ide.eclipse.prefs b/jonas/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index 89f176d022..0000000000 --- a/jonas/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,9 +0,0 @@ -#Wed Sep 16 13:07:40 CEST 2009 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -includeModules=true -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -skipCompilerPlugin=true -version=1 diff --git a/jonas/LicenceAgreement.txt b/jonas/LicenceAgreement.txt deleted file mode 100644 index 678c6921d5..0000000000 --- a/jonas/LicenceAgreement.txt +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/jonas/README b/jonas/README deleted file mode 100644 index fded334f95..0000000000 --- a/jonas/README +++ /dev/null @@ -1,6 +0,0 @@ - ==================== - How to compile JOnAS - ==================== - -Here is how to build JOnAS 5: - http://wiki.jonas.ow2.org/xwiki/bin/view/Doc/BuildingJOnAS5 \ No newline at end of file diff --git a/jonas/ReleaseNotes.txt b/jonas/ReleaseNotes.txt deleted file mode 100644 index b2a5e1f23a..0000000000 --- a/jonas/ReleaseNotes.txt +++ /dev/null @@ -1,2 +0,0 @@ -Release Notes of JOnAS 5.2 are available online -on the JOnAS web site: http://wiki.jonas.ow2.org diff --git a/jonas/assemblies/binaries/pom.xml b/jonas/assemblies/binaries/pom.xml deleted file mode 100644 index dcdcbf8f30..0000000000 --- a/jonas/assemblies/binaries/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - org.ow2.jonas - assemblies - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.assemblies - binaries - JOnAS :: Assemblies :: Binaries - - - - - - src/main/resources - true - - - - - \ No newline at end of file diff --git a/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen b/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen deleted file mode 100644 index c9bc686a35..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" - -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/jonas-generators-clientstubs.jar$SPS$JONAS_ROOT/lib/client.jar - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.genclientstub.ClientStubGen "$@" diff --git a/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen.bat b/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen.bat deleted file mode 100755 index 30e27fb92f..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/ClientStubGen.bat +++ /dev/null @@ -1,50 +0,0 @@ -@ECHO OFF -REM --------------------------------------------------------------------------- -REM JOnAS: Java(TM) Open Application Server -REM Copyright (C) 1999-2008 Bull S.A.S. -REM Contact: jonas-team@ow2.org -REM -REM This library is free software; you can redistribute it and/or -REM modify it under the terms of the GNU Lesser General Public -REM License as published by the Free Software Foundation; either -REM version 2.1 of the License, or any later version. -REM -REM This library is distributed in the hope that it will be useful, -REM but WITHOUT ANY WARRANTY; without even the implied warranty of -REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -REM Lesser General Public License for more details. -REM -REM You should have received a copy of the GNU Lesser General Public -REM License along with this library; if not, write to the Free Software -REM Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -REM USA -REM -REM Initial developer(s): Guillaume Sauthier -REM -REM --------------------------------------------------------------------------- -REM $Id$ -REM --------------------------------------------------------------------------- - -SET JONAS_LIB=%JONAS_ROOT%\lib - -if ["%JONAS_ROOT%"]==[""] Goto RootIsNotSetError - -CALL "%JONAS_ROOT%\bin\setenv.bat" -ECHO JONAS_BASE is set to %JONAS_BASE% - -SET JONAS_OPTS=-Djonas.root="%JONAS_ROOT%" -SET JONAS_OPTS=%JONAS_OPTS% -Djonas.base="%JONAS_BASE%" -SET JONAS_OPTS=%JONAS_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -SET JONAS_OPTS=%JONAS_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -REM add ow_jonas_bootstrap.jar to the classpath for the bootstrap class -SET JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_ROOT%\lib\jonas-generators-clientstubs.jar;%JONAS_ROOT%\lib\client.jar - -%JAVA% -cp "%JONAS_CLASSPATH%" %JONAS_OPTS% org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.genclientstub.ClientStubGen %* -GOTO End - -:RootIsNotSetError -ECHO "JONAS_ROOT must be set" -GOTO End - -:End diff --git a/jonas/assemblies/binaries/src/main/resources/bin/GenIC b/jonas/assemblies/binaries/src/main/resources/bin/GenIC deleted file mode 100644 index 7facbef5bb..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/GenIC +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" - -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/client.jar - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.genic.GenIC "$@" diff --git a/jonas/assemblies/binaries/src/main/resources/bin/GenIC.bat b/jonas/assemblies/binaries/src/main/resources/bin/GenIC.bat deleted file mode 100755 index dca4926345..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/GenIC.bat +++ /dev/null @@ -1,51 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -setlocal - -call "%JONAS_ROOT%\bin\setenv.bat" -echo JONAS_BASE is set to %JONAS_BASE% - -rem Check environment variables: -if ["%JONAS_ROOT%"]==[""] goto setRoot - -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_ROOT%\lib\client.jar - -:set_opts -set JONAS_OPTS=-Djonas.root="%JONAS_ROOT%" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.base="%JONAS_BASE%" -set JONAS_OPTS=%JONAS_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -set JONAS_OPTS=%JONAS_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -%JAVA% -cp "%JONAS_CLASSPATH%" %JONAS_OPTS% org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.genic.GenIC %* -goto end - -:setRoot -@echo "JONAS_ROOT must be set" -goto end - -:end - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/JmsServer b/jonas/assemblies/binaries/src/main/resources/bin/JmsServer deleted file mode 100644 index cc4a4e3a89..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/JmsServer +++ /dev/null @@ -1,54 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ - -DTransaction=fr.dyade.aaa.util.NullTransaction \ - -Dfr.dyade.aaa.agent.A3CONF_DIR=$JONAS_BASE/conf \ -" -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap fr.dyade.aaa.agent.AgentServer 0 ./s0 "$@" - - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/JmsServer.bat b/jonas/assemblies/binaries/src/main/resources/bin/JmsServer.bat deleted file mode 100755 index 544fdf565f..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/JmsServer.bat +++ /dev/null @@ -1,48 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Philippe Durieux -Rem Contributor(s): -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Check environment variables: -if not ["%JONAS_ROOT%"]==[""] Goto Run -@echo "JONAS_ROOT must be set" -Goto End - -:Run -call "%JONAS_ROOT%\bin\setenv.bat" - -set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -set JAVA_OPTS=%JAVA_OPTS% -Djonas.base="%JONAS_BASE%" -set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -set JAVA_OPTS=%JAVA_OPTS% -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" -set JAVA_OPTS=%JAVA_OPTS% -DTransaction=fr.dyade.aaa.util.NullTransaction -set JAVA_OPTS=%JAVA_OPTS% -Dfr.dyade.aaa.agent.A3CONF_DIR="%JONAS_BASE%\conf" - -%JAVA% %JAVA_OPTS% -cp "%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar" org.ow2.jonas.client.boot.Bootstrap fr.dyade.aaa.agent.AgentServer 0 .\s0 %1 %2 %3 %4 %5 %6 %7 %8 %9 - -:End diff --git a/jonas/assemblies/binaries/src/main/resources/bin/RAConfig b/jonas/assemblies/binaries/src/main/resources/bin/RAConfig deleted file mode 100644 index ed2a72ea0a..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/RAConfig +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" - -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/jonas-generators-raconfig.jar$SPS$JONAS_ROOT/lib/client.jar - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.raconfig.RAConfig "$@" diff --git a/jonas/assemblies/binaries/src/main/resources/bin/RAConfig.bat b/jonas/assemblies/binaries/src/main/resources/bin/RAConfig.bat deleted file mode 100755 index 5b39668146..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/RAConfig.bat +++ /dev/null @@ -1,54 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Benoit Pelletier -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -setlocal - -Rem Check environment variables: -if ["%JONAS_ROOT%"]==[""] Goto SetRoot -call "%JONAS_ROOT%\bin\setenv.bat" - -Rem --------------------------------------------------------------------------- -Rem Set JAVA_OPTS -Rem --------------------------------------------------------------------------- -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.base="%JONAS_BASE%" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -Set JONAS_CLASSPATH=%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_CLASSPATH% -Set JONAS_CLASSPATH=%JONAS_ROOT%\lib\jonas-generators-raconfig.jar;%JONAS_CLASSPATH% -Set JONAS_CLASSPATH=%JONAS_ROOT%\lib\client.jar;%JONAS_CLASSPATH% - -%JAVA% -cp "%JONAS_CLASSPATH%" %JAVA_OPTS% org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.raconfig.RAConfig %1 %2 %3 %4 %5 %6 %7 %8 %9 -Goto End - -:SetRoot -@echo "JONAS_ROOT must be set" -Goto End - -:End diff --git a/jonas/assemblies/binaries/src/main/resources/bin/WsGen b/jonas/assemblies/binaries/src/main/resources/bin/WsGen deleted file mode 100644 index 0666f0b281..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/WsGen +++ /dev/null @@ -1,50 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" - -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/client.jar - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.wsgen.WsGen "$@" diff --git a/jonas/assemblies/binaries/src/main/resources/bin/WsGen.bat b/jonas/assemblies/binaries/src/main/resources/bin/WsGen.bat deleted file mode 100755 index 60712346cd..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/WsGen.bat +++ /dev/null @@ -1,53 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Guillaume Sauthier -Rem Contributor(s): -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -setlocal - -Rem Check environment variables: -if ["%JONAS_ROOT%"]==[""] Goto SetRoot - -call "%JONAS_ROOT%\bin\setenv.bat" -echo JONAS_BASE is set to %JONAS_BASE% - -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.base="%JONAS_BASE%" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -Set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_ROOT%\lib\client.jar - -%JAVA% -cp "%JONAS_CLASSPATH%" %JAVA_OPTS% org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.generators.wsgen.WsGen %1 %2 %3 %4 %5 %6 %7 %8 %9 -Goto End - -:SetRoot -@echo "JONAS_ROOT must be set" -Goto End - -:End - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jcl.bash b/jonas/assemblies/binaries/src/main/resources/bin/jcl.bash deleted file mode 100644 index 504109ed41..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jcl.bash +++ /dev/null @@ -1,582 +0,0 @@ -#!/bin/bash -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2006-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s) 4.8.2: Jerome Pioux - Benoit Pelletier -# -# Modifications for 4.8.3 -# ----------------------- -# Jerome - 10/17/2006 -# - Make this bash script to work for ksh. ie: -# (first line may need to be altered on some sites)... -# * change all with -# * Add a prefix (Do) in the start,stop,kill,status function names -# * Other modifications are flagged as Jerome - 10/17/2006 in the code -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Status|Start|Stop|Kill JONAS cluster node(s) -# Usage: cl [-n ] [status] | < [-f] kill | [-d] start | stop >" - -# If XWINDOWS=yes or YES exists in the user env., then use -win on startup -XWINDOWS=${XWINDOWS:-no} - -# Default values -JCL_NUMBER_OF_NODES=${JCL_NUMBER_OF_NODES:-40} -JCL_BASE_PREFIX=${JCL_BASE_PREFIX:-$JCL_CLUSTER_DAEMON_DIR/jb} -JCL_DOMAIN_NAME=${JCL_DOMAIN_NAME:-sampleClusterDomain} -JCL_EAR_FILE=${JCL_EAR_FILE:-$JONAS_ROOT/examples/cluster-j2ee14/output/apps/sampleCluster2.ear} -JCL_HA_EAR_FILE=${JCL_HA_EAR_FILE:-$JONAS_ROOT/examples/cluster-j2ee14/output/apps/haTransactions.ear} -JCL_JAVAEE5_EAR_FILE=${JCL_JAVAEE5_EAR_FILE:-$JONAS_ROOT/examples/cluster-javaee5/output/apps/sampleCluster3.ear} -JCL_NODE_NAME_PREFIX=${JCL_NODE_NAME_PREFIX:-node} -JCL_CLUSTER_DAEMON_DIR=${JCL_CLUSTER_DAEMON_DIR:-cd} -JCL_DB_DIR=${JCL_DB_DIR:-db} -JCL_DB_NAME=${JCL_DB_NAME:-db} -JCL_MASTER_DIR=${JCL_MASTER_DIR:-master} -JCL_MASTER_NAME=${JCL_MASTER_NAME:-master} - -# ------------------------------------------ -# NO NEED TO MODIFY ANYTHING BELOW THIS LINE -# ------------------------------------------ -JCL_BASE_DEBUG_PORT=${JCL_BASE_DEBUG_PORT:-414} - -# Delay in seconds to apply between nodes startup/shutdown -DELAY1_AFTER_NODE_START=20 -DELAY2_AFTER_NODE_START=3 -DELAY_BETWEEN_NODE_STOP=1 - -CLUSTER="" -jonasbase="" -typeset -i nnodes=0 -typeset -i wholeCluster=0 -osname=`uname -s` - - -# ------ -# ATEXIT -# ------ -atexit() -{ - printf "\n" -} - -# ----- -# USAGE -# ----- -usage() -{ - printf "\n" - printf "usage: $(basename $0) [ [-n ] [status]] | < [-f] kill | [-d] start | stop > ]\n" - printf "\n" - printf " With node_id: clusterd (or cd), $JCL_MASTER_NAME (or ms), $JCL_DB_NAME \n" - printf " With node_number: node number of JOnAS instances which corresponds to the suffix of the node name\n" - printf " * Form1: Multiple nodes can be specified between commas (no space)\n" - printf " * Form2: Range(s) can be entered using a dash between node numbers (no space)\n" - printf " * Any combination between form1 and form2 is allowed\n" - printf " Ex: -n $JCL_DB_NAME,1-3 applies to the $JCL_DB_NAME node and nodes 1,2 and 3\n" - printf " Notes:\n" - printf " * Do not specify -n or use -nall to address all nodes in the cluster\n" - printf " * A node number for your cluster must be between 1 and $JCL_NUMBER_OF_NODES\n" - printf "\n" - printf " Use \"export XWINDOWS=yes\" if you want to start the JVMs in dedicated xterms\n"; - printf "\n" - exit 1 -} - -# --------- -# DOPADDING -# --------- -DoPadding() -{ - # Use to align fields on the screen - typeset -i m1=$1 - typeset -i m2=$2 - typeset -i p=m2-m1 - - typeset -i i=1 - while [[ $i -le $p ]]; do - printf " " - i=i+1 - done - printf " " - return -} - -# ------------ -# SETJONASBASE -# ------------ -SetJonasBase() -{ - # Do not add any echo or printf in this routine - # besides the one before the return - case $1 in - clusterd) - base=$JCL_CLUSTER_DAEMON_DIR - ;; - $JCL_MASTER_NAME) - base=$JCL_MASTER_DIR - ;; - $JCL_DB_NAME) - base=$JCL_DB_DIR - ;; - *) - # Jerome - 10/17/2006 - char pos in string doesn't work in ksh - #typeset -i l=${#JCL_NODE_NAME_PREFIX} - #base=$JCL_BASE_PREFIX${node:$l} - base=$JCL_BASE_PREFIX${node#*$JCL_NODE_NAME_PREFIX} - ;; - esac - echo $base - return -} - -# ---------- -# SETCLUSTER -# ---------- -SetCluster() -{ -str=${1:-all} -typeset -i n=1 - -# --- All nodes -# We are in control so order nodes "startup-ready" -if [[ $str = 0 || $str = all ]]; then - wholeCluster=1 - cluster="clusterd $JCL_DB_NAME $JCL_MASTER_NAME" - while [[ $n -le $JCL_NUMBER_OF_NODES ]]; do - cluster="$cluster $JCL_NODE_NAME_PREFIX$n" - n=n+1 - done - CLUSTER=${cluster#\ *} - return -fi - -# --- Partial nodes list -# Respect order chosen by user -typeset -i err=0 -typeset -i numnode -OLDIFS=$IFS - -# For nodes between commas -IFS=, -for substr in $str; do - n="$(expr $substr : '.*-')" - - # No dash-formed node - if [[ $n -eq 0 ]]; then - # Non numeric node - if ( echo "$substr" | grep -q [^[:digit:]] ); then - # Abbrev. - [[ $substr = cd ]] && substr=clusterd - [[ $substr = ms ]] && substr=$JCL_MASTER_NAME - if [[ $substr != clusterd && - $substr != $JCL_MASTER_NAME && - $substr != $JCL_DB_NAME ]]; then - err=1 - fi - cluster="$cluster $substr" - # Numeric - else - numnode=$substr - # numnode must be less then JCL_NUMBER_OF_NODES - [[ $numnode -gt $JCL_NUMBER_OF_NODES ]] && err=1 - cluster="$cluster $JCL_NODE_NAME_PREFIX$substr" - fi - - # dash-formed node - else - n1=${substr%%-*} - n2=${substr##*-} - # Both dash-formed nodes must be numeric - if ( echo "$n1" | grep -q [^[:digit:]] || - echo "$n2" | grep -q [^[:digit:]] ); then - err=1 - else - typeset -i i=$n1 && typeset -i imax=$n2 - # First dash-formed node must be less or equal the second - # which in turn must be less then JCL_NUMBER_OF_NODES - [[ $i -gt $imax || $imax -gt $JCL_NUMBER_OF_NODES ]] && err=1 - while [[ $i -le $imax ]]; do - cluster="$cluster $JCL_NODE_NAME_PREFIX$i" - i=i+1 - done - fi - fi -done -IFS=$OLDIFS - -# Remove heading space if any -cluster=${cluster#\ *} - -# Raise error on duplicates -if [[ $err -eq 0 ]]; then - for node1 in $cluster; do - n=0 - for node2 in $cluster; do - [[ $node1 = $node2 ]] && n=n+1 - done - [[ $n -gt 1 ]] && err=1 && break - done -fi - -# Error - empty cluster -[[ $err -eq 1 ]] && cluster="" -CLUSTER=$cluster -return -} - -# --------------- -# CLUSTER DAEMON -# --------------- -ClusterDaemon() -{ - case ${1:-na} in - start) - printf "\n\n*** Starting JOnAS cluster daemon ... \n" - # Jerome - 10/17/2006 - Change regex below for ksh support - #if [[ $XWINDOWS =~ '[Yy][Ee][Ss]' ]]; then - if [[ $XWINDOWS = [Yy][Ee][Ss] ]]; then - xterm -title $HOSTNAME:clusterd -geometry 110x16 -sb -e jclusterd start & - else - jclusterd start & - fi - sleep $DELAY2_AFTER_NODE_START - ;; - - stop) - echo -e "\n\n*** Stopping JOnAS cluster daemon ..." - jclusterd stop - sleep $DELAY_BETWEEN_NODE_STOP - ;; - esac - return -} - -# ------- -# SOSTART -# ------- -Dostart() -{ - typeset -i delay - typeset -i n=1 - - # Jerome - 10/17/2006 - Change regex below for ksh support - #[[ $XWINDOWS =~ '[Yy][Ee][Ss]' ]] && WIN="-win" || WIN="" - [[ $XWINDOWS = [Yy][Ee][Ss] ]] && WIN="-win" || WIN="" - - # Startup cluster; If we are in control of the whole cluster, the nodes - # are already in the correct order for startup - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - export JONAS_BASE=$jonasbase - DBG="" - OSGI="" - - # Set debug and startup delay - case $node in - clusterd) - ClusterDaemon start - continue - ;; - master | db) - delay=$DELAY1_AFTER_NODE_START - [[ $CLEAN = true ]] && OSGI="-clean" - [[ $DEV = true ]] && OSGI="$OSGI -dev" - [[ $GUI = true ]] && OSGI="$OSGI -gui" - ;; - *) - delay=$DELAY2_AFTER_NODE_START - # Jerome - 10/17/2006 - char pos in string doesn't work in ksh - #typeset -i l=${#node} - #[[ $DEBUG = true ]] && DBG="-debug -p $JCL_BASE_DEBUG_PORT${node:$l}" - [[ $DEBUG = true ]] && DBG="-debug -p $JCL_BASE_DEBUG_PORT${node#*$JCL_NODE_NAME_PREFIX}" - [[ $CLEAN = true ]] && OSGI="-clean" - [[ $DEV = true ]] && OSGI="$OSGI -dev" - [[ $GUI = true ]] && OSGI="$OSGI -gui" - ;; - esac - - - - # Save and clean up logs - rm -rf $JONAS_BASE/logs/old/* - mkdir -p $JONAS_BASE/logs/old - mv $JONAS_BASE/logs/* $JONAS_BASE/logs/old 2>/dev/null - - case $node in - node1 | node2 | node3 | node4) - if [[ "$JCL_EAR_FILE" != "NULL" && -f $JCL_EAR_FILE ]]; then - cp $JCL_EAR_FILE $JONAS_BASE/deploy 2>/dev/null - fi - if [[ "$JCL_HA_EAR_FILE" != "NULL" && -f $JCL_HA_EAR_FILE ]]; then - cp $JCL_HA_EAR_FILE $JONAS_BASE/deploy 2>/dev/null - fi - if [[ "$JCL_JAVAEE5_EAR_FILE" != "NULL" && -f $JCL_JAVAEE5_EAR_FILE ]]; then - cp $JCL_JAVAEE5_EAR_FILE $JONAS_BASE/deploy 2>/dev/null - fi - ;; - esac - - cmd="jonas start $OSGI $WIN $DBG -n $node -Ddomain.name=$JCL_DOMAIN_NAME" - printf "\n\n*** Starting JOnAS $node instance ... \n($cmd)\n" - $cmd - - # Wait delay seconds between nodes startup - if [[ $n -lt $nnodes && $WIN = "-win" ]]; then - printf "\n\tWaiting ${delay}s before starting next node ..." - sleep $delay - fi - n=n+1 - done - return -} - -# ------ -# DOSTOP -# ------ -Dostop() -{ - typeset -i delay=$DELAY_BETWEEN_NODE_STOP - - # Stop cluster; If we are in control of the whole cluster, the nodes - # are in the correct order for startup which is the reverse order of - # how we would like to stop them; so let's build a "reverse" cluster - if [[ $wholeCluster -eq 1 ]]; then - for node in $CLUSTER; do - cluster2="$node $cluster2" - done - CLUSTER=$cluster2 - fi - - # Stop cluster - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - export JONAS_BASE=$jonasbase - export CATALINA_BASE=$JONAS_BASE - - if [[ $node = clusterd ]]; then - ClusterDaemon stop - continue - fi - - cmd="jonas stop -n $node" - printf "\n\n*** Stopping JOnAS $node instance ...\n($cmd)\n" - $cmd - - sleep $delay - done - return -} - -# ------ -# DOKILL -# ------ -Dokill() -{ - # Kill cluster - for node in $CLUSTER; do - - # flegare+vma - little adaptation to make it run under solaris: - # this ps does not truncate its output to 80 chars but does not accept - # the '-o' param - if [[ $osname = "SunOS" ]]; then - pid=$(/usr/ucb/ps aww | grep $strToMatch | grep -v grep | cut -d' ' -f2) - else - if [[ $osname = "HP-UX" ]]; then - pid=$(ps -efx | grep $strToMatch | grep -v grep | awk '{ print $2 }') - else - # Jerome - 10/17/2006 - Make ps formatting variables to please AIX and LINUX - proc=$(ps -$psfmt "%p|%a" | grep Djonas.name=$node | grep -v grep | sed -e 's/ *//g') - # Jerome - 10/17/2006 - The pipe below must be protected in ksh - pid=${proc%%\|*} - fi - fi - - if [[ ! -z $pid ]]; then - cmd="/bin/kill -$force $pid" - printf "\n*** Killing JOnAS $node instance ...\n($cmd)\n" - $cmd - fi - done - return -} - -# -------- -# DOSTATUS -# -------- -Dostatus() -{ - typeset -i l - typeset -i lnode - typeset -i ljonasbase - typeset -i maxlnode=0 - typeset -i maxljonasbase=0 - - # Get longest strings length - # (to use in field alignment for display below) - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - - lnode=${#node} - ljonasbase=${#jonasbase} - [[ $lnode -gt $maxlnode ]] && maxlnode=$lnode - [[ $ljonasbase -gt $maxljonasbase ]] && maxljonasbase=$ljonasbase - done - - printf "\n" - - # Display status - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - - lnode=${#node} - ljonasbase=${#jonasbase} - - printf " node=%-s" $node - DoPadding $lnode $maxlnode - - printf "base=%-s" $jonasbase - DoPadding $ljonasbase $maxljonasbase - - printf "%0.s-> " - - if [[ $node = clusterd ]]; then - strToMatch=ClusterDaemon - else - strToMatch=Djonas.name=$node - fi - - # flegare+vma - little adaptation to make it run under solaris: - # this ps does not truncate its output to 80 chars but does not accept - # the '-o' param - if [[ $osname = "SunOS" ]]; then - pid=$(/usr/ucb/ps aww | grep $strToMatch | grep -v grep | cut -d' ' -f2) - else - if [[ $osname = "HP-UX" ]]; then - pid=$(ps -efx | grep $strToMatch | grep -v grep | awk '{ print $2 }') - else - # Jerome - 10/17/2006 - Make ps formatting variables to please AIX and LINUX - proc=$(ps -$psfmt "%p|%a" | grep Djonas.name=$node | grep -v grep | sed -e 's/ *//g') - # Jerome - 10/17/2006 - The pipe below must be protected in ksh - pid=${proc%%\|*} - fi - fi - - if [[ ! -z $pid ]]; then - printf "running [$pid]\n" - else - printf "not running\n" - fi - done - return -} - -# ----- -# MAIN -# ----- -trap "atexit" exit - -# Jerome - 10/17/2006 -# On AIX, the ww is not supported (and not needed) -if [[ $(uname -s) = AIX ]]; then - XTERM=aixterm - psfmt=eo -else - XTERM=xterm - psfmt=ewwo -fi - -typeset -i n -typeset -i force=15 -debug=false -clean=false -dev=false - -# Show stopper -if [[ ! -n $JONAS_ROOT ]]; then - printf "$0: JONAS_ROOT is not defined\n" - exit 2 -fi -if ( ! echo $PATH | grep $JONAS_ROOT/bin >/dev/null 2>&1 ) then - printf "$0: JONAS_ROOT/bin is not in your PATH\n" - exit 3 -fi - -# Read inputs -if [[ $# -ne 0 ]]; then - # linux/bash help way - [[ "$1" = --help ]] && usage - - while getopts ?cegfhn:d c - do - case $c in - # Nodes - n) - node=$OPTARG - ;; - f) - force=9 - ;; - d) - DEBUG=true - ;; - c) - CLEAN=true - ;; - e) - DEV=true - ;; - g) - GUI=true - ;; - *) - usage - ;; - esac - done - shift `expr $OPTIND - 1` - action="$@" -fi - -# Define the cluster -SetCluster $node -if [[ -z $CLUSTER ]]; then - printf "$0: illegal -n parameters\n" - usage -else - # Remember the number of nodes in the cluster - for node in $CLUSTER; do - nnodes=nnodes+1 - done -fi - -# Do the action -[[ "$action" = "" ]] && action=status -case "$action" in - start|stop|kill|status) - Do$action - ;; - *) - usage - ;; -esac -exit 0 diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jcl.bat b/jonas/assemblies/binaries/src/main/resources/bin/jcl.bat deleted file mode 100755 index 95bd93b246..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jcl.bat +++ /dev/null @@ -1,371 +0,0 @@ -@echo off -REM --------------------------------------------------------------------------- -REM JOnAS: Java(TM) Open Application Server -REM Copyright (C) 2006-2009 Bull S.A.S. -REM Contact: jonas-team@ow2.org -REM -REM This library is free software; you can redistribute it and/or -REM modify it under the terms of the GNU Lesser General Public -REM License as published by the Free Software Foundation; either -REM version 2.1 of the License, or any later version. -REM -REM This library is distributed in the hope that it will be useful, -REM but WITHOUT ANY WARRANTY; without even the implied warranty of -REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -REM Lesser General Public License for more details. -REM -REM You should have received a copy of the GNU Lesser General Public -REM License along with this library; if not, write to the Free Software -REM Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -REM USA -REM -REM Initial developer(s): Jerome Pioux - Benoit Pelletier -REM --------------------------------------------------------------------------- -REM $Id$ -REM --------------------------------------------------------------------------- - -REM Start, Stop JONAS cluster nodes -REM Usage: jcl [-n ] start | stop - -setlocal enabledelayedexpansion - -REM ----- If SEPARATE_WINDOWS=yes or YES exists in the user env., then use -win on startup -if not defined SEPARATE_WINDOWS set SEPARATE_WINDOWS=No - -:: ------------------------------------------ -:: NO NEED TO MODIFY ANYTHING BELOW THIS LINE -:: ------------------------------------------ - -REM ----- Delay in seconds to apply between nodes startup/shutdown -set /a DELAY1_AFTER_NODE_START=10 -set /a DELAY2_AFTER_NODE_START=4 -set /a DELAY_BETWEEN_NODE_STOP=1 - -REM ----- Set defaults if this script is called directly w/o the script wrapper -if "%JCL_NUMBER_OF_NODES%"=="" set JCL_NUMBER_OF_NODES=4 -if "%JCL_BASE_PREFIX%"=="" set JCL_BASE_PREFIX=%JCL_CLUSTER_DAEMON_DIR%\jb -if "%JCL_DOMAIN_NAME%"=="" set JCL_DOMAIN_NAME=sampleClusterDomain -if "%JCL_NODE_NAME_PREFIX%"=="" set JCL_NODE_NAME_PREFIX=node -if "%JCL_CLUSTER_DAEMON_DIR%"=="" set JCL_CLUSTER_DAEMON_DIR=cd -if "%JCL_DB_DIR%"=="" set JCL_DB_DIR=db -if "%JCL_DB_NAME%"=="" set JCL_DB_NAME=db -if "%JCL_MASTER_DIR%"=="" set JCL_MASTER_DIR=master -if "%JCL_MASTER_NAME%"=="" set JCL_MASTER_NAME=master - -REM ----- Defined list of supported actions -set /a numberOfCommands=2 -set actionTable[1]=start -set actionTable[2]=stop - -REM ----- CHECK if JONAS_ROOT is set -if not defined JONAS_ROOT ( - echo. - echo Error: JONAS_ROOT is not defined - goto endScript -) - -REM Set bin directory -set BIN=%JONAS_ROOT%\bin - -REM ----- Need findstr -findstr /? >nul 2>&1 -if errorlevel 1 ( - echo. - echo Error: findstr is not available! - goto endScript -) - -REM ----- Help wanted the "dos cmdline way" -if "%1X"=="/?X" goto usage - -REM ----- Parse input parameters -set /a nflag=0 -set /a err=0 -set cluster= -set action= - -for %%i in (%*) do ( - REM ----- err=3: Command syntax error - if defined action if %err% equ 0 set /a err=3 - - REM ----- There is an error, break out of the parser - if !err! equ 1 goto endParsing - - set param=%%i - - REM ----- Param starts with a dash - if /I "!param:~0,1!"=="-" ( - set /a nflag=0 - set key=!param:~1,2! - REM ----- Found -n flag to customize cluster nodes - if /I "!key!"=="n" ( - set /a nflag=1 - REM ----- err=1: Invalid flag - ) else ( - if %err% equ 0 set /a err=1 - ) - - REM ----- Param does not start with a dash - ) else ( - REM ----- Param is following up the -n flag - if !nflag! equ 1 ( - REM ----- See if param is a known action - for /l %%c in (1,1,%numberOfCommands%) do ( - REM ----- param is an action, register it and turn off the nflag - if /I !param! equ !actionTable[%%c]! ( - set action=!param! - set /a nflag=0 - ) - ) - REM ----- param was not an action, so it is a node - enter it in cluster - if !nflag! equ 1 ( - call :IsNumeric !param! answer - if "!answer!"=="yes" ( - if !param! GTR %JCL_NUMBER_OF_NODES% if %err% equ 0 set /a err=4 - set param=%JCL_NODE_NAME_PREFIX%!param! - ) - if defined cluster (set cluster=!cluster!,!param!) else (set cluster=!param!) - ) - - REM ----- Param is not following up the -n - ) else ( - REM ----- See if param is a known action - for /l %%c in (1,1,%numberOfCommands%) do ( - REM ----- param is an action, register it and turn on the done flag - if /I !param! equ !actionTable[%%c]! ( - set action=!param! - set /a done=1 - ) - ) - REM ----- err=2: Invalid action specified - if !done! equ 0 if %err% equ 0 set /a err=2 - ) - ) -) -:endParsing - -REM ----- err=2: No action specified -if %err% equ 0 if not defined action set /a err=2 - -REM ----- Work on the cluster nodes -set wholeCluster= -if not defined cluster set wholeCluster=1 -if "%cluster%"=="all" set wholeCluster=1 -if "%cluster%"=="0" set wholeCluster=1 - -if defined wholeCluster ( - set cluster=clusterd,db,master - for /l %%c in (1,1,%JCL_NUMBER_OF_NODES%) do ( - set cluster=!cluster!,%JCL_NODE_NAME_PREFIX%%%c - ) -) - -REM ----- report errors -if not %err% equ 0 ( - echo. - if %err% equ 1 echo Error: Invalid flag ^(-%key%^) - if %err% equ 2 echo Error: Invalid action or no action specified - if %err% equ 3 echo Error: Command syntax error - if %err% equ 4 echo Error: Node must be less than %JCL_NUMBER_OF_NODES% - goto usage -) - -REM Remember the number of nodes in the cluster -set /a nnodes=0 -for %%i in (%cluster%) do (set /a nnodes+=1) - -REM ----- Go do the work -call :%action% - -:endScript -endlocal - -REM ----- Unset variables -for /f "usebackq tokens=1-2 delims==" %%a in (`set JCL_`) do set %%a= - -echo. -exit /b 0 - -REM ------------------------------- END MAIN ------------------------------- - -REM ------------------------------ SUBROUTINES ----------------------------- -:: --------------- -:: CLUSTER DAEMON -:: --------------- -:ClusterDaemon -setlocal -set action=%1 - -if "%action%"=="start" ( - echo. - echo *** Starting JOnAS cluster daemon ... - call %BIN%\jclusterd start - call :sleep %DELAY2_AFTER_NODE_START% -) else ( -if "%action%"=="stop" ( - echo. - echo *** Stopping JOnAS cluster daemon ... - call %BIN%\jclusterd stop - call :sleep %DELAY_BETWEEN_NODE_STOP% -)) -endlocal&goto :eof - -:: --------------- -:: START -:: --------------- -:start -setlocal - -set /a n=1 - -echo %SEPARATE_WINDOWS%|findStr "[Yy][Ee][Ss]" >nul -if %errorlevel% equ 0 (set WIN=-win) else (set WIN=) - -REM ----- Startup cluster; If we are in control of the whole cluster, the nodes -REM ----- are already in the correct order for startup -for %%i in (%cluster%) do ( - set node=%%i - - call :SetJonasBase !node! base - set JONAS_BASE=!base! - set CATALINA_BASE=!JONAS_BASE! - - REM ----- Set debug and startup delay - if /I "!node!"=="clusterd" ( - call :ClusterDaemon start - ) else ( - - if /I "!node!"=="master" ( - set /a delay=%DELAY1_AFTER_NODE_START% - ) else ( - if /I "!node!"=="db" ( - set /a delay=%DELAY1_AFTER_NODE_START% - ) else ( - set /a delay=%DELAY2_AFTER_NODE_START% - )) - - REM ----- Save and clean up logs - rmdir /S /Q !JONAS_BASE!\logs\old\* 2>NUL - mkdir !JONAS_BASE!\logs\old 2>NUL - xcopy /Q /Y !JONAS_BASE!\logs\* !JONAS_BASE!\logs\old >NUL - - - - echo. - echo *** Starting JOnAS !node! instance ... - echo ^(jonas start !WIN! -n !node! -Ddomain.name=%JCL_DOMAIN_NAME%^) - call %BIN%\jonas start !WIN! -n !node! -Ddomain.name=%JCL_DOMAIN_NAME% - - REM ----- Wait delay seconds between nodes startup - if !n! LSS %nnodes% ( - if /I "!WIN!"=="-win" ( - echo. - echo Waiting !%delay!s before starting next node ... - call :sleep !delay! - ) - ) - set /a n+=1 - ) -) -endlocal&goto :eof - -:: --------------- -:: STOP -:: --------------- -:stop -setlocal - -REM ----- Stop cluster; If we are in control of the whole cluster, the nodes -REM ----- are in the correct order for startup which is the reverse order of -REM ----- how we would like to stop them; so let's build a "reverse" cluster -set cluster2= -if defined wholeCluster ( - for %%i in (%cluster%) do ( - set node=%%i - if defined cluster2 (set cluster2=!node!,!cluster2!) else (set cluster2=!node!) - ) - set cluster=!cluster2! -) - -REM ----- Stop cluster -for %%i in (%cluster%) do ( - set node=%%i - - call :SetJonasBase !node! base - set JONAS_BASE=!base! - set CATALINA_BASE=!JONAS_BASE! - - if /I "!node!"=="clusterd" ( - call :ClusterDaemon stop - ) else ( - echo. - echo *** Stopping JOnAS !node! instance ... - echo ^(jonas stop -n !node!^) - call %BIN%\jonas stop -n !node! - - call :sleep %DELAY_BETWEEN_NODE_STOP% - ) -) -:endStop -endlocal&goto :eof - -:: --------------- -:: SetJonasBase -:: --------------- -:SetJonasBase -setlocal -set node=%1 - -if "%node%"=="clusterd" ( - set base=%JCL_CLUSTER_DAEMON_DIR% -)else ( -if "%node%"=="master" ( - set base=%JCL_MASTER_DIR% -) else ( -if "%node%"=="db" ( - set base=%JCL_DB_DIR% -) else ( - set /a l=%node:node=% - set base=%JCL_BASE_PREFIX%!l! -))) -endlocal&set %2=%base%&goto :eof - -:: --------------- -:: ISNUMERIC -:: --------------- -:isnumeric -setlocal -set string=%1 -REM ----- Do not consider quote if any -set string=%string:"=% -REM ----- Use findstr with reg.ex. -echo %string%|findStr "[^0-9]" >nul -set answer=no -if %errorlevel% equ 1 set answer=yes -endlocal&set %2=%answer%&goto :eof - -:: --------------- -:: SLEEP -:: --------------- -:sleep -setlocal -set delay=%1 -ping 1.1.1.1 -n 1 -w %delay%000 >nul -endlocal&goto :eof - -:: --------------- -:: USAGE -:: --------------- -:usage -echo. -echo usage: %~n0 ^[ -n ^[clusterd^],^[db^],^[master^],^[node number^],... ^] start^|stop -echo Syntax notes: -echo * At least, one space is mandatory after -n -echo * If multiple values are used after -n, they must be separated by a -echo delimiter ^(space, comma...^) or multiple -n can also be used -echo * All nodes in the cluster will be used if -n is not specified -echo. -echo Example: -n db,1,3 addresses the db, node1 and node3 instances -echo. -echo Use "set SEPARATE_WINDOWS=yes" if you want to start the JVMs in dedicated windows -goto endScript diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jcl.ksh b/jonas/assemblies/binaries/src/main/resources/bin/jcl.ksh deleted file mode 100644 index 0ebf89756d..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jcl.ksh +++ /dev/null @@ -1,541 +0,0 @@ -#!/bin/ksh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2006 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s) 4.8.2: Jerome Pioux - Benoit Pelletier -# -# Modifications for 4.8.3 -# ----------------------- -# Jerome - 10/17/2006 -# - Make this bash script to work for ksh. ie: -# (first line may need to be altered on some sites)... -# * change all with -# * Add a prefix (Do) in the start,stop,kill,status function names -# * Other modifications are flagged as Jerome - 10/17/2006 in the code -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Status|Start|Stop|Kill JONAS cluster node(s) -# Usage: cl [-n ] [status] | < [-f] kill | [-d] start | stop>" - -# If XWINDOWS=yes or YES exists in the user env., then use -win on startup -XWINDOWS=${XWINDOWS:-no} - -# Default values -JCL_NUMBER_OF_NODES=${JCL_NUMBER_OF_NODES:-40} -JCL_BASE_PREFIX=${JCL_BASE_PREFIX:-$JCL_CLUSTER_DAEMON_DIR/jb} -JCL_DOMAIN_NAME=${JCL_DOMAIN_NAME:-sampleClusterDomain} -JCL_NODE_NAME_PREFIX=${JCL_NODE_NAME_PREFIX:-node} -JCL_CLUSTER_DAEMON_DIR=${JCL_CLUSTER_DAEMON_DIR:-cd} -JCL_DB_DIR=${JCL_DB_DIR:-db} -JCL_DB_NAME=${JCL_DB_NAME:-db} -JCL_MASTER_DIR=${JCL_MASTER_DIR:-master} -JCL_MASTER_NAME=${JCL_MASTER_NAME:-master} - -# ------------------------------------------ -# NO NEED TO MODIFY ANYTHING BELOW THIS LINE -# ------------------------------------------ -JCL_BASE_DEBUG_PORT=${JCL_BASE_DEBUG_PORT:-414} - -# Delay in seconds to apply between nodes startup/shutdown -DELAY1_AFTER_NODE_START=20 -DELAY2_AFTER_NODE_START=3 -DELAY_BETWEEN_NODE_STOP=1 - -CLUSTER="" -jonasbase="" -typeset -i nnodes=0 -typeset -i wholeCluster=0 -osname=`uname -s` - - -# ------ -# ATEXIT -# ------ -atexit() -{ - printf "\n" -} - -# ----- -# USAGE -# ----- -usage() -{ - printf "\n" - printf "usage: $(basename $0) [ [-n ] [status]] | < [-f] kill | [-d] start | stop > ]\n" - printf "\n" - printf " With node_id: clusterd (or cd), $JCL_MASTER_NAME (or ms), $JCL_DB_NAME \n" - printf " With node_number: node number of JOnAS instances which corresponds to the suffix of the node name\n" - printf " * Form1: Multiple nodes can be specified between commas (no space)\n" - printf " * Form2: Range(s) can be entered using a dash between node numbers (no space)\n" - printf " * Any combination between form1 and form2 is allowed\n" - printf " Ex: -n $JCL_DB_NAME,1-3 applies to the $JCL_DB_NAME node and nodes 1,2 and 3\n" - printf " Notes:\n" - printf " * Do not specify -n or use -nall to address all nodes in the cluster\n" - printf " * A node number for your cluster must be between 1 and $JCL_NUMBER_OF_NODES\n" - printf "\n" - printf " Use \"export XWINDOWS=yes\" if you want to start the JVMs in dedicated xterms\n"; - printf "\n" - exit 1 -} - -# --------- -# DOPADDING -# --------- -DoPadding() -{ - # Use to align fields on the screen - typeset -i m1=$1 - typeset -i m2=$2 - typeset -i p=m2-m1 - - typeset -i i=1 - while [[ $i -le $p ]]; do - printf " " - i=i+1 - done - printf " " - return -} - -# ------------ -# SETJONASBASE -# ------------ -SetJonasBase() -{ - # Do not add any echo or printf in this routine - # besides the one before the return - case $1 in - clusterd) - base=$JCL_CLUSTER_DAEMON_DIR - ;; - $JCL_MASTER_NAME) - base=$JCL_MASTER_DIR - ;; - $JCL_DB_NAME) - base=$JCL_DB_DIR - ;; - *) - # Jerome - 10/17/2006 - char pos in string doesn't work in ksh - #typeset -i l=${#JCL_NODE_NAME_PREFIX} - #base=$JCL_BASE_PREFIX${node:$l} - base=$JCL_BASE_PREFIX${node#*$JCL_NODE_NAME_PREFIX} - ;; - esac - echo $base - return -} - -# ---------- -# SETCLUSTER -# ---------- -SetCluster() -{ -str=${1:-all} -typeset -i n=1 - -# --- All nodes -# We are in control so order nodes "startup-ready" -if [[ $str = 0 || $str = all ]]; then - wholeCluster=1 - cluster="clusterd $JCL_DB_NAME $JCL_MASTER_NAME" - while [[ $n -le $JCL_NUMBER_OF_NODES ]]; do - cluster="$cluster $JCL_NODE_NAME_PREFIX$n" - n=n+1 - done - CLUSTER=${cluster#\ *} - return -fi - -# --- Partial nodes list -# Respect order chosen by user -typeset -i err=0 -typeset -i numnode -OLDIFS=$IFS - -# For nodes between commas -IFS=, -for substr in $str; do - n="$(expr $substr : '.*-')" - - # No dash-formed node - if [[ $n -eq 0 ]]; then - # Non numeric node - if ( echo "$substr" | grep -q [^[:digit:]] ); then - # Abbrev. - [[ $substr = cd ]] && substr=clusterd - [[ $substr = ms ]] && substr=$JCL_MASTER_NAME - if [[ $substr != clusterd && - $substr != $JCL_MASTER_NAME && - $substr != $JCL_DB_NAME ]]; then - err=1 - fi - cluster="$cluster $substr" - # Numeric - else - numnode=$substr - # numnode must be less then JCL_NUMBER_OF_NODES - [[ $numnode -gt $JCL_NUMBER_OF_NODES ]] && err=1 - cluster="$cluster $JCL_NODE_NAME_PREFIX$substr" - fi - - # dash-formed node - else - n1=${substr%%-*} - n2=${substr##*-} - # Both dash-formed nodes must be numeric - if ( echo "$n1" | grep -q [^[:digit:]] || - echo "$n2" | grep -q [^[:digit:]] ); then - err=1 - else - typeset -i i=$n1 && typeset -i imax=$n2 - # First dash-formed node must be less or equal the second - # which in turn must be less then JCL_NUMBER_OF_NODES - [[ $i -gt $imax || $imax -gt $JCL_NUMBER_OF_NODES ]] && err=1 - while [[ $i -le $imax ]]; do - cluster="$cluster $JCL_NODE_NAME_PREFIX$i" - i=i+1 - done - fi - fi -done -IFS=$OLDIFS - -# Remove heading space if any -cluster=${cluster#\ *} - -# Raise error on duplicates -if [[ $err -eq 0 ]]; then - for node1 in $cluster; do - n=0 - for node2 in $cluster; do - [[ $node1 = $node2 ]] && n=n+1 - done - [[ $n -gt 1 ]] && err=1 && break - done -fi - -# Error - empty cluster -[[ $err -eq 1 ]] && cluster="" -CLUSTER=$cluster -return -} - -# --------------- -# CLUSTER DAEMON -# --------------- -ClusterDaemon() -{ - case ${1:-na} in - start) - printf "\n\n*** Starting JOnAS cluster daemon ... \n" - # Jerome - 10/17/2006 - Change regex below for ksh support - #if [[ $XWINDOWS =~ '[Yy][Ee][Ss]' ]]; then - if [[ $XWINDOWS = [Yy][Ee][Ss] ]]; then - xterm -title $HOSTNAME:clusterd -geometry 110x16 -sb -e jclusterd start & - else - jclusterd start & - fi - sleep $DELAY2_AFTER_NODE_START - ;; - - stop) - echo -e "\n\n*** Stopping JOnAS cluster daemon ..." - jclusterd stop - sleep $DELAY_BETWEEN_NODE_STOP - ;; - esac - return -} - -# ------- -# SOSTART -# ------- -Dostart() -{ - typeset -i delay - typeset -i n=1 - - # Jerome - 10/17/2006 - Change regex below for ksh support - #[[ $XWINDOWS =~ '[Yy][Ee][Ss]' ]] && WIN="-win" || WIN="" - [[ $XWINDOWS = [Yy][Ee][Ss] ]] && WIN="-win" || WIN="" - - # Startup cluster; If we are in control of the whole cluster, the nodes - # are already in the correct order for startup - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - export JONAS_BASE=$jonasbase - export CATALINA_BASE=$JONAS_BASE - DBG="" - - # Set debug and startup delay - case $node in - clusterd) - ClusterDaemon start - continue - ;; - - $JCL_MASTER_NAME | $JCL_DB_NODE) - delay=$DELAY1_AFTER_NODE_START - ;; - - *) - delay=$DELAY2_AFTER_NODE_START - # Jerome - 10/17/2006 - char pos in string doesn't work in ksh - #typeset -i l=${#node} - #[[ $DEBUG = true ]] && DBG="-debug -p $JCL_BASE_DEBUG_PORT${node:$l}" - [[ $DEBUG = true ]] && DBG="-debug -p $JCL_BASE_DEBUG_PORT${node#*$JCL_NODE_NAME_PREFIX}" - ;; - esac - - # Save and clean up logs - rm -rf $JONAS_BASE/logs/old/* - mkdir -p $JONAS_BASE/logs/old - mv $JONAS_BASE/logs/* $JONAS_BASE/logs/old 2>/dev/null - - cmd="jonas start $WIN $DBG -n $node -Ddomain.name=$JCL_DOMAIN_NAME" - printf "\n\n*** Starting JOnAS $node instance ... \n($cmd)\n" - $cmd - - # Wait delay seconds between nodes startup - if [[ $n -lt $nnodes && $WIN = "-win" ]]; then - printf "\n\tWaiting ${delay}s before starting next node ..." - sleep $delay - fi - n=n+1 - done - return -} - -# ------ -# DOSTOP -# ------ -Dostop() -{ - typeset -i delay=$DELAY_BETWEEN_NODE_STOP - - # Stop cluster; If we are in control of the whole cluster, the nodes - # are in the correct order for startup which is the reverse order of - # how we would like to stop them; so let's build a "reverse" cluster - if [[ $wholeCluster -eq 1 ]]; then - for node in $CLUSTER; do - cluster2="$node $cluster2" - done - CLUSTER=$cluster2 - fi - - # Stop cluster - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - export JONAS_BASE=$jonasbase - export CATALINA_BASE=$JONAS_BASE - - if [[ $node = clusterd ]]; then - ClusterDaemon stop - continue - fi - - cmd="jonas stop -n $node" - printf "\n\n*** Stopping JOnAS $node instance ...\n($cmd)\n" - $cmd - - sleep $delay - done - return -} - -# ------ -# DOKILL -# ------ -Dokill() -{ - # Kill cluster - for node in $CLUSTER; do - - # flegare+vma - little adaptation to make it run under solaris: - # this ps does not truncate its output to 80 chars but does not accept - # the '-o' param - if [[ $osname = "SunOS" ]]; then - pid=$(/usr/ucb/ps aww | grep $strToMatch | grep -v grep | cut -d' ' -f2) - else - # Jerome - 10/17/2006 - Make ps formatting variables to please AIX and LINUX - proc=$(ps -$psfmt "%p|%a" | grep Djonas.name=$node | grep -v grep | sed -e 's/ *//g') - # Jerome - 10/17/2006 - The pipe below must be protected in ksh - pid=${proc%%\|*} - fi - - if [[ ! -z $pid ]]; then - cmd="/bin/kill -$force $pid" - printf "\n*** Killing JOnAS $node instance ...\n($cmd)\n" - $cmd - fi - done - return -} - -# -------- -# DOSTATUS -# -------- -Dostatus() -{ - typeset -i l - typeset -i lnode - typeset -i ljonasbase - typeset -i maxlnode=0 - typeset -i maxljonasbase=0 - - # Get longest strings length - # (to use in field alignment for display below) - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - - lnode=${#node} - ljonasbase=${#jonasbase} - [[ $lnode -gt $maxlnode ]] && maxlnode=$lnode - [[ $ljonasbase -gt $maxljonasbase ]] && maxljonasbase=$ljonasbase - done - - printf "\n" - - # Display status - for node in $CLUSTER; do - jonasbase=$(SetJonasBase $node) - - lnode=${#node} - ljonasbase=${#jonasbase} - - printf " node=%-s" $node - DoPadding $lnode $maxlnode - - printf "base=%-s" $jonasbase - DoPadding $ljonasbase $maxljonasbase - - printf "%0.s-> " - - if [[ $node = clusterd ]]; then - strToMatch=ClusterDaemon - else - strToMatch=Djonas.name=$node - fi - - # flegare+vma - little adaptation to make it run under solaris: - # this ps does not truncate its output to 80 chars but does not accept - # the '-o' param - if [[ $osname = "SunOS" ]]; then - pid=$(/usr/ucb/ps aww | grep $strToMatch | grep -v grep | cut -d' ' -f2) - else - # Jerome - 10/17/2006 - Make ps formatting variables to please AIX and LINUX - proc=$(ps -$psfmt "%p|%a" | grep Djonas.name=$node | grep -v grep | sed -e 's/ *//g') - # Jerome - 10/17/2006 - The pipe below must be protected in ksh - pid=${proc%%\|*} - fi - - if [[ ! -z $pid ]]; then - printf "running [$pid]\n" - else - printf "not running\n" - fi - done - return -} - -# ----- -# MAIN -# ----- -trap "atexit" exit - -# Jerome - 10/17/2006 -# On AIX, the ww is not supported (and not needed) -if [[ $(uname -s) = AIX ]]; then - XTERM=aixterm - psfmt=eo -else - XTERM=xterm - psfmt=ewwo -fi - -typeset -i n -typeset -i force=15 -debug=false - -# Show stopper -if [[ ! -n $JONAS_ROOT ]]; then - printf "$0: JONAS_ROOT is not defined\n" - exit 2 -fi -if ( ! echo $PATH | grep $JONAS_ROOT/bin >/dev/null 2>&1 ) then - printf "$0: JONAS_ROOT/bin is not in your PATH\n" - exit 3 -fi - -# Read inputs -if [[ $# -ne 0 ]]; then - # linux/bash help way - [[ "$1" = --help ]] && usage - - while getopts ?fhn:d c - do - case $c in - # Nodes - n) - node=$OPTARG - ;; - f) - force=9 - ;; - d) - debug=true - ;; - *) - usage - ;; - esac - done - shift `expr $OPTIND - 1` - action="$@" -fi - -# Define the cluster -SetCluster $node -if [[ -z $CLUSTER ]]; then - printf "$0: illegal -n parameters\n" - usage -else - # Remember the number of nodes in the cluster - for node in $CLUSTER; do - nnodes=nnodes+1 - done -fi - -# Do the action -[[ "$action" = "" ]] && action=status -case "$action" in - start|stop|kill|status) - Do$action - ;; - *) - usage - ;; -esac -exit 0 - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jcl.sh b/jonas/assemblies/binaries/src/main/resources/bin/jcl.sh deleted file mode 100755 index 5b64827987..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jcl.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s) 4.8: Jerome Pioux -# -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# jcl.ksh|bash launcher script -# Jerome - -# Recup jcl scripts location -if [ -L $0 ]; then - JCL_DIR=`dirname $(ls -l "$0" |sed "s/^.*-> //")` -else - JCL_DIR=`dirname $0` -fi - -# Check what shell is available (priority to bash) -if [ -x /bin/bash ]; then - shell=bash -elif [ -x /bin/ksh ]; then - shell=ksh -else - echo "Error: Could not find either /bin/bash or /bin/ksh" - exit 2 -fi - -# Setup appropriate script -JCL_SCP=$JCL_DIR/jcl.$shell - -# Should never see this if the install did its job -if [ ! -x $JCL_SCP ]; then - echo "Error: Could not find or execute $JCL_SCP" - exit 3 -fi - -# Runit -$JCL_SCP $* -exit 0 - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jclient b/jonas/assemblies/binaries/src/main/resources/bin/jclient deleted file mode 100644 index 1089249342..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jclient +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - - -# ----------------------------------------------------------------------- -# Check JONAS_ROOT is set. -# ----------------------------------------------------------------------- -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - - -# --------------------------------------------- -# Get args -# --------------------------------------------- -ARGS= -while [ "$#" -gt 0 ] -do case "$1" in - -cp) - shift - JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$1 - ;; - -D*) - JAVA_OPTS="$JAVA_OPTS $1" - ;; - -security) - # Use security manager for jclient - JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$JONAS_BASE/conf/java.policy" - ;; - -debug) - shift - # $1=-p - if [ "$1" != "-p" ]; then - echo "-debug mode need a following \"-p \"" - exit 1 - fi - shift - JONAS_DEBUG_PORT=$1 - JONAS_DEBUG_SUSPEND=n - if [ "$2" = "-s" ]; then - shift - shift - JONAS_DEBUG_SUSPEND=$1 - fi - echo "JOnAS Debug Info :" - echo " listening on port : $JONAS_DEBUG_PORT" - echo " suspend mode : $JONAS_DEBUG_SUSPEND" - JONAS_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=$JONAS_DEBUG_PORT,suspend=$JONAS_DEBUG_SUSPEND" - ;; - -enable-jpa2) - JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/bundles-jpa2.0/ow2-jpa-2.0-spec.jar - JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/repositories/maven2-internal/org/ow2/easybeans/osgi/easybeans-modules-persistence-eclipselink-2.x/${easybeans.version}/easybeans-modules-persistence-eclipselink-2.x-${easybeans.version}.jar - ;; - *) - # all other args are passed "as is" to the java program - ARGS="$ARGS $1" - ;; - esac - shift -done - -JAVA_OPTS="-Djava.security.auth.login.config=$JONAS_BASE/conf/jaas.config \ --Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ --Dregistry=$REGISTRY \ --Djonas.root=$JONAS_ROOT \ -$JAVA_OPTS" - - -# Add client.jar -# CLASSPATH could be upgraded here -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/jonas-client.jar$SPS$JONAS_ROOT/lib/client.jar - - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS $JONAS_DEBUG_OPTS org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.client.ClientContainer $ARGS - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jclient.bat b/jonas/assemblies/binaries/src/main/resources/bin/jclient.bat deleted file mode 100755 index ab450aaef4..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jclient.bat +++ /dev/null @@ -1,123 +0,0 @@ -@Echo off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2010 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Keep variables local to this script -setlocal -set ARGS= - -Rem check JONAS_ROOT and JONAS_BASE -if ["%JONAS_ROOT%"]==[""] goto setroot -Rem Required for carol.properties file (add JONAS_BASE\conf to classpath) -call "%JONAS_ROOT%\bin\setenv.bat" -set JONAS_LIB=%JONAS_ROOT%\lib - -Rem check client.jar -if not exist "%JONAS_LIB%\client.jar" goto noclient - -Rem --------------------------------------------- -Rem Get args -Rem --------------------------------------------- -:loop_on_args -set VALUE=%~1 -if ["%1"]==["-cp"] goto cp_arg -if ["%1"]==["-security"] goto security -if ["%1"]==["-enable-jpa2"] goto jpa2 -if ["%1"]==["-debug"] goto debug_arg -if ["%VALUE:~0,2%"]==["-D"] goto java_opts -set ARGS=%ARGS% %1 -goto next_arg - -Rem Use security manager for jclient ? -:security -set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -goto next_arg - -:jpa2 -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_LIB%\bootstrap\bundles-jpa2.0\ow2-jpa-2.0-spec.jar -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_LIB%\repositories\maven2-internal\org\ow2\easybeans\osgi\easybeans-modules-persistence-eclipselink-2.x\${easybeans.version}\easybeans-modules-persistence-eclipselink-2.x-${easybeans.version}.jar -goto next_arg - -Rem Add -D System Properties -:java_opts -set PROP=%~1 -shift -set PROP=%PROP%=%1 -set JAVA_OPTS=%JAVA_OPTS% %PROP% -goto next_arg - -:cp_arg -shift -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%~1 -goto next_arg - -:debug_arg -shift -if not [%1]==[-p] goto debug_usage -shift -set JONAS_DEBUG_PORT=%1 -set JONAS_DEBUG_SUSPEND=n -if not [%2]==[-s] goto set_debug_opts -shift -shift -set JONAS_DEBUG_SUSPEND=%1 - -:set_debug_opts -echo JOnAS Debug Info : -echo listening on port : %JONAS_DEBUG_PORT% -echo suspend mode : %JONAS_DEBUG_SUSPEND% -set JONAS_DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=%JONAS_DEBUG_PORT%,suspend=%JONAS_DEBUG_SUSPEND% -goto next_arg - -:next_arg -shift -if not [%1]==[] goto loop_on_args - -Rem Add client.jar -Rem CLASSPATH could be upgraded here -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_LIB%\client.jar -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_LIB%\jonas-client.jar -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_LIB%\bootstrap\client-bootstrap.jar - -set JAVA_OPTS=%JAVA_OPTS% -Djava.security.auth.login.config="%JONAS_BASE%\conf\jaas.config" -set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" -if [%REGISTRY%]==[] goto next_java_opts -set JAVA_OPTS=%JAVA_OPTS% -Dregistry="%REGISTRY%" -:next_java_opts -set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -%JAVA% -cp "%JONAS_CLASSPATH%" %JAVA_OPTS% %JONAS_DEBUG_OPTS% org.ow2.jonas.client.boot.Bootstrap org.ow2.jonas.client.ClientContainer %ARGS% -goto :EOF - -:noclient -echo client.jar file must be present in JONAS_ROOT\lib directory -goto :EOF - - -:setroot -echo JONAS_ROOT must be set. -goto :EOF - -:debug_usage -echo -debug option parameters are : "-debug -p [-s ]" -goto :EOF diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jclusterd b/jonas/assemblies/binaries/src/main/resources/bin/jclusterd deleted file mode 100644 index 1fbfbd3505..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jclusterd +++ /dev/null @@ -1,166 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# ----------------------------------------------------------------------- -# Compute JONAS_ROOT in case it has not been set. -# ----------------------------------------------------------------------- -if [ ! -d $JONAS_ROOT/lib ]; then - savewd=`pwd` - cd `dirname $0` - zdir=`pwd` - cd $savewd - zfqn=$zdir/`basename "$0"` - JONAS_ROOT=`dirname $zdir` - JONAS_ROOT=`dirname $JONAS_ROOT` - export JONAS_ROOT -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JONAS_OPTS="\ - -Djonas.root=$JONAS_ROOT \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.awt.headless=true \ - -Djava.security.auth.login.config=$JONAS_BASE/conf/jaas.config \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ - -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \ - -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \ - -Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer \ - -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.ow2.carol.rmi.multi.MultiPRODelegate \ - -Djava.naming.factory.initial=org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory \ - -Djavax.rmi.CORBA.UtilClass=org.ow2.carol.util.delegate.UtilDelegateImpl \ - " - -# --------------------------------------------- -# Get arguments -# --------------------------------------------- -ARGS= -DEBUG_OPTS= -MODE=start -USERNAME= -PASSWORD= -while [ "$#" -gt 0 ] - do case "$1" in - start) - MODE=start - ;; - stop) - MODE=stop - ;; - -cp) - shift - JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$1 - ;; - -D*) - JAVA_OPTS="$JAVA_OPTS $1" - ;; - -security) - # Use security manager - JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$JONAS_BASE/conf/java.policy" - ;; - -debug) - shift - # $1=-p - if [ "$1" != "-p" ]; then - echo "-debug mode need a following \"-p \"" - exit 1 - fi - shift - DEBUG_PORT=$1 - DEBUG_SUSPEND=n - if [ "$2" = "-s" ]; then - shift - shift - DEBUG_SUSPEND=$1 - fi - echo "Debug Info :" - echo " listening on port : $DEBUG_PORT" - echo " suspend mode : $DEBUG_SUSPEND" - DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=$DEBUG_PORT,suspend=$DEBUG_SUSPEND" - ;; - -username) - shift - USERNAME="-username $1" - ;; - -password) - shift - PASSWORD="-password $1" - ;; - *) - # All other args are passed "as is" to the java program - ARGS="$ARGS $1" - ;; - esac - shift -done - -# --------------------------------------------- -# Check mode -# --------------------------------------------- -case "$MODE" in - start) - CLASS_TO_RUN=org.ow2.jonas.cluster.daemon.ClusterDaemon - ;; - stop) - CLASS_TO_RUN="org.ow2.jonas.cluster.daemon.ClusterDaemonAdmin -stop" - ;; - *) - echo "Usage: jclusterd start|stop [options]" - echo "Debug mode : jclusterd start -debug -p [-s ] [options]" - exit 1 - ;; -esac - -# --------------------------------------------- -# Set tomcat base directory -# --------------------------------------------- -if [ -n "$CATALINA_HOME" ] -then - JONAS_OPTS="$JONAS_OPTS -Dcatalina.home=$CATALINA_HOME" -fi -if [ -n "$CATALINA_BASE" ] -then - JONAS_OPTS="$JONAS_OPTS -Dcatalina.base=$CATALINA_BASE" -fi - -# --------------------------------------------- -# Set jetty home directory -# --------------------------------------------- -if [ -n "$JETTY_HOME" ] -then - JONAS_OPTS="$JONAS_OPTS -Djetty.home=$JETTY_HOME" -fi - - -# update CLASSPATH -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/jonas-cluster-daemon.jar$SPS$JONAS_ROOT/lib/client.jar - -# --------------------------------------------- -# Run java command -# --------------------------------------------- -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS $DEBUG_OPTS $JONAS_OPTS org.ow2.jonas.client.boot.Bootstrap $CLASS_TO_RUN $ARGS $USERNAME $PASSWORD diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jclusterd.bat b/jonas/assemblies/binaries/src/main/resources/bin/jclusterd.bat deleted file mode 100755 index fc80a98335..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jclusterd.bat +++ /dev/null @@ -1,198 +0,0 @@ -@Echo Off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Benoit Pelletier -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Keep variables local to this script -setlocal ENABLEDELAYEDEXPANSION - -Rem Check for JONAS_ROOT, if not set set it to the default -if ["%JONAS_ROOT%"]==[""] Goto SetJONAS_ROOT -echo JONAS_ROOT is set to %JONAS_ROOT% -Goto ExecuteBatch - -Rem %~dp0 is the directory in which this batch file is, -Rem therefore JONAS_ROOT\bin in our case. -:SetJONAS_ROOT -pushd "%~dp0" -cd .. -@set JONAS_ROOT=%CD% -@echo Setting JONAS_ROOT to %JONAS_ROOT% -popd - -:ExecuteBatch -Rem --------------------------------------------- -Rem set environment -Rem --------------------------------------------- -if ["%JONAS_ROOT%"]==[""] goto setroot -call "%JONAS_ROOT%\bin\setenv.bat" -set JONAS_LIB=%JONAS_ROOT%\lib - - -Rem --------------------------------------------- -Rem set JAVA_OPTS -Rem --------------------------------------------- -if ["%JAVA_HOME%"]==[""] goto setjava - -Rem JONAS_OPTS may be already partially initialized -set JONAS_OPTS=%JONAS_OPTS% -Djonas.root="%JONAS_ROOT%" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.root="%JONAS_ROOT%" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.base="%JONAS_BASE%" -set JONAS_OPTS=%JONAS_OPTS% -Djava.security.policy="%JONAS_ROOT%\conf\java.policy" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.classpath="%XTRA_CLASSPATH%" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.default.classloader=true -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer -set JONAS_OPTS=%JONAS_OPTS% -Djavax.rmi.CORBA.PortableRemoteObjectClass=org.ow2.carol.rmi.multi.MultiPRODelegate -set JONAS_OPTS=%JONAS_OPTS% -Djava.naming.factory.initial=org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory -set JONAS_OPTS=%JONAS_OPTS% -Djavax.rmi.CORBA.UtilClass=org.ow2.carol.util.delegate.UtilDelegateImpl -set JONAS_OPTS=%JONAS_OPTS% -Djava.security.auth.login.config="%JONAS_BASE%\conf\jaas.config" -set JONAS_OPTS=%JONAS_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -Rem --------------------------------------------- -Rem Get args -Rem --------------------------------------------- -set ARGS= -set MODE= -set USERNAME= -set PASSWORD= - -:loop_on_args -Set VALUE=%~1 -if [%1]==[] goto usage -if [%1]==[start] goto start_arg -if [%1]==[stop] goto stop_arg -if [%1]==[-cp] goto cp_arg -if [%1]==[-debug] goto debug_arg -if [%1]==[-username] goto username_arg -if [%1]==[-password] goto password_arg -if %VALUE:~0,2%==-D goto java_opts -set ARGS=%ARGS% %1 -goto next_arg - -Rem Add -D System Properties -:java_opts -Set PROP=%~1 -shift -Set PROP=%PROP%=%1 -Set JONAS_OPTS=%JONAS_OPTS% %PROP% -goto next_arg - - -:start_arg -set MODE=start -set CLASS_TO_RUN=org.ow2.jonas.cluster.daemon.ClusterDaemon -echo JONAS_BASE is set to %JONAS_BASE% -goto next_arg - -:stop_arg -set MODE=stop -set CLASS_TO_RUN=org.ow2.jonas.cluster.daemon.ClusterDaemonAdmin -stop -goto next_arg - -:cp_arg -shift -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%~1 -goto next_arg - -:debug_arg -shift -if not [%1]==[-p] goto debug_usage -shift -set JONAS_DEBUG_PORT=%1 -set JONAS_DEBUG_SUSPEND=n -if not [%2]==[-s] goto set_debug_opts -shift -shift -set JONAS_DEBUG_SUSPEND=%1 - -:set_debug_opts -echo JOnAS Debug Info : -echo listening on port : %JONAS_DEBUG_PORT% -echo suspend mode : %JONAS_DEBUG_SUSPEND% -set JONAS_DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=%JONAS_DEBUG_PORT%,suspend=%JONAS_DEBUG_SUSPEND% -goto next_arg - -:username_arg -shift -set USERNAME=-username %1 -goto next_arg - -:password_arg -shift -set PASSWORD=-password %1 -goto next_arg - -:next_arg -shift -if not [%1]==[] goto loop_on_args - -if [%MODE%]==[] goto no_mode - - -Rem --------------------------------------------- -Rem Set tomcat/jetty base directory -Rem --------------------------------------------- -set TOMCAT_OPTS= -set JETTY_OPTS= -if not ["%TOMCAT_BASE%"]==[""] set TOMCAT_OPTS=%TOMCAT_OPTS% -Dtomcat.base="%TOMCAT_BASE%" -if not ["%CATALINA_HOME%"]==[""] set TOMCAT_OPTS=%TOMCAT_OPTS% -Dcatalina.home="%CATALINA_HOME%" -if not ["%CATALINA_BASE%"]==[""] set TOMCAT_OPTS=%TOMCAT_OPTS% -Dcatalina.base="%CATALINA_BASE%" -if not ["%JETTY_HOME%"]==[""] set JETTY_OPTS=-Djetty.home="%JETTY_HOME%" - -Rem --------------------------------------------- -Rem include jonas classes -Rem --------------------------------------------- -Set JONAS_CLASSPATH=%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_ROOT%\lib\jonas-cluster-daemon.jar;%JONAS_ROOT%\lib\client.jar;%JONAS_CLASSPATH% - -Rem --------------------------------------------- -Rem Run java command -Rem --------------------------------------------- -set BOOT=org.ow2.jonas.client.boot.Bootstrap -start /B "jclusterd" %JAVA% -cp "%JONAS_CLASSPATH%" %JAVA_OPTS% %JONAS_DEBUG_OPTS% %JONAS_OPTS% %TOMCAT_OPTS% %JETTY_OPTS% %BOOT% %CLASS_TO_RUN% %USERNAME% %PASSWORD% - -goto :EOF - -:setjava -echo JAVA_HOME not set. -goto :EOF - -:setroot -echo JONAS_ROOT not set. -goto :EOF - -:debug_usage -echo -debug option parameters are : "-debug -p [-s ]" -goto :EOF - -:no_mode -echo "No startup mode specified, specify start | stop | admin | version | check" -goto usage - -:usage -echo "jclusterd start | stop [options]" -echo "Debug mode : jclusterd start -debug -p [-s ]" -goto :EOF - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jonas b/jonas/assemblies/binaries/src/main/resources/bin/jonas deleted file mode 100644 index ccb5b584fd..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jonas +++ /dev/null @@ -1,403 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2011 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): Adriana Danes : -# - Change /config en /conf -# - Use JONAS_BASE -# Florent Benoit & Ludovic Bert -# eyindanga -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -cygwin=false; -case "`uname`" in - CYGWIN*) cygwin=true ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "JONAS_ROOT" ] && - JONAS_ROOT=`cygpath --unix "$JONAS_ROOT"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath -m -s "$JAVA_HOME"` -fi - -# ----------------------------------------------------------------------- -# Compute JONAS_ROOT in case it has not been set. -# ----------------------------------------------------------------------- -if [ -z $JONAS_ROOT ]; then - savewd=`pwd` - cd `dirname $0` - zdir=`pwd` - cd $savewd - zfqn=$zdir/`basename "$0"` - JONAS_ROOT=`dirname $zdir` - echo "JONAS_ROOT is set to" $JONAS_ROOT - export JONAS_ROOT -fi - -# Check if $JONAS_ROOT is set. -if [ ! -f "$JONAS_ROOT/bin/setenv" ]; then - echo "Please set the JONAS_ROOT variable." - exit -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -# Display banner (if any) -if [ -f $JONAS_BASE/conf/banner.txt ]; then - cat $JONAS_BASE/conf/banner.txt -fi - -# Set path for JOnAS bootstrap libraries -LIB_BOOTSTRAP_PATH=$JONAS_ROOT/lib/bootstrap - -# Update JONAS_CLASSPATH -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$LIB_BOOTSTRAP_PATH/felix-launcher.jar -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$LIB_BOOTSTRAP_PATH/jonas-commands.jar -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$LIB_BOOTSTRAP_PATH/jonas-version.jar - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$JONAS_ROOT" ] && - JONAS_ROOT=`cygpath --path --windows "$JONAS_ROOT"` - [ -n "$JONAS_BASE" ] && - JONAS_BASE=`cygpath --path --windows "$JONAS_BASE"` -fi - -JONAS_OPTS="\ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Dipojo.log.level=ERROR \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.security.auth.login.config=$JONAS_BASE/conf/jaas.config \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ - -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \ - -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \ - -Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer \ - -Dcom.sun.CORBA.ORBDynamicStubFactoryFactoryClass=com.sun.corba.se.impl.presentation.rmi.StubFactoryFactoryStaticImpl \ - -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory \ - -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl \ - -Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl \ - -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl \ - " -# Most of the ORB and naming properties are not usually changed by the user !! Should be in a class. - -# --------------------------------------------- -# Get arguments -# --------------------------------------------- -ARGS= -MODE= -JONAS_NAME= -PINGTIMEOUT= -PINGSTATE= -HEADLESS="-Djava.awt.headless=true" -START_OPTS= -PINGTIMEOUT_OPT= -PINGSTATE_OPT= -WHERE=background -FORCE_FOREGROUND=false -ADMIN_CLASS=org.ow2.jonas.commands.admin.ClientAdmin -USERNAME= -PASSWORD= -while [ "$#" -gt 0 ] - do case "$1" in - start) - MODE=start - ;; - halt) - echo "[DEPRECATED] Please use stop argument instead of halt" - MODE=stop - PINGSTATE=j2ee.state.stopped - ;; - stop) - MODE=stop - PINGSTATE=j2ee.state.stopped - ;; - admin) - MODE=admin - FORCE_FOREGROUND=true - ;; - version) - MODE=version - FORCE_FOREGROUND=true - ;; - check) - MODE=check - FORCE_FOREGROUND=true - ;; - -standby) - ARGS="$ARGS -standby" - if [ "$MODE" = "stop" ]; then - FORCE_FOREGROUND=false - fi - ;; - -running) - # Implicit argument for the 'start' argument - ;; - -halt) - # Implicit argument for the 'stop' argument - ;; - -cp) - PARAMS="$PARAMS $1" - shift - JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$1 - ;; - -debug) - PARAMS="$PARAMS $1" - shift - # $1=-p - if [ "$1" != "-p" ]; then - echo "-debug mode need a following \"-p \"" - exit 1 - fi - shift - JONAS_DEBUG_PORT=$1 - JONAS_DEBUG_SUSPEND=n - if [ "$2" = "-s" ]; then - shift - shift - JONAS_DEBUG_SUSPEND=$1 - fi - echo "JOnAS Debug Info :" - echo " listening on port : $JONAS_DEBUG_PORT" - echo " suspend mode : $JONAS_DEBUG_SUSPEND" - JONAS_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=$JONAS_DEBUG_PORT,suspend=$JONAS_DEBUG_SUSPEND" - ;; - -fg) - WHERE=foreground - ;; - -bg) - WHERE=background - ;; - -gui) - echo "Start Felix GUI with JOnAS." - START_OPTS="$START_OPTS -Djonas.felix.gui.enabled=true" - HEADLESS="" - ;; - -tui) - echo "Start Felix TUI with JOnAS." - START_OPTS="$START_OPTS -Djonas.felix.tui.enabled=true" - FORCE_FOREGROUND=true - ;; - -win) - WHERE=window - ;; - -nojit) - JONAS_OPTS="$JONAS_OPTS -Djava.compiler=NONE" - START_OPTS="$START_OPTS -Djava.compiler=NONE" - ;; - -dev) - START_OPTS="$START_OPTS -Djonas.developer=true" - ;; - -clean) - echo "Clean Felix cache before starting JOnAS." - START_OPTS="$START_OPTS -Djonas.cache.clean=true" - ;; - -n) - PARAMS="$PARAMS $1" - shift - JONAS_NAME=$1 - ;; - -timeout) - PARAMS="$PARAMS $1" - shift - PINGTIMEOUT=$1 - ;; - -state) - PARAMS="$PARAMS $1" - shift - PINGSTATE=$1 - ;; - -D*) - JONAS_OPTS="$JONAS_OPTS $1" - START_OPTS="$START_OPTS $1" - ;; - -X*) - JAVA_OPTS="$JAVA_OPTS $1" - ;; - -target) - if [ "$MODE" = "start" ]; then - ARGS="$ARGS -start" - fi - if [ "$MODE" = "stop" ]; then - ARGS="$ARGS -stop" - fi - MODE=admin - ARGS="$ARGS -target" - ;; - -username) - PARAMS="$PARAMS $1" - shift - USERNAME="-username $1" - ;; - -password) - PARAMS="$PARAMS $1" - shift - PASSWORD="-password $1" - ;; - *) - # All other args are passed "as is" to the java program - ARGS="$ARGS $1" - ;; - esac - if [ "$1" != "-win" ]; then - PARAMS="$PARAMS $1" - fi - shift -done - -# --------------------------------------------- -# Check args -# --------------------------------------------- -case "$MODE" in - start) - CLASS_TO_RUN="$ADMIN_CLASS -start" - ;; - stop) - CLASS_TO_RUN="$ADMIN_CLASS -stop" - ;; - admin) - CLASS_TO_RUN=$ADMIN_CLASS - ;; - version) - CLASS_TO_RUN=org.ow2.jonas.Version - ;; - check) - CLASS_TO_RUN=org.ow2.jonas.commands.check.CheckEnv - ;; - *) - # Usage - # Will be displayed if the user type an unrecognized command - echo "Unrecognized command : '$*'" - echo "Usage: $0 start | stop | admin | version | check" - echo "Options:" - echo " for 'start': [-fg] [-bg] [-win] [-n] [-standby] [-debug] [-gui] [-tui] [-dev] [-clean] [-nojit]" - echo " -fg Launch JOnAS in foreground (Only applicable for 'start')." - echo " -bg Launch JOnAS in background (Only applicable for 'start')." - echo " -win Launch JOnAS in a separate window (Only applicable for 'start')." - echo " -n Specify the JOnAS instance name." - echo " -standby Allow to reach the STANDBY state (Only applicable for 'start' and 'stop')." - echo " -debug -p [-s ] Debug the JOnAS instance." - echo " -gui Launch JOnAS with the Apache Felix GUI (Only applicable for 'start')." - echo " -tui Launch JOnAS with the Apache Felix Shell" - echo " (allow to perform OSGi operations on the framework)." - echo " (Only applicable for 'start')" - echo " -dev Use M2 registry for bundles (for JOnAS developers)." - echo " -clean Clean Felix cache before starting JOnAS." - echo " -nojit Disable JIT." - echo " for '*': [-cp] [-n] [-timeout] [-target] [-D*]" - echo " -cp Additional CLASSPATH entries (to be used with care)." - echo " -timeout Specify a new connection timeout." - echo " -target [options] Perform remote administration tasks." - echo " -Dname=value Add JVM properties." - exit 1 - ;; -esac - -# --------------------------------------------- -# Print out JONAS_BASE -# --------------------------------------------- -case "$MODE" in - start|check) - echo "JONAS_BASE is set to" $JONAS_BASE - ;; -esac - -# --------------------------------------------- -# Add RMI Annotation -# --------------------------------------------- -#if [ -z "$ANNOTATE" ]; then -# JONAS_OPTS="$JONAS_OPTS \ -# -Djava.rmi.server.RMIClassLoaderSpi=org.ow2.jonas.lib.bootstrap.RemoteClassLoaderSpi" -#fi - -# --------------------------------------------- -# Set jonas server name -# --------------------------------------------- -if [ ! -z "$JONAS_NAME" ]; then - JONAS_OPTS="$JONAS_OPTS -Djonas.name=$JONAS_NAME " - START_OPTS="$START_OPTS -Djonas.name=$JONAS_NAME " -fi - -# --------------------------------------------- -# Set jonas timeout for ping -# --------------------------------------------- -if [ ! -z "$PINGTIMEOUT" ]; then - PINGTIMEOUT_OPT="-timeout $PINGTIMEOUT" -fi - -# --------------------------------------------- -# Set jonas state for ping -# --------------------------------------------- -if [ ! -z "$PINGSTATE" ]; then - PINGSTATE_OPT="-state $PINGSTATE" -fi - -# Add Headless if needed -START_OPTS="$START_OPTS $HEADLESS" - -# Force foreground mode -if [ "$FORCE_FOREGROUND" = true ]; then - WHERE=foreground -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$JONAS_CLASSPATH" ] && - JONAS_CLASSPATH=`cygpath --path --windows "$JONAS_CLASSPATH"` -fi - -# --------------------------------------------- -# Run java command -# --------------------------------------------- -if [ "$MODE" = "start" ] -then - case "$WHERE" in - window) - xterm -title $HOSTNAME:$JONAS_NAME -geometry 110x16 -sb -e $0 $PARAMS -fg & - ;; - foreground) - # Start JOnAS in the foreground - $JAVA $JAVA_OPTS $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $JONAS_DEBUG_OPTS $CLASS_TO_RUN $ARGS $USERNAME $PASSWORD - ;; - *) - # Start JOnAS in the background - $JAVA $JAVA_OPTS $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $JONAS_DEBUG_OPTS $CLASS_TO_RUN $ARGS $USERNAME $PASSWORD & - - # Wait for JOnAS to actually start - $JAVA $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $ADMIN_CLASS -ping $PINGTIMEOUT_OPT $PINGSTATE_OPT $ARGS $USERNAME $PASSWORD - ;; - esac -elif [ "$MODE" = "stop" ] -then - # Send the JMX command for stopping JOnAS, in the background - $JAVA $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $JONAS_DEBUG_OPTS $CLASS_TO_RUN $ARGS $USERNAME $PASSWORD & - - # Wait for JOnAS to actually stop - $JAVA $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $ADMIN_CLASS -ping $PINGTIMEOUT_OPT $PINGSTATE_OPT $ARGS $USERNAME $PASSWORD -else - # JOnAS admin or other similar command - $JAVA $START_OPTS $JONAS_OPTS -cp $JONAS_CLASSPATH $JONAS_DEBUG_OPTS $CLASS_TO_RUN $ARGS $PINGTIMEOUT_OPT $PINGSTATE_OPT $USERNAME $PASSWORD -fi diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jonas.bat b/jonas/assemblies/binaries/src/main/resources/bin/jonas.bat deleted file mode 100755 index d0dd7bf1ca..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jonas.bat +++ /dev/null @@ -1,420 +0,0 @@ -@Echo Off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Philippe Durieux -Rem Contributor(s): Miroslav Halas -Rem Adriana Danes : -Rem - Change /config in /conf -Rem - Use JONAS_BASE -Rem Jerome Pioux: -Rem - Remove extra spaces in :start_jonas_bg after %JAVA% - was causing -Rem bug #306113 - happen only if the script is used from the tarball -Rem (UNIX format [LF]). As a side note, with 4.8.3, the script will -Rem be saved as DOS format [CRLF] inside SVN. -Rem eyindanga: -Rem - Start JOnAS on OSGi. -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Keep variables local to this script -setlocal ENABLEDELAYEDEXPANSION - -if ["%JONAS_ROOT%"]==[""] goto emptyroot -goto execute - -Rem %~dp0 is the directory in which this batch file is. JONAS_ROOT\bin in our case. -:emptyroot -pushd "%~dp0" -cd .. -@set JONAS_ROOT=%cd% -@echo JONAS_ROOT is set to %JONAS_ROOT% -popd - -Rem --------------------------------------------- -Rem set environment -Rem --------------------------------------------- -if ["%JONAS_ROOT%"]==[""] goto setroot - -:execute -call "%JONAS_ROOT%\bin\setenv.bat" - -Rem Display JOnAS banner (if any) -if not exist "%JONAS_BASE%\conf\banner.txt" goto no_banner -more "%JONAS_BASE%\conf\banner.txt" - -Rem Marker when no banner is available -:no_banner - -Rem Set path for JOnAS bootstrap libraries -set LIB_BOOTSTRAP_PATH=%JONAS_ROOT%\lib\bootstrap - -Rem Set JONAS_CLASSPATH -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%LIB_BOOTSTRAP_PATH%\felix-launcher.jar -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%LIB_BOOTSTRAP_PATH%\jonas-commands.jar -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%LIB_BOOTSTRAP_PATH%\jonas-version.jar - -Rem --------------------------------------------- -Rem set JONAS_OPTS -Rem --------------------------------------------- -Rem JAVA_HOME must be set since config_env.bat requires it for tools.jar -if ["%JAVA_HOME%"]==[""] goto setjava - -Rem JONAS_OPTS may be already partially initialized -set JONAS_OPTS=%JONAS_OPTS% -Djonas.root="%JONAS_ROOT%" -set JONAS_OPTS=%JONAS_OPTS% -Djonas.base="%JONAS_BASE%" -set JONAS_OPTS=%JONAS_OPTS% -Dipojo.log.level=ERROR -set JONAS_OPTS=%JONAS_OPTS% -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton -set JONAS_OPTS=%JONAS_OPTS% -Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer -set JONAS_OPTS=%JONAS_OPTS% -Djava.security.auth.login.config="%JONAS_BASE%\conf\jaas.config" -set JONAS_OPTS=%JONAS_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" -set JONAS_OPTS=%JONAS_OPTS% -Dcom.sun.CORBA.ORBDynamicStubFactoryFactoryClass=com.sun.corba.se.impl.presentation.rmi.StubFactoryFactoryStaticImpl -set JONAS_OPTS=%JONAS_OPTS% -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory -set JONAS_OPTS=%JONAS_OPTS% -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl -set JONAS_OPTS=%JONAS_OPTS% -Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl -set JONAS_OPTS=%JONAS_OPTS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl - -Rem --------------------------------------------- -Rem Get args -Rem --------------------------------------------- - -if [%1]==[] goto no_arg - -set ARGS= -set MODE= -set JONASNAME= -set PINGTIMEOUT= -set PINGSTATE= -set ANNOTATE= -set WHERE=background -set HEADLESS=-Djava.awt.headless=true -set START_OPTS= -set FORCE_FOREGROUND=false -set ADMIN_CLASS=org.ow2.jonas.commands.admin.ClientAdmin -set USERNAME= -set PASSWORD= -:loop_on_args -set VALUE=%~1 -if [%1]==[start] goto start_arg -if [%1]==[stop] goto stop_arg -if [%1]==[halt] goto halt_arg -if [%1]==[admin] goto admin_arg -if [%1]==[version] goto version_arg -if [%1]==[check] goto check_arg -if [%1]==[ntservice] goto ntservice_arg -if [%1]==[-standby] goto standby_arg -if [%1]==[-running] goto next_arg -if [%1]==[-halt] goto next_arg -if [%1]==[-fg] goto fg_arg -if [%1]==[-bg] goto bg_arg -if [%1]==[-win] goto win_arg -if [%1]==[-n] goto n_arg -if [%1]==[-timeout] goto timeout_arg -if [%1]==[-state] goto state_arg -if [%1]==[-cfgsvc] goto cfgsvc_arg -if [%1]==[-cp] goto cp_arg -if [%1]==[-debug] goto debug_arg -if [%1]==[-target] goto target_arg -if [%1]==[-gui] goto gui_arg -if [%1]==[-tui] goto tui_arg -if [%1]==[-dev] goto dev_arg -if [%1]==[-clean] goto clean_arg -if [%1]==[-username] goto username_arg -if [%1]==[-password] goto password_arg -if %VALUE:~0,2%==-D goto jonas_opts -if %VALUE:~0,2%==-X goto java_opts -set ARGS=%ARGS% %1 -goto next_arg - -Rem First arguments : start, stop, admin, version, check - -:start_arg -set MODE=start -set CLASS_TO_RUN=%ADMIN_CLASS% -start -goto next_arg - -:stop_arg -set MODE=stop -set CLASS_TO_RUN=%ADMIN_CLASS% -stop -set PINGSTATE=-state j2ee.state.stopped -goto next_arg - -:halt_arg -echo [DEPRECATED] Please use stop argument instead of halt -goto stop_arg - -:admin_arg -set MODE=admin -set CLASS_TO_RUN=%ADMIN_CLASS% -set FORCE_FOREGROUND=true -goto next_arg - -:version_arg -set MODE=version -set CLASS_TO_RUN=org.ow2.jonas.Version -set FORCE_FOREGROUND=true -goto next_arg - -:check_arg -set MODE=check -set CLASS_TO_RUN=org.ow2.jonas.commands.check.CheckEnv -set FORCE_FOREGROUND=true -goto next_arg - -Rem Take all arguments after ntservice and goto ntservice processing -:ntservice_arg -set MODE=ntservice -shift -set ARGS= -:nt_args -if [%1]==[] goto nt_args_done -set ARGS=%ARGS% %1 -shift -goto nt_args - -:nt_args_done -echo JONAS_BASE is set to %JONAS_BASE% -goto ntservice - -Rem Add -D System Properties -:jonas_opts -Set PROP=%~1 -shift -Set PROP=%PROP%=%1 -Set JONAS_OPTS=%JONAS_OPTS% %PROP% -Set START_OPTS=%START_OPTS% %PROP% -goto next_arg - -Rem Add -X System Properties -:java_opts -Set JAVA_OPTS=%JAVA_OPTS% %~1 -goto next_arg - -:standby_arg -set ARGS=%ARGS% -standby -if [%MODE%]==[stop] set FORCE_FOREGROUND=false -goto next_arg - -:gui_arg -echo Start Felix GUI with JOnAS. -set START_OPTS=%START_OPTS% -Djonas.felix.gui.enabled=true -set HEADLESS= -goto next_arg - -:tui_arg -echo Start Felix TUI with JOnAS. -set START_OPTS=%START_OPTS% -Djonas.felix.tui.enabled=true -set FORCE_FOREGROUND=true -goto next_arg - -:dev_arg -echo JOnAS starts in developer mode. -set START_OPTS=%START_OPTS% -Djonas.developer=true -goto next_arg - -:clean_arg -echo Clean Felix cache before starting JOnAS. -set START_OPTS=%START_OPTS% -Djonas.cache.clean=true -goto next_arg - -:fg_arg -set WHERE=foreground -goto next_arg - -:bg_arg -set WHERE=background -goto next_arg - -:win_arg -set WHERE=window -goto next_arg - -:n_arg -shift -set JONASNAME=%1 -set JONAS_OPTS=%JONAS_OPTS% -Djonas.name="%JONASNAME%" -set START_OPTS=%START_OPTS% -Djonas.name="%JONASNAME%" -goto next_arg - -:timeout_arg -shift -set PINGTIMEOUT=-timeout %1 -goto next_arg - -:state_arg -shift -set PINGSTATE=-state %1 -goto next_arg - -:cfgsvc_arg -shift -if [%1]==[] goto cfgsvc_usage -set WHERE=cfgsvc -set WRAPPER_CONF=%1 -goto start_arg - -:cp_arg -shift -set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%~1 -goto next_arg - -:debug_arg -shift -if not [%1]==[-p] goto debug_usage -shift -set JONAS_DEBUG_PORT=%1 -set JONAS_DEBUG_SUSPEND=n -if not [%2]==[-s] goto set_debug_opts -shift -shift -set JONAS_DEBUG_SUSPEND=%1 - -:set_debug_opts -echo JOnAS Debug Info : -echo listening on port : %JONAS_DEBUG_PORT% -echo suspend mode : %JONAS_DEBUG_SUSPEND% -set JONAS_DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=%JONAS_DEBUG_PORT%,suspend=%JONAS_DEBUG_SUSPEND% -goto next_arg - -:target_arg -if [%MODE%]==[start] set ARGS=%ARGS% -start -if [%MODE%]==[stop] set ARGS=%ARGS% -stop -set MODE=admin -set ARGS=%ARGS% -target -goto next_arg - -:username_arg -shift -set USERNAME=-username %1 -goto next_arg - -:password_arg -shift -set PASSWORD=-password %1 -goto next_arg - -:next_arg -if not [%1]==[-win] set PARAMS=%PARAMS% %1 -shift -if not [%1]==[] goto loop_on_args - -if [%MODE%]==[] goto no_mode - -Rem --------------------------------------------- -Rem Remove RMI Annotation -Rem --------------------------------------------- -Rem set JONAS_OPTS=%JONAS_OPTS% -Djava.rmi.server.RMIClassLoaderSpi=org.ow2.jonas.lib.bootstrap.RemoteClassLoaderSpi - -Rem Add Headless if needed -set START_OPTS=%START_OPTS% %HEADLESS% - -Rem Print out JONAS_BASE -if [%MODE%]==[start] echo JONAS_BASE is set to %JONAS_BASE% -if [%MODE%]==[check] echo JONAS_BASE is set to %JONAS_BASE% - -if %FORCE_FOREGROUND%==true set WHERE=foreground - -Rem --------------------------------------------- -Rem Run java command -Rem --------------------------------------------- - -if [%MODE%]==[stop] goto stop -if not [%MODE%]==[start] goto admin -if %WHERE%==cfgsvc goto cfgsvc_mode -if %WHERE%==window goto window -if %WHERE%==foreground goto foreground -if %WHERE%==background goto background -goto :EOF - -:cfgsvc_mode -rem called by ANT create_windows_service -set JAVA_CMD=%JAVA% -classpath "%JONAS_CLASSPATH%" org.ow2.jonas.commands.wrapper.GenerateWrapperConf -%JAVA_CMD% -d ; -i 2 wrapper.java.classpath "%JONAS_CLASSPATH%" >>%WRAPPER_CONF% -%JAVA_CMD% -i 2 wrapper.java.additional %JAVA_OPTS% %JONAS_OPTS% >>%WRAPPER_CONF% -echo wrapper.app.parameter.10=%JONASNAME% >>%WRAPPER_CONF% -echo wrapper.ntservice.name=JOnAS_%JONASNAME% >>%WRAPPER_CONF% -echo wrapper.ntservice.displayname=JOnAS (%JONASNAME%) >>%WRAPPER_CONF% -goto :EOF - -:foreground -REM start JOnAS in foreground mode -%JAVA% %JAVA_OPTS% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %JONAS_DEBUG_OPTS% %CLASS_TO_RUN% %ARGS% %USERNAME% %PASSWORD% -goto :EOF - -:background -REM start JOnAS in background mode -start /B "JOnAS" %JAVA% %JAVA_OPTS% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %JONAS_DEBUG_OPTS% %CLASS_TO_RUN% %ARGS% %USERNAME% %PASSWORD% -%JAVA% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %ADMIN_CLASS% -ping %PINGTIMEOUT% %PINGSTATE% %ARGS% %USERNAME% %PASSWORD% -goto :EOF - -:stop -REM stop JOnAS and wait for it to stop -start /B "JOnAS" %JAVA% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %JONAS_DEBUG_OPTS% %CLASS_TO_RUN% %ARGS% %PINGTIMEOUT% %PINGSTATE% %USERNAME% %PASSWORD% -%JAVA% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %ADMIN_CLASS% -ping %PINGTIMEOUT% %PINGSTATE% %ARGS% %USERNAME% %PASSWORD% -goto :EOF - -:window -set WINDOW_TITLE="%HOSTNAME%:%JONASNAME%" -if %WINDOW_TITLE%==":" set WINDOW_TITLE="JOnAS Server" -start %WINDOW_TITLE% %JAVA% %JAVA_OPTS% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %JONAS_DEBUG_OPTS% %CLASS_TO_RUN% %ARGS% %USERNAME% %PASSWORD% -goto :EOF - -:admin -%JAVA% %START_OPTS% %JONAS_OPTS% -cp "%JONAS_CLASSPATH%" %JONAS_DEBUG_OPTS% %CLASS_TO_RUN% %ARGS% %PINGTIMEOUT% %PINGSTATE% %USERNAME% %PASSWORD% -goto :EOF - -:ntservice -"%JONAS_ROOT%\bin\jonasnt" %ARGS% -goto :EOF - -:setjava -echo JAVA_HOME not set. -goto :EOF - -:no_mode -echo No startup mode specified, specify start | stop | admin | version | check -goto usage - -:no_arg -echo No arguments specified. -goto usage - -:usage -echo jonas start | stop | admin | version | check| ntservice | -fg | -bg | -win | -n | -standby | -debug | -cfgsvc | -gui | -tui | -dev | -clean -echo Debug mode : jonas start -debug -p [-s ] -REM TODO: Add here explanation for the arguments -goto :EOF - -:setroot -echo JONAS_ROOT not set. -goto :EOF - -:debug_usage -echo -debug option parameters are : "-debug -p [-s ]" -goto :EOF - -:cfgsvc_usage -echo -cfgsvc option requires filename for target wrapper.conf file -goto :EOF - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/jonasnt.bat b/jonas/assemblies/binaries/src/main/resources/bin/jonasnt.bat deleted file mode 100755 index cf4baa9d25..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/jonasnt.bat +++ /dev/null @@ -1,138 +0,0 @@ -@echo off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Copyright (c) 1999-2006 Tanuki Software Inc. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -setlocal - -if "%OS%"=="Windows_NT" goto nt -echo This script only works with NT-based versions of Windows. -goto :eof - -:nt -Rem check JONAS_ROOT -if ["%JONAS_ROOT%"]==[""] goto setJonasRoot - -Rem check JONAS_BASE -if ["%JONAS_BASE%"]==[""] goto setJonasBase - -Rem check WRAPPER_HOME -if ["%WRAPPER_HOME%"]==[""] goto setWrapperHome - -rem -rem Find the application home. -rem -set _WRAPPER_BIN=%WRAPPER_HOME%\bin\ -set _WRAPPER_BASE=wrapper -set _WRAPPER_EXE=%_WRAPPER_BIN%%_WRAPPER_BASE%-windows-x86-32.exe -if exist "%_WRAPPER_EXE%" goto jonasbase -set _WRAPPER_EXE=%_WRAPPER_BIN%%_WRAPPER_BASE%-windows-x86-64.exe -if exist "%_WRAPPER_EXE%" goto jonasbase -set _WRAPPER_EXE=%_WRAPPER_BIN%%_WRAPPER_BASE%.exe -if exist "%_WRAPPER_EXE%" goto jonasbase -echo Unable to locate a Wrapper executable using any of the following names: -echo %_WRAPPER_BIN%%_WRAPPER_BASE%-windows-x86-32.exe -echo %_WRAPPER_BIN%%_WRAPPER_BASE%-windows-x86-64.exe -echo %_WRAPPER_BIN%%_WRAPPER_BASE%.exe -rem pause -goto :eof - -:jonasbase -rem Check that the JONAS_BASE is valid -if exist "%JONAS_BASE%\conf\jonas.properties" goto validate -echo The JONAS_BASE is not valid -rem pause -goto :eof - -:validate -rem Find the requested command. -for /F %%v in ('echo %1^|findstr "^console$ ^start$ ^stop$ ^restart$ ^status$ ^install$ ^uninstall"') do call :exec set COMMAND=%%v - -if "%COMMAND%" == "" ( - echo Usage: %0 { console : start : stop : restart : status : install : uninstall} - goto :eof -) else ( - shift -) - -set WRAPPER_CONF=%JONAS_BASE%\conf\wrapper.conf - -rem -rem Run the application. -rem At runtime, the current directory will be that of wrapper.exe -rem -:run -call :%COMMAND% -rem if errorlevel 1 pause -goto :eof - -:console -"%_WRAPPER_EXE%" -c "%WRAPPER_CONF%" -goto :eof - -:start -"%_WRAPPER_EXE%" -t "%WRAPPER_CONF%" -goto :eof - -:stop -"%_WRAPPER_EXE%" -p "%WRAPPER_CONF%" -goto :eof - -:status -"%_WRAPPER_EXE%" -q "%WRAPPER_CONF%" -goto :eof - -:install -"%_WRAPPER_EXE%" -i "%WRAPPER_CONF%" -goto :eof - -:uninstall -"%_WRAPPER_EXE%" -r "%WRAPPER_CONF%" -goto :eof - -:console -"%_WRAPPER_EXE%" -c "%WRAPPER_CONF%" -goto :eof - -:restart -call :stop -call :start -goto :eof - -:exec -%* -goto :eof - -:setJonasRoot -echo JONAS_ROOT must be set. -goto :eof - -:setJonasBase -echo JONAS_BASE must be set. -goto :eof - -:setWrapperHome -echo WRAPPER_HOME must be set. -echo Please check your Tanuki Java Service wrapper installation. -goto :eof diff --git a/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig b/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig deleted file mode 100644 index 63f7f14fc7..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig +++ /dev/null @@ -1,117 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2011 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -# Locate the JORAM ResourceAdapter to configure -RA_LOCATION=repositories/maven2-internal/org/objectweb/joram/joram-jca-jonas/${joram.version}/joram-jca-jonas-${joram.version}.rar -if [ -f $JONAS_BASE/$RA_LOCATION ]; then - RARJORAM=$JONAS_BASE/$RA_LOCATION; -else - if [ -f $JONAS_BASE/joram_ra_for_jonas.rar ]; then - RARJORAM=$JONAS_BASE/joram_ra_for_jonas.rar; - fi -fi - -if ([ "$RARJORAM" = "" ] || [ ! -f $RARJORAM ]); then - echo "[ERROR] Cannot find a JORAM Resource Adapter file to process."; - echo "Expected locations:"; - echo " * $JONAS_BASE/$RA_LOCATION (newjb generated base)"; - echo " * $JONAS_BASE/joram_ra_for_jonas.rar"; - echo "Notice that the JORAM RA is automatically placed at the right location by 'newjb' when generating a new JONAS_BASE"; - exit 1 ; -fi - -PRM="false"; -PORT=16010; -HOST=localhost; -SERVER=0; -export PRM PORT HOST SERVER - -while [ "$#" -gt 0 ] -do - case "$1" in - -p) - shift - PORT=$1; - PRM="true"; - ;; - -h) - shift - HOST=$1; - PRM="true"; - ;; - -s) - shift - SERVER=$1; - PRM="true"; - ;; - -v) - shift - export VERBOSE=$1; - ;; - *) - shift - ;; - esac -done - -if [ "$PRM" = "false" ] -then - echo "Usage : $0 -p -h -s "; - exit 1; -fi - -echo "Target JORAM Resource Adapter: $RARJORAM" - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JONAS_ROOT/lib/jonas-generators-raconfig.jar$SPS$JONAS_ROOT/lib/client.jar - -$JAVA -cp $JONAS_CLASSPATH \ - $JAVA_OPTS \ - org.ow2.jonas.client.boot.Bootstrap org.objectweb.joram.client.connector.utils.RAConfig \ - -rar $RARJORAM \ - -uhp $HOST $PORT $SERVER \ - -conf $JONAS_BASE/conf \ - $VERBOSE - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig.bat b/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig.bat deleted file mode 100755 index d3058ba9be..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/joram_raconfig.bat +++ /dev/null @@ -1,134 +0,0 @@ -@Echo Off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Nicolas Tachker -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Keep variables local to this script -setlocal ENABLEDELAYEDEXPANSION - -Rem --------------------------------------------- -Rem set environment -Rem --------------------------------------------- -if ["%JONAS_ROOT%"]==[""] goto setroot -call "%JONAS_ROOT%\bin\setenv.bat" - -REM Locate the JORAM ResourceAdapter to configure -set RA_LOCATION=repositories/maven2-internal/org/objectweb/joram/joram-jca-jonas/${joram.version}/joram-jca-jonas-${joram.version}.rar -if not exist "%JONAS_BASE%\%RA_LOCATION%" goto compatibility_rar -Set RARJORAM=%JONAS_BASE%\%RA_LOCATION% - -Rem Marker that help to come back at the beggining of the script when we tryed to use the compatibility rar -:joram_rar_available - -set HOST=localhost -set PORT=16010 -set SERVER=0 - -Rem --------------------------------------------- -Rem Get args -Rem --------------------------------------------- -if [%1]==[] goto no_arg - -:loop_on_args -Set VALUE=%~1 -if [%1]==[-p] goto port_arg -if [%1]==[-h] goto host_arg -if [%1]==[-s] goto sid_arg -if [%1]==[-v] goto verbose -set ARGS=%ARGS% %1 -goto next_arg - -:port_arg -shift -if [%1]==[] goto usage -set PORT=%1 -goto next_arg - -:host_arg -shift -if [%1]==[] goto usage -set HOST=%1 -goto next_arg - -:sid_arg -shift -if [%1]==[] goto usage -set HOST=%1 -goto next_arg - -:verbose -shift -set VERBOSE=-v -goto next_arg - -:next_arg -shift -if not [%1]==[] goto loop_on_args - -Rem --------------------------------------------- -Rem set JAVA_OPTS -Rem --------------------------------------------- -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.base="%JONAS_BASE%" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -Rem Update classpath -Set JONAS_CLASSPATH=%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar;%JONAS_ROOT%\lib\jonas-generators-raconfig.jar;%JONAS_ROOT%\lib\client.jar;%JONAS_CLASSPATH% - -Rem --------------------------------------------- -Rem start Joram RAConfig -Rem --------------------------------------------- -echo "Target JORAM Resource Adapter: %RARJORAM%" -%JAVA% %JAVA_OPTS% -cp "%JONAS_CLASSPATH%" org.ow2.jonas.client.boot.Bootstrap org.objectweb.joram.client.connector.utils.RAConfig -rar "%RARJORAM%" -uhp %HOST% %PORT% %SERVER% -conf "%JONAS_BASE%\conf" %VERBOSE% -goto :EOF - -:setjava -echo JAVA_HOME not set. -goto :EOF - -:no_arg -echo No arguments specified. -goto usage - -:usage -echo "Usage : joram_raconfig.bat -p -h -s " -goto :EOF - -:setroot -echo JONAS_ROOT not set. -goto :EOF - -:setrar -echo "[ERROR] Cannot find a JORAM Resource Adapter file to process."; -echo "Expected locations:"; -echo " * %JONAS_BASE%\%RA_LOCATION% (newjb generated base)"; -echo " * %JONAS_BASE%\joram_ra_for_jonas.rar"; -echo "Notice that the JORAM RA is automatically placed at the right location by 'newjb' when generating a new JONAS_BASE"; -goto :EOF - -:compatibility_rar -if not exist "%JONAS_BASE%\joram_ra_for_jonas.rar" goto setrar -Set RARJORAM=%JONAS_BASE%\joram_ra_for_jonas.rar -goto joram_rar_available diff --git a/jonas/assemblies/binaries/src/main/resources/bin/newjb b/jonas/assemblies/binaries/src/main/resources/bin/newjb deleted file mode 100644 index 402777fa53..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/newjb +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Florent Benoit -# Contributor(s): Benoit Pelletier -# --------------------------------------------------------------------------- -# $Id:newjb 12758 2008-01-31 10:23:26Z durieuxp $ -# --------------------------------------------------------------------------- - -# ----------------------------------------------------------------------- -# Compute JONAS_ROOT in case it has not been set. -# ----------------------------------------------------------------------- -if [ ! -d $JONAS_ROOT/deploy ]; then - - # We know that the 'jonas' command is located at /bin/jonas - # So we can try to be smart enough and deduce the JONAS_ROOT value from that info :) - - # Remove bin/jonas from the command path - relative_directory=`dirname $0` - relative_directory=`dirname $relative_directory` - - # Keep old position - old_position=`pwd` - - # As the relative path is relative from the current location, we can cd into it ... - cd $relative_directory - # ... and then get the absolute path - absolute_directory=`pwd` - - # Come back into the old position - cd $old_position - - # Before accepting that value as is, check if that's a real JONAS_ROOT - if [ ! -d $absolute_directory/deploy ]; then - echo "Cannot deduce JONAS_ROOT value from $0." - exit 1 - fi - - # Set the JONAS_ROOT variable - JONAS_ROOT=$absolute_directory - export JONAS_ROOT -fi - -i=0 -while [ -z "$JONAS_BASE" ] -do - if [ $i -eq 3 ] - then - exit 1 - fi -echo "JONAS_BASE not set. Please enter a JONAS_BASE: " -read JONAS_BASE -i=`expr $i + 1` -done -export JONAS_BASE - -# ----------------------------------------------------------------------- -# Debugging properties -#ANT_OPTS="$ANT_OPTS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=4143,suspend=y" -# ----------------------------------------------------------------------- - -# Force endorsed directory for the ant process -# Ensure that the XML parser used is recent enough -ANT_OPTS="$ANT_OPTS -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed" -export ANT_OPTS - -# creation d'un cluster daemon demandee -if [ "$1" = "-cd" ]; then - ant -file $JONAS_ROOT/templates/newjb/build-jb.xml create_jonas_clusterDaemon -else - ant -file $JONAS_ROOT/templates/newjb/build-jb.xml -fi diff --git a/jonas/assemblies/binaries/src/main/resources/bin/newjb.bat b/jonas/assemblies/binaries/src/main/resources/bin/newjb.bat deleted file mode 100755 index 6c81489250..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/newjb.bat +++ /dev/null @@ -1,54 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Benoit Pelletier -Rem Contributor(s): Shenheng Liang -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -setlocal - -Rem set the Environment Variables -if ["%JONAS_ROOT%"]==[""] goto setroot -if ["%JONAS_BASE%"]==[""] goto setbase - -Rem Force endorsed directory for the ant process -Rem Ensure that the XML parser used is recent enough -set ANT_OPTS=%ANT_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -if "%1" == "-cd" goto cd_call - -call ant -file "%JONAS_ROOT%\templates\newjb\build-jb.xml" -goto :EOF - -:setroot -echo JONAS_ROOT not set. -goto :EOF - -:setbase -echo JONAS_BASE not set. -goto :EOF - -:cd_call -call ant -file "%JONAS_ROOT%\templates\newjb\build-jb.xml" create_jonas_clusterDaemon -goto :EOF \ No newline at end of file diff --git a/jonas/assemblies/binaries/src/main/resources/bin/newjc b/jonas/assemblies/binaries/src/main/resources/bin/newjc deleted file mode 100644 index d96a171de3..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/newjc +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2005-2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Benoit Pelletier -# Contributor(s): Nicolas Duvauchel -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- -echo $0 -if [ ! -d $JONAS_ROOT/lib ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -NEWJCDIR=$JONAS_ROOT/templates/newjc; - -# Force endorsed directory for the ant process -# Ensure that the XML parser used is recent enough -ANT_OPTS="$ANT_OPTS -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed" -export ANT_OPTS - -if [ $# -eq 0 ] -then - echo 1>&2 Mode Step by Step - ant -file $NEWJCDIR/build-jc.xml -Dsilence.mode="false" -else - if [ $1 = "-auto" ] - then - echo 1>&2 Mode Auto - ant -file $NEWJCDIR/build-jc.xml -Dsilence.mode="true" - fi -fi - - diff --git a/jonas/assemblies/binaries/src/main/resources/bin/newjc.bat b/jonas/assemblies/binaries/src/main/resources/bin/newjc.bat deleted file mode 100755 index dd76d10cd2..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/newjc.bat +++ /dev/null @@ -1,106 +0,0 @@ -@echo off -:: --------------------------------------------------------------------------- -:: JOnAS: Java(TM) Open Application Server -:: Copyright (C) 2006-2009 Bull S.A.S. -:: Contact: jonas-team@objectweb.org -:: -:: This library is free software; you can redistribute it and/or -:: modify it under the terms of the GNU Lesser General Public -:: License as published by the Free Software Foundation; either -:: version 2.1 of the License, or any later version. -:: -:: This library is distributed in the hope that it will be useful, -:: but WITHOUT ANY WARRANTY; without even the implied warranty of -:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -:: Lesser General Public License for more details. -:: -:: You should have received a copy of the GNU Lesser General Public -:: License along with this library; if not, write to the Free Software -:: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -:: USA -:: -:: Initial developer(s): Benoit Pelletier -:: Contributor(s): -:: --------------------------------------------------------------------------- -:: $Id$ -:: --------------------------------------------------------------------------- -Rem Keep variables local to this script -setlocal ENABLEDELAYEDEXPANSION - -if [%JONAS_ROOT%]==[] goto setroot - -set NEWJCDIR=%JONAS_ROOT%\templates\newjc - -Rem Force endorsed directory for the ant process -Rem Ensure that the XML parser used is recent enough -set ANT_OPTS=%ANT_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -if [%1]==[] goto no_arg - -Rem --------------------------------------------- -Rem Set the silence mode required -Rem --------------------------------------------- -:arg -if [%1]==[-auto] goto auto_mode -if [%1]==[-debug] goto debug_arg -goto end - - -:execute -call ant -file "%NEWJCDIR%\build-jc.xml" %SILENCE_MODE% -goto end - -:auto_mode -echo Mode Auto -set SILENCE_MODE=%SILENCE_MODE% -Dsilence.mode="true" -goto next_arg - -:next_arg -shift -if not [%1]==[] goto arg -goto execute - - -Rem --------------------------------------------- -Rem No arg, silence mode by default -Rem --------------------------------------------- - -:no_arg -echo Mode Step by Step -set SILENCE_MODE=%SILENCE_MODE% -Dsilence.mode="false" -goto execute -goto end - -:setroot -echo JONAS_ROOT not set. -goto end - - -:debug_usage -echo -debug option parameters are : "-debug -p [-s ]" -goto end - -:set_debug_opts -echo newjc Debug Info : -echo listening on port : %DEBUG_PORT% -echo suspend mode : %DEBUG_SUSPEND% -set ANT_OPTS=%ANT_OPTS% -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=%DEBUG_PORT%,suspend=%DEBUG_SUSPEND% -goto next_arg - -:debug_arg -shift -if not [%1]==[-p] goto debug_usage -shift -set DEBUG_PORT=%1 -set DEBUG_SUSPEND=n -shift -shift -if [%1]==[y] goto set_debug_suspend -goto set_debug_opts - -:set_debug_suspend -set DEBUG_SUSPEND=%1 -goto set_debug_opts - -:end -goto :EOF \ No newline at end of file diff --git a/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups b/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups deleted file mode 100644 index d27a036ced..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups +++ /dev/null @@ -1,53 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Check JONAS_ROOT is set. -if [ ! -d $JONAS_ROOT/deploy ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# Set CLASSPATH and JONAS_BASE -. $JONAS_ROOT/bin/setenv - -JAVA_OPTS="$JAVA_OPTS \ - -Djonas.root=$JONAS_ROOT \ - -Djonas.base=$JONAS_BASE \ - -Djava.security.manager \ - -Djava.security.policy=$JONAS_BASE/conf/java.policy \ - -Djava.endorsed.dirs=$JONAS_ROOT/lib/endorsed \ -" - -# Find jar with the jgroups classes -JGROUPSLIB=`find $JONAS_ROOT/repositories -name ow2-bundles-externals-jgroups*.jar` - -# add /client-bootstrap.jar to the classpath for the bootstrap class -JONAS_CLASSPATH=$JONAS_CLASSPATH$SPS$JONAS_ROOT/lib/bootstrap/client-bootstrap.jar$SPS$JGROUPSLIB - -$JAVA -cp $JONAS_CLASSPATH $JAVA_OPTS org.ow2.jonas.client.boot.Bootstrap org.jgroups.tests.Probe -timeout 500 $* diff --git a/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups.bat b/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups.bat deleted file mode 100755 index 77d418ab39..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/probeJgroups.bat +++ /dev/null @@ -1,69 +0,0 @@ -@Echo Off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Keep variables local to this script -setlocal ENABLEDELAYEDEXPANSION - -Rem --------------------------------------------- -Rem set environment -Rem --------------------------------------------- -if ["%JONAS_ROOT%"]==[""] goto setroot -call "%JONAS_ROOT%\bin\setenv.bat" - -Rem --------------------------------------------- -Rem set JAVA_OPTS -Rem --------------------------------------------- -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.root="%JONAS_ROOT%" -Set JAVA_OPTS=%JAVA_OPTS% -Djonas.base="%JONAS_BASE%" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy="%JONAS_BASE%\conf\java.policy" -Set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%JONAS_ROOT%\lib\endorsed" - -Rem --------------------------------------------- -Rem include jgroups class -Rem THIS MUST BE UPDATED FOR WINDOWS !!!!!!!!!!!! -Rem unix: JGROUPSLIB=`find $JONAS_ROOT/repositories -name ow2-bundles-externals-jgroups*.jar` -Rem --------------------------------------------- -Rem Setting JGroups libraries. -for /r %JONAS_ROOT%/repositories %%i in (ow2-bundles-externals-jgroups*.jar) do (set JGROUPSLIB=%%i %JGROUPSLIB%) - - - -Set JONAS_CLASSPATH=%JGROUPSLIB%;%JONAS_CLASSPATH% - -Rem --------------------------------------------- -Rem Run java command -Rem --------------------------------------------- -Set JONAS_CLASSPATH=%JONAS_CLASSPATH%;%JONAS_ROOT%\lib\bootstrap\client-bootstrap.jar - -%JAVA% %JAVA_OPTS% -cp "%JONAS_CLASSPATH%" org.ow2.jonas.client.boot.Bootstrap org.jgroups.tests.Probe -timeout 500 %1 %2 %3 %4 %5 %6 %7 %8 %9 -goto :EOF - -:setjava -echo JAVA_HOME not set. -goto :EOF - -:setroot -echo JONAS_ROOT not set. -goto :EOF diff --git a/jonas/assemblies/binaries/src/main/resources/bin/registry b/jonas/assemblies/binaries/src/main/resources/bin/registry deleted file mode 100644 index 00f733e37f..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/registry +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# This command is deprecated. -# Use "jonas start -standby" instead. -jonas start -standby diff --git a/jonas/assemblies/binaries/src/main/resources/bin/registry.bat b/jonas/assemblies/binaries/src/main/resources/bin/registry.bat deleted file mode 100755 index a5580e19ea..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/registry.bat +++ /dev/null @@ -1,31 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2009 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): -Rem -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem This command is deprecated. -Rem Use jonas start -standby instead. -jonas start -standby diff --git a/jonas/assemblies/binaries/src/main/resources/bin/setenv b/jonas/assemblies/binaries/src/main/resources/bin/setenv deleted file mode 100644 index 57beef2d91..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/setenv +++ /dev/null @@ -1,138 +0,0 @@ -#! /bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Philippe Durieux -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# ----------------------------------------------------------------------- -# Check JONAS_ROOT is set. -# ----------------------------------------------------------------------- -if [ ! -d $JONAS_ROOT/repositories ] -then - echo "JONAS_ROOT must be set" - exit 1 -fi - -# ----------------------------------------------------------------------- -# Check JONAS_BASE is set. Set it to JONAS_ROOT if not set. -# ----------------------------------------------------------------------- -if [ -z "$JONAS_BASE" ] -then - JONAS_BASE=$JONAS_ROOT - export JONAS_BASE -fi - -# --------------------------- -# Resolve links -# --------------------------- - -# Do the same stuff than readlink -f but using standard sh commands -# On some Unix systems, readlink -f is not supported -readlink_f() { - # if $1 is a file remove the possible last / - dname=`dirname "$1"` - bname=`basename "$1"` - noslash="$dname"/"$bname" - - linktofile=`read_last_link "$noslash"` # `basename linktofile` is not a link - dna=`dirname "$linktofile"` - # res=the sure path (1 by 1 add no symb link) - res=`basename "$linktofile"` - - while ([ "$dna" != "/" ] && [ "$dna" != "." ]) # Finished if . or / (loop) - do - if [ -L "$dna" ] - then - dna=`read_last_link "$dna"` # last directory is not a link - fi - # basename $dna is not a symbolic link, we can add it to res - res=`basename "$dna"`/"$res" - dna=`dirname "$dna"` - done - if ([ "$dna" = "/" ] && [ "$res" != '/' ]) - then - res=/"$res"; - fi - D=`dirname "$res"` - B=`basename "$res"` - res="`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B" - echo $res -} - -# ensure that the basename of result will not be a link -read_last_link() { - res="$1" - while [ -L "$res" ] - do - ls=`ls -ld "$res"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null - then # if absolute link (begin with /) - res="$link" - else # if relative link (not begin with /) - rel=`dirname "$res"` - res="$rel"/"$link" - fi - done - echo $res -} -JONAS_ROOT=`readlink_f $JONAS_ROOT` -JONAS_BASE=`readlink_f $JONAS_BASE` - - -# must be : for Unix, \; for CygWin on NT -SPS=: - -# ----------------------------------------------------------------------- -# JAVA setup -# We try to use first the java JVM in JAVA_HOME and if not found, -# we use the one found in the path. -# ----------------------------------------------------------------------- -if [ -z "$JAVA" ]; then - if [ -z "$JAVA_HOME" ] - then - JAVA=java - JAVAC=javac - else - JAVA=$JAVA_HOME/bin/java - JAVAC=$JAVA_HOME/bin/javac - fi - export JAVA JAVAC -fi - - -# You can specify additional options to give to the Java JVM in the -# JAVA_OPTS environment variable. -export JAVA_OPTS - -# ----------------------------------------------------------------------- -# Take always the JOnAS configuration files in $JONAS_BASE/conf -# So it must be before the $JONAS_CLASSPATH (if carol.properties is redefined elsewhere) -# ----------------------------------------------------------------------- -if [ "$JONAS_CLASSPATH" = "" ]; then - JONAS_CLASSPATH=$JONAS_BASE/conf -else - JONAS_CLASSPATH=$JONAS_BASE/conf$SPS$JONAS_CLASSPATH -fi - -export JONAS_CLASSPATH diff --git a/jonas/assemblies/binaries/src/main/resources/bin/setenv.bat b/jonas/assemblies/binaries/src/main/resources/bin/setenv.bat deleted file mode 100755 index 4f22b8d28c..0000000000 --- a/jonas/assemblies/binaries/src/main/resources/bin/setenv.bat +++ /dev/null @@ -1,51 +0,0 @@ -@Echo Off - -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999-2008 Bull S.A.S. -Rem Contact: jonas-team@ow2.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem but WITHOUT ANY WARRANTY; without even the implied warranty of -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Philippe Durieux -Rem Contributor(s): Miroslav Halas -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - - -Rem check JONAS_ROOT and JONAS_BASE -if ["%JONAS_ROOT%"]==[""] goto setroot -if ["%JONAS_BASE%"]==[""] set JONAS_BASE=%JONAS_ROOT% - -Rem ---------- -Rem JAVA setup -Rem ---------- -Rem We try to use first the java JVM in JAVA_HOME and if not found, -Rem we use the one found in the path. -Rem You can specify additional options to give to the Java JVM in the -Rem JAVA_OPTS environment variable. -Rem JAVA_HOME must be set since config_env.bat requires it for tools.jar -set JAVA="%JAVA_HOME%\bin\java.exe" -set JAVAC="%JAVA_HOME%\bin\javac.exe" -Rem For JOnAS configuration files (carol.properties, trace.properties, ...) -Rem must be before the CLASSPATH (if carol.properties is redefined elsewhere) -set JONAS_CLASSPATH=%JONAS_BASE%\conf;%JONAS_CLASSPATH% -goto :EOF - -:setroot -echo JONAS_ROOT must be set. -goto :EOF diff --git a/jonas/assemblies/client-jar/pom.xml b/jonas/assemblies/client-jar/pom.xml deleted file mode 100644 index 7a31aec758..0000000000 --- a/jonas/assemblies/client-jar/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - org.ow2.jonas - assemblies - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.assemblies - client-jar - JOnAS :: Assemblies :: Client JAR - - - - - maven-dependency-plugin - - - verify - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - jonas-full-${project.version}/lib/client.jar - - - - - - - maven-antrun-plugin - - - verify - - - - - - - - run - - - - - - - diff --git a/jonas/assemblies/configuration/pom.xml b/jonas/assemblies/configuration/pom.xml deleted file mode 100644 index f7f1970adf..0000000000 --- a/jonas/assemblies/configuration/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - org.ow2.jonas - assemblies - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.assemblies - configuration - JOnAS :: Assemblies :: Configuration - - - - - - src/main/resources - true - - conf/banner.txt - - - - - src/main/resources - false - - conf/banner.txt - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/FirebirdSQL.properties b/jonas/assemblies/configuration/src/main/resources/conf/FirebirdSQL.properties deleted file mode 100644 index a1142ff46a..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/FirebirdSQL.properties +++ /dev/null @@ -1,60 +0,0 @@ -###################### FireBird DataSource configuration example -# - - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:firebirdsql:/// - -datasource.classname org.firebirdsql.jdbc.FBDriver -datasource.username -datasource.password -datasource.isolationlevel read_committed -datasource.mapper rdb.firebird - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select * from rdb$types - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/HSQL1.properties b/jonas/assemblies/configuration/src/main/resources/conf/HSQL1.properties deleted file mode 100644 index 7d2a5eb9a2..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/HSQL1.properties +++ /dev/null @@ -1,57 +0,0 @@ -###################### HSQLDB DataSource configuration example -# - - -##### -# DataSource configuration -# Replace db_jonas and jonas by appropriate values. -# -datasource.name jdbc_1 -datasource.url jdbc:hsqldb:hsql://localhost:9001/db_jonas -datasource.classname org.hsqldb.jdbcDriver -datasource.username jonas -datasource.password jonas -datasource.mapper rdb.hsql - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select count(1) from information_schema.system_tables - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 100 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/InstantDB1.properties b/jonas/assemblies/configuration/src/main/resources/conf/InstantDB1.properties deleted file mode 100644 index d41e13f1eb..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/InstantDB1.properties +++ /dev/null @@ -1,55 +0,0 @@ -####################### InstantDB DataSource configuration example -# - - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:idb=db1.prp -datasource.classname org.enhydra.instantdb.jdbc.idbDriver - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt set date format "yyyy/mm/dd" - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 20 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/InterBase1.properties b/jonas/assemblies/configuration/src/main/resources/conf/InterBase1.properties deleted file mode 100644 index 4789d6080d..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/InterBase1.properties +++ /dev/null @@ -1,61 +0,0 @@ -###################### InterBase DataSource configuration example -# - - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:interbase:/// -#datasource.url jdbc:interbase://localhost//dbs/orders.gdb -#datasource.url jdbc:interbase://localhost/C:/dbs/orders.gdb -datasource.classname interbase.interclient.Driver -datasource.username -datasource.password -datasource.isolationlevel read_committed -datasource.mapper rdb.interbase - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select * from rdb$types - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 5 -jdbc.maxconpool 15 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/MailMimePartDS1.properties b/jonas/assemblies/configuration/src/main/resources/conf/MailMimePartDS1.properties deleted file mode 100644 index b2385576f4..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/MailMimePartDS1.properties +++ /dev/null @@ -1,38 +0,0 @@ -####################### -## Required properties -####################### - -#Factory Name/Type -mail.factory.name mailMimePartDS_1 -mail.factory.type javax.mail.internet.MimePartDataSource - -######################## -## Optional properties -## Each line can be removed -####################### - -### Authentication -#mail.authentication.username -#mail.authentication.password - -### Session properties -#mail.debug -#mail.from -#mail.mime.address.strict -#mail.host -#mail.store.protocol -#mail.transport.protocol -#mail.user - -### For each protocol: imap, pop3, smtp,... -### Ovveride default values defined aboved -#mail..class -#mail..host -#mail..port -#mail..user - -#### MimePartDataSource properties -#mail.to -#mail.cc -#mail.bcc -#mail.subject diff --git a/jonas/assemblies/configuration/src/main/resources/conf/MailSession1.properties b/jonas/assemblies/configuration/src/main/resources/conf/MailSession1.properties deleted file mode 100644 index d3d1a24ac1..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/MailSession1.properties +++ /dev/null @@ -1,32 +0,0 @@ -####################### -## Required properties -####################### - -#Factory Name/Type -mail.factory.name mailSession_1 -mail.factory.type javax.mail.Session - -######################## -## Optional properties -## Each line can be removed -####################### - -### Authentication -#mail.authentication.username -#mail.authentication.password - -### Session properties -#mail.debug -#mail.from -#mail.mime.address.strict -#mail.host -#mail.store.protocol -#mail.transport.protocol -#mail.user - -### For each protocol: imap, pop3, smtp,... -### Ovveride default values defined aboved -#mail..class -#mail..host -#mail..port -#mail..user diff --git a/jonas/assemblies/configuration/src/main/resources/conf/McKoi1.properties b/jonas/assemblies/configuration/src/main/resources/conf/McKoi1.properties deleted file mode 100644 index 65267d4b5b..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/McKoi1.properties +++ /dev/null @@ -1,59 +0,0 @@ -###################### McKoi DataSource configuration example -# - - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:mckoi:// -datasource.classname com.mckoi.JDBCDriver -datasource.username -datasource.password -datasource.mapper rdb.mckoi - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select 1 - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - - -# Maximum number of Prepare Statements cached in a Connection -jdbc.pstmtmax 120 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/MySQL.properties b/jonas/assemblies/configuration/src/main/resources/conf/MySQL.properties deleted file mode 100644 index 472cbf10a8..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/MySQL.properties +++ /dev/null @@ -1,56 +0,0 @@ -###################### MySQL DataSource configuration example -# - -datasource.name jdbc_1 -datasource.url jdbc:mysql://localhost/db_jonas -datasource.classname org.gjt.mm.mysql.Driver -datasource.username -datasource.password -datasource.mapper rdb.mysql - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -# By default mySQL has a timeout every 8 hours, use a value of 7h -jdbc.connmaxage 420 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select 1 - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - -# Maximum number of Prepare Statements cached in a Connection -jdbc.pstmtmax 120 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/Oracle1.properties b/jonas/assemblies/configuration/src/main/resources/conf/Oracle1.properties deleted file mode 100644 index 1d755980a8..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/Oracle1.properties +++ /dev/null @@ -1,59 +0,0 @@ -###################### Oracle DataSource configuration example -# - - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:oracle:thin:@:1521: -datasource.classname oracle.jdbc.driver.OracleDriver -datasource.username -datasource.password -datasource.mapper rdb.oracle - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select * from dual - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - -# Maximum number of Prepare Statements cached in a Connection -jdbc.pstmtmax 120 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/PostgreSQL1.properties b/jonas/assemblies/configuration/src/main/resources/conf/PostgreSQL1.properties deleted file mode 100644 index 157b09d226..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/PostgreSQL1.properties +++ /dev/null @@ -1,61 +0,0 @@ -###################### PostgreSQL DataSource configuration example -# - - -##### -# DataSource configuration -# Replace db_jonas and jonas by appropriate values. -# -datasource.name jdbc_1 -datasource.url jdbc:postgresql://localhost:5432/db_jonas -datasource.classname org.postgresql.Driver -datasource.username jonas -datasource.password jonas -datasource.mapper rdb.postgres - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement -jdbc.connteststmt select 1 - -# JDBC Connection Pool size. -# Postgres accepts up to 30 connections. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 2 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 5 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 - -# Maximum number of Prepare Statements cached in a Connection -jdbc.pstmtmax 120 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/Sybase1.properties b/jonas/assemblies/configuration/src/main/resources/conf/Sybase1.properties deleted file mode 100644 index 1a3b00ae35..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/Sybase1.properties +++ /dev/null @@ -1,33 +0,0 @@ -###################### Sybase DataSource configuration example -# - - -##### -# DataSource configuration -# Replace jonas and pwdjonas by appropriate values. -# -datasource.name jdbc_1 -datasource.url jdbc:sybase:Tds:machineName:5000/jonas -datasource.classname com.sybase.jdbc2.jdbc.SybDriver -datasource.username jonas -datasource.password pwdjonas - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 1 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 30 - -# Test statement -jdbc.connteststmt select 5 x, 2 y, "the product is", 5*2 Result - -# Maximum number of Prepare Statements cached in a Connection -jdbc.pstmtmax 120 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/a3debug.cfg b/jonas/assemblies/configuration/src/main/resources/conf/a3debug.cfg deleted file mode 100644 index b58643fade..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/a3debug.cfg +++ /dev/null @@ -1,33 +0,0 @@ -log.config.classname org.objectweb.util.monolog.wrapper.javaLog.LoggerFactory - -# ----------------------------------------------------------------------- -# tty : console handler -# ----------------------------------------------------------------------- -handler.tty.type Console -handler.tty.output System.out -handler.tty.pattern %d : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# logf : rolling file handler -# ----------------------------------------------------------------------- -#handler.logf.type RollingFile -#handler.logf.output jonas.log -#handler.logf.pattern %d : %l : %h : %O{1}.%M : %m%n -#handler.logf.fileNumber 2 -#handler.logf.maxSize 10000 - -# ----------------------------------------------------------------------- -# logger definitions -# ----------------------------------------------------------------------- -logger.root.handler.0 tty -#logger.root.handler.1 logf - -logger.root.level ERROR - ------- -# JORAM -#------- -logger.fr.dyade.aaa.level ERROR - -#logger.org.objectweb.joram.client.jms.Client.level DEBUG -logger.org.objectweb.joram.client.Adapter.level DEBUG diff --git a/jonas/assemblies/configuration/src/main/resources/conf/a3servers.xml b/jonas/assemblies/configuration/src/main/resources/conf/a3servers.xml deleted file mode 100644 index b4b744f581..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/a3servers.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/banner.txt b/jonas/assemblies/configuration/src/main/resources/conf/banner.txt deleted file mode 100644 index b43cd9d14a..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/banner.txt +++ /dev/null @@ -1,3 +0,0 @@ - -OW2 JOnAS ${project.version} [ http://jonas.ow2.org / jonas@ow2.org ] - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/carol.properties b/jonas/assemblies/configuration/src/main/resources/conf/carol.properties deleted file mode 100644 index 7f757f4caf..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/carol.properties +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (C) 2002-2007 ObjectWeb -# -# CAROL: Common Architecture for RMI ObjectWeb Layer -# -# This library is developed inside the ObjectWeb Consortium, -# http://www.ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -------------------------------------------------------------------------- -# $Id$ -# -------------------------------------------------------------------------- - -# jonas rmi activation (iiop, irmi, jrmp, lmi) -carol.protocols=jrmp - -# RMI IRMI URL -carol.irmi.url=rmi://localhost:1098 - -# RMI JRMP URL -carol.jrmp.url=rmi://localhost:1099 - -# RMI IIOP URL -carol.iiop.url=iiop://localhost:2001 - -# RMI LMI URL (no listening port) -carol.lmi.url=rmi://localhost:0 - - -###################################################################### -# Advanced Configuration for IRMI -###################################################################### -# Exported objects will listen on this port for remote method -# invocations. -#A value of 0 will cause a random port to be selected. -# This is the default value. -# Warning : if the port is set (not 0) with the value 'n', be aware that -# the port 'n + 1' will be used by the JMX server. -# So, for the firewall configuration, you have to open the port numbers 'n' -# and 'n+1'. -carol.irmi.server.port=0 - -# Use only a single interface when creating the registry -# (specified in carol.irmi.url property) -# Use all interfaces available [default configuration = false] -carol.irmi.interfaces.bind.single=false - -###################################################################### -# Advanced Configuration for JRMP -###################################################################### -# If true, local call with jrmp are optimized. If you get "ClassCastException -# with 2 beans in different jars, you should set it at "false". -carol.jvm.rmi.local.call=false - -# If true a local Naming context is used (to be used only with a collocated registry) -carol.jvm.rmi.local.registry=true - -# The value of this port is used to set the port of the objects listener. -# This allow to use this port for a firewall configuration. -# If registry and server are on same host, the two ports to open are the following and the registry port. -# 0 means random port [default configuration = 0] -carol.jrmp.server.port=0 - -# Use only a single interface when creating the registry -# (specified in carol.jrmp.url property) -# Use all interfaces available [default configuration = false] -carol.jrmp.interfaces.bind.single=false - - -###################################################################### -# Advanced Configuration for IIOP -###################################################################### -# The value of this port is used to set the port of the objects listener. -# This allow to use this port for a firewall configuration. -# If registry and server are on same host, the two ports to open are the following and the registry port. -# 0 means random port [default configuration = 0] -carol.iiop.server.port=0 - -# The value of this port is used to set the SSL port of the objects listener. -# Note that this port musn't not be set to 0 as it is used for CsiV2. -# but this port is used only if SSL mode is enable. -# So by default, there is no listener on this port -# [default configuration = not used] -carol.iiop.server.sslport=2003 - -# Delegate used by JOnAS for rmi-iiop protocol -carol.iiop.PortableRemoteObjectClass=org.ow2.jonas.registry.carol.delegate.JacORBPRODelegate - -###################################################################### -# Advanced JNDI Configuration -###################################################################### -carol.jndi.java.naming.factory.url.pkgs=org.ow2.jonas.lib.naming diff --git a/jonas/assemblies/configuration/src/main/resources/conf/classloader-default-filtering.xml b/jonas/assemblies/configuration/src/main/resources/conf/classloader-default-filtering.xml deleted file mode 100644 index 2407a5c4cb..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/classloader-default-filtering.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - org.apache.commons.digester.* - org.springframework.* - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/clusterd.xml b/jonas/assemblies/configuration/src/main/resources/conf/clusterd.xml deleted file mode 100644 index e8f1ffdf98..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/clusterd.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - cd - domainSample - loosely-coupled - - - JGroupsDiscovery - jgroups-discovery.xml - true - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/cmi-config.xml b/jonas/assemblies/configuration/src/main/resources/conf/cmi-config.xml deleted file mode 100644 index e31b5ed91a..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/cmi-config.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/db2.properties b/jonas/assemblies/configuration/src/main/resources/conf/db2.properties deleted file mode 100644 index 570a6031e8..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/db2.properties +++ /dev/null @@ -1,55 +0,0 @@ -###################### DB2 DataSource configuration example -# - -##### -# DataSource configuration -# -datasource.name jdbc_1 -datasource.url jdbc:db2://your.db.server:51000/db9 -datasource.classname COM.ibm.db2.jdbc.net.DB2Driver -datasource.username user -datasource.password pass -datasource.mapper rdb.db2 - - -##### -# ConnectionManager configuration -# - -# JDBC connection checking level. -# 0 = no special checking -# 1 = check physical connection is still open before reusing it -# 2 = try every connection before reusing it -jdbc.connchecklevel 0 - -# Max age for jdbc connections -# nb of minutes a connection can be kept in the pool -jdbc.connmaxage 1440 - -# Maximum time (in mn) a connection can be left busy. -# If the caller has not issued a close() during this time, the connection -# will be closed automatically. -jdbc.maxopentime 60 - -# Test statement - not sure this is correct ? -jdbc.connteststmt select 1 - -# JDBC Connection Pool size. -# Limiting the max pool size avoids errors from database. -jdbc.minconpool 10 -jdbc.maxconpool 30 - -# Sampling period for JDBC monitoring : -# nb of seconds between 2 measures. -jdbc.samplingperiod 30 - -# nb of seconds between 2 pool adjustement -jdbc.adjustperiod 60 - -# Maximum time (in seconds) to wait for a connection in case of shortage. -# This may occur only when maxconpool is reached. -jdbc.maxwaittime 8 - -# Maximum of concurrent waiters for a JDBC Connection -# This may occur only when maxconpool is reached. -jdbc.maxwaiters 100 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/domain.xml b/jonas/assemblies/configuration/src/main/resources/conf/domain.xml deleted file mode 100644 index b32ce082e9..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/domain.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - A domain named jonas - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/env.sh.include b/jonas/assemblies/configuration/src/main/resources/conf/env.sh.include deleted file mode 100644 index 2526da3a4c..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/env.sh.include +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/sh -#set -xv -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2006 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Guillaume Sauthier -# -# --------------------------------------------------------------------------- -# $Id: env.sh.include 11267 2007-08-08 16:51:45Z sauthieg $ -# --------------------------------------------------------------------------- - -# Environment -# -------------------------------- -JONAS_ROOT=@JONAS_ROOT@ -export JONAS_ROOT -SERVER_NAME=jonas -export SERVER_NAME - -# Allow that script to be executed without hard-writing -# the JVM and Ant version to use -VAR_HOME_SET=@VAR_HOME_SET@ - -# Fix the JAVA_HOME value -if [ "$VAR_HOME_SET" = "true" ]; then -#JAVA_HOME=@JAVA_HOME@ -#export JAVA_HOME - echo -n -fi -# Fix the ANT_HOME value -if [ "$VAR_HOME_SET" = "true" ]; then -#ANT_HOME=@ANT_HOME@ -#export ANT_HOME - echo -n -fi - - -# JVM Memory options -# --------------------------------- -# example : 128m -INI_HEAP_SIZE="" -MAX_HEAP_SIZE="" -THREAD_STACK_SIZE="" - -[ "$INI_HEAP_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xms"$INI_HEAP_SIZE -[ "$MAX_HEAP_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xmx"$MAX_HEAP_SIZE -[ "$THREAD_STACK_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xss"$THREAD_STACK_SIZE - -# JVM Misc Options -# -------------------------------- -# Uncomment the following line -#JAVA_OPTS=$JAVA_OPTS" -Dyour.property=value" - -export JAVA_OPTS - -# Classpath -# -------------------------------- -if [ "$CLASSPATH" != "" ]; then - S="\033[1;31m" - E="\033[0m" - printf "${S}Warning : CLASSPATH should be empty with JOnAS !$E\n" - printf "Please use ${S}JONAS_BASE/lib/apps$E or ${S}JONAS_BASE/lib/commons$E ...\n" -fi -# You may add jars here, but this is not recommended -CLASSPATH=$CLASSPATH -export CLASSPATH - -# Script Debug -# -------------------------------- -if [ "$ENV_DEBUG" = "yes" ]; then - echo "* -------------------------------------------" - echo "* Returned by $0 :" - echo "* JONAS_ROOT = $JONAS_ROOT" - echo "* SERVER_NAME = $SERVER_NAME" - echo "* JAVA_HOME = $JAVA_HOME" - echo "* ANT_HOME = $ANT_HOME" - echo "* JAVA_OPTS = $JAVA_OPTS" - echo "* CLASSPATH = $CLASSPATH" - echo "* -------------------------------------------" -fi diff --git a/jonas/assemblies/configuration/src/main/resources/conf/env.start.sh.include b/jonas/assemblies/configuration/src/main/resources/conf/env.start.sh.include deleted file mode 100644 index 23b384e8a8..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/env.start.sh.include +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -#set -xv -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2006 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Guillaume Sauthier -# -# --------------------------------------------------------------------------- -# $Id: env.start.sh.include 11267 2007-08-08 16:51:45Z sauthieg $ -# --------------------------------------------------------------------------- - - -# JVM Memory options -# --------------------------------- -# example : 128m -INI_HEAP_SIZE="256m" -MAX_HEAP_SIZE="256m" -THREAD_STACK_SIZE="" - -[ "$INI_HEAP_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xms"$INI_HEAP_SIZE -[ "$MAX_HEAP_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xmx"$MAX_HEAP_SIZE -[ "$THREAD_STACK_SIZE" != "" ] && JAVA_OPTS=$JAVA_OPTS" -Xss"$THREAD_STACK_SIZE - -# JVM Misc Options -# -------------------------------- -JAVA_OPTS=$JAVA_OPTS" -Djava.awt.headless=true" -export JAVA_OPTS - -# Classpath -# -------------------------------- -if [ "$CLASSPATH" != "" ]; then - S="\033[1;31m" - E="\033[0m" - printf "${S}Warning : CLASSPATH should be empty with JOnAS !$E\n" - printf "Please use ${S}JONAS_BASE/lib/apps$E or ${S}JONAS_BASE/lib/commons$E ...\n" -fi -# You may add jars here, but this is not recommended -CLASSPATH=$CLASSPATH -export CLASSPATH - -# Script Debug -# -------------------------------- -if [ "$ENV_DEBUG" = "yes" ]; then - echo "* -------------------------------------------" - echo "* Returned by $0 :" - echo "* JONAS_ROOT =$JONAS_ROOT" - echo "* SERVER_NAME =$SERVER_NAME" - echo "* JAVA_HOME =$JAVA_HOME" - echo "* ANT_HOME =$ANT_HOME" - echo "* JAVA_OPTS =$JAVA_OPTS" - echo "* CLASSPATH =$CLASSPATH" - echo "* -------------------------------------------" -fi diff --git a/jonas/assemblies/configuration/src/main/resources/conf/file1.properties b/jonas/assemblies/configuration/src/main/resources/conf/file1.properties deleted file mode 100644 index ee1546b012..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/file1.properties +++ /dev/null @@ -1,12 +0,0 @@ -# $Id$ - -# FileWSDLPublisher class -jonas.service.wsdl.class org.ow2.jonas.ws.publish.internal.file.FileWSDLPublisher - -# Directory where WSDLs will be copied -# If not set JONAS_BASE/wsdls will be used -# jonas.service.publish.file.directory /tmp - -# Encoding of the file (In respect with the platform JOnAS is running on) -# If not set default to UTF-8 -jonas.service.publish.file.encoding UTF-8 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/initial-repositories.xml b/jonas/assemblies/configuration/src/main/resources/conf/initial-repositories.xml deleted file mode 100644 index 6ea7b453da..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/initial-repositories.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - maven2 - http://repo1.maven.org/maven2/ - - - maven2 - http://maven.ow2.org/maven2/ - - - maven2 - http://maven.ow2.org/maven2-snapshot/ - - \ No newline at end of file diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jaas.config b/jonas/assemblies/configuration/src/main/resources/conf/jaas.config deleted file mode 100644 index f1c97326c6..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jaas.config +++ /dev/null @@ -1,114 +0,0 @@ -jaasclient { - // Login Module to use for the example jaasclient. - - //First, use a LoginModule for the authentication - // Use the resource memrlm_1 - - //By default it uses the server named 'jonas' to authenticate - // to specify a different server name, use attribute 'serverName="myJonas"' - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; - - // The previous JResourceLoginModule was renamed to JDirectResourceLoginModule - // You need to activate the registration of resources in jonas.properties file - - - // Use the login module to propagate security to the JOnAS server - // globalCtx is set to true in order to set the security context - // for all the threads of the client container instead of only - // on the current thread. - // Useful with multithread applications (like Swing Clients) - org.ow2.jonas.security.auth.spi.ClientLoginModule required - globalCtx="true" - ; -}; - -jaas-jmx { - // Use LoginModule for JMX authentication - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; -}; - -jetty { - // Login Module to use for the web container Jetty - - - // Uncomment this if you want to check that the certificates - // were not revocated by the Certification Authority - //org.ow2.jonas.security.auth.spi.CRLLoginModule required - //CRLsResourceName="Directory" - //CRLsDirectoryName="/home/jonas/CRLs" - //; - - - //LoginModule for the authentication - //add parameter certCallback="true" if you want use certificate callback - // Use the resource memrlm_1 - //By default it uses the server named 'jonas' to authenticate - // to specify a different server name, use attribute 'serverName="myJonas"' - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; -}; - -tomcat { - // Login Module to use for the web container Tomcat - - - // Uncomment this if you want to check that the certificates - // were not revocated by the Certification Authority - //org.ow2.jonas.security.auth.spi.CRLLoginModule required - //CRLsResourceName="Directory" - //CRLsDirectoryName="/home/jonas/CRLs" - //; - - - //LoginModule for the authentication - //add parameter certCallback="true" if you want use certificate callback - // Use the resource memrlm_1 - //By default it uses the server named 'jonas' to authenticate - // to specify a different server name, use attribute 'serverName="myJonas"' - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; -}; - -test { - // Login Module to use for the a client without setting for all threads the identity - - //LoginModule for the authentication - //add parameter certCallback="true" if you want use certificate callback - // Use the resource memrlm_1 - //By default it uses the server named 'jonas' to authenticate - // to specify a different server name, use attribute 'serverName="myJonas"' - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; - - //Security propagation - org.ow2.jonas.security.auth.spi.ClientLoginModule required; -}; - -ask_remote { - // Ask the remote side - org.ow2.jonas.security.auth.spi.RemoteLoginModule required - entryName="remote" providerURLs="rmi://localhost:1099, rmi://localhost:1979" serverName="jonas" serverNames="jonas,j1,j2,j3" - ; - -}; - - -remote { - // Do authentication and sign the Subject. - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; - - // Specify the keystore to use with the alias and the associated password used to get the private key. - org.ow2.jonas.security.auth.spi.SignLoginModule required - keystoreFile="/tmp/keystore" keystorePass="keystorepass" keyPass="keypass" alias="OW" - ; - -}; diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jacorb.properties b/jonas/assemblies/configuration/src/main/resources/conf/jacorb.properties deleted file mode 100644 index f195ef7ed3..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jacorb.properties +++ /dev/null @@ -1,737 +0,0 @@ -## -## JacORB configuration options -## - -######################################## -# # -# Initial references configuration # -# # -######################################## - -# -# URLs where IORs are stored (used in orb.resolve_initial_service()) -# DO EDIT these! (Only those that you are planning to use, -# of course ;-). -# -# The ORBInitRef references are created on ORB startup time. In the -# cases of the services themselves, this may lead to exceptions being -# displayed (because the services aren't up yet). These exceptions -# are handled properly and cause no harm! - -#ORBInitRef.NameService=corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root -#ORBInitRef.NameService=file:/c:/NS_Ref -#ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref -#ORBInitRef.TradingService=http://www.x.y.z/~user/TraderRef - - -######################################## -# # -# Export of corbaloc IORs # -# # -######################################## - -# allow for more readable corbaloc URLs by mapping the -# actual object key to an arbitrary string. The mapping -# below would permit clients of a name service to -# access it using corbaloc::ipaddress:portnum/NameService -# Note: it is NOT necessary to define this property for -# the name service here because this is done already in the -# code of the ns implementation. -# This mapping can be altered programatically by the proprietary -# function ORB::addObjectKey(NameService, file:/home/rnc/NameSingleton.ior) -# -# The property also accepts the following mappings: -# IOR, resource, jndi, URL (e.g. file, http) -# examples: -# jacorb.orb.objectKeyMap.NameService=StandardNS/NameServer-POA/_root -# jacorb.orb.objectKeyMap.NameService=file:/home/rnc/NameSingleton.ior - -################################## -# # -# ORB version number output # -# # -################################## - -# if on, the ORB's version number and a copyright statement is printed -# any time the ORB is initialized -jacorb.orb.print_version=on - -################################## -# # -# Default Logging configuration # -# # -################################## - -# Name of the factory class that plugs in a given log kit -# The default value is JacORB's own factory for the Apache -# LogKit. Only edit (or uncomment) if you want a different -# log kit. -#jacorb.log.loggerFactory=org.jacorb.util.LogKitLoggerFactory - -# log levels: -# -# 0 = fatal errors only = "almost off" (FATAL ERRORS) -# 1 = non-fatal errors and exceptions (ERROR) -# 2 = important messages (WARN) -# 3 = informational messages and exceptions (INFO) -# 4 = debug-level output (DEBUG) (may confuse the unaware user :-) -# NOTE: the name of this property has changed from jacorb.verbosity!! -jacorb.log.default.verbosity=2 - -# where does output go? Terminal is default -#jacorb.logfile=LOGFILEPATH - -# If logging to file whether to append to existing file or overwrite -jacorb.logfile.append=off - -# If jacorb.logfile.append is on, set rolling log size in kilobytes. -# A value of 0 implies no rolling log -jacorb.logfile.maxLogSize=0 - -# hexdump outgoing messages -jacorb.debug.dump_outgoing_messages=off - -# hexdump incoming messages -jacorb.debug.dump_incoming_messages=off - -jacorb.util.tpool.log.verbosity=0 - -################################################## -# # -# WARNING: The following properties should # -# only be edited by the expert user. They # -# can be left untouched in most cases! # -# # -################################################## - - - -################################ -# # -# Basic ORB Configuration # -# # -################################ - -# the GIOP minor version number to use for newly created IORs -jacorb.giop_minor_version=2 - -# number of retries if connection cannot directly be established -jacorb.retries=1 - -# how many msecs. do we wait between retries -jacorb.retry_interval=500 - -# log2 of maximum buffer size managed by the internal -# buffer manager. -# -# This is NOT the maximum buffer size that -# can be used, but just the largest size of buffers that -# will be kept and managed. This value will be added to -# an internal constant of 5, so the real value in bytes -# is 2**(5+maxManagedBufSize-1). You only need to increase this -# value if you are dealing with LOTS of LARGE data structures. -# You may decrease it to make the buffer manager release large -# buffers immediately rather than keeping them for later -# reuse. -jacorb.maxManagedBufSize=18 - -# If this value is 0 an extra unlimited size buffer cache is created -# for the CDROutputStreams. If this value is > 0 then the cache will -# be purged every x msecs. If this value is -1 no caching of these -# buffers will take place. This will reduce memory footprint at the -# cost of decreased performance handling large data structures. -# This value defaults to 0 if not set. -#jacorb.bufferManagerMaxFlush=-1 - -# Normally, a jacorb server will close the TCP/IP connection right -# after sending a CloseConnection message. However, it may -# occasionally happen that the client sends a message into the closed -# connection because it hasn't handled the CloseConnection yet. To -# avoid this situation, closing of the TCP/IP connection can be delayed. -#jacorb.connection.delay_close=on -#jacorb.connection.timeout_after_closeconnection=20000 - -# Initial timeout for establishing a connection. -#jacorb.connection.client.connect_timeout=0 - -# Wait the specified number of msecs for a reply to a request. If -# exceeded, a org.omg.CORBA.TIMEOUT exception will be thrown -#jacorb.connection.client.pending_reply_timeout=0 - -# client-side connection idle timeout, set no non-zero to stop -# close the connection after so many msecs. -#jacorb.connection.client.idle_timeout=0 - -# shall the orb ignore pending messages when a connection idle timeout -# is detected? If "on", the connection is closed and all pending -# messages are cancelled. Default is "off" -#jacorb.connection.client.timeout_ignores_pending_messages=off - -# whenever a network failure is detected, the orb can either -# (infinitely) retry all pending requests, or propagate a COMM_FAILURE -# back into the client code. Default is "off", i.e. throw a -# COMM_FAILURE -#jacorb.connection.client.retry_on_failure=off - -# max time (msecs) a server keeps a connection open if nothing happens -#jacorb.connection.server.timeout=10000 - -# Max no of accepted connections on the server. -#jacorb.connection.max_server_connections= - -# The number of msecs that are waited until the next attempt to find -# an idle connection is made (i.e. do not continuously spin) -#jacorb.connection.wait_for_idle_interval=500 - -# The class name of the SelectionStrategy class -#jacorb.connection.selection_strategy_class= - -# The class name of the StatisticsProvider class -#jacorb.connection.statistics_provider_class= - -#jacorb.reference_caching=off - -# -# The following property specifies the class which is used for -# reference caching. WeakHashtable uses WeakReferences, so entries -# get gc'ed if only the Hashtable has a reference to them. This -# is useful if you have many references to short-living non-persistent -# CORBA objects. It is only available for java 1.2 and above. -# -# On the other hand the standard Hashtable keeps the references until -# they are explicitely deleted by calling _release(). This is useful -# for persistent and long-living CORBA objects. -# -#jacorb.hashtable_class=org.jacorb.util.WeakHashtable -# -jacorb.hashtable_class=java.util.Hashtable - -# use GIOP 1.2 byte order markers (since CORBA 2.4-5) -jacorb.use_bom=off - -# add additional IIOP 1.0 profiles even if we are using IIOP 1.2 -jacorb.giop.add_1_0_profiles=off - -# Use DNS names in IORs -jacorb.dns.enable=off - -# Compact Typecodes (0 - off, 1 - partial (not member_names), 2 - all) -jacorb.compactTypecodes=0 - -# Cache typecode on read -jacorb.cacheTypecodes=off - -# Cache poa names -jacorb.cachePoaNames=off - -########################################### -# # -# Interoperability # -# # -########################################### - -# Turn off indirection encoding for repeated typecodes. This fixes -# interoperability with certain broken ORB's eg. Orbix2000 -jacorb.interop.indirection_encoding_disable=off - -# Iona Comet CORBA/COM bridge can incorrectly encode buffer lengths. -# Enabling this property adds additional length checking and adjustment -# for interoperability with Comet. -jacorb.interop.comet=off - -# Some ORBs do not set a byte value of 1 as a CDR encoded boolean true -# value. Enabling this property interprets any non zero CDR encoded -# boolean value as true. -jacorb.interop.lax_boolean_encoding=off - -# Control whether the method create_abstract_interface_tc performs -# a validity check on the name parameter or not. Turning this check -# off circumvents a bug in Sun's implementation of javax.rmi.CORBA.ValueHander, -# which occasionally passes an invalid name (an empty string) to -# ORBSingleton.create_abstract_interface_tc. If you are using RMI valuetypes, -# you should turn this property off. -jacorb.interop.strict_check_on_tc_creation=off - -# Custom-marshalled RMI valuetypes should be encoded as chunks, but some -# ORBs are not able to decode chunked values. Disable this property for -# interoperability with the ORB in Sun's JDK 1.4.2. -jacorb.interop.chunk_custom_rmi_valuetypes=off -########################################### -# # -# Socket Factories # -# # -########################################### - -# A factory design pattern is used for the creation of sockets and server -# sockets. -# The jacorb.net.socket_factory property can be used to configure -# a socket factory that must implement the operations defined in the -# interface org.jacorb.orb.factory.SocketFactory. -# The jacorb.net.server_socket_factory property can be used to configure a -# server socket factory that must implement the operations defined in the -# interface org.jacorb.orb.factory.ServerSocketFactory. -# -#jacorb.net.socket_factory=org.jacorb.orb.factory.DefaultSocketFactory -#jacorb.net.server_socket_factory=org.jacorb.orb.factory.DefaultServerSocketFactory -#jacorb.net.socket_factory=org.jacorb.orb.factory.PortRangeSocketFactory -#jacorb.net.server_socket_factory=org.jacorb.orb.factory.PortRangeServerSocketFactory -# -# Additional socket factores are supported that allow for the configuration -# of maximum and minimum port numbers that can be used. This can be used to -# enable firewall traversal via a fixed port range. To use these socket factories -# configure one or both of the following property pairs. The first property pair -# configures the client socket factory and the second pair the server socket -# factory. -# -#jacorb.net.socket_factory.port.min -#jacorb.net.socket_factory.port.max -#jacorb.net.server_socket_factory.port.min -#jacorb.net.server_socket_factory.port.max - -########################################### -# # -# BiDirectional GIOP # -# # -########################################### - -# uncomment this initializer if you want to use BiDirectional GIOP - -#org.omg.PortableInterceptor.ORBInitializerClass.bidir_init=org.jacorb.orb.giop.BiDirConnectionInitializer - - -########################################### -# # -# Proxy address in IOR # -# # -########################################### - -# -# with these two properties it is possible to -# tell the ORB what IP/port IORs should contain, -# if the ServerSockets IP/port can't be used -# (e.g. for traffic through a firewall). -# -# WARNING: this is just "dumb" replacing, so you -# have to take care of your configuration! -# - -#jacorb.ior_proxy_host=1.2.3.4 -#jacorb.ior_proxy_port=4711 - - -########################################### -# # -# The Object Adapter Internet Address # -# # -########################################### - -# IP address on multi-homed host (this gets encoded in -# object references). NOTE: Adresses like 127.0.0.X -# will only be accessible from the same machine! -#OAIAddr=1.2.3.4 -#OAPort=4711 - - -############################ -# # -# Default Interceptors # -# Please leave them in! # -# # -############################ -org.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer - - - -############################################### -# # -# Implementation Repository Configuration # -# # -############################################### -# Switch off to avoid contacting the ImR on every server start-up -jacorb.use_imr=off - -# Switch off if you don't want to write the ImR address into server IORs -# (ignored if jacorb.use_imr=off) -jacorb.use_imr_endpoint=on - -# if set to "on", servers that don't already have an entry on their -# first call to the imr, will get automatically registered. Otherwise, -# an UnknownServer exception is thrown. -jacorb.imr.allow_auto_register=off - -# if set to "on", the imr will try to "ping" every object reference, -# that it is going to return. If the reference is not alive, TRANSIENT -# is thrown. -jacorb.imr.check_object_liveness=off - -ORBInitRef.ImplementationRepository=http://www.x.y.z/~user/ImR_Ref - -jacorb.imr.table_file=Z:\table.dat -jacorb.imr.backup_file=z:\backup.dat -jacorb.imr.ior_file=/home/bwana/brose/public_html/ImR_Ref -# Time (msecs) that the implementation will wait for a started server to register. -jacorb.imr.timeout= - -# Host for ImR endpoint -jacorb.imr.endpoint_host= -# Port number for IMR endpoint -jacorb.imr.endpoint_port_number= - -# how many millisecs should the imr wait, until a connection from an -# application client is terminated. Default is 2000. -jacorb.imr.connection_timeout=2000 - -# the implementation name, should be set to a different -# name in the code of persistent servers -jacorb.implname=StandardImplName - -# -# This is supposed to be a generic startup string for everything -# that calls Runtime.exec(). Might be replaced by jaco[.bat]. -# -jacorb.java_exec=java -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton - -# with these two properties it is possible to -# tell the ORB what IP / hostname and port the IMR IOR and IMRified server IORs should -# contain, if the ServerSockets IP/port can't be used -# (e.g. for traffic through a firewall). -# -# WARNING: this is just "dumb" replacement, so you -# have to take care of your configuration! -# -#jacorb.imr.ior_proxy_host=1.2.3.4 -#jacorb.imr.ior_proxy_port=4711 - - -######################### -# # -# SSL Configuration # -# # -######################### - -# -# The port number used by SSL, will be dynmically assigned -# by default -# - -# This interceptor must be set if programs need access to -# certificates using the CORBA Security API, SSL works also -# without this interceptor - -#org.omg.PortableInterceptor.ORBInitializerClass.ForwardInit=org.jacorb.security.ssl.SecurityServiceInitializer -#org.omg.PortableInterceptor.ORBInitializerClass.ForwardInit=org.jacorb.security.ssl.iaik.SecurityServiceInitializer - -# qualified classname of access decision object -jacorb.security.access_decision=org.jacorb.security.level2.AccessDecisionImpl - -# list of qualified classnames of principal authenticator objects, -# separated by commas (no whitespaces!). The first entry (that can -# be successfully created) will be available through the -# principal_authenticator property. -jacorb.security.principal_authenticator=org.jacorb.security.level2.PrincipalAuthenticatorImpl - -# the qualified classname of the ssl socket factory class -jacorb.ssl.socket_factory=org.jacorb.security.ssl.sun_jsse.SSLSocketFactory -#jacorb.ssl.socket_factory=org.jacorb.security.ssl.iaik.SSLSocketFactory - -# the qualified classname of the ssl server socket factory class -jacorb.ssl.server_socket_factory=org.jacorb.security.ssl.sun_jsse.SSLServerSocketFactory -#jacorb.ssl.server_socket_factory=org.jacorb.security.ssl.iaik.SSLServerSocketFactory - -# IIOP/SSL parameters (numbers are hex values, without the leading "0x"): -# NoProtection = 1 -# EstablishTrustInClient = 40 -# EstablishTrustInTarget = 20 -# mutual authentication = 60 -# please see the programming guide for more explanation - -jacorb.security.support_ssl=off - -jacorb.security.ssl.client.supported_options=60 -jacorb.security.ssl.client.required_options=0 - -jacorb.security.ssl.server.supported_options=60 -jacorb.security.ssl.server.required_options=0 - -# -# If set, the following two values will be placed in the IOR, if -# "corbaloc:ssliop" ssliop. -# -# If not set, only EstablishTrustInTarget is used for both supported -# and required options. EstablishTrustInClient is not set, and the -# rest of the Association Options aren't currently used anyway. -#jacorb.security.ssl.corbaloc_ssliop.supported_options=0 -#jacorb.security.ssl.corbaloc_ssliop.required_options=0 - -# The name and location of the keystore. This may be absolute or -# relative to the home directory. -# -# NOTE (for Sun JSSE users): The "javax.net.ssl.trustStore[Password]" -# properties don't seem to take effect, so you may want to add trusted -# certificates to "normal" keystores. In this case, please set the -# property "jacorb.security.jsse.trustees_from_ks"is to "on", so trusted -# certificates are taken from the keystore instead of a dedicated -# truststore. -jacorb.security.keystore= -jacorb.security.keystore_password= - -# -# IAIK specific settings -# - - -# files with public key certs of trusted CAs -# -# WARNING: If no CA certs are present, the IAIK chain verifier will -# accept ALL otherwise valid chains! -# -jacorb.security.trustees= - -# the name of the default key alias to look up in the keystore -jacorb.security.default_user= -jacorb.security.default_password= - -# have iaiks ssl classes print debug output to stdout -jacorb.security.iaik_debug=off - -# -# Sun JSSE specific settings -# -# Use the keystore to take trusted certs from. -jacorb.security.jsse.trustees_from_ks=on - -# A comma-separated (no whitespaces!) list of cipher suite names. See -# the JSSE docs on how to obtain the correct cipher suite strings -jacorb.security.ssl.server.cipher_suites= -jacorb.security.ssl.client.cipher_suites= - -# Csiv2 interceptor will add this component( as it is based on EJB XML specific descriptor) -jacorb.security.ssl_components_added_by_ior_interceptor=on - - -######################### -# # -# POA Configuration # -# # -######################### - -# displays a GUI monitoring tool for servers -jacorb.poa.monitoring=off - -# POA log levels: -# 0 = fatal errors only = "almost off" (FATAL ERRORS) -# 1 = non-fatal errors and exceptions (ERROR) -# 2 = important messages (WARN) -# 3 = informational messages and exceptions (INFO) -# 4 = debug-level output (DEBUG) (may confuse the unaware user :-) -jacorb.poa.log.verbosity=2 - -# thread pool configuration for request processing -jacorb.poa.thread_pool_max=20 -jacorb.poa.thread_pool_min=5 - -# if set, request processing threads in thePOA -# will run at this priority. If not set or invalid, -# MAX_PRIORITY will be used. -#jacorb.poa.thread_priority= - -# Properties controlling the POA's request queue. If queue_wait is off, -# then if there are more than queue_max requests in the queue, the -# client gets TRANSIENT exceptions for any requests. If queue_wait is on, -# then the call blocks at the server side until no more than queue_min -# requests are left in the queue. The new request is then delivered as usual. -jacorb.poa.queue_wait=off -jacorb.poa.queue_max=100 -jacorb.poa.queue_min=10 - -# Set this to on for server-side checking of expired ReplyEndTimePolicy. -# (This also applies to RelativeRoundtripTimeoutPolicy.) When this is on, -# the clocks of the server and client machine need to be synchronized. -#jacorb.poa.check_reply_end_time=off - - -################################### -# # -# Transport Layer Configuration # -# # -################################### - -# Names of the factories classes for all installed transport plug-ins -# (comma-separated list). - -#jacorb.transport.factories=org.jacorb.orb.iiop.IIOPFactories - -# ProfileId tags of all installed transports that should actually -# listen on the server side. This is a comma-separated list of numbers, -# each number must correspond to one ProfileId tag from a factory in -# jacorb.transport.factories. In IORs produced by the server, the transport -# profiles will appear in the order indicated by this list. - -#jacorb.transport.server.listeners=0 - -# Name of a class that selects the transport profile to use on the -# client side. - -#jacorb.transport.client.selector=org.jacorb.orb.DefaultProfileSelector - - -################################## -# # -# Name Service Configuration # -# # -################################## - -# log levels: -# 0 = fatal errors only = "almost off" (FATAL ERRORS) -# 1 = non-fatal errors and exceptions (ERROR) -# 2 = important messages (WARN) -# 3 = informational messages and exceptions (INFO) -# 4 = debug-level output (DEBUG) (may confuse the unaware user :-) - -jacorb.naming.log.verbosity=3 - -# -# name of the logger factory. Implement your own subclass of -# org.jacorb.util.LoggerFactory and enter class name here to -# customize logging behavior. Built-in default is org.jacorb.util.LogKitLoggerFactory -#jacorb.log.loggerFactory= - -# Whether non active references are purged from name service -# when list operation is invoked. - -jacorb.naming.purge=on - -# Whether resolve should return references without trying to -# ping them to see if they're still alive first. - -jacorb.naming.noping=on - -# The file where the name server drops its IOR -#jacorb.naming.ior_filename=c:/NS_Ref - -######################################## -# # -# Trader configuration, please see # -# src/trading/README.PROPERTIES for # -# explanation # -# # -######################################## - -jtrader.util.max_threads=10 -jtrader.util.min_threads=1 -jtrader.util.query_timeout=5000 -jtrader.impl.cache_max=100 - -# boolean values, e.g. true / false -#jtrader.modifiable_properties= -#jtrader.dynamic_properties= -#jtrader.proxy_offers= - -jtrader.debug=false -jtrader.debug_verbosity=3 - -#integer values -jtrader.def_search_card= -jtrader.max_search_card= -jtrader.def_match_card= -jtrader.max_match_card= -jtrader.def_return_card= -jtrader.max_return_card= -jtrader.max_list= -jtrader.def_hop_count= -jtrader.max_hop_count= - -#FollowOptions -#always=2 -#if_no_local=1 -#local_only=0 -jtrader.def_follow_policy= -jtrader.max_follow_policy= -jtrader.max_link_follow_policy= - -######################################################## -# # -# Notification Service configuration, please see # -# the JacORB ProgrammingGuide for a explanation # -# # -######################################################## - -jacorb.notification.filter.thread_pool_size = 2 - -jacorb.notification.proxyconsumer.thread_pool_size = 2 - -jacorb.notification.proxysupplier.thread_pool_size = 4 - -jacorb.notification.supplier.poll_intervall = 1000 - -jacorb.notification.max_batch_size = 1 - -jacorb.notification.max_events_per_consumer = 100 - -jacorb.notification.order_policy = PriorityOrder - -jacorb.notification.discard_policy = PriorityOrder - -jacorb.notification.consumer.backout_interval = 5000 - -jacorb.notification.consumer.error_threshold = 3 - -# valid values: ThreadPool, ThreadPerProxy -jacorb.notification.proxysupplier.threadpolicy = ThreadPool - -jacorb.notification.default_filter_factory = builtin - -# jacorb.notification.supplier.max_number = 10 - -# jacorb.notification.start_time_supported = 10 - -jacorb.notification.stop_time_supported = on - -jacorb.notification.proxy.destroy_causes_disconnect = on - -# Notification Service log levels: -org.jacorb.notification.log.verbosity = INFO - -######################################## -# # -# SAS configuration # -# # -######################################## - -#commented (Uses JOnAS csiv2) - -# Use stateless mode (JOnAS) -#jacorb.security.sas.stateful=false - -#jacorb.SAS.log.verbosity=INFO -#jacorb.SAS.CSS.log.verbosity=INFO -#jacorb.SAS.TSS.log.verbosity=INFO - -# This option defines the specific SAS context generator/validator -# Currently supported contexts include: -# NullContext - Sends a NULL SAS Context -# GssUpContext - Uses GSSUP security -# KerberosContext - uses Kerberos security -# At least one context must be selected for SAS support -#jacorb.security.sas.contextClass=org.jacorb.security.sas.NullContext -#jacorb.security.sas.contextClass=org.jacorb.security.sas.GssUpContext -#jacorb.security.sas.contextClass=org.jacorb.security.sas.KerberosContext - -# This initializer installs the SAS interceptors -# Comment out this line if you do not want SAS support -#org.omg.PortableInterceptor.ORBInitializerClass.SAS=org.jacorb.security.sas.SASInitializer - -# This option is used for GSSUP security and sets up the GSS Provider -# Comment out this line if you are not using GSS UP authentication -#org.omg.PortableInterceptor.ORBInitializerClass.GSSUPProvider=org.jacorb.security.sas.GSSUPProviderInitializer - -######################################## -# # -# Custom configuration # -# # -######################################## - - -# any other custom properties can be added here. - -jacorb.config.log.verbosity=2 \ No newline at end of file diff --git a/jonas/assemblies/configuration/src/main/resources/conf/java.policy b/jonas/assemblies/configuration/src/main/resources/conf/java.policy deleted file mode 100644 index 6789deb5d6..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/java.policy +++ /dev/null @@ -1,10 +0,0 @@ -//##################### Security Policy -// -// The default security policy for the JOnAS server. -// Currently, this is set to allow all permissions. -// - -grant { - // Allow everything for now - permission java.security.AllPermission; -}; diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-cmi.xml b/jonas/assemblies/configuration/src/main/resources/conf/jgroups-cmi.xml deleted file mode 100644 index 6cecffeb60..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-cmi.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-discovery.xml b/jonas/assemblies/configuration/src/main/resources/conf/jgroups-discovery.xml deleted file mode 100644 index e829c9b9b0..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-discovery.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-ha.xml b/jonas/assemblies/configuration/src/main/resources/conf/jgroups-ha.xml deleted file mode 100644 index 3e618dbe2f..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jgroups-ha.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jmx.access b/jonas/assemblies/configuration/src/main/resources/conf/jmx.access deleted file mode 100644 index aa60c8681e..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jmx.access +++ /dev/null @@ -1,35 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008-2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -# --------------------------------------------------------------------------- -# $Id: jonas.properties 17416 2009-05-19 13:49:51Z durieuxp $ -# --------------------------------------------------------------------------- - -# When JMX security is enabled and jonas.service.jmx.authorization.method is -# set to jmx.remote.x.access.file, this file contains the access rights of each -# user. -# -# We define two levels of access: -# - readonly can access all getter methods -# - readwrite can access all methods - -monitor readonly -jonas readwrite diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jmx.passwords b/jonas/assemblies/configuration/src/main/resources/conf/jmx.passwords deleted file mode 100644 index 3945814104..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jmx.passwords +++ /dev/null @@ -1,37 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008-2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -# --------------------------------------------------------------------------- -# $Id: jonas.properties 17416 2009-05-19 13:49:51Z durieuxp $ -# --------------------------------------------------------------------------- - -# When JMX security is enabled and jonas.service.jmx.authentication.method is -# set to jmx.remote.x.password.file, this file contains the user names and -# passwords. -# -# Each line contains the user name, one or more blanks and the password. -# -# No encryption is supported, if you need encryption please use -# jonas.service.jmx.authentication.method with jmx.remote.x.login.config. -# This way, you can encode the password using any method supported by JAAS. - -monitor jonas -jonas jonas diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jmx.rolebased.access b/jonas/assemblies/configuration/src/main/resources/conf/jmx.rolebased.access deleted file mode 100644 index 67c0cc8131..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jmx.rolebased.access +++ /dev/null @@ -1,47 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008-2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -# --------------------------------------------------------------------------- -# $Id: jonas.properties 17416 2009-05-19 13:49:51Z durieuxp $ -# --------------------------------------------------------------------------- - -# When JMX security is enabled and jonas.service.jmx.authorization.method is -# set to jmx.remote.x.access.rolebased.file, this file contains the access -# rights of each role (as defined in the JAAS realm). -# -# We define two levels of access: -# - readonly can access all getter methods -# - readwrite can access all methods -# -# If one user has multiple roles, then the role with the highest level of -# access rights will be used. - -# jonas-admin role can do everything (access right: readwrite) -jonas-admin readwrite - -# jonas-monitor role can only read data (access right: readonly) -jonas-monitor readonly - -# The * role means "everyone" (including users that already have roles) -# -# This role is optional, if not set then all users with no role that appears -# in this file will have no access rights at all. -# * readonly diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jonas-client.properties b/jonas/assemblies/configuration/src/main/resources/conf/jonas-client.properties deleted file mode 100644 index 8b65af934a..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jonas-client.properties +++ /dev/null @@ -1,28 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999 Bull S.A. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): Guillaume Sauthier. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Set the JServiceFactory to use -jonas.service.ws.factory.class org.ow2.jonas.ws.axis.JAxisServiceFactory diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jonas-realm.xml b/jonas/assemblies/configuration/src/main/resources/conf/jonas-realm.xml deleted file mode 100644 index c5dfac3515..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jonas-realm.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jonas.properties b/jonas/assemblies/configuration/src/main/resources/conf/jonas.properties deleted file mode 100644 index 51bc9063db..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jonas.properties +++ /dev/null @@ -1,546 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999-2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - - -###################### JOnAS Server configuration -# The current file is in the /conf directory. It can be copied and -# customized in JONAS_BASE/conf directory -###################### - -# Name of the JOnAS server -# default value is "jonas" -jonas.name jonas - -# Name of the JOnAS domain -# default value is "jonas" -domain.name jonas - -# Enable the Security context propagation (for jrmp) -jonas.security.propagation true - -# Enable the Security manager -# default value is true (if not set) -# Setting this to false implies a collocated registry and setting in carol.properties: -# carol.jvm.rmi.local.registry=true -jonas.security.manager false - -# Enable csiv2 -jonas.csiv2.propagation true - -# Enable the Transaction context propagation -jonas.transaction.propagation true - -# Set the name of log configuration file -jonas.log.configfile trace - -# Set the work directory used by JOnAS (relative or absolute) -# A relative directory name will be prefixed by JONAS_BASE/ -# An absolute path will be used directly -jonas.workdirectory work - -# Set to true if the server is a master -jonas.master false - -# Set to true in order to execute the JOnAS Server in development mode. -# -# WAR archive deployment case in development mode (for single or EAR packaged WARs): -# Each modified WAR archive will be unpacked in the working directory of the JOnAS Server -# in a different folder to avoid file locks. This is especially useful in a Windows environment. -jonas.development true - -# Set the list of the services launched in the JOnAS Server. -# Possible services are: jtm,db,dbm,validation,resource,mail,cmi,ha,versioning,ejb2,ejb3, -# jaxrpc,jaxws,web,ear,depmonitor,discovery,resourcemonitor,smartclient,audit,cdi,jaxrs -# -# Notes: -# - registry, security and jmx services are always started -# - some services may start automatically if required (depending on the server configuration and deployed applications) -# See 'Configuring JOnAS services' in JOnAS documentation for more information -# -jonas.services jtm,db,resource,ejb3,jaxws,web,ear,depmonitor - -# -###################### JOnAS Admin Client configuration -# -# If JMX security is enabled, the JOnAS Admin Client requires its parameters -# To be passed using -username and -password arguments. These two parameters -# pass these arguments to the JOnAS Admin Client internally. -jonas.adminClient.username jonas -jonas.adminClient.password jonas - -# -###################### JOnAS Registry service configuration -# -# Set the name of the implementation class of the Registry service -jonas.service.registry.class org.ow2.jonas.registry.carol.CarolRegistryService - -# Set the Registry launching mode -# If set to 'automatic', the registry is launched in the same JVM as Application Server, -# if it's not already started. -# If set to 'collocated', the registry is launched in the same JVM as Application Server -# If set to 'remote', the registry has to be launched before in a separate JVM -jonas.service.registry.mode collocated - -# -###################### JOnAS JMX service configuration -# -# Set the name of the implementation class of the JMX service -jonas.service.jmx.class org.ow2.jonas.jmx.internal.JOnASJMXService - -# Set to true if the JMXRemote interface should require the client to provide -# authentication information. That information is provided when establishing -# the JMX connection, using the JMXConnector.CREDENTIALS key. -# -# Note that if you enable JMX security for a server, all clients (including -# any administration tool such as the domain master) connecting to this -# instance via JMX must provide a valid user name and password. -jonas.service.jmx.secured false - -# If jonas.service.jmx.secured is set to true, defines the authentication -# method and the method's parameter. For example, to use file-based -# authentication using the conf/jmx.passwords file, define: -# jonas.service.jmx.authentication.method jmx.remote.x.password.file -# jonas.service.jmx.authentication.parameter conf/jmx.passwords -# You are free to use the authentication provider you wish. -jonas.service.jmx.authentication.method jmx.remote.x.password.file -jonas.service.jmx.authentication.parameter conf/jmx.passwords -# You may for example choose to use JAAS LoginModule for authentication. -# In this case define the used configuration in the JAAS configuration file -# using the jonas.service.jmx.authentication.parameter: -# jonas.service.jmx.authentication.method jmx.remote.x.login.config -# jonas.service.jmx.authentication.parameter jaas-jmx - -# If jonas.service.jmx.secured is set to true, defines the authorization -# method and the method's parameter. For example, to use file-based -# authorization using the conf/jmx.access file, define: -# jonas.service.jmx.authorization.method jmx.remote.x.access.file -# jonas.service.jmx.authorization.parameter conf/jmx.access -# You are free to use the authorization provider you wish. -jonas.service.jmx.authorization.method jmx.remote.x.access.file -jonas.service.jmx.authorization.parameter conf/jmx.access -# You may for example choose to use role-based authorization manager -# configured using conf/jmx.rolebased.access file. In this case, define: -# jonas.service.jmx.authorization.method jmx.remote.x.access.rolebased.file -# jonas.service.jmx.authorization.parameter conf/jmx.rolebased.access - - -# -###################### JOnAS WorkCleaner service configuration -# -# Set the name of the implementation class of the wc service -jonas.service.wc.class org.ow2.jonas.workcleaner.internal.JOnASWorkCleanerService - -# Set the clean period in seconds -jonas.service.wc.period 300 - -# -###################### JOnAS CDI service configuration -# -# Set the name of the implementation class of the cdi service -jonas.service.cdi.class org.ow2.jonas.cdi.weld.internal.DefaultWeldService - -# -###################### JOnAS JAX-RS service configuration -# -# Set the name of the implementation class of the jaxrs service -jonas.service.jaxrs.class org.ow2.jonas.jaxrs.jersey.internal.JerseyService - -# -###################### JOnAS WorkManager service configuration -# -# Set the name of the implementation class of the wm service -jonas.service.wm.class org.ow2.jonas.workmanager.internal.JOnASWorkManagerService - -# Set the size of the worker thread pool -jonas.service.wm.minworkthreads 3 - -# Set the maximun size of the worker thread pool -jonas.service.wm.maxworkthreads 80 - -# Set the max # of seconds that a thread will wait for work -# This is used to shrink the worker thread pool back to minimum -jonas.service.wm.threadwaittimeout 60 - - -# -###################### JOnAS EJB 2 Container service configuration -# -# Set the name of the implementation class of the ejb2 service -jonas.service.ejb2.class org.ow2.jonas.ejb2.internal.JOnASEJBService - -# Set the XML deployment descriptors parsing mode (with or without validation) -jonas.service.ejb2.parsingwithvalidation true - -# If enabled, the GenIC tool will be called if : -# - JOnAS version of the ejb-jar is not the same version than the running JOnAS instance -# - Stubs/Skels stored in the ejb-jar are not the same than the JOnAS current protocols. -# By default, this is enabled -jonas.service.ejb2.auto-genic true - -# Arguments for the auto GenIC (-invokecmd, -verbose, etc.) -jonas.service.ejb2.auto-genic.args -invokecmd - - -# Note: these two settings can be overriden by the EJB descriptor. -# -# If EJB monitoring is enabled, statistics about method call times will be -# collected. This is a very lightweight measurement and should not have much -# impact on performance. -jonas.service.ejb2.monitoringEnabled true -# If EJB monitoring is enabled, this value indicates after how many -# milliseconds spent executing an EJB method a warning message should be -# displayed. If 0, no warning will ever be displayed. -jonas.service.ejb2.warningThreshold 20000 - - -# -###################### JOnAS EJB 3 container service configuration -# -# Set the name of the implementation class of the EJB 3 service. -jonas.service.ejb3.class org.ow2.jonas.ejb.easybeans.EasyBeansService - -# Set the JPA provider: hibernate,eclipselink,openjpa,eclipselink2,hibernate3.5,openjpa2 -# Note that some JPA providers are not embedded in the JOnAS package, -# and, if needed, are automatically downloaded from a maven repository. -# So, if you change this default value, and if you use a proxy, -# do not forget to set the 'http_proxy' environment variable. -jonas.service.ejb3.jpa.provider hibernate - - -# -###################### JOnAS Versioning service configuration -# -# Set the name of the implementation class of the versioning service. -jonas.service.versioning.class org.ow2.jonas.versioning.internal.VersioningServiceImpl - -# Content types to filter. Set this list to empty for the versioning -# service not to filter any content in Web responses. -jonas.service.versioning.filteredContentTypes text/html, \ - application/javascript, \ - text/javascript, \ - text/css, \ - text/xml - - -# -###################### JOnAS Web container service configuration -# -# Set the name of the implementation class of the web container service. -jonas.service.web.class org.ow2.jonas.web.tomcat6.Tomcat6Service -#jonas.service.web.class org.ow2.jonas.web.tomcat7.Tomcat7Service -#jonas.service.web.class org.ow2.jonas.web.jetty6.Jetty6Service - -# Set the XML deployment descriptors parsing mode for the WEB container -# service (with or without validation). -jonas.service.web.parsingwithvalidation true - -# If true, the onDemand feature is enabled. A proxy is listening on the http port and will make actions like starting or deploying applications. -# The web container instance is started on another port number (that can be specified) but all access are proxified. -# It means that the web container will be started only when a connection is done on the http port. -# The .war file is also loaded upon request. -# This feature cannot be enabled in production mode. -jonas.service.web.ondemand.enabled true - -# The redirect port number is used to specify the port number of the http web container. -# The proxy will listen on the http web container port and redirect all requests on this redirect port -# 0 means that a random port is used. -jonas.service.web.ondemand.redirectPort 0 - - -# -###################### JOnAS JAX-RPC service configuration -# -# Set the name of the implementation class of the jaxrpc service. -jonas.service.jaxrpc.class org.ow2.jonas.ws.axis.AxisService - -# Set the XML deployment descriptors parsing mode for the jaxrpc service (with or without validation). -jonas.service.jaxrpc.parsingwithvalidation true - -# Set the Generator to use with wsgen -jonas.service.jaxrpc.wsgen.generator.factory org.ow2.jonas.generators.wsgen.generator.ews.EWSGeneratorFactory - -# Set the prefix that will be used to compute URL endpoints for web services -# Example of prefix: http://www.mydomain.com:8888 -jonas.service.jaxrpc.url-prefix - -# Set automatic WsGen mode on/off -# If set to 'true', WsGen will automatically be applied to all deployed archives (EjbJars, Webapps, Applications) -jonas.service.jaxrpc.auto-wsgen.engaged true - - -# -###################### JOnAS WSDL Publisher service configuration -# -# Set the name of the implementation class of the WSDL Publisher service. -jonas.service.wsdl-publisher.class org.ow2.jonas.ws.publish.internal.manager.DefaultWSDLPublisherManager - -# Set the WSDL Publishers list for WSDL publication -# A minimum of 1 WSDLPublisher is required ! -# This property is set with a coma-separated list of WSDLPublisher properties -# file names (without the '.properties' suffix). -# Ex: file1,uddi (while the properties file names are -# file1.properties and uddi.properties) -jonas.service.wsdl-publisher.publishers file1 - - -# -###################### JOnAS JAX-WS 2.x service configuration -# -# Set the name of the implementation class of the jaxws service -# Note: The jaxws service implementation based on Apache CXF is currently -# the only implementation that pass Java EE TCK. -jonas.service.jaxws.class org.ow2.jonas.ws.cxf.CXFService - -# Note: The jaxws service implementation based on Apache Axis2 is still -# at experimental stage (missing features, not currently TCK tested) -# Use it at your own risks -#jonas.service.jaxws.class org.ow2.jonas.ws.axis2.Axis2Service - - -# -###################### JOnAS EAR service configuration -# -# Set the name of the implementation class of the ear service. -jonas.service.ear.class org.ow2.jonas.ear.internal.JOnASEARService - -# Set the XML deployment descriptors parsing mode for the EAR service -# (with or without validation). -jonas.service.ear.parsingwithvalidation true - -# Generate stubs for all EJBs that may be accessed from the application -# In almost all cases, this is not required to be enabled as stubs can be found. -jonas.service.ear.genstub false - -# Create a child classloader when deploying EJB3 of the EAR -jonas.service.ear.useEJB3ChildClassloader false - - -# -###################### JOnAS DBM Database service configuration -# -# Set the name of the implementation class of the dbm service -jonas.service.dbm.class org.ow2.jonas.dbm.internal.JOnASDataBaseManagerService - -# Set the jonas DataSources. This enables the JOnAS server to load -# the data dources, to load related jdbc drivers, and to register the data -# sources into JNDI. -# This property is set with a coma-separated list of Datasource properties -# file names (without the '.properties' suffix). -# Ex: Oracle1,InstantDB1 (while the Datasources properties file names are -# Oracle1.properties and InstantDB1.properties) -jonas.service.dbm.datasources HSQL1 - - -# -###################### JOnAS Mail service configuration -# -# Set the name of the implementation class of the mail service -jonas.service.mail.class org.ow2.jonas.mail.internal.JOnASMailService - -# Set the jonas mail factories. -# This property is set with a coma-separated list of MailFactory properties -# file names (without the '.properties' suffix). -# Ex: MailSession1,MailMimePartDS1 (while the properties file names are -# MailSession1.properties and MailMimePartDS1.properties) -jonas.service.mail.factories - - -# -###################### JOnAS JTM Transaction service configuration -# - -# Set the name of the implementation class of the jtm service -jonas.service.jtm.class org.ow2.jonas.tm.jotm.JOTMTransactionService - -# Set the Transaction Manager launching mode. -# If set to 'true', TM is remote: TM must be already launched in an other JVM. -# If set to 'false', TM is local: TM is going to run into the same JVM -# than the jonas Server. -jonas.service.jtm.remote false - -# Set the default transaction timeout, in seconds. -jonas.service.jtm.timeout 60 - - -# -###################### JOnAS SECURITY service configuration -# -# Set the name of the implementation class of the security service -jonas.service.security.class org.ow2.jonas.security.internal.JonasSecurityServiceImpl - -# Realm used for CsiV2 authentication -jonas.service.security.csiv2.realm memrlm_1 - -# Realm used for Web Service authentication -jonas.service.security.ws.realm memrlm_1 - -# Registration of realm resources into JNDI -# Disable by default so configuration is not available with clients -jonas.service.security.realm.jndi.registration false - -# Enable security context check on Remote Login Module -jonas.security.context.check false - -# Path to the keystore file -jonas.security.context.check.keystoreFile /tmp/keystore - -# Pass used for the keystore file -jonas.security.context.check.keystorePass keystorepass - -# Alias (stored in the keystore) -jonas.security.context.check.alias FB - - -# -###################### JOnAS J2CA resource service configuration -# -# Set the name of the implementation class of the J2CA resource service -jonas.service.resource.class org.ow2.jonas.resource.internal.JOnASResourceService - -# -###################### JOnAS DB service configuration -# -# Set the name of the implementation class of the db service (hsql for example) -jonas.service.db.class org.ow2.jonas.db.hsqldb.HsqlDBServiceImpl -jonas.service.db.port 9001 -jonas.service.db.dbname db_jonas -jonas.service.db.users jonas:jonas -# Multiple users -#jonas.service.db.users jonas:jonas,login:password - -# -###################### JOnAS Discovery service -# -# Set the name of the implementation class and initialization parameters -jonas.service.discovery.class=org.ow2.jonas.discovery.jgroups.JgroupsDiscoveryServiceImpl -# Uncomment this to set Multicast implementation -#jonas.service.discovery.class=org.ow2.jonas.discovery.internal.MulticastDiscoveryServiceImpl - - -# -##################### Properties for multicast impl. -# -# For a master server, configure the client source port with this property -jonas.service.discovery.source.port=9888 -jonas.service.discovery.ttl=1 -jonas.service.discovery.multicast.address=224.224.224.224 -jonas.service.discovery.multicast.port=9080 - -# A multicast greeting message is sent out when discovery service is started. -# The starting server listens at the port jonas.service.discovery.greeting.port -# (default 9899) for a response for jonas.service.discovery.greeting.timeout miliseconds -# (default 1000 ms). If a pre-existing server has the same server name as this one, -# this server's discovery service will be terminated. -# Uncomment these two lines for multicast discovery -jonas.service.discovery.greeting.port=9899 -jonas.service.discovery.greeting.timeout=1000 - -##################### properties for JGroups impl. -jonas.service.discovery.jgroups.conf= jgroups-discovery.xml -jonas.service.discovery.group.name = JGroupsDiscovery -#Reconnection timeout for JGroups Channel, if it's closed on request. -jonas.service.discovery.reconnection.timeout = 5000 - - -# -###################### JOnAS CMI service configuration -# -# Set the name of the implementation class of the CMI service. -jonas.service.cmi.class org.ow2.jonas.cmi.internal.CmiServiceImpl - - -# -###################### JOnAS HA service configuration -# -# Set the name of the implementation class of the HA service. -jonas.service.ha.class org.ow2.jonas.ha.internal.HaServiceImpl - -# Set the JGroups configuration file name -jonas.service.ha.jgroups.conf jgroups-ha.xml - -# Set the JGroups group name -jonas.service.ha.jgroups.groupname jonas-rep - -# Set the SFSB backup info timeout. The info stored in the backup node is removed when the timer expires. -jonas.service.ha.gc.period 600 - -# Set the datasource for the tx table -jonas.service.ha.datasource jdbc_1 - -# Reconnection timeout for JGroups Channel, if it's closed on request. -jonas.service.ha.reconnection.timeout 5000 - - -# -###################### JOnAS Deployment Monitor -# -# Set the name of the implementation class of the depmonitor service -# -jonas.service.depmonitor.class org.ow2.jonas.deployablemonitor.DeployableMonitorService - -# Set the execution mode (three possible values): -# - inherit: inherit of the value of the "jonas.development" property -# - true : development mode -# - false : production mode -jonas.service.depmonitor.development inherit - -jonas.service.depmonitor.directories -# List (comma separated) of exclusion patterns (based on names, not directories) -jonas.service.depmonitor.exclusions README - -# Monitor interval in milliseconds -jonas.service.depmonitor.monitorInterval 5000 - - -# -###################### JOnAS Resource Monitor -# -# Set the name of the implementation class of the resource monitor service -# -jonas.service.resourcemonitor.class org.ow2.jonas.resourcemonitor.internal.JOnASResourceMonitorService -# duration in milliseconds -jonas.service.resourcemonitor.monitorInterval 30000 - - -# -###################### JOnAS/EasyBeans Smartclient service configuration -# -# Set the name of the implementation class of the smartclient service. -jonas.service.smartclient.class org.ow2.jonas.smartclient.internal.SmartclientServiceImpl -# port number the Smartclient service listens on -jonas.service.smartclient.port 2503 - - -# -###################### JOnAS Audit service configuration -# -# Set the name of the implementation class of the audit service. -jonas.service.audit.class org.ow2.jonas.audit.internal.JOnASAuditServiceImpl - -# -###################### JOnAS Validation service configuration -# -# Set the name of the implementation class of the validation service. -jonas.service.validation.class org.ow2.jonas.validation.hibernate.JOnASHibernateValidationServiceImpl diff --git a/jonas/assemblies/configuration/src/main/resources/conf/joramAdmin.xml b/jonas/assemblies/configuration/src/main/resources/conf/joramAdmin.xml deleted file mode 100644 index 594662f046..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/joramAdmin.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas/assemblies/configuration/src/main/resources/conf/jotm.properties b/jonas/assemblies/configuration/src/main/resources/conf/jotm.properties deleted file mode 100644 index f1a5bce24c..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/jotm.properties +++ /dev/null @@ -1,15 +0,0 @@ -# ------------------------------------------ -# Jotm properties -# -# see: org.objectweb.howl for description of -# howl properties. -# ------------------------------------------ -jotm.recovery.Enabled false -howl.log.ListConfiguration false -howl.log.BufferSize 4 -howl.log.MinimumBuffers 16 -howl.log.MaximumBuffers 16 -howl.log.MaximumBlocksPerFile 200 -howl.log.FileDirectory c:/logs -howl.log.FileName howl -howl.log.MaximumFiles 2 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/spy.properties b/jonas/assemblies/configuration/src/main/resources/conf/spy.properties deleted file mode 100644 index 5815fb873c..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/spy.properties +++ /dev/null @@ -1,251 +0,0 @@ -################################################################# -# P6Spy Options File # -# See documentation for detailed instructions # -################################################################# - -################################################################# -# MODULES # -# # -# Modules provide the P6Spy functionality. If a module, such # -# as module_log is commented out, that functionality will not # -# be available. If it is not commented out (if it is active), # -# the functionality will be active. # -# # -# Values set in Modules cannot be reloaded using the # -# reloadproperties variable. Once they are loaded, they remain # -# in memory until the application is restarted. # -# # -################################################################# - -module.log=com.p6spy.engine.logging.P6LogFactory -#module.outage=com.p6spy.engine.outage.P6OutageFactory - -################################################################# -# REALDRIVER(s) # -# # -# In your application server configuration file you replace the # -# "real driver" name with com.p6spy.engine.spy.P6SpyDriver. # -# This is where you put the name of your real driver P6Spy can # -# find and register your real driver to do the database work. # -# # -# If your application uses several drivers specify them in # -# realdriver2, realdriver3. See the documentation for more # -# details. # -# # -# Values set in REALDRIVER(s) cannot be reloaded using the # -# reloadproperties variable. Once they are loaded, they remain # -# in memory until the application is restarted. # -# # -################################################################# - -# oracle driver -# realdriver=oracle.jdbc.driver.OracleDriver - -# mysql Connector/J driver -# realdriver=com.mysql.jdbc.Driver - -# informix driver -# realdriver=com.informix.jdbc.IfxDriver - -# ibm db2 driver -# realdriver=COM.ibm.db2.jdbc.net.DB2Driver - -# the mysql open source driver -#realdriver=org.gjt.mm.mysql.Driver - -# the posgresql driver -realdriver=org.postgresql.Driver - -#specifies another driver to use -realdriver2= -#specifies a third driver to use -realdriver3= - - -#the DriverManager class sequentially tries every driver that is -#registered to find the right driver. In some instances, it's possible to -#load up the realdriver before the p6spy driver, in which case your connections -#will not get wrapped as the realdriver will "steal" the connection before -#p6spy sees it. Set the following property to "true" to cause p6spy to -#explicitily deregister the realdrivers -deregisterdrivers=false - -################################################################ -# P6LOG SPECIFIC PROPERTIES # -################################################################ -# no properties currently available - -################################################################ -# EXECUTION THRESHOLD PROPERTIES # -################################################################ -# This feature applies to the standard logging of P6Spy. # -# While the standard logging logs out every statement # -# regardless of its execution time, this feature puts a time # -# condition on that logging. Only statements that have taken # -# longer than the time specified (in milliseconds) will be # -# logged. This way it is possible to see only statements that # -# have exceeded some high water mark. # -# This time is reloadable. # -# -# executionthreshold=integer time (milliseconds) -# -executionthreshold= - -################################################################ -# P6OUTAGE SPECIFIC PROPERTIES # -################################################################ -# Outage Detection -# -# This feature detects long-running statements that may be indicative of -# a database outage problem. If this feature is turned on, it will log any -# statement that surpasses the configurable time boundary during its execution. -# When this feature is enabled, no other statements are logged except the long -# running statements. The interval property is the boundary time set in seconds. -# For example, if this is set to 2, then any statement requiring at least 2 -# seconds will be logged. Note that the same statement will continue to be logged -# for as long as it executes. So if the interval is set to 2, and the query takes -# 11 seconds, it will be logged 5 times (at the 2, 4, 6, 8, 10 second intervals). -# -# outagedetection=true|false -# outagedetectioninterval=integer time (seconds) -# -outagedetection=false -outagedetectioninterval= - -################################################################ -# COMMON PROPERTIES # -################################################################ - -# filter what is logged -filter=false - -# comma separated list of tables to include when filtering -include = -# comma separated list of tables to exclude when filtering -exclude = - -# sql expression to evaluate if using regex filtering -sqlexpression = - - -# turn on tracing -autoflush = true - -# sets the date format using Java's SimpleDateFormat routine -dateformat= - -#list of categories to explicitly include -includecategories= - -#list of categories to exclude: error, info, batch, debug, statement, -#commit, rollback and result are valid values -excludecategories=info,debug,result,batch - - -#allows you to use a regex engine or your own matching engine to determine -#which statements to log -# -#stringmatcher=com.p6spy.engine.common.GnuRegexMatcher -#stringmatcher=com.p6spy.engine.common.JakartaRegexMatcher -stringmatcher= - -# prints a stack trace for every statement logged -stacktrace=false -# if stacktrace=true, specifies the stack trace to print -stacktraceclass= - -# determines if property file should be reloaded -reloadproperties=false -# determines how often should be reloaded in seconds -reloadpropertiesinterval=60 - -#if=true then url must be prefixed with p6spy: -useprefix=false - -#specifies the appender to use for logging -#appender=com.p6spy.engine.logging.appender.Log4jLogger -#appender=com.p6spy.engine.logging.appender.StdoutLogger -#appender=com.p6spy.engine.logging.appender.FileLogger -# JOnAS change -appender=org.objectweb.util.monolog.wrapper.p6spy.P6SpyLogger - -# name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log) (used for file logger only) -logfile = spy.log - -# append to the p6spy log file. if this is set to false the -# log file is truncated every time. (file logger only) -append=true - -#The following are for log4j logging only -log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender -log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout -log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n - -#log4j.appender.CHAINSAW_CLIENT=org.apache.log4j.net.SocketAppender -#log4j.appender.CHAINSAW_CLIENT.RemoteHost=localhost -#log4j.appender.CHAINSAW_CLIENT.Port=4445 -#log4j.appender.CHAINSAW_CLIENT.LocationInfo=true - -log4j.logger.p6spy=INFO,STDOUT - - -################################################################# -# DataSource replacement # -# # -# Replace the real DataSource class in your application server # -# configuration with the name com.p6spy.engine.spy.P6DataSource,# -# then add the JNDI name and class name of the real # -# DataSource here # -# # -# Values set in this item cannot be reloaded using the # -# reloadproperties variable. Once it is loaded, it remains # -# in memory until the application is restarted. # -# # -################################################################# -#realdatasource=/RealMySqlDS -#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource - -################################################################# -# DataSource properties # -# # -# If you are using the DataSource support to intercept calls # -# to a DataSource that requires properties for proper setup, # -# define those properties here. Use name value pairs, separate # -# the name and value with a semicolon, and separate the # -# pairs with commas. # -# # -# The example shown here is for mysql # -# # -################################################################# -#realdatasourceproperties=port;3306,serverName;ibmhost,databaseName;mydb - - -################################################################# -# JNDI DataSource lookup # -# # -# If you are using the DataSource support outside of an app # -# server, you will probably need to define the JNDI Context # -# environment. # -# # -# If the P6Spy code will be executing inside an app server then # -# do not use these properties, and the DataSource lookup will # -# use the naming context defined by the app server. # -# # -# The two standard elements of the naming environment are # -# jndicontextfactory and jndicontextproviderurl. If you need # -# additional elements, use the jndicontextcustom property. # -# You can define multiple properties in jndicontextcustom, # -# in name value pairs. Separate the name and value with a # -# semicolon, and separate the pairs with commas. # -# # -# The example shown here is for a standalone program running on # -# a machine that is also running JBoss, so the JDNI context # -# is configured for JBoss (3.0.4). # -# # -################################################################# -#jndicontextfactory=org.jnp.interfaces.NamingContextFactory -#jndicontextproviderurl=localhost:1099 -#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.nameing:org.jnp.interfaces - -#jndicontextfactory=com.ibm.websphere.naming.WsnInitialContextFactory -#jndicontextproviderurl=iiop://localhost:900 diff --git a/jonas/assemblies/configuration/src/main/resources/conf/trace.properties b/jonas/assemblies/configuration/src/main/resources/conf/trace.properties deleted file mode 100644 index cec081e24e..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/trace.properties +++ /dev/null @@ -1,441 +0,0 @@ -# ----------------------------------------------------------------------- -# This is a default configuration file for monolog. -# -# 2 handlers have been defined : tty (System.out) and logf (file) -# -# Patterns for each handler may include these possible values : -# %h the thread name -# %O{1} the Class name (basename only) -# %M the method name -# %L the line number -# %d the date -# %l the level -# %m the message itself -# %n a new line -# -# A list of predefined loggers is given at the end of the file. -# Each logger inherits from its parent for properties not defined. -# The root logger is "root". It must always be defined. -# -# Each logger is associated with a level that can be one of : -# ERROR | WARN | INFO | DEBUG | FATAL | INHERIT -# -# -> More info on http://www.objectweb.org/monolog/doc.html -# ----------------------------------------------------------------------- - -# ----------------------------------------------------------------------- -# Define which wrapper to use (= javaLog) -# ----------------------------------------------------------------------- -# For Log4j you need to add log4j.jar -# log.config.classname org.objectweb.util.monolog.wrapper.log4j.MonologLoggerFactory -log.config.classname org.objectweb.util.monolog.wrapper.javaLog.LoggerFactory - -# ----------------------------------------------------------------------- -# tty : console handler -# The switch attribute is used to log either on System.out or System.err -# depending of the level of the log. -# ----------------------------------------------------------------------- -handler.tty.type Console -handler.tty.output Switch -handler.tty.pattern %d : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# mesonly : console handler without header -# ----------------------------------------------------------------------- -handler.mesonly.type Console -handler.mesonly.output Switch -handler.mesonly.pattern %m%n - -# ----------------------------------------------------------------------- -# logf : file handler -# ----------------------------------------------------------------------- -handler.logf.type File -handler.logf.output automatic -handler.logf.pattern %d : %l : %h : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# wsdl : file handler -# ----------------------------------------------------------------------- -handler.wsdl.type File -handler.wsdl.output jonas_wsdls.log -handler.wsdl.pattern %d : %l : %h : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# jmxHandler : jmx handler -# ----------------------------------------------------------------------- -#handler.jmxHandler.type jmx -#handler.jmxHandler.output Switch -#handler.jmxHandler.pattern %d : %l : %h : %O{1}.%M : %m%n - - -# ----------------------------------------------------------------------- -# logf : rolling file handler -# ----------------------------------------------------------------------- -#handler.logf.type RollingFile -#handler.logf.output jonas.log -#handler.logf.pattern %d : %l : %h : %O{1}.%M : %m%n -#handler.logf.fileNumber 2 -#handler.logf.maxSize 10000 - -# ----------------------------------------------------------------------- -# logger definitions -# ----------------------------------------------------------------------- -logger.root.handler.0 tty -logger.root.handler.1 logf -#logger.root.handler.2 jmxHandler - -logger.root.level INFO -logger.org.ow2.level INFO -logger.org.objectweb.level INFO - -#----------------------------------------------------------------------- -# JOnAS logger definitions -#----------------------------------------------------------------------- - -logger.org.ow2.jonas.admin.level INHERIT - -logger.org.ow2.jonas.bootstrap.level INHERIT - -logger.org.ow2.jonas.client.level INHERIT - -logger.org.ow2.jonas.cluster.daemon.level INHERIT - -logger.org.ow2.jonas.cmd.level INHERIT - -logger.org.ow2.jonas.cmi.level INHERIT - -logger.org.ow2.jonas.ha.level INHERIT - -logger.org.ow2.jonas.db.level INHERIT - -logger.org.ow2.jonas.dbm.level INHERIT -logger.org.ow2.jonas.dbm.con.level INHERIT -logger.org.ow2.jonas.dbm.ps.level INHERIT -logger.org.ow2.jonas.dbm.xa.level INHERIT - -logger.org.ow2.jonas.deployment.level INHERIT -logger.org.ow2.jonas.deployablemonitor.level INHERIT -logger.org.ow2.jonas.deployment.client.level INHERIT -logger.org.ow2.jonas.deployment.domain.level INHERIT -logger.org.ow2.jonas.deployment.ejb.level INHERIT -logger.org.ow2.jonas.deployment.ejb.digester.level FATAL - - - -logger.org.ow2.jonas.domain.management.level INHERIT - -# EJB 3 container -logger.org.ow2.easybeans.level INHERIT - -logger.org.ow2.jonas.ear.level INHERIT - -logger.org.ow2.jonas.ee.level INHERIT -logger.org.ow2.jonas.ee.jdbc.level INHERIT -logger.org.ow2.jonas.ee.jdbc.RA.level INHERIT -logger.org.ow2.jonas.ee.jdbc.sql.level INHERIT -logger.org.ow2.jonas.ee.jdbc.xa.level INHERIT - -logger.org.ow2.jonas.ejb.level INHERIT - -#logger.org.ow2.jonas.generators.handler.0 mesonly -#logger.org.ow2.jonas.generators.additivity false - -logger.org.ow2.jonas.generators.genbase.level INHERIT -logger.org.ow2.jonas.generators.genclientstub.level INHERIT -logger.org.ow2.jonas.generators.genic.level INHERIT -logger.org.ow2.jonas.generators.genic.velocity.level ERROR -logger.org.ow2.jonas.generators.wsgen.level INHERIT -logger.org.ow2.jonas.generators.wsgen.ews.level INHERIT - -logger.org.ow2.jonas.jca.level INHERIT -logger.org.ow2.jonas.jca.connection.level INHERIT -logger.org.ow2.jonas.jca.management.level INHERIT -logger.org.ow2.jonas.jca.pool.level INHERIT -logger.org.ow2.jonas.jca.process.level INHERIT -logger.org.ow2.jonas.jca.setters.level INHERIT - -logger.org.ow2.jonas.jmx.level INHERIT - -logger.org.ow2.jonas.jtm.level ERROR - -logger.org.ow2.jonas.lib.ejb21.level INHERIT -logger.org.ow2.jonas.lib.ejb21.coherence.level INHERIT -logger.org.ow2.jonas.lib.ejb21.context.level INHERIT -logger.org.ow2.jonas.lib.ejb21.dd.level INHERIT -logger.org.ow2.jonas.lib.ejb21.endpoint.level INHERIT -logger.org.ow2.jonas.lib.ejb21.factory.level INHERIT -logger.org.ow2.jonas.lib.ejb21.genclass.level INHERIT -logger.org.ow2.jonas.lib.ejb21.interp.level INHERIT -logger.org.ow2.jonas.lib.ejb21.mdb.level INHERIT -logger.org.ow2.jonas.lib.ejb21.mijorm.level INHERIT -logger.org.ow2.jonas.lib.ejb21.query.level INHERIT -logger.org.ow2.jonas.lib.ejb21.security.level INHERIT -logger.org.ow2.jonas.lib.ejb21.ssfpool.level INHERIT -logger.org.ow2.jonas.lib.ejb21.swapper.level INHERIT -logger.org.ow2.jonas.lib.ejb21.synchro.level INHERIT -logger.org.ow2.jonas.lib.ejb21.thread.level INHERIT -logger.org.ow2.jonas.lib.ejb21.tx.level INHERIT -logger.org.ow2.jonas.lib.ejb21.ha.level INHERIT -logger.org.ow2.jonas.lib.ejb21.ha.interceptors.iiop.level INHERIT -logger.org.ow2.jonas.lib.ejb21.ha.interceptors.jrmp.level INHERIT - - -logger.org.ow2.jonas.lib.jms.level INHERIT - -logger.org.ow2.jonas.lib.naming.java.level INHERIT - -logger.org.ow2.jonas.lib.svc.level INHERIT - -logger.org.ow2.jonas.lib.timer.level INHERIT - -logger.org.ow2.jonas.lib.util.level INHERIT - -logger.org.ow2.jonas.lib.windows.level INHERIT - -logger.org.ow2.jonas.lib.work.level INHERIT - -logger.org.ow2.jonas.loader.level INHERIT - -logger.org.ow2.jonas.mail.level INHERIT - -logger.org.ow2.jonas.management.level INHERIT -logger.org.ow2.jonas.management.cluster.level INHERIT -logger.org.ow2.jonas.management.domain.level INHERIT -logger.org.ow2.jonas.management.event.level INHERIT -logger.org.ow2.jonas.management.j2eemanagement.level INHERIT -logger.org.ow2.jonas.management.j2eemanagement.event.level INHERIT - -logger.org.ow2.jonas.naming.level INHERIT - -logger.org.ow2.jonas.propagation.level INHERIT - -logger.org.ow2.jonas.publication.handler.0 wsdl -logger.org.ow2.jonas.publication.additivity false - -logger.org.ow2.jonas.registry.level INHERIT - -logger.org.ow2.jonas.security.level INHERIT -logger.org.ow2.jonas.security.csiv2.level INHERIT -logger.org.ow2.jonas.security.csiv2_details.level INHERIT -logger.org.ow2.jonas.security.jacc.level INHERIT -logger.org.ow2.jonas.security.ws.level INHERIT - -logger.org.ow2.jonas.server.level INHERIT - -logger.org.ow2.jonas.web.level INHERIT - -logger.org.ow2.jonas.webapp.jadmin.servlet.level INHERIT - -logger.org.ow2.jonas.work.level INHERIT - -logger.org.ow2.jonas.workcleaner.level INHERIT - -logger.org.ow2.jonas.ws.level INHERIT -logger.org.ow2.jonas.ws.wsdl.level INHERIT - -#----------- -# Hibernate -#----------- -logger.org.hibernate.cache.level ERROR -logger.org.hibernate.cfg.level ERROR -logger.org.hibernate.connection.level ERROR -logger.org.hibernate.dialect.level ERROR -logger.org.hibernate.ejb.level ERROR -logger.org.hibernate.impl.level ERROR -logger.org.hibernate.hql.ast.level ERROR -logger.org.hibernate.search.level ERROR -logger.org.hibernate.tool.hbm2ddl.level ERROR -logger.org.hibernate.transaction.level ERROR -logger.org.hibernate.validator.level ERROR - -#------- -# JOTM -#------- -logger.org.objectweb.jotm.level INFO -logger.org.objectweb.jotm.jta.level INHERIT -logger.org.objectweb.jotm.tm.level INHERIT -logger.org.objectweb.jotm.recovery.level INHERIT - -#------- -# MEJB -#------- -logger.org.ow2.jonas.ee.mejb.level INFO - -#------- -# CAROL -#------- -logger.org.ow2.carol.level INFO -logger.org.ow2.carol.rmi.level INHERIT -logger.org.ow2.carol.jndi.level INHERIT - -#------- -# JORM -#------- -logger.org.objectweb.jorm.level WARN -logger.org.objectweb.jorm.compiler.level INHERIT -logger.org.objectweb.jorm.xml2mi.level INHERIT -logger.org.objectweb.jorm.mi2xml.level INHERIT -logger.org.objectweb.jorm.metainfo.level INHERIT -logger.org.objectweb.jorm.generator.level INHERIT -logger.org.objectweb.jorm.generator.velocity.level ERROR -logger.org.objectweb.jorm.mapper.rdb.generator.level INHERIT - -#------- -# MEDOR -#------- -logger.org.objectweb.medor.level INHERIT -logger.org.objectweb.medor.optim.rule.level INHERIT -logger.org.objectweb.medor.optim.rewriter.level INHERIT -logger.org.objectweb.medor.eval.rdb.level INHERIT - -#------- -# JORAM -#------- -logger.fr.dyade.aaa.level ERROR -logger.fr.dyade.aaa.agent.level ERROR -logger.fr.dyade.aaa.agent.Agent.level INHERIT -logger.fr.dyade.aaa.agent.Engine.level INHERIT -logger.fr.dyade.aaa.agent.Service.level INHERIT -logger.org.objectweb.joram.level ERROR -logger.org.objectweb.joram.mom.level INHERIT -logger.org.objectweb.joram.mom.Destination.level INHERIT -logger.org.objectweb.joram.mom.Proxy.level INHERIT -logger.org.objectweb.joram.client.level INHERIT -logger.org.objectweb.joram.client.jms.Client.level ERROR -logger.org.objectweb.joram.client.connector.Adapter.level ERROR - -#------- -# SPEEDO -#------- -logger.org.objectweb.speedo.level WARN -## GENERATION -logger.org.objectweb.speedo.generation.SpeedoCompiler.level INFO -## RUN TIME -logger.org.objectweb.speedo.init.level INHERIT -logger.org.objectweb.speedo.po-manager-factory.level INHERIT -logger.org.objectweb.speedo.po-manager-switch.level INHERIT -logger.org.objectweb.speedo.po-manager-pool.level INHERIT -logger.org.objectweb.speedo.po-manager-instanciator.level INHERIT -logger.org.objectweb.speedo.po-manager.level INHERIT -logger.org.objectweb.speedo.po-manager.query.level INHERIT -logger.org.objectweb.speedo.mapper.level INHERIT -logger.org.objectweb.speedo.mapper.mapper.level INHERIT -logger.org.objectweb.speedo.mapper.mapper.sql.level INHERIT -logger.org.objectweb.speedo.mapper.jorm-factory.level INHERIT -logger.org.objectweb.speedo.mapper.jorm-factory.class-properties.level INHERIT -logger.org.objectweb.speedo.mapper.pool.level INHERIT -logger.org.objectweb.speedo.mapper.storage-manager.level INHERIT -logger.org.objectweb.speedo.memory-instance-manager.level INHERIT -logger.org.objectweb.speedo.workingset-manager.level INHERIT -logger.org.objectweb.speedo.naming-manager-factory.level INHERIT -logger.org.objectweb.speedo.transaction.level INHERIT -logger.org.objectweb.speedo.tpm.level INHERIT -logger.org.objectweb.speedo.tpm.transactional-persistence-manager.level INHERIT -logger.org.objectweb.speedo.tpm.cache-manager.level INHERIT -logger.org.objectweb.speedo.tpm.cache-manager.bgcleaner.level INHERIT -logger.org.objectweb.speedo.tpm.concurrency-manager.level INHERIT -logger.org.objectweb.speedo.query-manager.level INHERIT -logger.org.objectweb.speedo.query-manager.compiled-query.level INHERIT -logger.org.objectweb.speedo.query-manager.compiled-query.allocator.level INHERIT -logger.org.objectweb.speedo.query-manager.compiled-query.parser.level INHERIT -logger.org.objectweb.speedo.query-manager.compiled-query.parser.variable.level INHERIT -logger.org.objectweb.speedo.query-manager.compiled-query.parser.filter.level INHERIT -logger.org.objectweb.speedo.compiled-query-cache.level INHERIT -logger.org.objectweb.speedo.jca.level INHERIT -logger.org.objectweb.speedo.txStatistic.level INHERIT -logger.org.objectweb.speedo.jmx.level INHERIT - -# Struts -logger.org.apache.struts.util.level WARN - -#------------------------------ -# Tomcat 6 - Catalina logging -#------------------------------ -logger.org.apache.catalina.core.ContainerBase.[jonas].level INFO -logger.org.apache.catalina.core.ContainerBase.[jonas].[localhost].level INFO -logger.org.apache.catalina.core.ContainerBase.[jonas].[localhost].[path].level INFO -### example for jonasAdmin ### -logger.org.apache.catalina.core.ContainerBase.[jonas].[localhost].[jonasAdmin].level INFO - -#----------------------------- -# Jetty 6 (Avoid log of MBean registration (info level) -#----------------------------- -logger.org.mortbay.util.jmx.ModelMBeanImpl.level ERROR - -#----------------------------- -# Apache CXF -#----------------------------- -logger.org.apache.cxf.level INHERIT -# Avoid a log diplaying erroneous informations (INFO level) -# TODO remove theses lines when a proper startup message policy will be decided -logger.org.apache.cxf.endpoint.ServerImpl.level ERROR - -#----------------------------- -# Open Symphony Quartz -#----------------------------- -logger.org.quartz.level INHERIT -# Avoid logs of unwanted informations (INFO level) -# TODO remove theses lines when a proper startup message policy will be decided -logger.org.quartz.core.QuartzScheduler.level ERROR -logger.org.quartz.simpl.RAMJobStore.level ERROR -logger.org.quartz.impl.StdSchedulerFactory.level ERROR - -# ----------------------------------------------------------------------- -# MX4J - also need to set system proprty mx4j.log.priority to the corresponding level -# (fatal, error, warn, info, debug, trace) -# ----------------------------------------------------------------------- -logger.mx4j.level ERROR - -#----------------------------- -# OSGi logging -#----------------------------- -logger.org.ow2.util.log.impl.osgi.level ERROR - -#----------------------------- -# Deployment plan logging -#----------------------------- -logger.org.ow2.util.plan.deployer.impl.level ERROR - -#--------- -# File logger for JGroups -# JGroups -#--------- -handler.all_jgroups.type File -handler.all_jgroups.output all_jgroups.log -handler.all_jgroups.pattern %d : %l : %h : %O{1}.%M : %m%n -logger.org.jgroups.level FATAL -logger.org.jgroups.handler.0 all_jgroups -logger.org.jgroups.additivity false - -# ----------------------------------------------------------------------- -# For Log file (tests) -# ----------------------------------------------------------------------- -handler.logtest.type File -handler.logtest.output jonas_tests.log -handler.logtest.pattern %d : %l : %h : %O{1}.%M : %m%n -logger.org.ow2.jonas_tests.history.level INFO -logger.org.ow2.jonas_tests.history.handler.0 logtest -logger.org.ow2.jonas_tests.history.additivity false - - -#--- -# Discovery Logger configuration -#uncomment these lines to configure a file logger for jonas discovery -#handler.jonas-discovery.type File -#handler.jonas-discovery.output jonas_discovery.log -#handler.jonas-discovery.pattern %d : %l : %h : %O{1}.%M : %m%n -# Don't forget to set logs level. -logger.org.ow2.jonas.discovery.level INFO -#logger.org.ow2.jonas.discovery.handler.0 jonas-discovery -#logger.org.ow2.jonas.discovery.additivity false - -#--- -#Granite Logger configuration -handler.granite-ds.type File -handler.granite-ds.output granite-ds.log -handler.granite-ds.pattern %d : %l : %h : %O{1}.%M : %m%n -# Don't forget to set logs level. -logger.org.granite.config.level INFO -logger.org.granite.config.handler.0 granite-ds -logger.org.granite.config.additivity false - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/traceclient.properties b/jonas/assemblies/configuration/src/main/resources/conf/traceclient.properties deleted file mode 100644 index 5190f18bcc..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/traceclient.properties +++ /dev/null @@ -1,45 +0,0 @@ -# ----------------------------------------------------------------------- -# This is a default configuration file for monolog. -# -# Patterns for each handler may include these possible values : -# %h the thread name -# %O{1} the Class name (basename only) -# %M the method name -# %L the line number -# %d the date -# %l the level -# %m the message itself -# %n a new line -# -# Each logger inherits from its parent for properties not defined. -# The root logger is "root". It must always be defined. -# -# Each logger is associated with a level that can be one of : -# ERROR | WARN | INFO | DEBUG -# -# -> More info on http://www.objectweb.org/monolog/doc.html -# ----------------------------------------------------------------------- -# -# Define which wrapper to use (= javaLog) -# ----------------------------------------------------------------------- -# For Log4j you need to add log4j.jar -# log.config.classname org.objectweb.util.monolog.wrapper.log4j.MonologLoggerFactory -log.config.classname org.objectweb.util.monolog.wrapper.javaLog.LoggerFactory - -# ----------------------------------------------------------------------- -# tty : console handler -# ----------------------------------------------------------------------- -handler.tty.type Console -handler.tty.output System.out -handler.tty.pattern %d : %h : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# logger definitions -# ----------------------------------------------------------------------- -logger.root.handler.0 tty - -logger.root.level ERROR -logger.org.ow2.jonas.client.level WARN - -# Set INFO to see test names. -logger.org.objectweb.jonas_tests.level WARN \ No newline at end of file diff --git a/jonas/assemblies/configuration/src/main/resources/conf/uddi.properties b/jonas/assemblies/configuration/src/main/resources/conf/uddi.properties deleted file mode 100644 index 99f2d808f0..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/uddi.properties +++ /dev/null @@ -1,17 +0,0 @@ -# $Id$ - -# RegistryWSDLPublisher class -jonas.service.wsdl.class org.ow2.jonas.ws.publish.internal.registry.RegistryWSDLPublisher - -# User name and Password to access Registry -jonas.service.publish.uddi.username jonas -jonas.service.publish.uddi.password jonas - -# Organization name, small desc (optionnal) and primary contact name. -jonas.service.publish.uddi.organization.name OW2 -jonas.service.publish.uddi.organization.desc OW2 Consortium (http://www.ow2.org) -jonas.service.publish.uddi.organization.person_name JOnAS - -# URLs where Registry can be contacted (Publish an Query APIs) -javax.xml.registry.lifeCycleManagerURL http://localhost:9000/juddi/publish -javax.xml.registry.queryManagerURL http://localhost:9000/juddi/inquiry diff --git a/jonas/assemblies/configuration/src/main/resources/conf/wrapper.conf b/jonas/assemblies/configuration/src/main/resources/conf/wrapper.conf deleted file mode 100644 index 37b72349b4..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/wrapper.conf +++ /dev/null @@ -1,134 +0,0 @@ -#******************************************************************** -# Wrapper Properties -# -# DO NOT MODIFY THIS FILE, IT WILL BE REGERENATED BY THE ANT TASK. -# -# For extra options, use the wrapper_extra.conf file instead. -# -#******************************************************************** -# Java Application -#wrapper.debug=true -wrapper.java.command=@java.home@/bin/java - -# Java Main class -wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp - -# Java Classpath (wrapper.jar is required) -# Add JOnAS class path elements as needed starting from 2 -wrapper.java.classpath.1=@wrapper.home@/lib/wrapper.jar - -# Java Library Path (location of Wrapper.DLL or libwrapper.so) -wrapper.java.library.path.1=@wrapper.home@/lib - -# Java Additional Parameters -wrapper.java.additional.1=-Dorg.tanukisoftware.wrapper.WrapperStartStopApp.waitForStartMain=FALSE - -# Initial Java Heap Size (in MB) -# set to zero so that -Xms can be set using wrapper.java.additonal -# in the wrapper_ext.conf file. // BUG 304628 -# SET JAVA_OPTS=-Xms before running the ANT task -wrapper.java.initmemory=0 - -# Maximum Java Heap Size (in MB) -# set to zero so that -Xmx can be set using wrapper.java.additonal -# in the wrapper_ext.conf file. // BUG 304628 -# SET JAVA_OPTS=-Xmx before running the ANT task -wrapper.java.maxmemory=0 - -# Port which the native wrapper code will attempt to connect to -wrapper.port=4777 - -#******************************************************************** -# Application parameters. -# -# THESE PARAMETERS SHOULD NOT BE MODIFIED -# -# Parameters in this section specify the Java classes to be run -# and the parameters to the classes. -# The parameters defined in this section will start and stop -# JOnAS using the default server name of 'jonas'. -# wrapper.app.parameter.8 specifies the server name. This value -# can be changed by setting wrapper.app.parameter.8 in the -# wrapper_ext.conf file that is generated by the ANT task. -# -# The parameters below should be identical to those used -# by bin\jonas.bat to start and stop the server. -#******************************************************************** - -# Start parameters -wrapper.app.parameter.1=org.ow2.jonas.commands.admin.ClientAdmin -wrapper.app.parameter.2=1 -wrapper.app.parameter.3=-start - -# Stop parameters -wrapper.app.parameter.4=org.ow2.jonas.commands.admin.ClientAdmin -wrapper.app.parameter.5=false -wrapper.app.parameter.6=1 -wrapper.app.parameter.7=-stop - -#******************************************************************** -# Wrapper Logging Properties -#******************************************************************** -# Format of output for the console. (See docs for formats) -wrapper.console.format=PM - -# Log Level for console output. (See docs for log levels) -wrapper.console.loglevel=INFO - -# Log file to use for wrapper output logging. -wrapper.logfile=@jonas.base@/logs/wrapper.log - -# Format of output for the log file. (See docs for formats) -wrapper.logfile.format=LPTM - -# Log Level for log file output. (See docs for log levels) -wrapper.logfile.loglevel=INFO - -# Maximum size that the log file will be allowed to grow to before -# the log is rolled. Size is specified in bytes. The default value -# of 0, disables log rolling. May abbreviate with the 'k' (kb) or -# 'm' (mb) suffix. For example: 10m = 10 megabytes. -wrapper.logfile.maxsize=0 - -# Maximum number of rolled log files which will be allowed before old -# files are deleted. The default value of 0 implies no limit. -wrapper.logfile.maxfiles=0 - -# Log Level for sys/event log output. (See docs for log levels) -wrapper.syslog.loglevel=NONE - -#******************************************************************** -# Wrapper NT Service Properties -#******************************************************************** -# WARNING - Do not modify any of these properties when an application -# using this configuration file has been installed as a service. -# Please uninstall the service before modifying this section. The -# service can then be reinstalled. - -# Name of the service -wrapper.ntservice.name=JOnAS - -# Display name of the service -wrapper.ntservice.displayname=JOnAS - -# Description of the service -wrapper.ntservice.description=JOnAS Java EE Application Server - -# Service dependencies. Add dependencies as needed starting from 1 -wrapper.ntservice.dependency.1= - -# Mode in which the service is installed. AUTO_START or DEMAND_START -wrapper.ntservice.starttype=AUTO_START - -# Allow the service to interact with the desktop. -wrapper.ntservice.interactive=false - -#******************************************************************** -# include wrapper.conf extensions specific to JONAS_BASE -# -# note that #include is a wrapper directive, not a comment -# -# this will be resolved to JONAS_BASE by the ANT task -#******************************************************************** -#include @jonas.base@/conf/wrapper_extra.conf - diff --git a/jonas/assemblies/configuration/src/main/resources/conf/wrapper_extra.conf b/jonas/assemblies/configuration/src/main/resources/conf/wrapper_extra.conf deleted file mode 100644 index 3896c5aad9..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/conf/wrapper_extra.conf +++ /dev/null @@ -1,8 +0,0 @@ -#******************************************************************** -# Wrapper Properties -# -# For information regarding these parameters refer to the -# Java Service Wrapper documentation at -# http://wrapper.tanukisoftware.org/doc/english/properties.html -# -#******************************************************************** diff --git a/jonas/assemblies/configuration/src/main/resources/deploy/jdbc-ds.xml b/jonas/assemblies/configuration/src/main/resources/deploy/jdbc-ds.xml deleted file mode 100644 index f4a60b0f94..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/deploy/jdbc-ds.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - jdbc_1 - jdbc:hsqldb:hsql://localhost:9001/db_jonas - org.hsqldb.jdbcDriver - jonas - jonas - rdb.hsql - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - select count(1) from information_schema.system_tables - 1440 - 60 - 10 - 10 - 100 - 100 - 5 - 100 - 30 - - - diff --git a/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.properties b/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.properties deleted file mode 100644 index 74e7628eaf..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.properties +++ /dev/null @@ -1,113 +0,0 @@ -#Drivers directory -drivers.dir=jb.config/lib - -#jonas.properties global properties -jonas.services=jtm,db,security,resource,ejb3,jaxws,web,ear,depmonitor -jonas.security.propagation=true -jonas.security.manager=false -jonas.csiv2.propagation=true -jonas.log.configfile=trace -jonas.transaction.propagation=true -jonas.development=true -#Jms -jms.port=16010 -jms.topics=InvoiceTopic -jms.queues=OrderApprovalQueue,OrdersQueue,MailCompletedOrderQueue,SupPurchaseOrderQueue,MailOrderApprovalQueue,MailQueue - -#Carol -carol.allport=1099 -carol.defaultprotocol=jrmp -carol.jrmpopt=false -carol.localregistry=true - -#Web -webcontainer.port=9000 -# Tomcat/Jetty -webcontainer.service.defaultname=tomcat -webcontainer.ondemandenabled=true -webcontainer.ondemanderedirectport=0 -#Db -db.port=9001 - -#Discovery -discovery.sourceport=9888 -discovery.greetingport=9899 -discovery.mcastaddr=224.224.224.224 -discovery.mcastport=9080 -discovery.ttl=1 - -#Database -rajdbc.defaultname=hsql - -#DB connections through RAR - -rajdbc.hsql.user=jonas -rajdbc.hsql.password=jonas -rajdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9001/db_jonas -rajdbc.hsql.drivername=org.hsqldb.jdbcDriver -rajdbc.hsql.jndiname=jdbc_1 -rajdbc.hsql.jdbcdriverjarfile=none -rajdbc.hsql.mappername=rdb.hsql - -rajdbc.postgresql.user=jonas -rajdbc.postgresql.password=jonas -rajdbc.postgresql.url=jdbc:postgresql://localhost:5433/db_jonas -rajdbc.postgresql.drivername=org.postgresql.Driver -rajdbc.postgresql.jndiname=jdbc_1 -rajdbc.postgresql.jdbcdriverjarfile=postgresql.jar -rajdbc.postgresql.mappername=rdb.postgresql - -rajdbc.oracle.user=jonas -rajdbc.oracle.password=jonas -rajdbc.oracle.url=jdbc:oracle:thin:@localhost:1521:db_jonas -rajdbc.oracle.drivername=oracle.jdbc.driver.OracleDriver -rajdbc.oracle.jndiname=jdbc_1 -rajdbc.oracle.jdbcdriverjarfile=ojdbc5.jar -rajdbc.oracle.mappername=rdb.oracle - -rajdbc.mysql.user=root -rajdbc.mysql.password= -rajdbc.mysql.url=jdbc:mysql:http://localhost:3306/db_jonas -rajdbc.mysql.drivername=org.gjt.mm.mysql.Driver -rajdbc.mysql.jndiname=jdbc_1 -rajdbc.mysql.jdbcdriverjarfile=mysql-connector-java.jar -rajdbc.mysql.mappername=rdb.mysql - -#DB connections through datasource XML - -xmljdbc.hsql.name=jdbc_1 -xmljdbc.hsql.username=jonas -xmljdbc.hsql.password=jonas -xmljdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9001/db_jonas -xmljdbc.hsql.mapper=rdb.hsql -xmljdbc.hsql.classname=org.hsqldb.jdbcDriver -xmljdbc.hsql.conteststmt=select count(1) from information_schema.system_tables -xmljdbc.hsql.connmaxage=1440 -xmljdbc.hsql.conchecklevel=2 -xmljdbc.hsql.initconpool=10 -xmljdbc.hsql.minconpool=10 -xmljdbc.hsql.maxconpool=100 -xmljdbc.hsql.maxopentime=60 -xmljdbc.hsql.maxwaiters=100 -xmljdbc.hsql.maxwaitingtime=5 -xmljdbc.hsql.pstmtmax=100 -xmljdbc.hsql.samplingperiod=100 - -#Mail -mail.session.name=mailSession_1 -mail.mimepartds.name=mailMimePartDS_1 -mail.to=jean.dupont@ow2.org -mail.subject=test mail -mail.host=localhost - - -#Wsdl -wsdl.file.name=file1 -wsdl.file.dir=/tmp/ - -#Cluster daemon configuration -cluster.daemon.protocol=jrmp -cluster.daemon.port=1806 -cluster.daemon.interactionMode=loosely-coupled -discovery.domainName=jonas - diff --git a/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.xml b/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.xml deleted file mode 100644 index 984575f753..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/newjb/build-jb.xml +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/assemblies/configuration/src/main/resources/newjc/build-db.properties b/jonas/assemblies/configuration/src/main/resources/newjc/build-db.properties deleted file mode 100644 index 3d8330fd13..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/newjc/build-db.properties +++ /dev/null @@ -1,80 +0,0 @@ -#Drivers directory -drivers.dir=jc.config/lib - -#Services -jonas.services=registry,jmx,jtm,db,security,resource,discovery - -#Jms -jms.port=16050 -jms.topics=sampleTopic,InvoiceTopic -jms.queues=sampleQueue,OrderApprovalQueue,OrdersQueue,MailCompletedOrderQueue,SupPurchaseOrderQueue,MailOrderApprovalQueue,MailQueue - -#Carol -carol.allport=2053 -carol.defaultprotocol=jrmp -carol.protocol=jrmp -carol.jrmpopt=false -carol.localregistry=true - -#Web -webcontainer.port=9500 -# Tomcat -webcontainer.service.defaultname=tomcat -webcontainer.service.name=tomcat - -#Db -db.port=9005 - -#Discovery -# sourceport is set to -1 for disabling the master node -discovery.sourceport=-1 -discovery.greetingport=9903 -discovery.mcastaddr=224.224.224.224 -discovery.mcastport=9080 -discovery.ttl=1 - -#Database -rajdbc.defaultname=hsql -rajdbc.name=hsql - -#DB connections through RAR - -rajdbc.hsql.user=jonas -rajdbc.hsql.password=jonas -rajdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9005/db_jonas -rajdbc.hsql.drivername=org.hsqldb.jdbcDriver -rajdbc.hsql.jndiname=jdbc_1 -rajdbc.hsql.jdbcdriverjarfile=none -rajdbc.hsql.mappername=rdb.hsql - -#DB connections through datasource XML - -xmljdbc.hsql.name=jdbc_1 -xmljdbc.hsql.username=jonas -xmljdbc.hsql.password=jonas -xmljdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9005/db_jonas -xmljdbc.hsql.mapper=rdb.hsql -xmljdbc.hsql.classname=org.hsqldb.jdbcDriver -xmljdbc.hsql.conteststmt=select count(1) from information_schema.system_tables -xmljdbc.hsql.connmaxage=1440 -xmljdbc.hsql.conchecklevel=2 -xmljdbc.hsql.initconpool=10 -xmljdbc.hsql.minconpool=10 -xmljdbc.hsql.maxconpool=100 -xmljdbc.hsql.maxopentime=60 -xmljdbc.hsql.maxwaiters=100 -xmljdbc.hsql.maxwaitingtime=5 -xmljdbc.hsql.pstmtmax=100 -xmljdbc.hsql.samplingperiod=100 - -#Mail -mail.session.name=mailSession_1 -mail.mimepartds.name=mailMimePartDS_1 -mail.to=jean.dupont@objectweb.org -mail.subject=test mail - - -#Wsdl -wsdl.file.name=wsdlJean_Dupont -wsdl.file.dir=/tmp/ - diff --git a/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.properties b/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.properties deleted file mode 100644 index 0c858e0811..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.properties +++ /dev/null @@ -1,181 +0,0 @@ -# Prefix for JONAS_BASE directories -jonas.base.defaultprefix=jb - -#Drivers directory -drivers.dir=jc.config/lib - -#Cluster architecture : -# bothWebEjb : both web and ejb services and each instance -# diffWebEjb : dedicates instances to web level and separated instances to ejb level -cluster.architecture.default=diffWebEjb - -#Cluster architecture : -# nodes name : prefix of the node names -cluster.nodesName=node - -#Cluster daemon configuration -cluster.daemon.name=cd -cluster.daemon.protocol=jrmp -cluster.daemon.port=1806 -cluster.daemon.dir=cd -#enable this to set JAVA_HOME of the cluster daemon -#cluster.daemon.jdk=/usr/java/jdk/sun/current-1.5 -cluster.daemon.interactionMode=loosely-coupled -cluster.daemon.autoBoot=false -cluster.daemon.xprm=-Djava.net.preferIPv4Stack=true - -#Services -jonas.web.services=registry,jmx,jtm,security,cmi,jaxrpc,web,ear,depmonitor,discovery -jonas.ejb.services=registry,jmx,jtm,db,security,resource,cmi,ha,ejb2,ejb3,ear,depmonitor,discovery -jonas.full.services=registry,jmx,jtm,db,security,resource,cmi,ha,ejb2,ejb3,jaxrpc,jaxws,web,ear,depmonitor,discovery - -#Jms -jms.portrange=16010,16020,16030,16040 -jms.topics=sampleTopic,InvoiceTopic -jms.queues=sampleQueue,OrderApprovalQueue,OrdersQueue,MailCompletedOrderQueue,SupPurchaseOrderQueue,MailOrderApprovalQueue,MailQueue - -#Carol -carol.portrange=2002,2022,2032,2043 -carol.defaultprotocol=jrmp -carol.jrmpopt=false - -# Cmi service -cmi.mcastaddr=224.0.0.35 -cmi.mcastport=35467 - -# Ha service -ha.mcastaddr=224.0.0.36 -ha.mcastport=35468 - -#Web -webcontainer.httpportrange=9000,9200,9300,9400 -webcontainer.ajpportrange=9010,9011,9012,9013 -webcontainer.stickysession=false -webcontainer.mod_jkenabled=true -webcontainer.mod_jk.dir=conf/jk -webcontainer.mod_jk.lbfactorrange=1,1,1,1 -webcontainer.directorenabled=false -webcontainer.directorportrange=9996,9997,9998,9999 -webcontainer.director.lbfactorrange=1,1,1,1 -webcontainer.director.dir=director -webcontainer.cluster.name=myTomcatCluster -webcontainer.cluster.mcastaddr=228.0.0.4 -webcontainer.cluster.mcastport=45564 -webcontainer.cluster.listenportrange=4003,4004,4005,4006 -# Enable ondemand on web instances -webinstances.ondemandenabled=true -webinstances.ondemand.redirectport=0 - -#disable development mode on web instances. -webinstances.devmodeenabled=false -#enable development mode for depmonitor on ejb instances. -webinstances.depmonitor.devmodeenabled=true - -#Tomcat -webcontainer.service.defaultname=tomcat - -#disable ondemand on ejb instances -ejbinstances.ondemandenabled=false -#disable development mode on ejb instances. -ejbinstances.devmodeenabled=false -#enable development mode for depmonitor on ejb instances. -ejbinstances.depmonitor.devmodeenabled=true - -#Director -director.lib.jarfile=tomcat5.5-director.jar - -#Discovery service -discovery.sourceportrange=-1,-1,-1,-1 -discovery.greetingportrange=9899,9900,9901,9902 -discovery.mcastaddr=224.224.224.224 -discovery.mcastport=9080 -discovery.domainName=sampleClusterDomain -discovery.domainDesc=A domain for management of cluster examples. -discovery.clusterName=mycluster -discovery.clusterDesc=A cluster sample. -# specify here the node number that will be the master. By default, the feature -# is supported by a dedicated node but the file is generated in the first cluster -# member. Then it will copy to the master conf dir -discovery.masternode=1 - -#Master node when the feature is shipped by a dedicated node (default) -master.dir=master -master.nodeName=master - -#Db -db.portrange=9001,9002,9003,9004 -db.dir=db -db.nodeName=db - - -#Database -rajdbc.defaultname=hsql - -#DB connections through datasource RA - -rajdbc.hsql.user=jonas -rajdbc.hsql.password=jonas -rajdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9005/db_jonas -rajdbc.hsql.drivername=org.hsqldb.jdbcDriver -rajdbc.hsql.jndiname=jdbc_1 -rajdbc.hsql.jdbcdriverjarfile=none -rajdbc.hsql.mappername=rdb.hsql - -rajdbc.postgresql.user=jonas -rajdbc.postgresql.password=jonas -rajdbc.postgresql.url=jdbc:postgresql://localhost:5433/db_jonas -rajdbc.postgresql.drivername=org.postgresql.Driver -rajdbc.postgresql.jndiname=jdbc_1 -rajdbc.postgresql.jdbcdriverjarfile=postgresql.jar -rajdbc.postgresql.mappername=rdb.postgresql - -rajdbc.oracle.user=jonas -rajdbc.oracle.password=jonas -rajdbc.oracle.url=jdbc:oracle:thin:@localhost:1521:db_jonas -rajdbc.oracle.drivername=oracle.jdbc.driver.OracleDriver -rajdbc.oracle.jndiname=jdbc_1 -rajdbc.oracle.jdbcdriverjarfile=ojdbc5.jar -rajdbc.oracle.mappername=rdb.oracle - -rajdbc.mysql.user=root -rajdbc.mysql.password= -rajdbc.mysql.url=jdbc:mysql:http://localhost:3306/db_jonas -rajdbc.mysql.drivername=org.gjt.mm.mysql.Driver -rajdbc.mysql.jndiname=jdbc_1 -rajdbc.mysql.jdbcdriverjarfile=mysql-connector-java.jar -rajdbc.mysql.mappername=rdb.mysql - -#DB connections through datasource XML - -xmljdbc.hsql.name=jdbc_1 -xmljdbc.hsql.username=jonas -xmljdbc.hsql.password=jonas -xmljdbc.hsql.url=jdbc:hsqldb:hsql://localhost:9005/db_jonas -xmljdbc.hsql.mapper=rdb.hsql -xmljdbc.hsql.classname=org.hsqldb.jdbcDriver -xmljdbc.hsql.conteststmt=select count(1) from information_schema.system_tables -xmljdbc.hsql.connmaxage=1440 -xmljdbc.hsql.conchecklevel=2 -xmljdbc.hsql.initconpool=10 -xmljdbc.hsql.minconpool=10 -xmljdbc.hsql.maxconpool=100 -xmljdbc.hsql.maxopentime=60 -xmljdbc.hsql.maxwaiters=100 -xmljdbc.hsql.maxwaitingtime=5 -xmljdbc.hsql.pstmtmax=100 -xmljdbc.hsql.samplingperiod=100 - - -#Mail -mail.session.name=mailSession_1 -mail.mimepartds.name=mailMimePartDS_1 -mail.to=jean.dupont@ow2.org -mail.subject=test mail -mail.host=localhost - -#Wsdl -wsdl.file.name=wsdlPublishFile -wsdl.file.dir=/tmp/ - -# script -script.node.basename=node diff --git a/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.xml b/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.xml deleted file mode 100644 index 340251472f..0000000000 --- a/jonas/assemblies/configuration/src/main/resources/newjc/build-jc.xml +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/LabelValueBean.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/LabelValueBean.java deleted file mode 100644 index 1f0e9b2843..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/LabelValueBean.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * $Header$ - * $Revision: 11749 $ - * $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999-2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Struts", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.Serializable; - -/** - * Simple JavaBean to represent label-value pairs for use in collections - * that are utilized by the <form:options> tag. - * - * @author Craig R. McClanahan - * @version $Revision: 1.2 - */ - -public class LabelValueBean implements Serializable { - - // ----------------------------------------------------------- Constructors - - /** - * Construct a new LabelValueBean with the specified values. - * - * @param label The label to be displayed to the user - * @param value The value to be returned to the server - */ - public LabelValueBean(String label, String value) { - this.label = label; - this.value = value; - } - - // ------------------------------------------------------------- Properties - - /** - * The label to be displayed to the user. - */ - protected String label = null; - - public String getLabel() { - return (this.label); - } - - /** - * The value to be returned to the server. - */ - protected String value = null; - - public String getValue() { - return (this.value); - } - - // --------------------------------------------------------- Public Methods - - /** - * Return a string representation of this object. - */ - public String toString() { - StringBuffer sb = new StringBuffer("LabelValueBean["); - sb.append(this.label); - sb.append(", "); - sb.append(this.value); - sb.append("]"); - return (sb.toString()); - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelSeparatorTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelSeparatorTag.java deleted file mode 100644 index 56cba39d4e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelSeparatorTag.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Michel-Ange ANTON - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.TagSupport; - -public class PanelSeparatorTag extends TagSupport { - -// --------------------------------------------------------- Public Methods - - /** - * . - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - StringBuffer sb = new StringBuffer(); - // Render Separator - sb.append(""); - sb.append( - ""); - sb.append("
 
"); - - // Render this element to our writer - JspWriter out = pageContext.getOut(); - try { - out.print(sb.toString()); - } - catch (IOException e) { - throw new JspException("Exception in " + getClass().getName() + " doEndTag():" - + e.toString()); - } - return EVAL_PAGE; - } -} \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelTag.java deleted file mode 100644 index de2f975d47..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/PanelTag.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Michel-Ange ANTON - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.BodyTagSupport; -import javax.servlet.jsp.tagext.Tag; - -public class PanelTag extends BodyTagSupport { - -// ----------------------------------------------------- Instance Variables - - /** - * The databody that will be rendered for this table row. - */ - private String body = null; - -// --------------------------------------------------------- Public Methods - - /** - * Process the start of this tag. - * - * @exception JspException if a JSP exception has occurred - */ - public int doStartTag() - throws JspException { - // Initialize the holder for our databody text - this.body = null; - // Do no further processing for now - return (EVAL_BODY_BUFFERED); - } - - /** - * Process the body text of this tag (if any). - * - * @exception JspException if a JSP exception has occurred - */ - public int doAfterBody() - throws JspException { - String data = bodyContent.getString(); - if (data != null) { - data = data.trim(); - if (data.length() > 0) { - this.body = data; - } - } - return (SKIP_BODY); - } - - /** - * . - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - // Find our parent TabsTag instance - Tag parent = findAncestorWithClass(this, TabsTag.class); - if ((parent == null) || !(parent instanceof TabsTag)) { - throw new JspException("Must be nested in a TabsTag instance"); - } - TabsTag oTabsTag = (TabsTag) parent; - - // Register the information for the action represented by - // this action - //HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); - oTabsTag.setBody(body); - - return (EVAL_PAGE); - } - - /** - * Release all state information set by this tag. - */ - public void release() { - this.body = null; - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/RefreshTreeTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/RefreshTreeTag.java deleted file mode 100644 index 40113edfd1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/RefreshTreeTag.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - -/** - * @author Michel-Ange ANTON - */ -public class RefreshTreeTag extends WhereAreYouTag { - -// ----------------------------------------------------- Constants - -// ----------------------------------------------------- Instance Variables - -// ----------------------------------------------------- Properties - -// ----------------------------------------------------- Public Methods - - /** - * Render this instant actions control. - * - * @return Constant EVAL_PAGE - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - JspWriter out = pageContext.getOut(); - try { - render(out); - } - catch (IOException e) { - throw new JspException(e); - } - return (EVAL_PAGE); - } - -// -------------------------------------------------------- Protected Methods - - protected void render(JspWriter out) - throws IOException, JspException { - // Action to refresh associate tree - if (isTreeToRefresh() == true) { - out.print(""); - } - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabTag.java deleted file mode 100644 index 09fbe07120..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabTag.java +++ /dev/null @@ -1,344 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.net.MalformedURLException; -import java.util.Map; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.BodyTagSupport; -import javax.servlet.jsp.tagext.Tag; - -import org.apache.struts.taglib.TagUtils; - - -/** - * @author Michel-Ange ANTON - */ -public class TabTag extends BodyTagSupport { - -// ----------------------------------------------------- Instance Variables - private String m_Body = null; - private String m_Url = null; - -// ----------------------------------------------------- Properties - - private boolean selected = false; - private String href = null; - private String forward = null; - private String forwardControl = null; - /** - * Accessor Href property. - */ - public String getHref() { - return href; - } - - public void setHref(String href) { - this.href = href; - } - - /** - * Accessor Selected property. - */ - public boolean getSelected() { - return (this.selected); - } - - public void setSelected(boolean selected) { - this.selected = selected; - } - - /** - * Accessor Forward property. - */ - public String getForward() { - return forward; - } - - public void setForward(String forward) { - this.forward = forward; - } - - /** - * Accessor ForwardControl property. - */ - public String getForwardControl() { - return forwardControl; - } - - public void setForwardControl(String forwardControl) { - this.forwardControl = forwardControl; - } - - /** - * The anchor to be added to the end of the generated hyperlink. - */ - protected String anchor = null; - - public String getAnchor() { - return (this.anchor); - } - - public void setAnchor(String anchor) { - this.anchor = anchor; - } - - /** - * The link name for named links. - */ - protected String linkName = null; - - public String getLinkName() { - return (this.linkName); - } - - public void setLinkName(String linkName) { - this.linkName = linkName; - } - - /** - * The JSP bean name for query parameters. - */ - protected String name = null; - - public String getName() { - return (this.name); - } - - public void setName(String name) { - this.name = name; - } - - /** - * The context-relative page URL (beginning with a slash) to which - * this hyperlink will be rendered. - */ - protected String page = null; - - public String getPage() { - return (this.page); - } - - public void setPage(String page) { - this.page = page; - } - - /** - * The single-parameter request parameter name to generate. - */ - protected String paramId = null; - - public String getParamId() { - return (this.paramId); - } - - public void setParamId(String paramId) { - this.paramId = paramId; - } - - /** - * The single-parameter JSP bean name. - */ - protected String paramName = null; - - public String getParamName() { - return (this.paramName); - } - - public void setParamName(String paramName) { - this.paramName = paramName; - } - - /** - * The single-parameter JSP bean property. - */ - protected String paramProperty = null; - - public String getParamProperty() { - return (this.paramProperty); - } - - public void setParamProperty(String paramProperty) { - this.paramProperty = paramProperty; - } - - /** - * The single-parameter JSP bean scope. - */ - protected String paramScope = null; - - public String getParamScope() { - return (this.paramScope); - } - - public void setParamScope(String paramScope) { - this.paramScope = paramScope; - } - - /** - * The JSP bean property name for query parameters. - */ - protected String property = null; - - public String getProperty() { - return (this.property); - } - - public void setProperty(String property) { - this.property = property; - } - - /** - * The scope of the bean specified by the name property, if any. - */ - protected String scope = null; - - public String getScope() { - return (this.scope); - } - - public void setScope(String scope) { - this.scope = scope; - } - - /** - * The window target. - */ - protected String target = null; - - public String getTarget() { - return (this.target); - } - - public void setTarget(String target) { - this.target = target; - } - - /** - * Include transaction token (if any) in the hyperlink? - */ - protected boolean transaction = false; - - public boolean getTransaction() { - return (this.transaction); - } - - public void setTransaction(boolean transaction) { - this.transaction = transaction; - } - -// --------------------------------------------------------- Public Methods - - public int doStartTag() - throws JspException { - // Initialize the older body - m_Body = null; - - // Do no further processing for now - return (EVAL_BODY_BUFFERED); - } - - public int doAfterBody() - throws JspException { - String sBody = bodyContent.getString(); - if (sBody != null) { - sBody = sBody.trim(); - if (sBody.length() > 0) { - this.m_Body = sBody; - } - } - return (SKIP_BODY); - } - - /** - * Record this tab with our surrounding TabsTag instance. - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - - // Find our parent TabsTag instance - Tag parent = findAncestorWithClass(this, TabsTag.class); - if ((parent == null) || !(parent instanceof TabsTag)) { - throw new JspException("Must be nested in a TabsTag instance"); - } - TabsTag oTabs = (TabsTag) parent; - - // Generate the hyperlink URL - TagUtils tagUtils = TagUtils.getInstance(); - Map oParams = tagUtils.computeParameters(pageContext, paramId, paramName, paramProperty - , paramScope, name, property, scope, transaction); - m_Url = null; - try { - m_Url = tagUtils.computeURL(pageContext, forward, href, page, null, null, oParams, anchor, false); - } catch (MalformedURLException e) { - // none - } - // Verify forwardControl parameter - if ((m_Url == null) && (forwardControl != null) && (oTabs.isUsingWhere() == true)) { - try { - // Get the selected node - TreeControlNode oNode = oTabs.getSelectedTreeControlNode(); - if (oNode != null) { - try { - String sForward = tagUtils.computeURL(pageContext, forwardControl, null, null, null, null, null, null, false); - int iPos = oNode.getAction().indexOf("?"); - m_Url = sForward + oNode.getAction().substring(iPos); - } catch (MalformedURLException e) { - // none - } - } - } catch (Exception ex) { - // none - } - } - // Verify Url - if (m_Url == null) { - m_Url = new String(""); - } - // Verify body label - if (m_Body == null) { - m_Body = new String(""); - } - // Register the information for the action represented by - // this action - oTabs.addTab(m_Body, m_Url, selected); - - return (EVAL_PAGE); - } - - /** - * Release all state information set by this tag. - */ - public void release() { - this.m_Body = null; - this.href = null; - this.forward = null; - this.forwardControl = null; - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabsTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabsTag.java deleted file mode 100644 index 375401ddcc..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TabsTag.java +++ /dev/null @@ -1,426 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Michel-Ange ANTON - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.util.ArrayList; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - -public class TabsTag extends WhereAreYouTag { - -// ----------------------------------------------------- Constants - - private static final String s_ImageSeparator = "dot.gif"; - -// ----------------------------------------------------- Instance Variables - - private ArrayList m_LabelTabs = new ArrayList(); - private ArrayList m_HrefTabs = new ArrayList(); - private ArrayList m_SelectedTabs = new ArrayList(); - private String m_Body = null; - -// ------------------------------------------------------------- Properties - - private int widthTab = 0; - private int heightTab = 0; - private String width = "100%"; - private String height = ""; - private int widthSeparator = 3; - private int heightSeparator = 1; - private int marginPanel = 5; - private String imagesDir = null; - - /** - * Accessor WidthTab property. - */ - public int getWidthTab() { - return widthTab; - } - - public void setWidthTab(int widthTab) { - this.widthTab = widthTab; - } - - /** - * Accessor HeightTab property. - */ - public int getHeightTab() { - return heightTab; - } - - public void setHeightTab(int heightTab) { - this.heightTab = heightTab; - } - - /** - * Accessor Width property. - */ - public String getWidth() { - return width; - } - - public void setWidth(String width) { - this.width = width; - } - - /** - * Accessor Height property. - */ - public String getHeight() { - return height; - } - - /** - * Accessor Height property. - */ - public void setHeight(String height) { - this.height = height; - } - - /** - * Accessor WidthSeparator property. - */ - public int getWidthSeparator() { - return widthSeparator; - } - - public void setWidthSeparator(int widthSeparator) { - this.widthSeparator = widthSeparator; - } - - /** - * Accessor HeightSeparator property. - */ - public int getHeightSeparator() { - return heightSeparator; - } - - public void setHeightSeparator(int heightSeparator) { - this.heightSeparator = heightSeparator; - } - - /** - * Accessor MarginPanel property. - */ - public int getMarginPanel() { - return marginPanel; - } - - public void setMarginPanel(int marginPanel) { - this.marginPanel = marginPanel; - } - - /** - * Accessor ImagesDir property. - */ - public String getImagesDir() { - return imagesDir; - } - - public void setImagesDir(String imagesDir) { - this.imagesDir = imagesDir; - } - -// --------------------------------------------------------- Public Methods - - public int doStartTag() - throws JspException { - - this.m_LabelTabs.clear(); - this.m_HrefTabs.clear(); - this.m_SelectedTabs.clear(); - this.m_Body = null; - - return (EVAL_BODY_BUFFERED); - } - - /** - * Render this instant actions control. - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - JspWriter out = pageContext.getOut(); - try { - verifySelected(); - render(out); - } - catch (IOException e) { - throw new JspException(e); - } - return (EVAL_PAGE); - } - - /** - * Release all state information set by this tag. - */ - public void release() { - this.m_LabelTabs.clear(); - this.m_HrefTabs.clear(); - this.m_SelectedTabs.clear(); - this.m_Body = null; - this.width = null; - this.height = null; - this.imagesDir = null; - } - -// -------------------------------------------------------- Package Methods - - /** - * Add a new Action to the set that will be rendered by this control. - * - * @param label Localized label visible to the user - * @param selected Initial selected state of this option - * @param url URL to which control should be transferred if selected - */ - - void addTab(String ps_Label, String ps_Href, boolean ps_Selected) { - m_LabelTabs.add(ps_Label); - m_HrefTabs.add(ps_Href); - m_SelectedTabs.add(new Boolean(ps_Selected)); - } - - void setBody(String ps_Body) { - m_Body = ps_Body; - } - -// ------------------------------------------------------ Private Methods - - private void render(JspWriter out) - throws IOException, JspException { - out.println(""); - out.println(""); - out.println(""); - out.println(""); - out.println(""); - out.println(""); - out.println(""); - out.println("
"); - renderTabs(out); - out.println("
"); - renderPanel(out); - out.println("
"); - } - - private void renderPanel(JspWriter out) - throws IOException, JspException { - // Render the panel of this element - out.print(""); - out.println(""); - out.println(""); - out.println(""); - out.println("
"); - out.print(""); - out.println(""); - out.print(""); - out.println(""); - out.println("
"); - if (m_Body != null) { - out.println(m_Body); - } - out.println("
"); - out.println("
"); - } - - private void renderTabs(JspWriter out) - throws IOException, JspException { - int i = 0; - boolean bSelected = false; - StringBuffer sbLabel = null; - String sImageSep = null; - - // Prepare image separator - if (imagesDir != null) { - sImageSep = imagesDir + "/" + s_ImageSeparator; - } - else if (isUsingWhere()) { - sImageSep = getImagesRoot() + "/" + s_ImageSeparator; - } - else { - sImageSep = s_ImageSeparator; - } - // Render the beginning of this element - try { - out.println(""); - } - catch (IOException ex) { - } - - // Render each defined label tab - int n = m_LabelTabs.size(); - out.println(""); - for (i = 0; i < n; i++) { - // Init Label display - sbLabel = new StringBuffer(); - // Detect selected tab - bSelected = ((Boolean) m_SelectedTabs.get(i)).booleanValue(); - // Display begin tag - out.print(""); - - if (i < (n - 1)) { - // Separator Part - out.print(""); - // Image - out.print(""); - out.println(""); - } - } - out.println(""); - - // Render underline - out.println(""); - for (i = 0; i < n; i++) { - bSelected = ((Boolean) m_SelectedTabs.get(i)).booleanValue(); - // Label Line Part - out.print(""); - out.print(""); - out.println(""); - - // Last tab ? - if (i < (n - 1)) { - // Separator Line Part - out.print(""); - out.print(""); - out.println(""); - } - } - // Display end tag - out.println(""); - out.println("
0) { - out.print(" width=\""); - out.print(widthTab); - out.print("\""); - sbLabel.append(m_LabelTabs.get(i)); - } - else { - sbLabel.append(" "); - sbLabel.append(m_LabelTabs.get(i)); - sbLabel.append(" "); - } - out.print(" class=\""); - if (bSelected == true) { - out.print("tabSelect"); - } - else { - out.print("tab"); - } - out.print("\""); - // Height tab - if (heightTab > 0) { - out.print(" height=\""); - out.print(heightTab); - out.print("\""); - } - out.print(">"); - - // Display label - if ((bSelected == true) || (m_HrefTabs.get(i).toString().length() == 0)) { - // Simple label - out.print(sbLabel.toString()); - } - else { - // Link label - out.print(""); - out.print(sbLabel.toString()); - out.print(""); - } - out.println("
"); - } - - /** - * Verify if one tab is selected else select the first. - */ - private void verifySelected() { - boolean bFound = false; - for (int i = 0; i < m_SelectedTabs.size(); i++) { - if (bFound == true) { - // unselect all next if one is found - m_SelectedTabs.set(i, new Boolean(false)); - } - else { - // detect the first selected - bFound = ((Boolean) m_SelectedTabs.get(i)).booleanValue(); - } - } - if ((bFound == false) && (m_SelectedTabs.size() > 0)) { - m_SelectedTabs.set(0, new Boolean(true)); - } - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TitleContentTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TitleContentTag.java deleted file mode 100644 index 1eb1c8762a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TitleContentTag.java +++ /dev/null @@ -1,330 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.util.ArrayList; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - - - -/** - * @author Michel-Ange ANTON - */ -public class TitleContentTag extends WhereAreYouTag { - -// ----------------------------------------------------- Constants - -// ----------------------------------------------------- Instance Variables - - protected String m_Body = null; - -// ------------------------------------------------------------- Properties - private String image = null; - private String title = null; - private boolean usingParent = false; - private boolean tomThumb = false; - private boolean tomThumbIcons = false; - - public String getImage() { - return image; - } - - public void setImage(String image) { - this.image = image; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public boolean isUsingParent() { - return usingParent; - } - - public void setUsingParent(boolean usingParent) { - this.usingParent = usingParent; - } - - public boolean isTomThumb() { - return tomThumb; - } - - public void setTomThumb(boolean tomThumb) { - this.tomThumb = tomThumb; - } - - public boolean isTomThumbIcons() { - return tomThumbIcons; - } - - public void setTomThumbIcons(boolean tomThumbIcons) { - this.tomThumbIcons = tomThumbIcons; - } - -// --------------------------------------------------------- Public Methods - - /** - * Render this instant actions control. - * - * @return Constant EVAL_PAGE - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - JspWriter out = pageContext.getOut(); - try { - render(out); - } - catch (IOException e) { - throw new JspException(e); - } - return (EVAL_PAGE); - } - - public int doAfterBody() - throws JspException { - String sBody = bodyContent.getString(); - if (sBody != null) { - sBody = sBody.trim(); - if (sBody.length() > 0) { - this.m_Body = sBody; - } - } - return (SKIP_BODY); - } - - /** - * Release all state information set by this tag. - */ - public void release() { - this.image = null; - this.title = null; - m_Body = null; - } - -// -------------------------------------------------------- Protected Methods - - protected void render(JspWriter out) - throws IOException, JspException { - String sImageDisplay = null; - String sTitleDisplay = null; - ArrayList alTomThumb = null; - //String sThumbDisplay = null; - - // Prepare WhereAreYou infos - if (isUsingWhere()) { - TreeControlNode oNode = getSelectedTreeControlNode(); - if (oNode != null) { - sImageDisplay = getImagesRoot() + "/" + oNode.getIcon(); - sTitleDisplay = oNode.getLabel(); - // Prepare label of parent node - if (isUsingParent() == true) { - TreeControlNode oParent = oNode.getParent(); - if (oParent != null) { - sTitleDisplay = oParent.getLabel() + " : " + oNode.getLabel(); - } - } - // Prepare Tom Thumb list - if (isTomThumb() == true) { - alTomThumb = getTomThumbList(oNode); - } - } - } - // Prepare parameters - if (image != null) { - sImageDisplay = image; - } - if (title != null) { - sTitleDisplay = title; - } - if (m_Body != null) { - sTitleDisplay = m_Body; - m_Body = null; - } - // Display - if ((sImageDisplay != null) || (sTitleDisplay != null)) { - String sTomThumb = null; - // Build Tom Thumb display - if (alTomThumb != null) { - if (alTomThumb.size() > 0) { - sTomThumb = renderTomThumb(alTomThumb); - } - } - // Display Tom Thumb - if (sTomThumb != null) { - out.println( - ""); - out.print(""); - out.print(""); - out.println(""); - } - else { - // No Tom Thumb to display - out.println( - "
"); - out.print(sTomThumb); - out.print("
"); - } - // Display icon - out.println(""); - if (sImageDisplay != null) { - out.print(""); - out.println(""); - } - // Display title - if (sTitleDisplay != null) { - out.print(""); - } - out.println(""); - out.println("
 "); - out.print(sTitleDisplay); - out.println("
"); - } - } - - protected String renderTomThumb(ArrayList p_TomThumb) { - StringBuffer sb = new StringBuffer(); - ItemTomThumb oThumb; - for (int i = p_TomThumb.size() - 1; i >= 0; i--) { - oThumb = (ItemTomThumb) p_TomThumb.get(i); - if (oThumb.getLink() != null) { - sb.append("
"); - if ((isTomThumbIcons()== true) && (oThumb.getIcon() != null)) { - sb.append(" "); - } - sb.append(oThumb.getLabel()); - sb.append(""); - } - else { - if ((isTomThumbIcons()== true) && (oThumb.getIcon() != null)) { - sb.append(" "); - } - sb.append(""); - sb.append(oThumb.getLabel()); - sb.append(""); - } - if (i > 0) { - sb.append(" > "); - } - } - return sb.toString(); - } - - protected ArrayList getTomThumbList(TreeControlNode p_Node) { - TreeControlNode oParent; - ItemTomThumb oThumb; - - TreeControlNode oNode = p_Node; - ArrayList alTomThumb = new ArrayList(); - // Loop on each parent - do { - // Get parent - oParent = oNode.getParent(); - // Verify parent exist - if (oParent != null) { - // Verify parent is not empty or root node - if (("ROOT-NODE".equalsIgnoreCase(oParent.getName()) == false) && (oParent.getLabel() != null)) { - // Get Thumb infos - oThumb = new ItemTomThumb(); - oThumb.setLabel(oParent.getLabel()); - oThumb.setIcon(oParent.getIcon()); - if (oParent.getAction() != null) { - oThumb.setLink(((HttpServletResponse) pageContext.getResponse()).encodeURL((( - HttpServletRequest) pageContext.getRequest()).getContextPath() + "/" - + oParent.getAction())); - } - // Add to thumb's list - alTomThumb.add(oThumb); - } - } - // Next parent - oNode = oParent; - } - while (oParent != null); - - return alTomThumb; - } - - class ItemTomThumb { - private String label = null; - private String link = null; - private String icon = null; - - public ItemTomThumb() { - - } - - public ItemTomThumb(String p_Label, String p_Link, String p_Icon) { - setLabel(p_Label); - setLink(p_Link); - setIcon(p_Icon); - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getIcon() { - return icon; - } - - public void setIcon(String icon) { - this.icon = icon; - } - - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeBuilder.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeBuilder.java deleted file mode 100644 index 2795a906f3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeBuilder.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Header$ - * $Revision: 11749 $ - * $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -package org.ow2.jonas.webapp.taglib; - -/** - *

Interface for Admin Tree Controller to build plugin components - * into the tree - * - * @author Jazmin Jonson - * @version - */ - -import javax.servlet.http.HttpServletRequest; - -import org.apache.struts.action.ActionServlet; - - - -public interface TreeBuilder { - public void buildTree(TreeControl treeControl, ActionServlet servlet - , HttpServletRequest request); -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControl.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControl.java deleted file mode 100644 index 76dfcfe627..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControl.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - * $Header$ - * $Revision: 11749 $ - * $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.Serializable; -import java.util.HashMap; - -/** - *

The overall data structure representing a tree control - * that can be rendered by the TreeControlTag custom tag. - * Each node of the tree is represented by an instance of - * TreeControlNode.

- * - * @author Jazmin Jonson - * @author Craig R. McClanahan - * @version $Revision: 1.4 - */ - -public class TreeControl implements Serializable { - public static final String ID_PREFIX = "treenode"; - -// ----------------------------------------------------------- Constructors - - /** - * Construct a new instance with no predefined root node. - */ - public TreeControl() { - super(); - setRoot(null); - } - - /** - * Construct a new instance with the specified root node. - * - * @param root The new root node - */ - public TreeControl(TreeControlNode root) { - super(); - setRoot(root); - } - -// ----------------------------------------------------- Instance Variables - - /** - * The collection of nodes that represent this tree, keyed by name. - */ - protected HashMap registry = new HashMap(); - - /** - * The most recently selected node. - */ - protected TreeControlNode selected = null; - - // Id - protected int mi_Id = 0; - -// ------------------------------------------------------------- Properties - - /** - * The root node of the entire tree. - */ - protected TreeControlNode root = null; - - public TreeControlNode getRoot() { - return (this.root); - } - - protected void setRoot(TreeControlNode root) { - if (this.root != null) { - removeNode(this.root); - } - if (root != null) { - addNode(root); - } - root.setLast(true); - this.root = root; - } - - /** - * The current displayable "width" of this tree (that is, the maximum - * depth of the visible part of the tree). - */ - public int getWidth() { - if (root == null) { - return (0); - } - else { - return (getWidth(root)); - } - } - -// --------------------------------------------------------- Public Methods - - /** - * Find and return the TreeControlNode for the specified - * node name, if it exists; otherwise, return null. - * - * @param name Name of the TreeControlNode to be returned - */ - public TreeControlNode findNode(String name) { - synchronized (registry) { - return ((TreeControlNode) registry.get(name)); - } - } - - /** - * Mark the specified node as the one-and-only currently selected one, - * deselecting any previous node that was so marked. - * - * @param node Name of the node to mark as selected, or null - * if there should be no currently selected node - */ - public void selectNode(String name) { - if (selected != null) { - selected.setSelected(false); - selected = null; - } - selected = findNode(name); - if (selected != null) { - selected.setSelected(true); - } - } - - /** - * Get the last node selected. - * - * @return the current node selected - */ - public TreeControlNode getSelected() { - return selected; - } - - /** - * Expand a branch in the tree of the selected node. - */ - public void expandSelectedParents() { - TreeControlNode oCur = getSelected(); - while (oCur != null){ - oCur = oCur.getParent(); - if (oCur != null) { - oCur.setExpanded(true); - } - } - } - - public String newId() { - StringBuffer sbRet = new StringBuffer(ID_PREFIX); - sbRet.append(mi_Id); - mi_Id++; - return sbRet.toString(); - } - -// -------------------------------------------------------- Package Methods - - /** - * Register the specified node in our registry of the complete tree. - * - * @param node The TreeControlNode to be registered - * - * @exception IllegalArgumentException if the name of this node - * is not unique - */ - void addNode(TreeControlNode node) - throws IllegalArgumentException { - synchronized (registry) { - String name = node.getName(); - if (registry.containsKey(name)) { - throw new IllegalArgumentException("Name '" + name + "' is not unique"); - } - node.setTree(this); - registry.put(name, node); - // Refresh expand info - autoRefresh(node); - } - } - - /** - * Calculate the width of the subtree below the specified node. - * - * @param node The node for which to calculate the width - */ - int getWidth(TreeControlNode node) { - int width = node.getWidth(); - if (!node.isExpanded()) { - return (width); - } - TreeControlNode children[] = node.findChildren(); - for (int i = 0; i < children.length; i++) { - int current = getWidth(children[i]); - if (current > width) { - width = current; - } - } - return (width); - } - - /** - * Deregister the specified node, as well as all child nodes of this - * node, from our registry of the complete tree. If this node is not - * present, no action is taken. - * - * @param node The TreeControlNode to be deregistered - */ - void removeNode(TreeControlNode node) { - synchronized (registry) { - TreeControlNode children[] = node.findChildren(); - for (int i = 0; i < children.length; i++) { - removeNode(children[i]); - } - TreeControlNode parent = node.getParent(); - if (parent != null) { - parent.removeChild(node); - } - node.setParent(null); - node.setTree(null); - if (node == this.root) { - this.root = null; - } - registry.remove(node.getName()); - // Save removed node in list - addRemovedList(node); - } - } - - /** - * List to save removed node used by the auto-refresh mode. - * - */ - private HashMap m_RemovedList = null; - - /** - * Disable auto-refresh mode. - */ - public void disableAutoRefresh() { - if (m_RemovedList != null) { - m_RemovedList.clear(); - } - m_RemovedList = null; - } - - /** - * Enable auto-refresh mode. - * When a set of children are refreshed (removed then added), - * the expanded info is copied of the removed node to the added node. - * The name is used to retreive the good node. - * By default, the auto-refresh mode is disabled. - * Be careful, enabled this mode before the remove of all nodes and - * disabled it after the add. - */ - public void enableAutoRefresh() { - m_RemovedList = new HashMap(); - } - - /** - * Add the removed node in the removed list. - * - * @param p_RemovedNode The removed node - */ - void addRemovedList(TreeControlNode p_RemovedNode) { - if (m_RemovedList != null) { - m_RemovedList.put(p_RemovedNode.getName(), p_RemovedNode); - } - } - - /** - * Search the added node in the removed list and if it's found, copy the expanded info. - * - * @param p_AddedNode The added node - */ - protected void autoRefresh(TreeControlNode p_AddedNode) { - if (m_RemovedList != null) { - TreeControlNode oRemove = (TreeControlNode) m_RemovedList.get(p_AddedNode.getName()); - if (oRemove != null) { - p_AddedNode.setExpanded(oRemove.isExpanded()); - } - } - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlNode.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlNode.java deleted file mode 100644 index 6e19d53fd8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlNode.java +++ /dev/null @@ -1,399 +0,0 @@ -/* - * $Header$ - * $Revision: 11749 $ - * $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.Serializable; -import java.util.ArrayList; - - -/** - *

An individual node of a tree control represented by an instance of - * TreeControl, and rendered by an instance of - * TreeControlTag.

- * - * @author Jazmin Jonson - * @author Craig R. McClanahan - * @version $Revision: 11749 $ - */ - -public class TreeControlNode implements Serializable { - -// ----------------------------------------------------------- Constructors - - /** - * Construct a new TreeControlNode with the specified parameters. - * - * @param name Internal name of this node (must be unique within - * the entire tree) - * @param icon Pathname of the image file for the icon to be displayed - * when this node is visible, relative to the image directory - * for our images - * @param label The label that will be displayed to the user if - * this node is visible - * @param action The hyperlink to be selected if the user - * selects this node, or null if this node's label should - * not be a hyperlink - * @param target The window target in which the action - * hyperlink's results will be displayed, or null for - * the current window - * @param expanded Should this node be expanded? - */ - public TreeControlNode(String name, String icon, String label, String action, String target - , boolean expanded) { - - super(); - this.name = name; - this.icon = icon; - this.label = label; - this.action = action; - this.target = target; - this.expanded = expanded; - - } - - public TreeControlNode(TreeControlNode p_Node) { - super(); - this.name = p_Node.getName(); - this.icon = p_Node.getIcon(); - this.label = p_Node.getLabel(); - this.action = p_Node.getAction(); - this.target = p_Node.getTarget(); - this.expanded = p_Node.isExpanded(); - } - -// ----------------------------------------------------- Instance Variables - - /** - * The set of child TreeControlNodes for this node, in the - * order that they should be displayed. - */ - protected ArrayList children = new ArrayList(); - -// ------------------------------------------------------------- Properties - - /** - * The hyperlink to which control will be directed if this node - * is selected by the user. - */ - protected String action = null; - - public String getAction() { - return (this.action); - } - - /** - * Is this node currently expanded? - */ - protected boolean expanded = false; - - public boolean isExpanded() { - return (this.expanded); - } - - public void setExpanded(boolean expanded) { - this.expanded = expanded; - } - - /** - * The pathname to the icon file displayed when this node is visible, - * relative to the image directory for our images. - */ - protected String icon = null; - - public String getIcon() { - return (this.icon); - } - - /** - * The label that will be displayed when this node is visible. - */ - protected String label = null; - - public String getLabel() { - return (this.label); - } - - /** - * Is this the last node in the set of children for our parent node? - */ - protected boolean last = false; - - public boolean isLast() { - return (this.last); - } - - void setLast(boolean last) { - this.last = last; - } - - /** - * Is this a "leaf" node (i.e. one with no children)? - */ - public boolean isLeaf() { - synchronized (children) { - return (children.size() < 1); - } - } - - /** - * The unique (within the entire tree) name of this node. - */ - protected String name = null; - - public String getName() { - return (this.name); - } - - /** - * The parent node of this node, or null if this - * is the root node. - */ - protected TreeControlNode parent = null; - - public TreeControlNode getParent() { - return (this.parent); - } - - void setParent(TreeControlNode parent) { - this.parent = parent; - if (parent == null) { - width = 1; - } - else { - width = parent.getWidth() + 1; - } - } - - /** - * Is this node currently selected? - */ - protected boolean selected = false; - - public boolean isSelected() { - return (this.selected); - } - - public void setSelected(boolean selected) { - this.selected = selected; - } - - /** - * The window target for the hyperlink identified by the - * action property, if this node is selected - * by the user. - */ - protected String target = null; - - public String getTarget() { - return (this.target); - } - - /** - * The TreeControl instance representing the - * entire tree. - */ - protected TreeControl tree = null; - - public TreeControl getTree() { - return (this.tree); - } - - void setTree(TreeControl tree) { - this.tree = tree; - } - - /** - * The display width necessary to display this item (if it is visible). - * If this item is not visible, the calculated width will be that of our - * most immediately visible parent. - */ - protected int width = 0; - - public int getWidth() { - return (this.width); - } - -// --------------------------------------------------------- Public Methods - - /** - * Add a new child node to the end of the list. - * - * @param child The new child node - * - * @exception IllegalArgumentException if the name of the new child - * node is not unique - */ - public void addChild(TreeControlNode child) - throws IllegalArgumentException { - - tree.addNode(child); - child.setParent(this); - synchronized (children) { - int n = children.size(); - if (n > 0) { - TreeControlNode node = (TreeControlNode) children.get(n - 1); - node.setLast(false); - } - child.setLast(true); - children.add(child); - } - - } - - /** - * Add a new child node at the specified position in the child list. - * - * @param offset Zero-relative offset at which the new node - * should be inserted - * @param child The new child node - * - * @exception IllegalArgumentException if the name of the new child - * node is not unique - */ - public void addChild(int offset, TreeControlNode child) - throws IllegalArgumentException { - - tree.addNode(child); - child.setParent(this); - synchronized (children) { - children.add(offset, child); - } - - } - - /** - * Return the set of child nodes for this node. - */ - public TreeControlNode[] findChildren() { - - synchronized (children) { - TreeControlNode results[] = new TreeControlNode[children.size()]; - return ((TreeControlNode[]) children.toArray(results)); - } - - } - - /** - * Remove this node from the tree. - */ - public void remove() { - - if (tree != null) { - tree.removeNode(this); - } - - } - - /** - * Remove the child node (and all children of that child) at the - * specified position in the child list. - * - * @param offset Zero-relative offset at which the existing - * node should be removed - */ - public void removeChild(int offset) { - - synchronized (children) { - TreeControlNode child = (TreeControlNode) children.get(offset); - tree.removeNode(child); - child.setParent(null); - children.remove(offset); - } - - } - - - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append(getName()); - sb.append(" - "); - sb.append(isExpanded()); - - return sb.toString(); - } - -// -------------------------------------------------------- Package Methods - - /** - * Remove the specified child node. It is assumed that all of the - * children of this child node have already been removed. - * - * @param child Child node to be removed - */ - void removeChild(TreeControlNode child) { - - if (child == null) { - return; - } - synchronized (children) { - int n = children.size(); - for (int i = 0; i < n; i++) { - if (child == (TreeControlNode) children.get(i)) { - children.remove(i); - return; - } - } - } - - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlRenderTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlRenderTag.java deleted file mode 100644 index ef0d9d76c6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlRenderTag.java +++ /dev/null @@ -1,375 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Michel-Ange ANTON - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.net.URLEncoder; - -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; - - - - - -public class TreeControlRenderTag extends TreeControlTag { - /** - * The names of tree state images that we need. - */ - static final String IMAGE_NODE_OPEN = "node_open.gif"; - static final String IMAGE_NODE_OPEN_FIRST = "node_open_first.gif"; - static final String IMAGE_NODE_OPEN_MIDDLE = "node_open_middle.gif"; - static final String IMAGE_NODE_OPEN_LAST = "node_open_last.gif"; - static final String IMAGE_NODE_CLOSE = "node_close.gif"; - static final String IMAGE_NODE_CLOSE_FIRST = "node_close_first.gif"; - static final String IMAGE_NODE_CLOSE_MIDDLE = "node_close_middle.gif"; - static final String IMAGE_NODE_CLOSE_LAST = "node_close_last.gif"; - static final String IMAGE_BLANK = "noline.gif"; - static final String IMAGE_LINE_FIRST = "line_first.gif"; - static final String IMAGE_LINE_LAST = "line_last.gif"; - static final String IMAGE_LINE_MIDDLE = "line_middle.gif"; - static final String IMAGE_LINE_VERTICAL = "line.gif"; - -// --------------------------------------------------------- Instance Variables - - /** - * Flag who indicate when the first node is rendered. - */ - private boolean mb_FirstNodeRendered; - private int mi_MaxChar; - -// --------------------------------------------------------- Public Methods - - /** - * Render this tree control. - * - * @exception JspException if a processing error occurs - */ - @Override - public int doEndTag() - throws JspException { - /* - mb_FirstNodeRendered = false; - return super.doEndTag(); - */ - - TreeControl treeControl = getTreeControl(); - JspWriter out = pageContext.getOut(); - try { - out.print(""); - int level = 0; - mb_FirstNodeRendered = false; - mi_MaxChar = 0; - TreeControlNode node = treeControl.getRoot(); - render(out, node, level, treeControl.getWidth(), true); - - // Avoid bug Netscape 4 - out.print(""); - for (int i = 0; i < treeControl.getWidth() + 2; i++) { - out.print(""); - } - StringBuffer sb = new StringBuffer(""); - out.print(sb.toString()); - out.println(""); - - out.println("
"); - for (int i = 0; i < (mi_MaxChar + 1); i++) { - sb.append("  "); - } - sb.append("
"); - } - catch (IOException e) { - throw new JspException(e); - } - return (EVAL_PAGE); - - } - -// ------------------------------------------------------ Protected Methods - - /** - * Render the specified node, as controlled by the specified parameters. - * - * @param out The JspWriter to which we are writing - * @param node The TreeControlNode we are currently - * rendering - * @param level The indentation level of this node in the tree - * @param width Total displayable width of the tree - * @param last Is this the last node in a list? - * - * @exception IOException if an input/output error occurs - */ - @Override - protected void render(final JspWriter out, final TreeControlNode node, final int level, final int width, final boolean last) - throws IOException { - HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); - - // if the node is root node and the label value is - // null, then do not render root node in the tree. - - if ("ROOT-NODE".equalsIgnoreCase(node.getName()) && (node.getLabel() == null)) { - // Render the children of this node - TreeControlNode children[] = node.findChildren(); - int firstIndex = children.length - 1; - int lastIndex = children.length - 1; - int newLevel = level + 1; - for (int i = 0; i < children.length; i++) { - render(out, children[i], newLevel, width, i == lastIndex); - } - return; - } - - // Render the beginning of this node - out.println(" "); - - // Create the appropriate number of indents - for (int i = 0; i < level; i++) { - int levels = level - i; - TreeControlNode parent = node; - for (int j = 1; j <= levels; j++) { - if (parent.getParent() != null) { - parent = parent.getParent(); - } - } - if (parent.isLast()) { - out.print(" "); - } - else { - out.print(" "); - } - out.println(); - } - - // Render the tree state image for this node - - // HACK to take into account special characters like = and & - // in the node name, could remove this code if encode URL - // and later request.getParameter() could deal with = and & - // character in parameter values. - String encodedNodeName = URLEncoder.encode(node.getName(),"UTF-8"); - - String action = replace(getAction(), "${name}", encodedNodeName); - - String updateTreeAction = replace(getAction(), "tree=${name}", "select=" + encodedNodeName); - updateTreeAction = ((HttpServletResponse) pageContext.getResponse()).encodeURL( - updateTreeAction); - - out.print(" "); - if ((action != null) && !node.isLeaf()) { - out.print(""); - } - out.print(""); - if ((action != null) && !node.isLeaf()) { - out.print(""); - } - out.println(""); - - // Calculate the hyperlink for this node (if any) - String hyperlink = null; - if (node.getAction() != null) { - hyperlink = ((HttpServletResponse) pageContext.getResponse()).encodeURL(node.getAction()); - } - - // Render the icon for this node (if any) - out.print(" "); - - // Anchor name - out.print(""); - - if (node.getIcon() != null) { - if (hyperlink != null) { - out.print(""); - } - out.print(""); - if (hyperlink != null) { - out.print(""); - } - } - out.println(""); - - // Render the label for this node (if any) - int iColspan = width - level + 1; - if (iColspan > 1) { - out.print(" "); - } - else { - out.print(" "); - } - if (node.getLabel() != null) { - if (node.getLabel().length() > mi_MaxChar) { - mi_MaxChar = node.getLabel().length(); - } - // Note the leading space so that the text has some space - // between it and any preceding images - out.print(" "); - String labelStyle = null; - if (node.isSelected() && (styleSelected != null)) { - labelStyle = styleSelected; - } - else if (!node.isSelected() && (styleUnselected != null)) { - labelStyle = styleUnselected; - } - if (hyperlink != null) { - out.print(""); - } - else if (labelStyle != null) { - out.print(""); - } - out.print(node.getLabel()); - if (hyperlink != null) { - out.print(""); - } - else if (labelStyle != null) { - out.print(""); - } - } - out.println(""); - - // Render the end of this node - out.println(" "); - // Remember the first node is rendered - mb_FirstNodeRendered = true; - - // Render the children of this node - if (node.isExpanded()) { - TreeControlNode children[] = node.findChildren(); - int lastIndex = children.length - 1; - int newLevel = level + 1; - for (int i = 0; i < children.length; i++) { - render(out, children[i], newLevel, width, i == lastIndex); - } - } - - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlTag.java deleted file mode 100644 index 2f1d4ebcb2..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/TreeControlTag.java +++ /dev/null @@ -1,557 +0,0 @@ -/* - * $Header$ - * $Revision: 11749 $ - * $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.net.URLEncoder; - -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.TagSupport; - - -/** - *

JSP custom tag that renders a tree control represented by the - * TreeControl and TreeControlNode classes. - * This tag has the following user-settable attributes:

- *
    - *
  • action - Hyperlink to which expand/contract actions - * should be sent, with a string "${node} marking where - * the node name of the affected node should be included.
  • - *
  • images - Name of the directory containing the images - * for our icons, relative to the page including this tag. If not - * specified, defaults to "images".
  • - *
  • scope - Attribute scope in which the tree - * attribute is to be found (page, request, session, application). If - * not specified, the attribute is searched for in all scopes.
  • - *
  • style - CSS style class to be applied - * to be applied to the entire rendered output of the tree control. - * If not specified, no style class is applied.
  • - *
  • styleSelected - CSS style class to be - * applied to the text of any element that is currently selected. If not - * specified, no additional style class is applied.
  • - *
  • styleUnselected - CSS style class to be - * applied to the text of any element that is not currently selected. - * If not specified, no additional style class is applied.
  • - *
  • tree - Attribute name under which the - * TreeControl bean of the tree we are rendering - * is stored, in the scope specified by the scope - * attribute. This attribute is required.
  • - *
- * - * FIXME - Internationalize the exception messages! - * - * @author Craig R. McClanahan - * @version $Revision: 11749 $ $Date: 2007-10-08 11:47:44 +0200 (lun 08 oct 2007) $ - */ - -public class TreeControlTag extends TagSupport { - - /** - * The default directory name for icon images. - */ - static final String DEFAULT_IMAGES = "images"; - - /** - * The names of tree state images that we need. - */ - static final String IMAGE_HANDLE_DOWN_LAST = "handledownlast.gif"; - static final String IMAGE_HANDLE_DOWN_MIDDLE = "handledownmiddle.gif"; - static final String IMAGE_HANDLE_RIGHT_LAST = "handlerightlast.gif"; - static final String IMAGE_HANDLE_RIGHT_MIDDLE = "handlerightmiddle.gif"; - static final String IMAGE_LINE_LAST = "linelastnode.gif"; - static final String IMAGE_LINE_MIDDLE = "linemiddlenode.gif"; - static final String IMAGE_LINE_VERTICAL = "linevertical.gif"; - -// ------------------------------------------------------------- Properties - - /** - * The hyperlink to be used for submitting requests to expand and - * contract tree nodes. The placeholder "${name}" will - * be replaced by the name property of the current - * tree node. - */ - protected String action = null; - - public String getAction() { - return (this.action); - } - - public void setAction(String action) { - this.action = action; - } - - /** - * The name of the directory containing the images for our icons, - * relative to the page including this tag. - */ - protected String images = DEFAULT_IMAGES; - - public String getImages() { - return (this.images); - } - - public void setImages(String images) { - this.images = images; - } - - /** - * The name of the scope in which to search for the tree - * attribute. Must be "page", "request", "session", or "application" - * (or null for an ascending-visibility search). - */ - protected String scope = null; - - public String getScope() { - return (this.scope); - } - - public void setScope(String scope) { - if (!"page".equals(scope) && !"request".equals(scope) && !"session".equals(scope) - && !"application".equals(scope)) { - throw new IllegalArgumentException("Invalid scope '" + scope + "'"); - } - this.scope = scope; - } - - /** - * The CSS style class to be applied to the entire tree. - */ - protected String style = null; - - public String getStyle() { - return (this.style); - } - - public void setStyle(String style) { - this.style = style; - } - - /** - * The CSS style class to be applied to the text - * of selected nodes. - */ - protected String styleSelected = null; - - public String getStyleSelected() { - return (this.styleSelected); - } - - public void setStyleSelected(String styleSelected) { - this.styleSelected = styleSelected; - } - - /** - * The CSS style class to be applied to the text - * of unselected nodes. - */ - protected String styleUnselected = null; - - public String getStyleUnselected() { - return (this.styleUnselected); - } - - public void setStyleUnselected(String styleUnselected) { - this.styleUnselected = styleUnselected; - } - - /** - * The name of the attribute (in the specified scope) under which our - * TreeControl instance is stored. - */ - protected String tree = null; - - public String getTree() { - return (this.tree); - } - - public void setTree(String tree) { - this.tree = tree; - } - -// --------------------------------------------------------- Public Methods - - /** - * Render this tree control. - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - - TreeControl treeControl = getTreeControl(); - JspWriter out = pageContext.getOut(); - try { - out.print(""); - int level = 0; - TreeControlNode node = treeControl.getRoot(); - render(out, node, level, treeControl.getWidth(), true); - out.println("
"); - } - catch (IOException e) { - throw new JspException(e); - } - - return (EVAL_PAGE); - - } - - /** - * Release all state information set by this tag. - */ - public void release() { - - this.action = null; - this.images = DEFAULT_IMAGES; - this.scope = null; - this.style = null; - this.styleSelected = null; - this.styleUnselected = null; - this.tree = null; - - } - -// ------------------------------------------------------ Protected Methods - - /** - * Return the TreeControl instance for the tree control that - * we are rendering. - * - * @exception JspException if no TreeControl instance can be found - */ - protected TreeControl getTreeControl() - throws JspException { - - Object treeControl = null; - if (scope == null) { - treeControl = pageContext.findAttribute(tree); - } - else if ("page".equals(scope)) { - treeControl = pageContext.getAttribute(tree, PageContext.PAGE_SCOPE); - } - else if ("request".equals(scope)) { - treeControl = pageContext.getAttribute(tree, PageContext.REQUEST_SCOPE); - } - else if ("session".equals(scope)) { - treeControl = pageContext.getAttribute(tree, PageContext.SESSION_SCOPE); - } - else if ("application".equals(scope)) { - treeControl = pageContext.getAttribute(tree, PageContext.APPLICATION_SCOPE); - } - if (treeControl == null) { - throw new JspException("Cannot find tree control attribute '" + tree + "'"); - } - else if (!(treeControl instanceof TreeControl)) { - throw new JspException("Invalid tree control attribute '" + tree + "'"); - } - else { - return ((TreeControl) treeControl); - } - - } - - /** - * Render the specified node, as controlled by the specified parameters. - * - * @param out The JspWriter to which we are writing - * @param node The TreeControlNode we are currently - * rendering - * @param level The indentation level of this node in the tree - * @param width Total displayable width of the tree - * @param last Is this the last node in a list? - * - * @exception IOException if an input/output error occurs - */ - protected void render(JspWriter out, TreeControlNode node, int level, int width, boolean last) - throws IOException { - - HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); - - // if the node is root node and the label value is - // null, then do not render root node in the tree. - - if ("ROOT-NODE".equalsIgnoreCase(node.getName()) && (node.getLabel() == null)) { - // Render the children of this node - TreeControlNode children[] = node.findChildren(); - int lastIndex = children.length - 1; - int newLevel = level + 1; - for (int i = 0; i < children.length; i++) { - render(out, children[i], newLevel, width, i == lastIndex); - } - return; - } - - // Render the beginning of this node - out.println(" "); - - // Create the appropriate number of indents - for (int i = 0; i < level; i++) { - int levels = level - i; - TreeControlNode parent = node; - for (int j = 1; j <= levels; j++) { - parent = parent.getParent(); - } - if (parent.isLast()) { - out.print(" "); - } - else { - out.print(" "); - } - out.println(); - } - - // Render the tree state image for this node - - // HACK to take into account special characters like = and & - // in the node name, could remove this code if encode URL - // and later request.getParameter() could deal with = and & - // character in parameter values. - String encodedNodeName = URLEncoder.encode(node.getName(),"UTF-8"); - - String action = replace(getAction(), "${name}", encodedNodeName); - - String updateTreeAction = replace(getAction(), "tree=${name}", "select=" + encodedNodeName); - updateTreeAction = ((HttpServletResponse) pageContext.getResponse()).encodeURL( - updateTreeAction); - - out.print(" "); - if ((action != null) && !node.isLeaf()) { - out.print(""); - } - out.print(""); - if ((action != null) && !node.isLeaf()) { - out.print(""); - } - out.println(""); - - // Calculate the hyperlink for this node (if any) - String hyperlink = null; - if (node.getAction() != null) { - hyperlink = ((HttpServletResponse) pageContext.getResponse()).encodeURL(node.getAction()); - - // Render the icon for this node (if any) - } - out.print(" "); - if (node.getIcon() != null) { - if (hyperlink != null) { - out.print(""); - } - out.print(""); - if (hyperlink != null) { - out.print(""); - } - } - - // Render the label for this node (if any) - - if (node.getLabel() != null) { - String labelStyle = null; - if (node.isSelected() && (styleSelected != null)) { - labelStyle = styleSelected; - } - else if (!node.isSelected() && (styleUnselected != null)) { - labelStyle = styleUnselected; - } - if (hyperlink != null) { - // Note the leading space so that the text has some space - // between it and any preceding images - out.print(" "); - } - else if (labelStyle != null) { - out.print(""); - } - out.print(node.getLabel()); - if (hyperlink != null) { - out.print(""); - } - else if (labelStyle != null) { - out.print(""); - } - } - out.println(""); - - // Render the end of this node - out.println(" "); - - // Render the children of this node - if (node.isExpanded()) { - TreeControlNode children[] = node.findChildren(); - int lastIndex = children.length - 1; - int newLevel = level + 1; - for (int i = 0; i < children.length; i++) { - render(out, children[i], newLevel, width, i == lastIndex); - } - } - - } - - /** - * Replace any occurrence of the specified placeholder in the specified - * template string with the specified replacement value. - * - * @param template Pattern string possibly containing the placeholder - * @param placeholder Placeholder expression to be replaced - * @param value Replacement value for the placeholder - */ - protected String replace(String template, String placeholder, String value) { - - if (template == null) { - return (null); - } - if ((placeholder == null) || (value == null)) { - return (template); - } - while (true) { - int index = template.indexOf(placeholder); - if (index < 0) { - break; - } - StringBuffer temp = new StringBuffer(template.substring(0, index)); - temp.append(value); - temp.append(template.substring(index + placeholder.length())); - template = temp.toString(); - } - return (template); - - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/WhereAreYouTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/WhereAreYouTag.java deleted file mode 100644 index bd02e436dc..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/WhereAreYouTag.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.tagext.BodyTagSupport; - -import org.ow2.jonas.webapp.jonasadmin.WhereAreYou; - - -/** - * @author Michel-Ange ANTON - */ -public class WhereAreYouTag extends BodyTagSupport { - -// ----------------------------------------------------- Instance Variables - -// ----------------------------------------------------- Properties - - private boolean usingWhere = false; - - public boolean isUsingWhere() { - return usingWhere; - } - - public boolean getUsingWhere() { - return usingWhere; - } - - public void setUsingWhere(boolean usingWhere) { - this.usingWhere = usingWhere; - } - -// --------------------------------------------------------- Public Methods - - public String getSelectedNameNode() { - String sName = null; - WhereAreYou oWhere = getWhereAreYouInstance(); - if (oWhere != null) { - sName = oWhere.getSelectedNameNode(); - } - return sName; - } - - public TreeControlNode getSelectedTreeControlNode() { - TreeControlNode oNode = null; - WhereAreYou oWhere = getWhereAreYouInstance(); - if (oWhere != null) { - oNode = oWhere.getSelectedTreeControlNode(); - } - return oNode; - } - - public String getImagesRoot() { - String sImagesRoot = null; - WhereAreYou oWhere = getWhereAreYouInstance(); - if (oWhere != null) { - sImagesRoot = oWhere.getImagesRoot(); - } - return sImagesRoot; - } - - public boolean isTreeToRefresh() { - boolean bRefresh = false; - WhereAreYou oWhere = getWhereAreYouInstance(); - if (oWhere != null) { - bRefresh = oWhere.isTreeToRefresh(); - } - return bRefresh; - } - - public String getUrlToRefreshSelectedNode() { - String sUrl = null; - WhereAreYou oWhere = getWhereAreYouInstance(); - if (oWhere != null) { - sUrl = oWhere.getUrlToRefreshSelectedNode((HttpServletRequest) pageContext.getRequest() - , (HttpServletResponse) pageContext.getResponse()); - } - return sUrl; - } - -// --------------------------------------------------------- Protected Methods - - protected WhereAreYou getWhereAreYouInstance() { - return (WhereAreYou) pageContext.getSession().getAttribute(WhereAreYou.SESSION_NAME); - } -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XMLEditorTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XMLEditorTag.java deleted file mode 100644 index 0d5deabdea..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XMLEditorTag.java +++ /dev/null @@ -1,128 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.util.Map; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.TagSupport; - -import org.ow2.jonas.webapp.jonasadmin.xml.XMLToFormUtil; -import org.w3c.dom.Document; - -/** - * A custom JSP tag to display a form view of an XML deployment descriptor. - * - * @author Gregory Lapouchnian - * @author Patrick Smith - */ -public class XMLEditorTag extends TagSupport { - - // ----------------------------------------------------- Instance Variables - - /** - * Mapping between IDs and Nodes within the Document tree. - */ - private Map mapping; - - /** - * The document to display in this tag. - */ - private Document document; - - /** - * The name of the archive from which the XML file is extracted. - */ - private String fileName; - - /** - * The path within the archive to the XML file. - */ - private String pathName; - - // ------------------------------------------------------------- Properties - - // --------------------------------------------------------- Public Methods - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public String getPathName() { - return pathName; - } - - public void setPathName(String pathName) { - this.pathName = pathName; - } - - public Document getDocument() { - return document; - } - - public void setDocument(Document xmlDocument) { - this.document = xmlDocument; - } - - public Map getMapping() { - return mapping; - } - - public void setMapping(Map mapping) { - this.mapping = mapping; - } - - public int doEndTag() throws JspException { - StringBuffer sb = new StringBuffer(); - - // get the form's HTML - XMLToFormUtil util = new XMLToFormUtil(); - String form = util.documentToForm(document, mapping); - - // make the last input field ID available to the JSP page - pageContext.setAttribute("lastNum", new Integer(util.getLastId())); - - // display the form - sb.append(form); - - // Render this element to our writer - JspWriter out = pageContext.getOut(); - try { - out.print(sb.toString()); - } catch (IOException e) { - throw new JspException("Exception in " + getClass().getName() - + " doEndTag():" + e.toString()); - } - return EVAL_PAGE; - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XmlFileTag.java b/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XmlFileTag.java deleted file mode 100644 index 2d0f04a0e6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/java/org/ow2/jonas/webapp/taglib/XmlFileTag.java +++ /dev/null @@ -1,407 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.webapp.taglib; - -import java.io.IOException; -import java.util.StringTokenizer; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.BodyTagSupport; - -/** - * @author Michel-Ange ANTON - */ -public class XmlFileTag extends BodyTagSupport { - -// ----------------------------------------------------- Constants - private static final int NONE = 0; - private static final int HEADER = 1; - private static final int ELEMENT = 2; - private static final int ELEMENT_AUTO_CLOSE = 3; - private static final int ELEMENT_CLOSE = 4; - private static final int COMMENT = 5; - private static final int TEXT = 6; -// ----------------------------------------------------- Instance Variables - - protected String m_Body = null; - protected int m_LastPrint = NONE; - protected int m_Indent = 0; - - //are we printing XML comment content - protected boolean comment = false; - -// ------------------------------------------------------------- Properties - -// --------------------------------------------------------- Public Methods - - /** - * Render this instant actions control. - * - * @exception JspException if a processing error occurs - */ - public int doEndTag() - throws JspException { - JspWriter out = pageContext.getOut(); - try { - String sXml = null; - // Get body - if (m_Body != null) { - sXml = m_Body; - m_Body = null; - } - // Display - if (sXml != null) { - m_LastPrint = NONE; - m_Indent = 0; - render(out, sXml, 0, sXml.length()); - } - } - catch (IOException e) { - throw new JspException(e); - } - return (EVAL_PAGE); - } - - public int doAfterBody() - throws JspException { - String sBody = bodyContent.getString(); - if (sBody != null) { - sBody = sBody.trim(); - if (sBody.length() > 0) { - this.m_Body = sBody; - } - } - return (SKIP_BODY); - } - - /** - * Release all state information set by this tag. - */ - public void release() { - m_Body = null; - } - -// -------------------------------------------------------- Protected Methods - - protected void render(JspWriter p_Out, String p_Xml, int p_Begin, int p_End) - throws IOException, JspException { - - int iCurrent = p_Begin; - int iBegin; - int iEnd; - String sElement; - String sElementWithAttr; - String sName; - char cType; - - for (; ; ) { - // Find begin element - iBegin = p_Xml.indexOf("<", iCurrent); - if ((iBegin == -1) || (iBegin >= p_End)) { - break; - } - // Find end element - iEnd = p_Xml.indexOf(">", iBegin); - if (iEnd == -1) { - break; - } - // render normal text - if (iBegin > iCurrent) { - String sText = p_Xml.substring(iCurrent, iBegin); - sText = sText.trim(); - if (sText.length() > 0) { - printText(p_Out, sText); - } - } - - // Get complete element - sElement = p_Xml.substring(iBegin, iEnd + 4); - // Detect special element (doctype, header, comment) - cType = sElement.charAt(4); - if ((cType == '!') || (cType == '?')) { - // Special element (doctype, header, comment) - if (cType == '!') { - // Detect comment - cType = sElement.charAt(5); - if (cType == '-') { - // Find actual end element - if we are dealing with comment - iEnd = p_Xml.indexOf("-->", iBegin); - if (iEnd == -1) { - break; - } - // set counter on proper value - iEnd = iEnd +2; - - // Get complete element - sElement = p_Xml.substring(iBegin, iEnd + 4); - - printComment(p_Out, sElement); - } - else { - printHeader(p_Out, sElement); - } - } - else { - printHeader(p_Out, sElement); - } - // Next - iCurrent = iEnd + 4; - } - else { - // get name of element - sElementWithAttr = sElement.substring(4, sElement.length() - 4); - sName = getNameElement(sElementWithAttr); - // Detect end element - if (sElementWithAttr.charAt(0) == '/') { - // Next - iCurrent = iEnd + 4; - break; - } - // Detect auto-end element - else if (sElementWithAttr.charAt(sElementWithAttr.length() - 1) == '/') { - printElementAutoClose(p_Out, sElement); - // Next - iCurrent = iEnd + 4; - } - else { - // Render element - printElement(p_Out, sElement); - // Search close element - String sCloseElement = "</" + sName + ">"; - int iPosCloseElement = p_Xml.indexOf(sCloseElement, iEnd); - if (iPosCloseElement == -1) { - // Error - break; - } - // render children element (or text) - render(p_Out, p_Xml, iEnd + 4, iPosCloseElement + sCloseElement.length()); - // render end element - printElementClose(p_Out, sCloseElement); - // Next - iCurrent = iPosCloseElement + sCloseElement.length(); - } - } - } - } - - protected void printElement(JspWriter p_Out, String p_Print) - throws IOException, JspException { - switch (m_LastPrint) { - case NONE: - case TEXT: - break; - case HEADER: - case ELEMENT: - case ELEMENT_AUTO_CLOSE: - case ELEMENT_CLOSE: - case COMMENT: - p_Out.print("
"); - break; - } - - printIndent(p_Out, m_Indent); - - // are we printing comment - if (!comment) - p_Out.print(""); - - p_Out.print(p_Print); - - // are we printing comment - if (!comment) - p_Out.print(""); - - m_LastPrint = ELEMENT; - m_Indent++; - } - - protected void printElementAutoClose(JspWriter p_Out, String p_Print) - throws IOException, JspException { - - switch (m_LastPrint) { - case NONE: - case TEXT: - break; - case HEADER: - case ELEMENT: - case ELEMENT_AUTO_CLOSE: - case ELEMENT_CLOSE: - case COMMENT: - p_Out.print("
"); - break; - } - printIndent(p_Out, m_Indent); - //are we printing comment - if (!comment) - p_Out.print(""); - - p_Out.print(p_Print); - - // are we printing comment - if (!comment) - p_Out.print(""); - - m_LastPrint = ELEMENT_AUTO_CLOSE; - } - - protected void printElementClose(JspWriter p_Out, String p_Print) - throws IOException, JspException { - - m_Indent--; - - switch (m_LastPrint) { - case NONE: - case ELEMENT: - case TEXT: - break; - case HEADER: - case ELEMENT_AUTO_CLOSE: - case ELEMENT_CLOSE: - case COMMENT: - p_Out.print("
"); - printIndent(p_Out, m_Indent); - break; - } - // are we printing comment - if (!comment) - p_Out.print(""); - - p_Out.print(p_Print); - - // are we printing comment - if (!comment) - p_Out.print(""); - - m_LastPrint = ELEMENT_CLOSE; - } - - protected void printComment(JspWriter p_Out, String p_Print) - throws IOException, JspException { - switch (m_LastPrint) { - case NONE: - break; - case HEADER: - case ELEMENT: - case ELEMENT_AUTO_CLOSE: - case ELEMENT_CLOSE: - case COMMENT: - case TEXT: - p_Out.print("
"); - break; - } - printIndent(p_Out, m_Indent); - p_Out.print(""); - - // take only comment content - p_Print = p_Print.substring(7,p_Print.length()-6).trim(); - // start printing commented element - p_Out.print("<!--"); - - // are we dealing with commented element - if (p_Print.indexOf("/>")==-1){ - // print simple comment text - p_Out.print(p_Print); - } else { - // set comment property value - disables elements - setComment(true); - // print commented element - render(p_Out, p_Print, 0, p_Print.length()-1); - p_Out.print("
"); - // turn back comment property value - enable elements again - setComment(false); - } - - // print comment ending - printIndent(p_Out, m_Indent); - p_Out.print("-->"); - - p_Out.print(""); - - m_LastPrint = COMMENT; - } - - protected void printHeader(JspWriter p_Out, String p_Print) - throws IOException, JspException { - switch (m_LastPrint) { - case NONE: - break; - case HEADER: - case ELEMENT: - case ELEMENT_AUTO_CLOSE: - case ELEMENT_CLOSE: - case COMMENT: - case TEXT: - p_Out.print("
"); - break; - } - // are we printing comment - if (!comment) - p_Out.print(""); - - p_Out.print(p_Print); - - // are we printing comment - if (!comment) - p_Out.print(""); - - m_LastPrint = HEADER; - } - - protected void printText(JspWriter p_Out, String p_Print) - throws IOException, JspException { - - // are we printing comment - if (!comment) - p_Out.print(""); - - p_Out.print(p_Print); - - // are we printing comment - if (!comment) - p_Out.print(""); - - m_LastPrint = TEXT; - } - - protected void printIndent(JspWriter p_Out, int p_Indent) - throws IOException, JspException { - for (int i = 0; i < p_Indent; i++) { - p_Out.print("  "); - } - } - - protected String getNameElement(String p_ElementWithAttr) { - StringTokenizer st = new StringTokenizer(p_ElementWithAttr, " "); - return st.nextToken(); - } - - protected void setComment(boolean value){ - // are we printing comment (enable/disable elements) - comment = value; - } - -} diff --git a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources.properties b/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources.properties deleted file mode 100644 index 481783d75f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources.properties +++ /dev/null @@ -1,1921 +0,0 @@ -title.application=JOnAS Administration -title.welcome=Welcome - -#--------------------------------------------------------------------------------------------------- - -errors.header= -errors.footer= - -#--------------------------------------------------------------------------------------------------- - -button.login=Login -button.reset=Reset -button.save=Save -button.refresh=Refresh -button.save.all=Save All -button.change=Change -button.cancel=Cancel -button.commit=Commit Changes -button.logout=Log Out -button.apply=Apply -button.execute=Execute -button.create=Create -button.confirm=Confirm -button.remove=Remove -button.push.right=>>> -button.push.left=<<< -button.upload=Upload -button.removeandsave=Remove & save - -#--------------------------------------------------------------------------------------------------- - -title.error.global=Global error -title.global=Global -title.thread.count=Threads Count -title.memory.load= Memory Load -title.memory.total= Total Memory -title.jonas.version=JOnAS Version -title.jvm.version= JVM Version -title.jvm.vendor= JVM Vendor -title.protocols=Protocols -title.modify=Modify -title.submit=Submit -title.jmx.connection.url=Jmx Connection URL -title.transactions=Transactions -title.transaction.begun=Transaction Begun -title.transaction.committed=Committed Transaction -title.transaction.current=Current Transaction -title.transaction.expired=Expired Transactions -title.transaction.rolledback=Rolled Back Transactions -#--------------------------------------------------------------------------------------------------- -title.deployment.item.selected=Selected item -#--------------------------------------------------------------------------------------------------- -title.cd.modify=Modify cluster daemon info -message.clusterd.server.none=No server affected -message.clusterd.none=No cluster daemon -#--------------------------------------------------------------------------------------------------- - -label.login.username=Username -label.login.password=Password -label.url=Jmx Url -label.cd.infos=Infos -label.cd.monitoring.os.infos=Operating system informations -label.cd.monitoring.os.name=OS name -label.cd.monitoring.os.architecture=OS architecture -label.cd.monitoring.os.availableprocessors=OS available processors -label.cd.monitoring.os.version=OS version -label.cd.monitoring.vm.memory.infos=Vm memory infos -label.cd.monitoring.vm.memory.used.graph=Used memory graph -#--------------------------------------------------------------------------------------------------- -error.login=Invalid username or password -error.login.tryagain=To try again, -error.login.clickhere=click here - -#--------------------------------------------------------------------------------------------------- -treenode.cd=Cluster Daemons -treenode.jonas.domain=Domain -treenode.jonas.domain.monitoring=Monitoring -treenode.jonas.server=Server JOnAS -treenode.jonas.server.monitoring=Monitoring -treenode.jonas.server.logging=Logging -treenode.jonas.server.logging.jonas=Jonas Logger -treenode.jonas.server.logging.tomcat=Tomcat Logger - -treenode.jonas.server.protocols=Web Protocols -treenode.jonas.server.protocols.connectors=Connectors - -treenode.jonas.server.services=Services -treenode.jonas.server.services.ear=Application Containers -treenode.jonas.server.services.ejbContainers=EJB Containers -treenode.jonas.server.services.ejb3Containers=EJB3 Containers -treenode.jonas.server.services.ejb2Containers=EJB2 Containers -treenode.jonas.server.services.web=Web Containers -treenode.jonas.server.services.database=Database Manager -treenode.jonas.server.services.db=Database -treenode.jonas.server.services.resource=Resource Adapters -treenode.jonas.server.services.transaction=Transaction -treenode.jonas.server.services.jms=Jms -treenode.jonas.server.services.jms.cf=Connection Factories -treenode.jonas.server.services.jms.queues=Queues -treenode.jonas.server.services.jms.topics=Topics -treenode.jonas.server.services.jmx=Jmx Service -treenode.jonas.server.services.registry=Registry Service -treenode.jonas.server.services.cmi=CMI -treenode.jonas.server.services.ha=HA -treenode.jonas.server.services.mail=Mail -treenode.jonas.server.services.mail.session=Session Factories -treenode.jonas.server.services.mail.mimepart=MimePartDatasource Factories -treenode.jonas.server.services.security=Security -treenode.jonas.server.services.discovery=Discovery -treenode.jonas.server.services.depmonitor=Deployment Monitor -treenode.jonas.server.services.workmanager=Work Manager -treenode.jonas.server.services.workcleaner=Work Cleaner -treenode.jonas.server.services.versioning=Versioning -treenode.jonas.server.services.webservices=Web Services -treenode.jonas.server.services.jaxrpc=JAX-RPC Service -treenode.jonas.server.services.jaxws=JAX-WS Service -treenode.jonas.server.services.wsdlpublisher=WSDL Publisher Service -treenode.jonas.server.services.smartclient=Smartclient - -tab.server.services.cmi=CMI -tab.server.services.cmi.cluster=CMI cluster -tab.server.services.cmi.cluster.objects=Objects -tab.server.services.cmi.object.infos=CMI object infos -tab.server.services.cmi.cluster.user=User defined cluster -tab.server.services.cmi.cluster.system=System cluster -tab.server.services.cmi.notRegistered=New cmi MBean is not registered -tab.server.services.cmi.protocols=Servers for each protocol -tab.server.services.cmi.refreshTime=Refresh time -tab.server.services.cmi.object.servers=Deployer servers -tab.server.services.cmi.object.LB.infos=Load balancing infos -tab.server.services.cmi.object.LB.policy.class=Policy class -tab.server.services.cmi.object.LB.policy.strategy=Policy strategy -tab.server.services.cmi.object.LB.policy.properties.simple=Simple policy properties -tab.server.services.cmi.object.pool.size.min=Min pool size -tab.server.services.cmi.object.pool.size.max=Max pool size -tab.server.services.cmi.object.pool.maxwaiters=Max pool waiters -tab.server.services.cmi.object.pool.timeout=pool timeout -tab.server.services.cmi.object.pool.infos=Pool infos -tab.server.services.cmi.cluster.system.comment=CMI uses this cluster to store internal global objects. -tab.server.services.cmi.protocol=CMI protocol -tab.server.services.cmi.cluster.servers=Servers -tab.server.services.cmi.server=CMI server -tab.server.services.cmi.server.blacklist=Blacklist -tab.server.services.cmi.server.unblacklist=Remove from blacklist -tab.server.services.cmi.server.loadfactor=Load factor - - -treenode.jonas.server.deployments=Deployment -treenode.jonas.server.deployments.ear=Applications (EAR) -treenode.jonas.server.deployments.jar=EJB Modules (JAR) -treenode.jonas.server.deployments.war=Web Modules (WAR) -treenode.jonas.server.deployments.rar=Resource Adapter Modules (RAR) -treenode.jonas.server.deployments.*=All Modules and XML -treenode.jonas.server.deployments.**=All Modules and XML -treenode.jonas.server.deployments.domain-ear=Applications (EAR) -treenode.jonas.server.deployments.domain-jar=EJB Modules (JAR) -treenode.jonas.server.deployments.domain-war=Web Modules (WAR) -treenode.jonas.server.deployments.domain-rar=Resource Adapter Modules (RAR) - -treenode.jonas.server.monitoring=Monitoring - -treenode.jonas.server.resources=Resources -treenode.jonas.server.resources.database=Database (JDBC) -treenode.jonas.server.resources.jms=JMS -treenode.jonas.server.resources.mail=Mail - -treenode.jonas.server.security=Security -treenode.jonas.server.security.factory.memory=Memory realm -treenode.jonas.server.security.factory.memory.users=Users -treenode.jonas.server.security.factory.memory.groups=Groups -treenode.jonas.server.security.factory.memory.roles=Roles -treenode.jonas.server.security.factory.datasource=Datasource realm -treenode.jonas.server.security.factory.ldap=Ldap realm - -treenode.jonas.server.security.catalina.realm=Tomcat realm - -treenode.allmbeans=MBeans -treenode.mbeans.j2ee=J2EE MBeans -treenode.mbeans.owner=Owner MBeans -treenode.mbeans.unknown=Other MBeans - -label.virtual.version=Version -label.virtual.policy=Policy -label.virtual.sessions=Active sessions -label.virtual.setAs=Set as... - -#--------------------------------------------------------------------------------------------------- - -comment.message.ifZeroNoLimit=If 0, there's no limit - -tab.domain=Domain -tab.cluster=Cluster -title.domain.action=Action -action.button.domain.add.server=Add server -action.button.domain.start.server=Start -action.button.domain.stop.server=Stop -action.button.domain.halt.server=Halt -action.button.domain.stopstandby.server=Stop & standby -action.button.domain.startstandby.server=Start & standby -action.button.domain.start.cluster=Start all -action.button.domain.stop.cluster=Stop all -action.button.domain.ping.cluster=Ping all -action.button.domain.create.cluster=Create cluster -action.button.domain.remove.server=Remove server -action.button.domain.move.server=Move server -action.button.domain.undeploy.module=Undeploy module -tab.domain.server.add=Add server -tab.cd.server.add=Add server to Cluster Daemon -tab.domain.cluster.create=Create cluster -label.domain.name=Name -label.domain.range=Range -label.domain.interface=Interface -label.cd.configureServer= Configure Server for Cluster Daemon -label.cluster.type=Type -label.domain.properties=properties -label.domain.description=Description -label.domain.domainName=Domain name -label.domain.parentName=Parent name -label.domain.master=Master server -label.domain.currentServer=JonasAdmin's server -label.domain.totalServers=Total number of servers -label.domain.servers=Servers -label.domain.clusters=Clusters -label.domain.cdps=Cluster Daemons -label.domain.modules=Deployed modules -label.domain.modules.name=Name -label.domain.modules.targets=Targets -message.global.page.onBuild= This Page Is On Build -message.domain.servers.none=No other server in this domain! -message.cd.present.config.server.true=Server is in cluster daemon config file. -message.domain.clusters.none=No clusters in this domain! -message.domain.clds.none=No cluster daemons in this domain! -message.domain.clds.free.none=No server to affect -message.domain.modules.none=No modules deployed in this domain! -message.cluster.servers.none=No servers in this cluster! -message.cluster.clusters.none=No sub-clusters in this cluster! -message.cluster.modules.none=No modules in this cluster! -message.domain.apply.servers.none=No servers found ! -message.domain.apply.modules.none=No modules selected! -label.domain.serverName=Server name -comment.domain.add.serverName= -label.domain.serverURL=Connector server URL -comment.domain.add.serverURL= -label.domain.clusterDaemonName=Cluster daemon name (optional) -comment.domain.add.clusterDaemonName= -label.domain.serverCld=Cluster daemon (optional) -comment.domain.add.serverCld= -label.domain.serverUsername=User name (optional) -comment.domain.add.serverUsername= -label.domain.serverPassword=Password (optional) -comment.domain.add.serverPassword= -label.domain.serverPasswordAgain=Password (again) (optional) -comment.domain.add.serverPasswordAgain= -label.domain.clusterName=Cluster name -label.domain.parentClusterName=Parent cluster name -comment.domain.create.clusterName= -label.domain.move.server=Server -label.domain.move.from=From -get.label.domain.move.cluster=To -error.logger.domain.servername.required=
  • Server name required
  • -error.logger.domain.serverurl.required=
  • Connector server URL required
  • -error.logger.domain.passwords.mismatch=
  • The passwords don't match
  • - - -action.button.service.start=Start -action.button.service.stop=Stop -action.button.services.refresh=Refresh - -tab.server.jonas=Properties -label.server.jonas.jonasName=Server name -label.server.jonas.jonasVersion=Implementation version -label.server.jonas.protocols=Protocols -label.server.jonas.state=State -label.server.jonas.versions=Integrated components versions -label.server.jonas.serverservlet=Server servlet -action.title.server.jonas=Actions -action.button.server.jonas.rungc=Run -action.comment.server.jonas.rungc=Run the garbage collector -action.button.server.jonas.stop=Stop -action.comment.server.jonas.stop=Stop the JOnAS server -error.server.jonas.serverName.bad=Invalid server name {0} -error.server.jonas.jvms=No JVM J2EEManagedObject found - -tab.server.versions=Versions - -tab.server.jmx=JMX Properties -label.server.jmx.MBeanServerId=MBean server ID -label.server.jmx.SpecificationName=Specification -label.server.jmx.SpecificationVersion=Specification Version -label.server.jmx.SpecificationVendor=Specification Vendor -label.server.jmx.ImplementationName=Implementation -label.server.jmx.ImplementationVersion=Implementation Version -label.server.jmx.ImplementationVendor=Implementation Vendor - -tab.server.registry=Registry -title.server.registry.providerUrl=Provider URL -title.server.registry.protocol=Protocol -title.server.registry.providersUrl=Providers -label.server.registry.providerUrl=URL -title.server.registry.jndi.names=JNDI Names -message.server.registry.none=No names registered in JNDI! -message.server.registry.cmi.none=No names registered in cmi JNDI! - -tab.server.servlet=Servlet Server -label.server.servlet.name=Name -label.server.servlet.version=Version -label.server.servlet.catalina.service=Service -label.server.servlet.catalina.engine=Engine -label.server.servlet.catalina.default.host=Default host - -tab.server.jvm=JVM -label.server.jvm.Version=Java Version -label.server.jvm.Vendor=Java Vendor -label.server.jvm.Node=Node - -title.server.servlet.catalina.action=Action -title.server.servlet.catalina.action.save.warning=Warning -message.server.servlet.catalina.action.save.explanation=The Apache Tomcat servlet server saves all the modified configuration data in the configuration file. -message.server.servlet.catalina.action.save.explanation.list=Now, if you click on Save All button, you store :
  • All defined connectors
  • The HTTP Access logger (if defined)
  • All defined contexts for Web Applications
  • -message.server.servlet.catalina.action.save.verify=Verify your configuration before saving all ! -message.server.servlet.catalina.action.save.cancel=You can use the Cancel button to return to the previous page. - -logger.jonas.name=JOnAS logger -logger.catalina.access.name=Access log valve - -tab.loggers=Loggers -title.loggers.action=Action -button.loggers.catalina.access.create=New Access log valve -title.loggers.name=Logger type -title.loggers.container=Container type -title.loggers.container.name=Container name (or path) -label.loggers.container.engine=Engine -label.loggers.container.engine.name=engine -label.loggers.container.host=Host -label.loggers.container.context=Web module -tab.loggers.confirm=Confirm -message.loggers.none=No logger found ! - -tab.logging.jonas=Topics -tab.logging.view_recent=View Recent Log -message.logging.view.nobuffer=Can't find MBean for logs view. Check 'jmx' handler usage in Monolog. -message.logging.view.buffer=Found MBean for logs view. -title.logging.jonas.view.recent=Recent records -label.logging.jonas.view.recent.date.latest=Date of latest record -label.logging.jonas.view.recent.date.oldest=Date of oldest record -label.logging.jonas.view.errors=Errors -label.logging.jonas.view.warnings=Warnings -label.logging.jonas.view.other=Other -button.logging.jonas.view.recent=Refresh -get.title.logging.jonas=Change a topic's level -get.label.logging.jonas.topic=Topic -get.label.logging.jonas.level=Level -list.title.logging.jonas.levels=Levels -list.title.logging.jonas.topics=Topics - -tab.logger.catalina.access=Access Log Valve -label.logger.catalina.access.containerType=Container -comment.logger.catalina.access.containerType=Container to which the access log is associated -label.logger.catalina.access.containerName=Container name -comment.logger.catalina.access.containerName=Name of the container -label.logger.catalina.access.directory=Directory -comment.logger.catalina.access.directory=The directory in which log files are created -label.logger.catalina.access.prefix=Filename prefix -comment.logger.catalina.access.prefix=The prefix name of the log file -error.logger.catalina.access.prefix.required=
  • Filename prefix required
  • -label.logger.catalina.access.suffix=Filename suffix -comment.logger.catalina.access.suffix=The suffix name of the log file -label.logger.catalina.access.resolveHosts=Resolve Hosts -comment.logger.catalina.access.resolveHosts=Flag to indicate automatic host name resolving -label.logger.catalina.access.rotatable=Rotatable -comment.logger.catalina.access.rotatable=Flag to indicate automatic log rotation -label.logger.catalina.access.pattern=Pattern -comment.logger.catalina.access.pattern=The pattern used to format our access log lines.
    The following pattern codes are supported:
    %a - Remote IP address
    %A - Local IP address
    %b - Bytes sent, excluding HTTP headers, or '-' if zero
    %B - Bytes sent, excluding HTTP headers
    %h - Remote host name (or IP address if resolveHosts is false)
    %H - Request protocol
    %l - Remote logical username from identd (always returns '-')
    %m - Request method (GET, POST, etc.)
    %p - Local port on which this request was received
    %q - Query string (prepended with a '?' if it exists)
    %r - First line of the request (method and request URI)
    %s - HTTP status code of the response
    %S - User session ID
    %t - Date and time, in Common Log Format
    %u - Remote user that was authenticated (if any), else '-'
    %U - Requested URL path
    %v - Local server name -error.logger.catalina.access.pattern.required=
  • Pattern required
  • -error.logger.catalina.access.log.engine.alreadypresent=
  • AccessLogValve already associated to the Engine
  • -error.logger.catalina.access.log.nohost=
  • There is no Host having this name
  • -error.logger.catalina.access.log.host.alreadypresent=
  • AccessLogValve already associated to this Host
  • - -tab.monitoring.general=General -get.title.monitoring.general=Activation -get.label.monitoring.general.activated=Activated monitoring -list.title.monitoring.general=JOnAS server all thread groups -list.label.monitoring.general.allThreadsCount=Total number of threads - -tab.monitoring.memory=Memory -get.title.monitoring.memory=Tuning -get.label.monitoring.memory.numberOfMeasures=Number of measures -get.label.monitoring.memory.range=Range -error.monitoring.memory.numberOfMeasures=
  • Number of measures could not be <= 1
  • -error.monitoring.memory.range=
  • Range could not be < 10
  • - -tab.monitoring.stackdump=StackDump - -get.label.monitoring.displaynode.test1=test1 -get.label.monitoring.displaynode.test2=test2 - -tab.catalina.connectors=Connectors -title.catalina.connectors.action=Action -button.catalina.connectors.create.http=New HTTP -button.catalina.connectors.create.https=New HTTPS -button.catalina.connectors.create.ajp=New AJP -button.catalina.connectors.remove=Remove -label.catalina.connectors.port=Port -label.catalina.connectors.address=Address -label.catalina.connectors.type=Type - -tab.catalina.connectors.confirm=Confirm -message.catalina.connectors.none=No connector found ! - -tab.catalina.connector.new.http=New Http connector -tab.catalina.connector.new.https=New Https connector -tab.catalina.connector.new.ajp=New Ajp connector -error.catalina.connector.select.bad=
  • Invalid connector name : {0}
  • -error.catalina.connector.exists=
  • Connector already exists
  • - -tab.catalina.connector=Connector -title.catalina.connector.general=General -label.catalina.connector.type=Type -label.catalina.connector.type.http=HTTP -label.catalina.connector.type.https=HTTPS -label.catalina.connector.type.ajp=AJP/JK -label.catalina.connector.scheme=Scheme -label.catalina.connector.accept.count=Accept Count -label.catalina.connector.allow.trace=Allow Trace -label.catalina.connector.empty.sessionpath=Empty Session Path -label.catalina.connector.max.post.size=Max Bytes in a Post -label.catalina.connector.connection.timeout=Connection Timeout -label.catalina.connector.protocol=Coyote Protocol Handler -label.catalina.connector.secure=Secure (SSL) Connector -label.catalina.connector.uri.encoding=URI Encoding -label.catalina.connector.use.bodyencoding.for.uri=Use Body Encoding for URI -label.catalina.connector.xpoweredby=X-Powered-By Generation Enabled -label.catalina.connector.output.buffer=Output Buffer Size -label.catalina.connector.input.buffer=Input Buffer Size -label.catalina.connector.buffer=Buffer Size -label.catalina.connector.enable.dns=Enable DNS Lookups -label.catalina.connector.tcp.nodelay=Should we use TCP no delay -label.catalina.connector.address.ip=IP Address -title.catalina.connector.port=Port -label.catalina.connector.portnumber=Port Number -label.catalina.connector.redirect.portnumber=Redirect Port Number -title.catalina.connector.threads=Threads -label.catalina.connector.minSpare=Minimum Spare Threads -label.catalina.connector.milliseconds=milliseconds -label.catalina.connector.maxSpare=Maximum Spare Threads -label.catalina.connector.max=Maximum Threads -title.catalina.connector.proxy=Proxy -label.catalina.connector.proxy.name=Proxy Name -label.catalina.connector.proxy.portnumber=Proxy Port Number -title.catalina.connector.factory=Factory properties -label.catalina.connector.algorithm=Encoding algorithm -label.catalina.connector.client.auth=Client Authentication -label.catalina.connector.keystore.filename=Keystore Filename -label.catalina.connector.keystore.password=Keystore Password -label.catalina.connector.keystore.type=Keystore Type -label.catalina.connector.sslprotocol=SSL Protocol -label.catalina.connector.ciphers=Encription Ciphers -label.catalina.connector.keyPass.warning=
  • Please use keytool to generate certificate.
  • - -error.catalina.connector.portNumber.required=
  • PortNumber cannot be empty
  • -error.catalina.connector.portNumber.format=
  • PortNumber not a valid integer!
  • -error.catalina.connector.portNumber.range=
  • PortNumber out of range.
  • -error.catalina.connector.acceptCountText.required=
  • Accept count required
  • -error.catalina.connector.acceptCountText.format=
  • Accept count not a valid integer!
  • -error.catalina.connector.acceptCountText.range=
  • Accept count out of range.
  • -error.catalina.connector.connTimeOutText.required=
  • Connection time out required
  • -error.catalina.connector.connTimeOutText.format=
  • Connection time out not a valid integer!
  • -error.catalina.connector.connTimeOutText.range=
  • Connection time out of range.
  • -error.catalina.connector.bufferSizeText.required=
  • Buffer Size required
  • -error.catalina.connector.bufferSizeText.format=
  • Buffer Size not a valid integer!
  • -error.catalina.connector.bufferSizeText.range=
  • Buffer Size out of range.
  • -error.catalina.connector.address.invalid=
  • IP Address invalid
  • -error.catalina.connector.redirectPortText.required=
  • Redirect Port Number cannot be empty
  • -error.catalina.connector.redirectPortText.format=
  • Redirect Port Number not a valid integer!
  • -error.catalina.connector.redirectPortText.range=
  • Redirect Port Number out of range.
  • -error.catalina.connector.minSpareThreadsText.required=
  • Minimum Spare Threads cannot be empty
  • -error.catalina.connector.minSpareThreadsText.format=
  • Minimum Spare Threads not a valid integer!
  • -error.catalina.connector.minSpareThreadsText.range=
  • Minimum Spare Threads out of range.
  • -error.catalina.connector.maxSpareThreadsText.required=
  • Maximum Spare Threads cannot be empty
  • -error.catalina.connector.maxSpareThreadsText.format=
  • Maximum Spare Threads not a valid integer!
  • -error.catalina.connector.maxSpareThreadsText.range=
  • Maximum Spare Threads out of range.
  • - -error.catalina.connector.maxThreadsText.required=
  • Maximum Threads cannot be empty
  • -error.catalina.connector.maxThreadsText.format=
  • Maximum Threads not a valid integer!
  • -error.catalina.connector.maxThreadsText.range=
  • Maximum Threads seems out of range. Valid range is 1-512. Also, maximum >= minimum.
  • - -error.catalina.connector.proxyName.invalid=
  • Proxy name is invalid
  • -error.catalina.connector.proxyPortText.required=
  • Proxy Port Number cannot be empty
  • -error.catalina.connector.proxyPortText.format=
  • Proxy Port Number not a valid integer!
  • -error.catalina.connector.proxyPortText.range=
  • Proxy Port Number seems out of range. Valid range is 1-65535.
  • - - -tab.services=Services -title.services.name=Name -title.services.description=Description -title.services.deployed=Deployed - -tab.appcontainers=Application Containers -message.appcontainers.none=No application container found ! -list.label.appcontainers.file=File -list.label.appcontainers.path=Path - -tab.ejbcontainers=EJB Containers -message.ejbcontainers.none=No EJB container found ! -label.ejbcontainers.name=Name -label.ejbcontainers.file=File -label.ejbcontainers.path=Path - -tab.ejbcontainers.statistic=Statistics -title.ejbcontainers.statistic=Statistics on all EJB Containers -label.ejbcontainers.statistic.totalCurrentNumberOfBeanType=All EJB -label.ejbcontainers.statistic.totalCurrentNumberOfBMPType=Entity with Bean-Managed Persistence -label.ejbcontainers.statistic.totalCurrentNumberOfCMPType=Entity with Container-Managed Persistence -label.ejbcontainers.statistic.totalCurrentNumberOfEntityType=Entity Bean -label.ejbcontainers.statistic.totalCurrentNumberOfSBFType=Stateful Session Bean -label.ejbcontainers.statistic.totalCurrentNumberOfSBLType=Stateless Session Bean -label.ejbcontainers.statistic.totalCurrentNumberOfMDBType=Message Driven Bean - -tab.ejbcontainers.monitoring=Monitoring - -tab.container=Container -title.container=Properties -label.container.name=Name -label.container.path=Path -title.container.ear=In Ear - -tab.container.statistic=Statistics -title.container.statistic=Statistics on {0} container -label.container.statistic.currentNumberOfBeanType=All EJB -label.container.statistic.currentNumberOfBMPType=Entity with Bean-Managed Persistence -label.container.statistic.currentNumberOfCMPType=Entity with Container-Managed Persistence -label.container.statistic.currentNumberOfEntityType=Entity Bean -label.container.statistic.currentNumberOfSBFType=Stateful Session Bean -label.container.statistic.currentNumberOfSBLType=Stateless Session Bean -label.container.statistic.currentNumberOfMDBType=Message Driven Bean - -tab.container.ejbs=EJBs -message.container.ejbs.none=No EJB found ! -label.container.ejbs.name=Name -label.container.ejbs.type=Type - -ejb.fulltype.Bmp=Entity with Bean-Managed Persistence -ejb.fulltype.Cmp=Entity with Container-Managed Persistence -ejb.fulltype.Sbf=Stateful Session Bean -ejb.fulltype.Sbl=Stateless Session Bean -ejb.fulltype.Mdb=Message Driven Bean - - -tab.ejb=EJB -title.ejb.action=Action -label.ejb.name=Name -label.ejb.file=File -label.ejb.type=Type -title.ejb.monitoring=Monitoring -label.ejb.monitoring.monitoringSettingsDefinedInDD=Monitoring settings defined in DD ? -label.ejb.monitoring.monitoringEnabled=Monitoring enabled ? -label.ejb.monitoring.warningThreshold=Warning threshold (in millis) -label.ejb.monitoring.applySettingsTo=Apply new monitoring settings to -label.ejb.monitoring.applySettingsTo.none=Only to EJBs deployed after this change -label.ejb.monitoring.applySettingsTo.nonDD=All EJBs except the ones with values in the DDs -label.ejb.monitoring.applySettingsTo.all=All EJBs -label.ejb.monitoring.numberOfCalls=Number of calls -label.ejb.monitoring.totalBusinessProcessingTime=Total business processing time (in millis) -label.ejb.monitoring.averageBusinessProcessingTime=Average business processing time (in millis) -label.ejb.monitoring.totalProcessingTime=Total processing time (in millis) -label.ejb.monitoring.averageProcessingTime=Average processing time (in millis) -title.ejb.naming=Naming and Classes -label.ejb.naming.class=EJB class -label.ejb.naming.jndiName=EJB JNDI Name -label.ejb.naming.homeClass=EJB HomeClass -label.ejb.naming.remoteClass=EJB RemoteClass -label.ejb.naming.localHomeClass=EJB LocalHomeClass -label.ejb.naming.localClass=EJB LocalClass -label.ejb.virtual.prefix=JNDI prefix -title.ejb.type.entity=Entity Configuration -button.ejb.type.entity.synchronize=Synchronize -button.ejb.type.entity.reduceCache=Reduce instances -label.ejb.type.entity.persistancy=Persistency -comment.ejb.type.entity.persistancy=Type of Persistency (CMP/BMP) -label.ejb.type.entity.passivationTimeOut=Passivation Timeout -comment.ejb.type.entity.passivationTimeOut=Value in seconds -label.ejb.type.entity.inactivityTimeOut=Inactivity Timeout -comment.ejb.type.entity.inactivityTimeOut=Maximum time of inactivity (in sec.) before freeing objects -label.ejb.type.entity.shared=Shared -comment.ejb.type.entity.shared=True if bean accessed outside this ejb server. -label.ejb.type.entity.prefetch=Prefetch -comment.ejb.type.entity.prefetch=True if prefetch optimization wanted. -label.ejb.type.entity.hardLimit=HardLimit -comment.ejb.type.entity.hardLimit=True if max-cache-size is a hard limit -label.ejb.type.entity.lockPolicy=Lock Policy -comment.ejb.type.entity.lockPolicy=one among CS/CRC/RO/DB/CRW/CST -label.ejb.type.entity.memory.minPoolSize=Min Pool size -comment.ejb.type.entity.minPoolSize=Nb of instances preallocated -label.ejb.type.entity.memory.maxCacheSize=Max Cache Size -comment.ejb.type.entity.maxCacheSize=Max nb of instances in memory -title.ejb.memory=Memory Management -label.ejb.memory.poolSize=Pool size -comment.ejb.memory.poolSize=Current nb of free instances -label.ejb.memory.cacheSize=Cache size -comment.ejb.memory.cacheSize=Total nb of instances in memory -label.ejb.type.entity.instance.usedInTxInstance=Used in TX -comment.ejb.type.entity.instance.usedInTxInstance=Current nb of instances used inside transactions -label.ejb.type.entity.instance.usedOutTxInstance=Used outside TX -comment.ejb.type.entity.instance.usedOutTxInstance=Current nb of instances used outside transaction -label.ejb.type.entity.instance.unusedInstance=Unused but ready -comment.ejb.type.entity.instance.unusedInstance=Current nb of unused, ready instances -label.ejb.type.entity.instance.pkNumber=PK number -comment.ejb.type.entity.instance.pkNumber=Total nb of PK in memory -label.ejb.type.entity.instance.passivatedInstance=Passivated -comment.ejb.type.entity.instance.passivated=Current nb of passivated instances -label.ejb.type.entity.instance.removedInstance=Marked removed -comment.ejb.type.entity.instance.removedInstance=Current nb of instances marked removed -title.ejb.type.session=Session Configuration -label.ejb.type.session.sessionTimeOut=Current session TimeOut -title.ejb.type.session.instance=Instances -label.ejb.type.session.instanceMinSizePool=Min size of pool -label.ejb.type.session.instanceMaxSizePool=Max size of pool -label.ejb.type.session.instanceCurrentNumber=Number instances -button.ejb.type.session.sbl.reduceCache=Reduce instances -title.ejb.type.message=Mdb Configuration - -default.ejb.type.session.sessionTimeOut=No limit -default.ejb.type.session.instanceMaxSizePool=No limit - -label.ejb.type.message.mdbJMSAssociateDestinationName=JMS Destination name -label.ejb.type.message.minPoolSize=Min Pool Size -label.ejb.type.message.maxCacheSize=Max Cache Size -comment.ejb.type.message.mdbJMSAssociateDestinationName= -comment.ejb.type.message.sessionTimeOut= - -tab.ejb.dependency=Dependency -title.ejb.dependency.datasource=Datasource -title.ejb.dependency.jms.connection=JMS Connection factory -title.ejb.dependency.jms.destination=JMS Destination -title.ejb.dependency.mail.session=Session mail factory -title.ejb.dependency.mail.mime=MimePartDataSource mail factory - -tab.webcontainers=Web Containers -message.webcontainers.none=No Web Container found ! -title.webcontainers.action=Action -button.webcontainers.context.create=New web container -label.webcontainers.context=Context -label.webcontainers.deployed=Deployed -label.webcontainers.file=Container -label.webcontainers.path=Path -tab.webcontainers.confirm=Confirm - -tab.webapp=Web context -title.webapp.action=Action -tab.webapp.create=New web application -title.webapp.context=Context -label.webapp.context.path=Path -label.webapp.context.host=Host -label.webapp.context.name=Name -label.webapp.context.started=Started - -button.webapp.reload=Reload -button.webapp.start=Start -button.webapp.stop=Stop - -title.webapp.setting=Setting -label.webapp.setting.available=Available -comment.webapp.setting.available=Web application available for the public -label.webapp.setting.cookies=Cookies -comment.webapp.setting.cookies=Use cookies for session id communication -label.webapp.setting.reloadable=Reloadable -comment.webapp.setting.reloadable=Allow to reload automatically the web application -label.webapp.setting.swallowOutput=Swallow output -comment.webapp.setting.swallowOutput=Cause the system.out and system.err to be redirected to the logger when executing a servlet -label.webapp.setting.crossContext=Cross context -comment.webapp.setting.crossContext=Allow the ServletContext.getContext() method to access the context of other web applications in this server -label.webapp.setting.override=Override -comment.webapp.setting.override=Allow the DefaultContextoverride flag for this Web application -label.webapp.setting.sessionTimeout=Session timeout -comment.webapp.setting.sessionTimeout=The timeout of a session in minutes - -error.webapp.context.required=
  • Path context cannot be empty
  • -error.webapp.context.exists=
  • Path context already exists
  • -error.webapp.setting.sessionTimeout.required=
  • Session timeout cannot be empty
  • -error.webapp.setting.sessionTimeout.format=
  • Session timeout not a valid integer !
  • -error.webapp.setting.sessionTimeout.range=
  • Session timeout seems out of range. Valid range is 1-65535.
  • - -error.webapp.reload=
  • Impossible to reload this web application ! Is the web application running ?
  • -error.webapp.start=
  • Impossible to start this web application ! Is the web application running ?
  • -error.webapp.stop=
  • Impossible to stop this web application ! Is the web application running ?
  • - -error.ejb.type.session.sessionTimeOut.required=
  • Session timeout cannot be empty
  • -error.ejb.type.session.sessionTimeOut.format=
  • Session timeout not a valid integer !
  • -error.ejb.type.session.sessionTimeOut.range=
  • Session timeout seems out of range. Valid range is 1-65535.
  • - -tab.war=War -title.war.container=Web container -label.war.hostName=Host name -label.war.warFile=File -label.war.warPath=Path -label.war.contextRoot=Context root -label.war.java2DelegationModel=Java 2 delegation model -title.war.ear=In application container -label.war.inEarCase=inEarCase -label.war.earPath=Ear path - - -tab.war.servlets=Servlets -label.war.servlets.number=Number of servlets -title.war.servlets.name=Name - -tab.war.xmlContent=Web xml -tab.war.jonasXmlContent=JOnAS xml - -tab.ear=Ear -title.ear=Application -label.ear.file=File -label.ear.path=Path - -tab.ear.wars=Web -title.ear.wars.filename=File -title.ear.wars.name=Name -title.ear.wars.path=Path - -tab.ear.jars=Ejb -title.ear.jars.filename=File -title.ear.jars.path=Path -title.ear.jars.name=Name - -tab.ear.rars=Resource Adapter -title.ear.rars.filename=File -title.ear.rars.name=Name -title.ear.rars.path=Path - -tab.ear.xmlDeploymentDescriptor=Deployment descriptor - -tab.rar=Rar -title.rar=Resource Adapter -label.rar.file=File -label.rar.path=Path -title.rar.ear=In application -label.rar.ear.path=Path -title.rar.properties=Properties -error.rar.notfound=
  • Resource adapter file not found : {0}
  • -title.rar.pooling=Connection pooling configuration -title.rar.poolState=Connections Pool State -title.rar.waitersStat=Statistics on waiters -title.rar.getConnectionStat=Statistics on getConnection operations -title.rar.openPhysConn=Connection to database statistics -label.rar.currentOpened=Current pool size -comment.rar.currentOpened=Physically opened connections -label.rar.currentBusy=Busy connections -comment.rar.currentBusy=Number of connections currently in use -label.rar.currentInTx=Busy in transactions -comment.rar.currentInTx=Number of connections used inside transactions -label.rar.busyMin=Min busy in last period -comment.rar.busyMin=Minimum number of busy connections in the last sampling period -label.rar.busyMax=Max busy in last period -comment.rar.busyMax=Maximum number of busy connections in the last sampling period -label.rar.openedCount=Number of connections -comment.rar.openedCount=Total number of connection operations -label.rar.connectionFailures=Number of failures -comment.rar.connectionFailures=Total number of failures when trying to make a connection -label.rar.connectionLeaks=Connection leaks -comment.rar.connectionLeaks=Number of connections which were closed without being requested by their user -label.rar.currentWaiters=Current number of waiters -comment.rar.currentWaiters=Number of waiters for a connection -label.rar.waitersHigh=Max waiters -comment.rar.waitersHigh=Maximum number of waiters since pool creation -label.rar.waitersHighRecent=Max waiters in last period -comment.rar.waitersHighRecent=Maximum number of waiters in the last sampling period -label.rar.waiterCount=Total waiters -comment.rar.waiterCount=Total number of waiters since pool creation -label.rar.waitingHigh=Max waiting time -comment.rar.waitingHigh=Maximum waiting time (in millisec) since pool creation -label.rar.waitingHighRecent=Max waiting in last period -comment.rar.waitingHighRecent=Maximum waiting time (in millisec) in the last sampling period -label.rar.waitingTime=Total waiting -comment.rar.waitingTime=Total waiting time (in millisec) since pool creation -label.rar.servedOpen=Served connections -comment.rar.servedOpen=Total number of served getConnection operations -label.rar.rejectedOpen=Rejected connections -comment.rar.rejectedOpen=Total number of rejected getConnection operations -label.rar.rejectedFull=By waiter overflow -comment.rar.rejectedFull=Number of rejected getConnection due to waiter overflow -label.rar.rejectedTimeout=By waiter timeout -comment.rar.rejectedTimeout=Number of rejected getConnection due to waiter timeout -label.rar.rejectedOther=By any other reason -comment.rar.rejectedOther=Number of rejected getConnection due to any other reason - -tab.rar.cf=Connection Factories -title.rar.cf=Connection Factories -title.rar.cf.name=Name -title.rar.cf.description=Description - -tab.rar.as=ActivationSpecs -title.rar.as=ActivationSpecs -title.rar.as.name=Name -title.rar.as.description=Description - -tab.rar.ao=Admin Objects -title.rar.ao=Admin Objects -title.rar.ao.name=Name -title.rar.ao.description=Description - -tab.resourceadapters=Resource Adapters -message.resourceadapters.none=No resource adapter found ! -label.resourceadapters.name=Name -label.resourceadapters.file=File -label.resourceadapters.path=Path - -tab.resourceadapter=Resource Adapter -title.resourceadapter=Resource Adapter -label.resourceadapter.name=Name -label.resourceadapter.file=File -label.resourceadapter.path=Path -label.resourceadapter.jndiname=JNDI Name -title.resourceadapter.ear=In application -label.resourceadapter.ear.path=Path -label.resourceadapter.rarlink=RAR Link -title.resourceadapter.properties=Properties -title.resourceadapter.joram.server=Joram server -title.resourceadapter.reqProperties=Required Properties -error.resourceadapter.notfound=
  • Resource adapter file not found : {0}
  • -label.resourceadapter.description=Description -title.resourceadapter.cf=Connection Factory -title.resourceadapter.as=Activation Spec -title.resourceadapter.ao=Admin Object -label.resourceadapter.space= -title.resourceadapter.pooling=Pool properties -title.resourceadapter.jdbcConnection=JDBC connection properties -label.resourceadapter.pstmtMax=Prepared statements max -comment.resourceadapter.pstmtMax=Maximum size of prepared statements cache -label.resourceadapter.initConnPool=Pool initial size -comment.resourceadapter.initConnPool=Initial size of the connection pool -error.resourceadapter.initConnPool.numberformat=
  • Pool initial size must be a number
  • -label.resourceadapter.minConnPool=Pool initial size -comment.resourceadapter.minConnPool=Initial size of the connection pool -label.resourceadapter.minConnPool=Pool minimum -comment.resourceadapter.minConnPool=Minimum size of the connection pool -error.resourceadapter.minConnPool.numberformat=
  • Pool minimum must be a number
  • -label.resourceadapter.maxConnPool=Pool maximum -comment.resourceadapter.maxConnPool=Maximum size of the connection pool (-1 = no max) -error.resourceadapter.maxConnPool.numberformat=
  • Pool maximum must be a number
  • -label.resourceadapter.connMaxAge=Maximum age -comment.resourceadapter.connMaxAge=Connection maximum age (Value in minutes) -error.resourceadapter.connMaxAge.numberformat=
  • Max age must be a number
  • -label.resourceadapter.maxOpentime=Maximum open time -comment.resourceadapter.maxOpentime=Connection maximum open time (Value in minutes) -error.resourceadapter.maxOpentime.numberformat=
  • Max open time must be a number
  • -label.resourceadapter.maxWaiters=Max Waiters -comment.resourceadapter.maxWaiters=Maximum number of concurrent waiters for a Connection -error.resourceadapter.maxWaiters.numberformat=
  • Max Waiters must be a number
  • -label.resourceadapter.maxWaitTime=Max Wait Time -comment.resourceadapter.maxWaitTime=Maximum time in seconds to wait for a Connection (0 = no wait) -error.resourceadapter.maxWaitTime.numberformat=
  • Max Wait Time must be a number
  • -label.resourceadapter.samplingPeriod=Sampling Period -comment.resourceadapter.samplingPeriod=Sampling Period in seconds -error.resourceadapter.samplingPeriod.numberformat=
  • Sampling Period must be a number
  • -label.resourceadapter.adjustPeriod=Adjust Period -comment.resourceadapter.adjustPeriod=Adjust Period in seconds -error.resourceadapter.adjustPeriod.numberformat=
  • Adjust Period must be a number
  • -title.resourceadapter.jdbc=JDBC resource adapter configuration (if applicable) -label.resourceadapter.jdbcConnCheckLevel=Checking level -comment.resourceadapter.jdbcConnCheckLevel=JDBC connection checking level:
    0 = no special checking
    1 = check before reuse if physical connection is still open
    2 = try every connection before reuse
    3 = keep alive (send test statement every sampling period) -label.resourceadapter.jdbcTestStatement=Test -comment.resourceadapter.jdbcTestStatement=SQL query for test statement - -tab.resourceadapter.rar.usedby=Used by -title.resourceadapter.rar.usedby.ejb=Ejb -title.resourceadapter.rar.usedby.type=Type -title.resourceadapter.rar.usedby.container=Container - -tab.resourceadapter.rar.statistics=Statistics - -tab.database.datasources=Datasources -message.database.datasources.none=No datasource found ! -title.database.datasources.name=Name -title.database.datasources.jndiName=JDNI name -title.database.datasources.jdbcConnectionOpened=JDBC Connection - -tab.database.datasource=Datasource -title.database.datasource.poolState=JDBC Connections Pool State -title.database.datasource.waitersStat=Statistics on waiters -title.database.datasource.getConnectionStat=Statistics on getConnection operations -title.database.datasource.openPhysConn=Connection to database statistics -label.database.datasource.currentOpened=Current pool size -comment.database.datasource.currentOpened=Physically opened JDBC Connections -label.database.datasource.currentBusy=Busy connections -comment.database.datasource.currentBusy=Number of connections currently in use -label.database.datasource.currentInTx=Busy in transactions -comment.database.datasource.currentInTx=Number of connections used inside transactions -label.database.datasource.busyMin=Min busy in last period -comment.database.datasource.busyMin=Minimum number of busy connections in the last sampling period -label.database.datasource.busyMax=Max busy in last period -comment.database.datasource.busyMax=Maximum number of busy connections in the last sampling period -label.database.datasource.openedCount=Number of connections -comment.database.datasource.openedCount=Total number of connection operations to the database -label.database.datasource.connectionFailures=Number of failures -comment.database.datasource.connectionFailures=Total number of failures when trying to connect to the database -label.database.datasource.connectionLeaks=Connection leaks -comment.database.datasource.connectionLeaks=Number of connections which were closed without being requested by their user -label.database.datasource.currentWaiters=Current number of waiters -comment.database.datasource.currentWaiters=Number of waiters for a connection -label.database.datasource.waitersHigh=Max waiters -comment.database.datasource.waitersHigh=Maximum number of waiters since pool creation -label.database.datasource.waitersHighRecent=Max waiters in last period -comment.database.datasource.waitersHighRecent=Maximum number of waiters in the last sampling period -label.database.datasource.waiterCount=Total waiters -comment.database.datasource.waiterCount=Total number of waiters since pool creation -label.database.datasource.waitingHigh=Max waiting time -comment.database.datasource.waitingHigh=Maximum waiting time (in millisec) since pool creation -label.database.datasource.waitingHighRecent=Max waiting in last period -comment.database.datasource.waitingHighRecent=Maximum waiting time (in millisec) in the last sampling period -label.database.datasource.waitingTime=Total waiting -comment.database.datasource.waitingTime=Total waiting time (in millisec) since pool creation -label.database.datasource.servedOpen=Served connections -comment.database.datasource.servedOpen=Total number of served getConnection operations -label.database.datasource.rejectedOpen=Rejected connections -comment.database.datasource.rejectedOpen=Total number of rejected getConnection operations -label.database.datasource.rejectedFull=By waiter overflow -comment.database.datasource.rejectedFull=Number of rejected getConnection due to waiter overflow -label.database.datasource.rejectedTimeout=By waiter timeout -comment.database.datasource.rejectedTimeout=Number of rejected getConnection due to waiter timeout -label.database.datasource.rejectedOther=By any other reason -comment.database.datasource.rejectedOther=Number of rejected getConnection due to any other reason -title.database.datasource.config=JDBC Datasource configuration -title.database.driver.config=JDBC Driver configuration -title.database.datasource.config.jdbc=JDBC connection configuration -label.database.datasource.datasourceName=Name -label.database.datasource.dsName=JNDI name -label.database.datasource.datasourceDescription=Description -label.database.datasource.url=URL -label.database.driver.className=Driver class name -label.database.datasource.userName=User name -label.database.datasource.password=User password -label.database.datasource.datasourceFactory=Factory -label.database.datasource.mapper=Mapper -label.database.datasource.jdbcConnMaxAge=Maximum age -comment.database.datasource.jdbcConnMaxAge=JDBC connection maximum age (Value in minutes) -error.database.datasource.jdbcConnMaxAge.numberformat=
  • Max age must be a number
  • -label.database.datasource.jdbcMaxOpenTime=Maximum open time -comment.database.datasource.jdbcMaxOpenTime=JDBC connection maximum open time (Value in minutes) -error.database.datasource.jdbcMaxOpenTime.numberformat=
  • Max open time must be a number
  • -label.database.datasource.jdbcConnCheckLevel=Checking level -comment.database.datasource.jdbcConnCheckLevel=JDBC connection checking level:
    0 = no special checking
    1 = check before reuse if physical connection is still open
    2 = try every connection before reuse -label.database.datasource.jdbcTestStatement=Test -comment.database.datasource.jdbcTestStatement=SQL query for test statement -label.database.datasource.jdbcMinConnPool=Pool minimum -comment.database.datasource.jdbcMinConnPool=Minimum size of the connection pool -error.database.datasource.jdbcMinConnPool.numberformat=
  • Pool minimum must be a number
  • -label.database.datasource.jdbcMaxConnPool=Pool maximum -comment.database.datasource.jdbcMaxConnPool=Maximum size of the connection pool (-1 = no max) -error.database.datasource.jdbcMaxConnPool.numberformat=
  • Pool maximum must be a number
  • -label.database.datasource.jdbcMaxWaitTime=Max Wait Time -comment.database.datasource.jdbcMaxWaitTime=Maximum time in seconds to wait for a jdbc Connection (0 = no wait) -error.database.datasource.jdbcMaxWaitTime.numberformat=
  • Max Wait Time must be a number
  • -label.database.datasource.jdbcMaxWaiters=Max Waiters -comment.database.datasource.jdbcMaxWaiters=Maximum number of concurrent waiters for a jdbc Connection -error.database.datasource.jdbcMaxWaiters.numberformat=
  • Max Waiters must be a number
  • -label.database.datasource.jdbcPstmtMax=Pstmt Pool Max -comment.database.datasource.jdbcPstmtMax=Maximum Size for the pool of Prepared Statements -error.database.datasource.jdbcPstmtMax.numberformat=
  • Pstmt Pool Max must be a number
  • -label.database.datasource.jdbcSamplingPeriod=Sampling Period -comment.database.datasource.jdbcSamplingPeriod=Sampling Period in seconds -error.database.datasource.jdbcSamplingPeriod.numberformat=
  • Sampling Period must be a number
  • -label.database.datasource.jdbcAdjustPeriod=Adjust Period -comment.database.datasource.jdbcAdjustPeriod=Pool Adjustment Period in seconds -error.database.datasource.jdbcAdjustPeriod.numberformat=
  • Adjust Period must be a number
  • - -tab.database.datasource.usedby=Used by -title.database.datasource.usedby.ejb=Ejb -title.database.datasource.usedby.type=Type -title.database.datasource.usedby.container=Container - -tab.database.datasource.statistics=Statistics - -tab.service.discovery=Discovery -action.title.discovery=Actions -label.service.discovery.multicastaddress=Multicast address -label.service.discovery.multicastport=Multicast port -label.service.discovery.multicastttl=Multicast ttl -label.service.discovery.ismaster=Is master -action.comment.service.discovery.start=Start discovery master -action.button.service.discovery.start=Start - -tab.service.security=Realms -title.service.security.realm.name=Name -title.service.security.realm.type=Type -title.service.security.realm.path=Context path -title.service.security.realm.used=Used -label.service.security.realm.type.unknown=unknown -label.service.security.realm.path.unknown=? -message.service.security.realm.notused=Security realm not used - -#--------------------------------------------------------------------------------------------------- - -title.config.confirmed=Configuration Saved - -tab.configure=Configure -tab.config.confirm=Confirm -tab.archiveConfigForm=Form View -tab.archiveConfigAdvanced=Advanced View - -label.config.switchTo=Switch To: - -button.config.switchToForm=Switch To Form View -button.config.switchToAdvanced=Switch To Advanced View -button.config.configure=Configure - -message.config.selectArchive=Select an archive to configure: -message.config.archiveName=Archive Name: -message.config.fileName=File Name: -message.config.confirmation=Are you sure you want to remove this element? -message.config.none=No deployable archives available. -message.config.archiveConfig=Archive Configuration - -error.config.noselect=An archive and a deployment descriptor must be selected. -#--------------------------------------------------------------------------------------------------- - -tab.deployment=Deployment -button.deployment.deploy=>>> -button.deployment.undeploy=<<< -label.deployment.deployable=Deployable -label.deployment.deployed=Deployed -label.deployment.apps=Applications -label.deployment.targets=Targets - -tab.deployment.confirm=Confirm -tab.deployment.result=Result -title.deployment.confirm.deployed=Deployed -message.deployment.confirm.deployed.none=None -title.deployment.confirm.add=To deploy -title.deployment.confirm.remove=To undeploy - -label.deployment.upload.selectFile=Select a file -message.upload.replace=Replace existing file - -tab.deployment.upload=Upload -tab.deployment.upload.result=Result - -tab.deployment.domain=Domain Deployment -tab.deployment.domain.result=Result -message.deployment.domain.deploymentOf=(Un)Deployment Of: -message.deployment.domain.toDeploy=To Deploy -message.deployment.domain.toUndeploy=To Undeploy -message.deployment.domain.targetServers=Deployment Target -message.deployment.domain.targetServersUndeploy=Undeployment Target -message.deployment.domain.noApps=No Applications Selected. -message.deployment.domain.noServers=No Servers Selected. -message.deployment.domain.selAll=Select All -message.deployment.domain.selNone=Select None -title.deployment.domain.deployOptions=Deployment Options -message.deployment.domain.deployOnly=Deploy Only -message.deployment.domain.undeploy=Undeploy -message.deployment.domain.uploadOnly=Distribute File Only -message.deployment.domain.uploadDeploy=Distribute File and (Re)deploy -message.deployment.domain.replace=Replace File(s) on Target(s) -message.deployment.domain.autoload=Distribute File(s) into Autoload -message.deployment.note=Note: Using the 'Distribute File and (Re)deploy' option above will redeploy the existing application if the file is replaced on the remote server using the checkbox below. - -title.deployment.remove.confirm.removed=Removed -title.deployment.remove.confirm.remove=To Remove -message.deployment.remove.confirm.deployed.none=None -tab.deployment.remove=Remove -tab.deployment.remove.confirm=Confirm -tab.deployment.remove.result=Result -label.deployment.remove.removable=Removable modules (undeployed modules) : -message.deployment.modules.none=No module available. Only undeployed modules can be removed. -#--------------------------------------------------------------------------------------------------- - -tab.resource.destinations=Jms destinations -tab.resource.destinations.create=New destination -tab.resource.destinations.confirm=Confirm remove -title.resource.jmsResources.action=Actions -title.resource.destination=Jms destination to create -button.resource.jmsResources.action.create=New Jms destination -button.resource.jmsResources.action.save=Save -button.resource.jmsResources.action.remove=Remove -comment.resource.jmsResources.action.create= -label.resource.destinations.name=Name -label.resource.destination.name=Name -label.resource.destinations.type=Type -label.resource.destinations.topic=topic -label.resource.destinations.queue=queue -comment.resource.destination.name= -error.resource.jms.create.name.required=
  • Name cannot be empty
  • -error.resource.jms.create.type.required=
  • Destination type must be checked
  • -error.resource.jms.create.password.required=
  • Password cannot be empty
  • -message.resource.destinations.none=No Jms destinations found on server -message.resource.destinations.list.empty=The list is empty ! - -error.resource.jms.addreader.name.required=
  • User name required
  • -error.resource.jms.addreader.id.required=
  • User id required
  • -error.resource.jms.addreader.name.error=
  • User name or id error. Check the Jms users list.
  • - -title.resource.mailfactories.action=Actions -button.resource.mailfactories.action.create=New Mail Factory -comment.resource.mailfactories.action.create=Create a new Mail Factory from an empty form - -label.resource.mailfactory.properties.name=Factory Name -label.resource.mailfactory.type.session=Session -label.resource.mailfactory.type.mimepart=MimePartDataSource -comment.resource.mailfactory.properties.name=Mail factory and properties file name -comment.resource.mailfactory.properties.type=Mail factory type -comment.resource.mailfactory.properties.jndiname=Jndi name -title.resource.mailfactory.configuration=Mail factory configuration -label.resource.mailfactory.name=Name -label.resource.mailfactory.type=mail.factory.type -label.resource.mailfactory.jndiname=mail.factory.name -title.resource.mailfactory.authentication=Authentication configuration -label.resource.mailfactory.authentication.username=mail.authentication.username -label.resource.mailfactory.authentication.password=mail.authentication.password -comment.resource.mailfactory.properties.username= -comment.resource.mailfactory.properties.password= -title.resource.mailfactory.session=Mail session configuration -comment.resource.mailfactory.properties.session= -title.resource.mailfactory.mimepart=MimePartDataSource configuration -label.resource.mailfactory.to=mail.to -comment.resource.mailfactory.properties.to= -label.resource.mailfactory.subject=mail.subject -comment.resource.mailfactory.properties.subject= -label.resource.mailfactory.cc=mail.cc -comment.resource.mailfactory.properties.cc= -label.resource.mailfactory.bcc=mail.bcc -comment.resource.mailfactory.properties.bcc= - -tab.resource.mailfactories=Mail Factories -tab.resource.session.mailfactory.properties=Session Mail Factory -tab.resource.mimepart.mailfactory.properties=MimePartDataSource Mail Factory -tab.resource.mailfactory.properties=Mail Factory -message.resource.mailfactories.none=No mail factory found ! -label.resource.mailfactories.name=Name -label.resource.mailfactories.deployed= - -tab.resource.datasources=Datasources -title.resource.datasources.action=Actions -button.resource.datasources.action.create=New datasource -comment.resource.datasources.action.create=Create an empty file for a new datasource -message.resource.datasources.none=No datasource found ! -label.resource.datasources.name=Name -label.resource.datasources.deployed= - -button.rar.action.create=New Resource Adapter -comment.rar.action.create=Create an empty resource adapter. -message.resourcadapter.select.template=Please select a Resource Adapter template -tab.resource.datasource.properties.create=New Datasource -tab.resourceadapter.create=New Resource Adapter -tab.resource.datasource.properties=Datasource -tab.resource.datasource.confirm=Confirm loading datasource -title.resource.datasource.properties.name=File -title.resource.datasource.properties.datasource=Datasource -title.resourceadapter.resourceadapter=Resource Adapter -title.resource.datasource.properties.jdbc=JDBC -label.resource.datasource.properties.name=Name -comment.resource.datasource.properties.name=Name of the datasource -label.resourceadapter.extention=.rar -label.resourceadapter.rarname=Resource Adapter Name -comment.resourceadapter.rarname=Name of the Resource Adapter File -label.resourceadapter.displayname=Display Name -comment.resourceadapter.displayname=Display name for this Resource Adapter -label.resourceadapter.description=Description -comment.resourceadapter.description=The description of this Resource Adapter -label.resourceadapter.vendorname=Vendor Name -comment.resourceadapter.vendorname=Vendor name for this Resource Adapter -label.resourceadapter.specversion=Spec-Version -comment.resourceadapter.specversion=The specification version -label.resourceadapter.eistype=EIS-Type -comment.resourceadapter.eistype=The EIS-Type -label.resourceadapter.version=Version -comment.resourceadapter.version=The version - -label.resourceadapter.jdbcconparam=JDBC Connection Parameters -label.resourceadapter.checklevel=Check Level -comment.resourceadapter.checklevel=JDBC connection checking level:
    0 = no special checking
    1 = check before reuse if physical connection is still open
    2 = try every connection before reuse -title.resourceadapter.jdbc=JDBC Properties -label.resourceadapter.jndiname=JNDI Name -label.resourceadapter.nativelib=Native-Lib -label.resourceadapter.logenabled=Log-Enabled -label.resourceadapter.logtopic=Log-Topic -label.resourceadapter.poolinit=pool-init -comment.resourceadapter.poolinit=Initial size of the connection pool -label.resourceadapter.poolmin=pool-min -comment.resourceadapter.poolmin=Minimum size of the connection pool -label.resourceadapter.poolmax=pool-max -comment.resourceadapter.poolmax=Maximum size of the connection pool (-1 = no max) -label.resourceadapter.poolmaxage=pool-max-age-minutes -comment.resourceadapter.poolmaxage=Connection maximum age (Value in minutes) -label.resourceadapter.pstmtmax=pstmt-max -comment.resourceadapter.pstmtmax=Maximum size of prepared statements cache -label.resourceadapter.poolmaxopentime=pool-max-opentime -comment.resourceadapter.poolmaxopentime=Connection maximum open time (Value in minutes) -label.resourceadapter.poolmaxwaiters=pool-max-waiters -comment.resourceadapter.poolmaxwaiters=Maximum number of concurrent waiters for a Connection -label.resourceadapter.poolmaxwaittime=pool-max-waittime -comment.resourceadapter.poolmaxwaittime=Maximum time in seconds to wait for a Connection (0 = no wait) -label.resourceadapter.poolsamplingperiod=pool-sampling-period -comment.resourceadapter.poolsamplingperiod=Sampling Period in seconds -label.resourceadapter.dsclass=dsClass -label.resourceadapter.url=URL -label.resourceadapter.user=user -label.resourceadapter.password=password -label.resourceadapter.logintimeout=loginTimeout -label.resourceadapter.isolationlevel=isolationLevel -label.resourceadapter.mappername=mapperName -label.resourceadapter.configlogtopic=logTopic -label.resourceadapter.poolparams=Pool-Params -label.resourceadapter.jonasconfigproperties=JOnAS Config Properties - -error.resourceadapter.rarname.required=
  • Resource Adapter Name cannot be empty
  • -error.resourceadapter.displayname.required=
  • Resource Adapter Display Name cannot be empty
  • -error.resourceadapter.description.required=
  • Resource Adapter Description cannot be empty
  • -error.resourceadapter.vendorname.required=
  • Resource Adapter Vendor Name cannot be empty
  • -error.resourceadapter.specversion.required=
  • Resource Adapter Specification Version cannot be empty
  • -error.resourceadapter.eistype.required=
  • Resource Adapter EIS-Type cannot be empty
  • -error.resourceadapter.version.required=
  • Version cannot be empty
  • -error.resource.datasource.properties.name.required=
  • Name cannot be empty
  • -label.resource.datasource.properties.datasourceName=JNDI name -comment.resource.datasource.properties.datasourceName=The JNDI name to use the datasource -error.resource.datasource.properties.datasourceName.required=
  • JNDI name cannot be empty
  • -label.resource.datasource.properties.datasourceDescription=Description -comment.resource.datasource.properties.datasourceDescription=Description of the datasource -label.resource.datasource.properties.datasourceUrl=URL -comment.resource.datasource.properties.datasourceUrl=URL to access to the database -label.resource.datasource.properties.datasourceClassname=JDBC Driver -comment.resource.datasource.properties.datasourceClassname=JDBC driver class name to access to the database -error.resource.datasource.properties.datasourceClassname.required=
  • JDBC Driver cannot be empty
  • -label.resource.datasource.properties.datasourceUsername=User name -comment.resource.datasource.properties.datasourceUsername=User name or login to log in the database -label.resource.datasource.properties.datasourcePassword=User password -comment.resource.datasource.properties.datasourcePassword=User password to log in the database -label.resource.datasource.properties.datasourceFactory=Factory -comment.resource.datasource.properties.datasourceFactory=Name of the class implementing the XAPoolDataSource -label.resource.datasource.properties.datasourceMapper=Mapper -comment.resource.datasource.properties.datasourceMapper=Mapper used for the datasource -label.resource.datasource.properties.jdbcConnmaxage=Maximum age -comment.resource.datasource.properties.jdbcConnmaxage=JDBC connection maximum age (Value in minutes) -error.resource.datasource.properties.jdbcConnmaxage.numberformat=
  • Maximum age must be a number
  • -label.resource.datasource.properties.jdbcMaxopentime=Max open time -comment.resource.datasource.properties.jdbcMaxopentime=JDBC connection maximum open time (Value in minutes) -error.resource.datasource.properties.jdbcMaxopentime.numberformat=
  • Max open time must be a number
  • -label.resource.datasource.properties.jdbcConnchecklevel=Checking level -comment.resource.datasource.properties.jdbcConnchecklevel=JDBC connection checking level:
    0 = no special checking
    1 = check before reuse if physical connection is still open
    2 = try every connection before reuse -label.resource.datasource.properties.jdbcConnteststmt=Test -comment.resource.datasource.properties.jdbcConnteststmt=SQL query for test statement -label.resource.datasource.properties.jdbcMinconpool=Pool minimum -comment.resource.datasource.properties.jdbcMinconpool=Minimum size of the connection pool -error.resource.datasource.properties.jdbcMinconpool.numberformat=
  • Pool minimum must be a number
  • -label.resource.datasource.properties.jdbcMaxconpool=Pool maximum -comment.resource.datasource.properties.jdbcMaxconpool=Maximum size of the connection pool (-1 = no max) -error.resource.datasource.properties.jdbcMaxconpool.numberformat=
  • Pool maximum must be a number
  • -label.resource.datasource.properties.jdbcMaxwaittime=Max Wait Time -comment.resource.datasource.properties.jdbcMaxwaittime=Maximum time in seconds to wait for a jdbc connection (0 = no wait) -error.resource.datasource.properties.jdbcMaxwaittime.numberformat=
  • Max Wait Time must be a number
  • -label.resource.datasource.properties.jdbcMaxwaiters=Max Waiters -comment.resource.datasource.properties.jdbcMaxwaiters=Maximum concurrent waiters for a jdbc connection -error.resource.datasource.properties.jdbcMaxwaiters.numberformat=
  • Max Waiters must be a number
  • - -#--------------------------------------------------------------------------------------------------- - -tab.security.factory.realms=Security -tab.security.factory.realms.memory=Memory realm -tab.security.factory.realms.datasource=Datasource realm -tab.security.factory.realms.ldap=Ldap realm -title.security.factory.realms.action=Actions -button.security.factory.realms.create.memory=New memory realm -button.security.factory.realms.create.datasource=New datasource realm -button.security.factory.realms.create.ldap=New ldap realm -button.security.factory.realms.remove=Remove -message.security.factory.realms.none=No realm found ! -title.security.factory.realms.name=Name -title.security.factory.realms.type=Realm -error.security.factory.realms.type.unknown=
  • Realm type is unknown : {0}
  • -tab.security.factory.realms.confirm=Confirm - -button.security.factory.memory.realm.clearCache=Clear cache - -tab.security.factory.memory.realm=Realm -tab.security.factory.memory.realm.new=New memory realm -title.security.factory.memory.realm.action=Action -title.security.factory.memory.realm=Memory realm -label.security.factory.memory.realm.resource=Realm name -label.security.factory.memory.realm.name=Name -comment.security.factory.memory.realm.name= -error.security.factory.memory.realm.name.required=
  • The name is required !
  • -error.security.factory.memory.realm.name.nospace=
  • Name : spaces forbidden
  • - -tab.security.factory.memory.realm.users=Users -title.security.factory.memory.realm.users.action=Actions -button.security.factory.memory.realm.users.create=New user -button.security.factory.memory.realm.users.remove=Remove users -message.security.factory.memory.realm.users.none=No user found ! -label.security.factory.memory.realm.users.user=User name -error.security.factory.memory.realm.users.user.required=User required ! - -tab.security.factory.memory.realm.roles=Roles -title.security.factory.memory.realm.roles.action=Actions -button.security.factory.memory.realm.roles.create=New role -button.security.factory.memory.realm.roles.remove=Remove roles -message.security.factory.memory.realm.roles.none=No role found ! -label.security.factory.memory.realm.roles.role=Role name -error.security.factory.memory.realm.roles.role.required=Role required ! - -tab.security.factory.memory.realm.groups=Groups -title.security.factory.memory.realm.groups.action=Actions -button.security.factory.memory.realm.groups.create=New group -button.security.factory.memory.realm.groups.remove=Remove groups -message.security.factory.memory.realm.groups.none=No group found ! -label.security.factory.memory.realm.groups.group=Group name -error.security.factory.memory.realm.groups.group.required=Group required ! - -tab.security.factory.memory.realm.confirm=Confirm -message.security.factory.memory.realm.list.empty=The list is empty ! -title.security.factory.memory.realm.confirm.user.remove=User's list to remove -title.security.factory.memory.realm.confirm.group.remove=Group's list to remove -title.security.factory.memory.realm.confirm.role.remove=Role's list to remove - -tab.security.factory.memory.realm.user=User -title.security.factory.memory.realm.user=User -title.security.factory.memory.realm.user.roles=Roles -label.security.factory.memory.realm.user.roles.notused=Available -label.security.factory.memory.realm.user.roles.used=User's roles -title.security.factory.memory.realm.user.groups=Groups -label.security.factory.memory.realm.user.groups.notused=Available -label.security.factory.memory.realm.user.groups.used=User's groups -title.security.factory.memory.realm.user.password=Change password -label.security.factory.memory.realm.user.password=Password -label.security.factory.memory.realm.user.confirmPassword=Confirm password -error.security.factory.memory.realm.user.password.change.different=
  • The password and the confirmation are different !
  • -error.security.factory.memory.realm.user.password.change.required=
  • The password is required with confirmation !
  • - -tab.security.factory.memory.realm.user.new=New user -title.security.factory.memory.realm.user.new=User -label.security.factory.memory.realm.user.name=User name -error.security.factory.memory.realm.user.name.required=
  • The user name is required !
  • -error.security.factory.memory.realm.user.password.required=
  • The password is required !
  • -error.security.factory.memory.realm.user.confirmPassword.required=
  • The confirm password is required !
  • - -tab.security.factory.memory.realm.role=Role -title.security.factory.memory.realm.role=Role -label.security.factory.memory.realm.role.description=Description - -tab.security.factory.memory.realm.role.new=New role -title.security.factory.memory.realm.role.new=Role -label.security.factory.memory.realm.role.name=Role name -error.security.factory.memory.realm.role.name.required=
  • The role name is required !
  • - -tab.security.factory.memory.realm.group=Group -title.security.factory.memory.realm.group=Group -label.security.factory.memory.realm.group.description=Description -title.security.factory.memory.realm.group.roles=Roles -label.security.factory.memory.realm.group.roles.notused=Available -label.security.factory.memory.realm.group.roles.used=Group's roles - -tab.security.factory.memory.realm.group.new=New group -title.security.factory.memory.realm.group.new=Group -label.security.factory.memory.realm.group.name=Group name -error.security.factory.memory.realm.group.name.required=
  • The group name is required !
  • - -tab.security.factory.datasource.realm=Realm -tab.security.factory.datasource.realm.new=New datasource realm -title.security.factory.datasource.realm=Datasource realm -label.security.factory.datasource.realm.dsName=JNDI name -comment.security.factory.datasource.realm.dsName= -error.security.factory.datasource.realm.dsName.required=
  • The JNDI name is required !
  • -label.security.factory.datasource.realm.name=Name -comment.security.factory.datasource.realm.name=Name of realm -error.security.factory.datasource.realm.name.required=
  • The name is required !
  • -label.security.factory.datasource.realm.roleTable=Role table -comment.security.factory.datasource.realm.roleTable=The name of table of roles -error.security.factory.datasource.realm.roleTable.required=
  • The Role table is required !
  • -label.security.factory.datasource.realm.roleTableRolenameCol=Column Rolename in Role table -comment.security.factory.datasource.realm.roleTableRolenameCol=The name of the role's column in the Role table -error.security.factory.datasource.realm.roleTableRolenameCol.required=
  • The Column Rolename in Role table is required !
  • -label.security.factory.datasource.realm.roleTableUsernameCol=Column Username in Role table -comment.security.factory.datasource.realm.roleTableUsernameCol=The name of the user's column in the Role Table -error.security.factory.datasource.realm.roleTableUsernameCol.required=
  • The Column Username in Role table is required !
  • -label.security.factory.datasource.realm.userTable=User table -comment.security.factory.datasource.realm.userTable=The name of table of users -error.security.factory.datasource.realm.userTable.required=
  • The User table is required !
  • -label.security.factory.datasource.realm.userTablePasswordCol=Column Password in User table -comment.security.factory.datasource.realm.userTablePasswordCol=The name of the password's column in the User table -error.security.factory.datasource.realm.userTablePasswordCol.required=
  • The Column Password in User table is required !
  • -label.security.factory.datasource.realm.userTableUsernameCol=Column Username in User table -comment.security.factory.datasource.realm.userTableUsernameCol=The name of the username's column in the User table -error.security.factory.datasource.realm.userTableUsernameCol.required=
  • The Column Username in User table is required !
  • -label.security.factory.datasource.realm.algorithm=Algorithm -comment.security.factory.datasource.realm.algorithm=Default algorithm used to crypt the passwords - -tab.security.factory.ldap.realm=Realm -tab.security.factory.ldap.realm.new=New Ldap realm -title.security.factory.ldap.realm=Ldap realm -label.security.factory.ldap.realm.authenticationMode=Authentication Mode -comment.security.factory.ldap.realm.authenticationMode= -label.security.factory.ldap.realm.baseDn=Base DN -comment.security.factory.ldap.realm.baseDn=DN used by default -error.security.factory.ldap.realm.baseDn.required=
  • The Base DN is required !
  • -label.security.factory.ldap.realm.initialContextFactory=Initial Context Factory -comment.security.factory.ldap.realm.initialContextFactory=Used class to access to Ldap -error.security.factory.ldap.realm.initialContextFactory.required=
  • The Initial Context Factory is required. The default value was replaced !
  • -label.security.factory.ldap.realm.language=Language -comment.security.factory.ldap.realm.language=(optional) -label.security.factory.ldap.realm.name=Name -comment.security.factory.ldap.realm.name=Name of realm -error.security.factory.ldap.realm.name.required=
  • The name is required !
  • -label.security.factory.ldap.realm.providerUrl=Provider URL -comment.security.factory.ldap.realm.providerUrl=Used URL to Ldap access -error.security.factory.ldap.realm.providerUrl.required=
  • The Provider URL is required. The default value was replaced !
  • -label.security.factory.ldap.realm.referral=Referral -comment.security.factory.ldap.realm.referral=(optional) -label.security.factory.ldap.realm.roleDn=Role DN -comment.security.factory.ldap.realm.roleDn=Used DN to access to the role (optional by default the Base DN is used) -label.security.factory.ldap.realm.roleNameAttribute=Role Name Attribute -comment.security.factory.ldap.realm.roleNameAttribute= -error.security.factory.ldap.realm.roleNameAttribute.required=
  • The Role Name Attribute is required. The default value was replaced !
  • -label.security.factory.ldap.realm.roleSearchFilter=Role Search Filter -comment.security.factory.ldap.realm.roleSearchFilter= -error.security.factory.ldap.realm.roleSearchFilter.required=
  • The Role Search Filter is required. The default value was replaced !
  • -label.security.factory.ldap.realm.securityAuthentication=Security Authentication -comment.security.factory.ldap.realm.securityAuthentication= -label.security.factory.ldap.realm.securityCredentials=Security Credentials -comment.security.factory.ldap.realm.securityCredentials= -label.security.factory.ldap.realm.securityPrincipal=Security Principal -comment.security.factory.ldap.realm.securityPrincipal= -label.security.factory.ldap.realm.securityProtocol=Security Protocol -comment.security.factory.ldap.realm.securityProtocol=(optional) -label.security.factory.ldap.realm.stateFactories=State Factories -comment.security.factory.ldap.realm.stateFactories=(optional) -label.security.factory.ldap.realm.userDn=User DN -comment.security.factory.ldap.realm.userDn=Used DN to access to the user (optional by default the Base DN is used) -label.security.factory.ldap.realm.userPasswordAttribute=User Password Attribute -comment.security.factory.ldap.realm.userPasswordAttribute= -error.security.factory.ldap.realm.userPasswordAttribute.required=
  • The User Password Attribute is required. The default value was replaced !
  • -label.security.factory.ldap.realm.userRolesAttribute=User Roles Attribute -comment.security.factory.ldap.realm.userRolesAttribute= -error.security.factory.ldap.realm.userRolesAttribute.required=
  • The User Roles Attribute is required. The default value was replaced !
  • -label.security.factory.ldap.realm.userSearchFilter=User Search Filter -comment.security.factory.ldap.realm.userSearchFilter= -error.security.factory.ldap.realm.userSearchFilter.required=
  • The User Search Filter is required. The default value was replaced !
  • -label.security.factory.ldap.realm.algorithm=Algorithm -comment.security.factory.ldap.realm.algorithm=Default algorithm used to crypt the passwords - -tab.security.catalina.realm=Catalina realms -message.security.catalina.realm.notused=Security realm not used -label.security.catalina.realm.name=Catalina realm name - -title.security.catalina.realm.name=Name -title.security.catalina.realm.used=Used - -tab.jmsservice=MOM -tab.jms.queues=Queues -tab.jms.topics=Topics -tab.jms.connfacts=Connection Factories -tab.jms.cf.usedby=Used by -tab.jms.queue.usedby=Used by -tab.jms.topic.usedby=Used by -title.jms.cf.usedby.ejb=Ejb -title.jms.cf.usedby.type=Type -title.jms.cf.usedby.container=Container -title.jms.queue.usedby.ejb=Ejb -title.jms.queue.usedby.type=Type -title.jms.queue.usedby.container=Container -title.jms.topic.usedby.ejb=Ejb -title.jms.topic.usedby.type=Type -title.jms.topic.usedby.container=Container - -label.service.jms.momName=Name -label.service.jms.momLocation=Location -label.service.jms.momUrl=URL -label.service.jms.topic.subscriptions=Number of subscribers -label.service.jms.queue.pendingMessages=Pending messages -label.service.jms.queue.pendingRequests=Pending consumers -label.service.jms.cf.mode=Messaging mode -tab.mom.collocated=Collocated -tab.mom.distant=Remote -tab.mom.joram=JORAM -tab.connfact.defaultconnfact=Default Connection Factory Name -tab.connfact.defaulttopicconnfact=Default Topic Connection Factory Name -tab.connfact.defaultqueueconnfact=Default Queue Connection Factory Name -title.jms.connfact.name=Name -title.jms.connfact.comment=Info - -message.service.jms.queues.none=No JMS queue found ! -message.service.jms.topics.none=No JMS topic found ! -message.service.jms.destinations.none=No JMS destination found ! -#--------------------------------------------------------------------------------------------------- -tab.workmanagerservice=Work Manager -label.workmanagerservice.current.pool.size=Current Pool Size -label.workmanagerservice.max.pool.size=Max Pool Size -label.workmanagerservice.min.pool.size=Min Pool Size -#--------------------------------------------------------------------------------------------------- -tab.versioningservice=Versioning -label.versioningservice.enabled=Versioning enabled -label.versioningservice.defaultpolicy=Default deployment policy -#--------------------------------------------------------------------------------------------------- -tab.workcleanerservice=Work Cleaner -label.workcleanerservice.period=Execution period -title.workcleanerservice.action=Action -title.workcleanerservice.setting=Setting -#--------------------------------------------------------------------------------------------------- -tab.smartclientservice=Smart Client -label.smartclient.port=Port number -label.smartclient.active=EasyBeans SmartClient active -#--------------------------------------------------------------------------------------------------- -tab.mailservice=Mail -tab.mailservice.sessions=Session Mail Factories -tab.mailservice.mimeparts=MimePartDatasource Mail Factories -tab.mailservice.mailfactory.usedby=Used by -title.mailservice.factories=Number of available mail factories -title.mailservice.mailfactory.configuration=Mail factory configuration -title.mailservice.mailfactory.authentication.configuration=Authentication configuration -title.mailservice.mailfactory.usedby.ejb=Ejb -title.mailservice.mailfactory.usedby.type=Type -title.mailservice.mailfactory.usedby.container=Container -title.mailservice.mailfactory.session.configuration=Mail Session configuration -title.mailservice.mailfactory.mimepart.configuration=MimePartDataSource configuration -label.mailservice.nbfact.session=Session factories -label.mailservice.nbfact.mimepart=MimePartDataSource -label.mailservice.nbfact.total=Total -label.mailservice.mailfactory.type=Type -label.mailservice.mailfactory.jndiname=Jndi name -label.mailservice.mailfactory.authentication.username=mail.authentication.username -label.mailservice.mailfactory.authentication.password=mail.authentication.password -label.mailservice.mailfactory.mimepart.to=mail.to -label.mailservice.mailfactory.mailfactory.subject=mail.subject -label.mailservice.mailfactory.mimepart.cc=mail.cc -label.mailservice.mailfactory.mimepart.bcc=mail.bcc -message.mailservice.mailfactory.session=Session -message.mailservice.mailfactory.mimepart=MimePartDataSource -message.mailservice.sessions.none=No Session mail factories ! -title.mailservice.factory.name=Name -title.mailservice.factory.jndiname=JNDI name -message.mailservice.mimepart.none=No MimePartDataSource mail factories ! -error.mailservice.mailfactory.emptyjndiname=
  • Can't accept empty Jndi name
  • -error.mailservice.mailfactory.emptyname=
  • Can't accept empty factory name
  • -error.mailservice.mailfactory.emptytype=
  • Please check in the type
  • -#--------------------------------------------------------------------------------------------------- - -tab.jtmservice=Transaction Manager -tab.jtmservice.stat=Statistics -tab.jtmservice.moni=Monitor -tab.jtmservice.reco=Recovery -tab.jtmservice.xars=XAResource -tab.jtm.collocated=collocated -tab.jtm.distant=Remote -tab.jtm.undefined=undefined -label.service.jtm.location=Location -label.service.jtm.host=Host name -label.service.jtm.port=Port number -label.service.jtm.timeout=Transaction time-out -label.service.jtm.stat.current=Current number of transactions -label.service.jtm.stat.begun=Number of begun transactions -label.service.jtm.stat.commited=Number of commited transactions -label.service.jtm.stat.rolledback=Number of rolledback transactions -label.service.jtm.stat.expired=Number of transactions with expired time-out -label.service.jtm.moni.date=Date -label.service.jtm.moni.transaction=Transaction -label.service.jtm.moni.resource=Resource -label.service.jtm.moni.state=State -message.transactionsentries.none=No Transactions in Execution ! -label.service.jtm.reco.transaction=Transaction -label.service.jtm.reco.date=Date -label.service.jtm.reco.xidcount=Xid Count -label.service.jtm.reco.resmgr=Resource Manager -label.service.jtm.reco.xares=XAResource -label.service.jtm.reco.xid=Xid -label.service.jtm.reco.xidstate=Xid State -label.service.jtm.reco.nolabel= -message.recoveryentries.none=No Transactions to Recover ! -button.service.jtm.reset=Reset counters -button.service.jtm.refreshtx=Refresh Tx -button.service.jtm.heurcommit=Heuristic Commit -button.service.jtm.heurrollback=Heuristic Rollback -button.service.jtm.heurforget=Forget Tx -tab.xaresource.recovery.confirm=Confirm -message.xaresource.recovery.non.selected=No XAResources selected ! -title.xaresource.recovery.confirm.commit=Commit XAResources selected -title.xaresource.recovery.confirm.rollback=Rollback XAResources selected -title.xaresource.recovery.confirm.forget=Forget XAResources selected -error.jtm.timeOut.required=
  • Transaction time-out cannot be empty
  • -error.jtm.timeOut.format=
  • Transaction time-out not a valid integer!
  • -#--------------------------------------------------------------------------------------------------- - -tab.depmonitorservice= Deployment Monitor -label.service.depmonitorservice.development.mode=Development mode -label.service.depmonitorservice.directories=Deployent directories -label.service.depmonitorservice.monitorInterval=Monitor interval - -#--------------------------------------------------------------------------------------------------- -tab.service.webservice.descriptions.title=Web Service Descriptions -message.service.webservice.nowebservice=No web services found! -label.service.webservice.descriptions.name=Name -label.service.webservice.descriptions.wsdlurl=Published WSDL URL -label.service.webservice.descriptions.portcomponents=Port Components -label.service.webservice.descriptions.wsdlfilename=WSDL File Name - -tab.service.webservice.portcomponents.title=Port Components - -message.service.webservice.portcomponents.none=No port components found! -message.service.webservice.descriptions.portcomponents.link=Click here for Port Components! - -label.service.webservice.portcomponents.name=Name -label.service.webservice.portcomponents.wsdlport=WSDL Port QName -label.service.webservice.portcomponents.sei=SEI -label.service.webservice.portcomponents.endpoint=Endpoint URL -label.service.webservice.portcomponents.implbean=Implementation Bean - -tab.service.webservice.details=Web Service -tab.service.webservice.details.title=Web Service Description Details -title.service.webservice.details=Web Service Description Details -label.service.webservice.details.name=Name -label.service.webservice.details.wsdlurl=Published WSDL URL -label.service.webservice.details.portcomponents=Port Components -label.service.webservice.details.wsdlfilename=WSDL File Name -label.service.webservice.details.mappingfilename=JAX-RPC Mapping File Name -message.service.webservice.details.portcomponents.link=Click here for Port Components! - -title.service.webservice.portcomponents.details=Web Service Port Component Details -label.service.webservice.portcomponents.details.name=Name -label.service.webservice.portcomponents.details.wsdlport=Published Port QName -label.service.webservice.portcomponents.details.sei=Service Endpoint Interface -label.service.webservice.portcomponents.details.endpoint=EndPoint URL -label.service.webservice.portcomponents.details.implbean=Implementation Bean -label.service.webservice.portcomponents.details.handlers=Handlers -message.service.webservice.portcomponents.details.handlers.link=Click here for Handler details! -message.service.webservice.portcomponents.details.implbean.link=Click here for Implementation Bean details! - -tab.service.webservice.portcomponents.handlers.title=Handlers -title.service.webservice.portcomponents.handlers.details=Web Service Handler Details -message.service.webservice.portcomponents.handlers.none=No handlers found! - -label.service.webservice.portcomponents.handlers.details.name=Name -label.service.webservice.portcomponents.handlers.details.classname=Handler Class Name -label.service.webservice.portcomponents.handlers.details.soapheaders=Soap Headers -label.service.webservice.portcomponents.handlers.details.soaproles=Soap Roles -label.service.webservice.portcomponents.handlers.details.initParams=Handler Initialization Parameters - -#--------------------------------------------------------------------------------------------------- - -tab.mbeans=MBeans -title.mbeans.domain=Domain -title.mbeans.family=Family -title.mbeans.objectname=Object Name -label.mbeans.j2ee=J2EE -label.mbeans.owner=Owner -label.mbeans.unknown=? - -tab.mbeans.j2ee=J2EEs -title.mbeans.j2ee.type=j2eeType -title.mbeans.j2ee.name=Name - -tab.mbeans.owner=Owners -title.mbeans.owner.type=Type - -tab.mbeans.unknown=Unknowns - -tab.mbean.properties=Properties -tab.mbean.attributes=Attributes -tab.mbean.operations=Operations -title.mbean.attributes.filtering=Filtering -title.mbean.attributes.list=List of attributes -label.mbean.attributes.values=Values -label.mbean.attributes.descriptions=Descriptions -message.mbean.attributes.none=No attribute found ! -title.mbean.operations.filtering=Filtering -title.mbean.operations.list=List of operations -label.mbean.operations.descriptions=Descriptions -message.mbean.operations.none=No operation found ! - -#--------------------------------------------------------------------------------------------------- - -error.global=
  • Error name : {0}
  • -error.global.log=Error name : {0} -error.global.message=
  • Error name : {0}
      Message :
    • {1}
  • -error.global.message.log=Error name : {0}, message : {1} - -error.mbeanserver.notfound=JOnAS Administration can't execute. The MBean server is not found. Please check the application environment. -error.jonasserver.notfound=JOnAS Administration can't execute. The JOnAS server is not found. Please check the application environment. -error.mbean.j2eedomain.notfound=JOnAS Administration can't execute. The MBean "J2EEDomain" is not found. Please check the application environment. -error.mbean.j2eeserver.notfound=JOnAS Administration can't execute. The MBean "J2EEServer" is not found. Please check the application environment. - -error.ejb.type.unknown=EJB type unknown:
    • name={0}
    • filename={1}
    -error.deploy.noselect=Before submitting, move a file ! -error.deploy=
    • Deploy error : {0}
      {1}
    -error.deploy.datasource.isloaded=Datasource already loaded ! -error.undeploy=
    • Undeploy error : {0}
      {1}
    -error.undeploy.datasource.dependences=Dependence with {0} -error.undeploy.mailfactory.dependences=Dependence with {0} -error.domain.deploy.noselect=Please select at least one application and at least one target server. -error.remove.noselect=Before removing a file, select a file ! -error.remove=
    • Remove error : {0}
      {1}
    - -error.archiveconfig.valid.fail=Validation Failed:
    • {0}
    -error.archiveconfig.load.fail=Cannot edit {0}, the file is not present in the archive. - -warning.jonas.service.database.notActivated=
  • Database Service not activated !
  • -warning.jonas.service.jms.notActivated=
  • JMS Service not activated !
  • -warning.jonas.service.mail.notActivated=
  • Mail Service not activated !
  • - - -# -------------------------------------------------------- - -treenode.joramplatform=Joram platform -treenode.joramplatform.joramlocalserver=Local server -treenode.joramplatform.joramcurrentserver=Current server -treenode.joramplatform.queue=Queue -treenode.joramplatform.topic=Topic -treenode.joramplatform.joramremoteserver=Remote server - -tab.joramplatform=Platform configuration -tab.joramservers=Servers -tab.joramxml=a3servers.xml -tab.joramadapter=Resource Adapter configuration -tab.joramservers=Joram servers -label.joramplatform.release=Implementation version -label.joramplatform.configuration=Configuration -tab.joramplatform.joramlocalserver=Server Id -tab.joramplatform.joramlocaldestinations=Local JMS destinations -tab.joramplatform.joramcurrentdestinations=JMS destinations -tab.joramplatform.joramdestinations=JMS destinations -tab.joramplatform.joramlocalusers=Local JMS users -tab.joramplatform.joramcurrentusers=JMS users -tab.joramplatform.joramusers=JMS users -#tab.joramplatform.joramaftercreate=List -tab.joramplatform.joramaftercreate=JMS destinations -#tab.joramplatform.joramlocalaftercreate=List local -tab.joramplatform.joramlocalaftercreate=Local JMS destinations -tab.joramplatform.joramlocalqueues=Local Queues -tab.joramplatform.joramlocaltopics=Local Topics -tab.joramplatform.joramremotedestinations=Remote JMS destinations -label.joramplatform.joramlocalserver.serverId=Server Id -label.joramplatform.joramlocalserver.host=Host name -label.joramplatform.joramlocalserver.port=Server port -tab.joramplatform.joramremoteserver=Remote server -label.joramplatform.joramremoteserver.serverId=Server identifier -tab.joramplatform.joramlocalserver.destination=Destination properties -label.joramplatform.joramserver.serverId=Server Id -label.joramplatform.joramserver.serverDmq=Default DMQ -label.joramplatform.joramserver.serverThreshold=Default Threshold -tab.joramplatform.queue= queue -tab.joramplatform.topic= topic -label.joramadmin.destination.id=Agent identifier -label.joramadmin.destination.name=Name -label.joramadmin.destination.creationDate=Creation date -label.joramadmin.destination.dmq=Dead Message Queue -label.joramadmin.destination.readable=Freely Readable -label.joramadmin.destination.writeable=Freely Writeable -label.joramadmin.destination.reader.list=Readers -label.joramadmin.destination.writer.list=Writers -label.joramadmin.queue.message.ids=Message Ids -label.joramadmin.queue.message.nbmax=Max number of messages -label.joramadmin.queue.nbmax.notset=Not set -label.joramadmin.queue.pending.messages=Pending messages -label.joramadmin.queue.pending.requests=Pending consumers -label.joramadmin.queue.threshold=Threshold for DMQ -label.joramadmin.queue.dmq.notset=Not set -label.joramadmin.topic.dmq.notset=Not set -label.joramadmin.topic.subscriptions=Number of subscribers -label.joramadmin.topic.subscriberIds=Subscribers Ids -label.joramadmin.topic.subscribers=Subscribers -title.joramplatform.currentserver=Current Joram server configuration -title.joramplatform.timers=Joram timers -title.joramplatform.dmq=Dead Message Queue (DMQ) -title.joramservers.localserver=Local server -title.joramservers.currentserver=Current server -title.joramservers.remoteservers=Remote servers -title.joramplatform.config=Configuration file (a3servers.xml) -message.remoteservers.none=none -message.remoteservers.server=Remote server -action.title.joramplatform.export=Action -action.title.joramplatform.joramremoteserver=Action -action.button.joramplatform.export=Export -action.comment.joramplatform.export=Export Joram server repository to JONAS_BASE/conf/joramAdminExport.xml -action.button.joramplatform.reload=Reload -action.comment.joramplatform.reload=Reload JoramAdmin.xml file -action.button.joramplatform.joramremoteserver.getdestinations=Get destinations -action.comment.joramplatform.joramremoteserver.getdestinations=Lists the destinations deployed on this remote server -title.joramdestinations.action=Actions -title.joramusers.action=Actions -title.joramreaders.action=Actions -title.joramwriters.action=Actions -button.joramdestinations.action.create=Create Jms destination -button.joramdestinations.action.remove=Remove Jms destination -button.joramusers.action.create=Create Jms user -button.joramreaders.action.add=Add reader -button.joramwriters.action.add=Add writer - -message.joramdestinations.none=No Jms destinations found ! -message.joramusers.none=No Jms users found ! -message.joramreaders=No reader found ! -message.joramwriters=No writer found ! -message.joramplatform.destinations.list.empty=No destinations selected - -tab.joramplatform.joramdestination.create=New destination -tab.joramplatform.joramuser.create=New user -tab.joramplatform.joramreader.add=Add reader -tab.joramplatform.joramwriter.add=Add writer -title.joramplatform.destination=Jms destination to create -title.joramplatform.reader=Jms user -title.joramplatform.writer=Jms user -title.joramplatform.destination=Jms destination to create -title.joramplatform.user=Jms user to create -label.joramplatform.destination.name=Name -label.joramplatform.destination.type=Type -label.joramplatform.destination.id=Id -label.joramplatform.user.name=Name -label.joramplatform.user.id=Id -label.joramplatform.destinations.topic=topic -label.joramplatform.destinations.queue=queue -label.joramplatform.destination.stat.nbmsgs.received=Number of messages received since creation -label.joramplatform.destination.stat.nbmsgs.senttodmq=Number of messages sent to the DMQ since creation -label.joramplatform.destination.stat.nbmsgs.delivered=Number of messages delivered since creation - -label.joramplatform.user.name=Name -label.joramplatform.user.password=Password -label.joramplatform.user.id=Id -comment.joramplatform.destination.name= -comment.joramplatform.user.name= -comment.joramplatform.user.id= -tab.joramplatform.topic.usedby=Used by -tab.joramplatform.queue.usedby=Used by -tab.joramplatform.dest.stat= statistics -tab.joramplatform.dest.readers= readers -tab.joramplatform.dest.writers= writers -tab.joramplatform.removedestinations.confirm=Confirm remove -tab.joramplatform.removeusers.confirm=Confirm remove -title.joramplatform.topic.usedby.ejb=Ejb -title.joramplatform.queue.usedby.ejb=Ejb -title.joramplatform.topic.usedby.type=Type -title.joramplatform.queue.usedby.type=Type -title.joramplatform.topic.usedby.container=Container -title.joramplatform.queue.usedby.container=Container - -label.joramadapter.collocated=Collocated server -label.joramadapter.config.dir=Configuration directory -label.joramadapter.admin.file=Administration tasks file -label.joramadaper.persistent=Persistent server -label.joramadapter.server.id=Server Id -label.joramadapter.server.name=Server name -label.joramadapter.host.name=Host name -label.joramadapter.server.port=Server port -label.joramadapter.cnx.pending.timer=Connection pending timer -comment.joramadapter.cnx.pending.timer=Heartbeat period in milliseconds of a connected client (O value means no heartbeat sent and no timer armed on the server) -label.joramadapter.connecting.timer=Connecting timer -comment.joramadapter.connecting.timer=Maximum time in seconds during which connecting is attempted (O value means connecting only once and aborting if connecting failed) -label.joramadapter.tx.pending.timer=Transacted session maximum idleness -comment.joramadapter.tx.pending.timer=Maximum time in seconds a JMS transacted session might be pending (0 value means no limit) -label.joramadmin.timeout=Timeout to abort request -comment.joramadmin.timeout=Timeout in milliseconds to abort a pending request -label.joramadmin.default.dmq=Default DMQ -label.joramadmin.default.threshold=Default threshold for DMQ -label.joramadmin.dmq.notset=Not set -# ------------------------------------------------------------------ -warning.jonas.jms.notActivated=
  • Neither JMS Service, nor Joram server activated !
  • - -# JONAS_MQ_MARK BEGIN -# ------------------------------------------------------------------ -# Messages added for JonasMqConnect -# ------------------------------------------------------------------ -treenode.joansmqconnect.name=Jonas MQ Connect -tab.jonasmqconnect.server=Jonas MQ Connector -tab.jonasmqconnect.servers=Jonas MQ Connectors -tab.jonasmqconnect.destinations=Destinations -tab.jonasmqconnect.mdbs=Mdbs -tab.jonasmqconnect.createdestination=Create destinations -tab.jonasmqconnect.editdestination=Destination - -tab.jonasmqconnect.editmdb=Mdb - -tab.jonasmqconnect.deletedestination=Delete destinations -tab.jonasmqconnect.connectionfactory=Connection Factory -title.joansmqconnect.server=Jonas MQ Connector properties -title.joansmqconnect.servers=Jonas MQ Connectors -title.joansmqconnect.connectionfactory=Connection Factories -title.joansmqconnect.destinations=Destinations -title.joansmqconnect.action=Action -title.joansmqconnect.propetriesdestination=Properties of destination -title.joansmqconnect.propetriesmdb=Properties of MDB -title.joansmqconnect.statpropetriesdestination=Stat. Properties of destination -title.joansmqconnect.createdestination=Jms destination to create -label.joansmqconnect.release=Implementation version -label.joansmqconnect.hostname=Hostname -label.joansmqconnect.channel=Channel -label.joansmqconnect.port=Port -label.joansmqconnect.queuemanager=Queue Manager -label.joansmqconnect.transporttype=TransportType -label.joansmqconnect.server.name=Name -label.joansmqconnect.destination.name=Name -label.joansmqconnect.destination.type=Type -label.joansmqconnect.destination.basename=Base name -label.joansmqconnect.destination.name=Name -label.joansmqconnect.destination.proprieties=Proprieties -label.joansmqconnect.destination.type=Type -label.joansmqconnect.destination.currentdepth=Messages in the queue -label.joansmqconnect.destination.maxqueuedepth=Max messages in the queue -label.joansmqconnect.destination.inputcount=Processus listening on the queue -label.joansmqconnect.destination.outputcount=Processus sending to the queue -label.joansmqconnect.destinations.topic=topic -label.joansmqconnect.destinations.queue=queue -label.joansmqconnect.destinations.deletephysicaldestination=Delete physical destination -label.joansmqconnect.destinations.deletephysicaldestination.yes=Yes -label.joansmqconnect.destinations.deletephysicaldestination.no=No -label.joansmqconnect.mdb.name=Name -label.joansmqconnect.mdb.destinationname=MQ Destination -label.joansmqconnect.mdb.numbermsg=# Received Messages -label.joansmqconnect.connectionfactory.cf=Connection Factory (CF) -label.joansmqconnect.connectionfactory.tcf=Topic Connection Factory (TCF) -label.joansmqconnect.connectionfactory.qcf=Queue Connection Factory (QCF) -button.joansmqconnect.savedestinationconfig=Save Destination Config -button.joansmqconnect.loaddestinationconfig=Load Destination Config -button.joansmqconnect.refresh=Refresh -button.joansmqconnect.editconnectorproperties=Edit Properties -button.joansmqconnect.createdestination=Create Jms destination -button.joansmqconnect.removedestination=Remove Jms destination -button.joansmqconnect.editdestination=Edit -button.joansmqconnect.editconnectionfactory=Edit -button.joansmqconnect.clearqueue=Clear Queue -message.joansmqconnect.server.none=No Connector found ! -message.joansmqconnect.none=No Jms destinations found ! -message.joansmqconnect.destinations.list.empty=No destinations selected -error.joansmqconnect.resource.jms.create.name.required=
  • Name cannot be empty
  • -error.joansmqconnect.resource.jms.create.type.required=
  • Destination type must be checked
  • -error.joansmqconnect.resource.jms.create.selecteddestinations.empty=
  • At least one destination must be checked
  • -error.joansmqconnect.resource.jms.create.deletephysicaldestination.empty=
  • Delete physical destination must be checked
  • -comment.joansmqconnect.destination.name= -comment.joansmqconnect.destination.proprieties= -# JONAS_MQ_MARK END - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources_fr.properties b/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources_fr.properties deleted file mode 100644 index 22db64ab79..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/ApplicationResources_fr.properties +++ /dev/null @@ -1,18 +0,0 @@ -title.application=JOnAS Administration -title.welcome=Bienvenue - -tab.server.jonas=JOnAS -label.server.jonas.jonasName=Nom du serveur -action.button.server.jonas.rungc=Lancer -action.comment.server.jonas.rungc=Lancer le 'garbage collector' -action.button.server.jonas.stop=Stop -action.comment.server.jonas.stop=Arrêter le serveur JOnAS - - -tab.mbean.properties=Propriétés -tab.mbean.attributes=Attributs -tab.mbean.operations=Opérations - -default.ejb.type.session.sessionTimeOut=pas de limite -default.ejb.type.session.instanceMaxSizePool=pas de limite - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/jonas-ra-xml.vm b/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/jonas-ra-xml.vm deleted file mode 100644 index f283c17745..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/jonas-ra-xml.vm +++ /dev/null @@ -1,57 +0,0 @@ - - - $oForm.getJndiName() - JOnASJDBC_DM - $oForm.getNativeLib() - $oForm.getLogEnabled() - $oForm.getLogTopic() - - $oForm.getPoolInit() - $oForm.getPoolMin() - $oForm.getPoolMax() - $oForm.getPoolMaxAge() - $oForm.getPstmtMax() - $oForm.getPoolMaxOpenTime() - $oForm.getPoolMaxWaiters() - $oForm.getPoolMaxWaittime() - $oForm.getPoolSamplingPeriod() - - - $oForm.getCheckLevel() - - - dsClass - $oForm.getDsClass() - - - URL - j$oForm.getURL() - - - user - $oForm.getUser() - - - password - $oForm.getPassword() - - - loginTimeout - $oForm.getLoginTimeout() - - - isolationLevel - $oForm.getIsolationLevel() - - - mapperName - $oForm.getMapperName() - - - logTopic - $oForm.getConfigLogTopic() - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ra-xml.vm b/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ra-xml.vm deleted file mode 100644 index a810aa4585..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/resources/org/ow2/jonas/webapp/jonasadmin/resourceadapter/ra-xml.vm +++ /dev/null @@ -1,13 +0,0 @@ - - -$oForm.getDisplayName() -$oForm.getDescription() -$oForm.getVendorName() -$oForm.getSpecVersion() -$oForm.getEisType() - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestFont.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestFont.jsp deleted file mode 100644 index 9f18835071..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestFont.jsp +++ /dev/null @@ -1,216 +0,0 @@ - - -TestFont - - -<% -String sText= "abcdefABCDEF"; -String sPrefTextSize = "TextSize"; -String[] asTextSize = {"larger", "smaller", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large"}; - -String sPrefPxSize = "PxSize"; -String[] asPxSize = {"1px", "4px", "6px", "8px", "10px", "12px", "14px", "16px", "20px", "24px"}; - -String sPrefEmSize = "EmSize"; -String[] asEmSizeTitle = {"01em", "02em", "04em", "05em", "06em", "07em", "08em", "09em", "1em", "11em", "12em", "14em", "16em", "18em", "2em"}; -String[] asEmSize = {"0.1em", "0.2em", "0.4em", "0.5em", "0.6em", "0.7em", "0.8em", "0.9em", "1em", "1.1em", "1.2em", "1.4em", "1.6em", "1.8em", "2em"}; - -String sPrefPcSize = "PcSize"; -//String[] asPcSizeTitle = {"1", "10", "30", "50", "70", "80", "90", "100", "110", "120", "130", "140", "150", "160", "180", "200", "220", "240"}; -//String[] asPcSize = {"1%", "10%", "30%", "50%", "70%", "80%", "90%", "100%", "110%", "120%", "130%", "140%", "150%", "160%", "180%", "200%", "220%", "240%"}; -int iMax=260; -int iMin=10; -int iGap=5; -int iInter= (iMax - iMin) / iGap; -String[] asPcSizeTitle = new String[iInter]; -String[] asPcSize = new String[iInter]; -int iValue; -for (int i=0; i < iInter; i++) -{ - iValue = iMin + (i * iGap); - asPcSizeTitle[i] = String.valueOf(iValue); - asPcSize[i] = String.valueOf(iValue)+"%"; -} - -%> - - - - - -

    Test Font

    - - - - - - - - - - -<% -// Text -for (iRow=0; iRow < asTextSize.length; iRow++) -{ -%> - - - - - -<% -} -%> -
    Constant font
     normalbold
    <%=asTextSize[iRow]%><%=sText%><%=sText%>
    - - - - - - - - - - -<% -// Pixel -for (iRow=0; iRow < asPxSize.length; iRow++) -{ -%> - - - - - -<% -} -%> -
    Pixel font
     normalbold
    <%=asPxSize[iRow]%><%=sText%><%=sText%>
    - - - - - - - - - - -<% -// EM -for (iRow=0; iRow < asEmSize.length; iRow++) -{ -%> - - - - - -<% -} -%> -
    EM font
     normalbold
    <%=asEmSize[iRow]%><%=sText%><%=sText%>
    - - - - - - - - - - -<% -// Pourcent -for (iRow=0; iRow < asPcSize.length; iRow++) -{ -%> - - - - - -<% -} -%> -
    Pourcent font
     normalbold
    <%=asPcSize[iRow]%><%=sText%><%=sText%>
    - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestNavigator.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestNavigator.jsp deleted file mode 100644 index 89c02fe152..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/TestNavigator.jsp +++ /dev/null @@ -1,51 +0,0 @@ -<%@ page import="javax.servlet.http.*,java.util.*"%> - - - - -TestNavigator - - - -

    Test Navigator

    -<% -String sUserAgent = request.getHeader("user-agent"); -%> -
    -

    Request info

    -Server name : <%=request.getServerName()%>
    -Server port : <%=request.getServerPort()%>
    -Scheme : <%=request.getScheme()%>
    -Protocol : <%=request.getProtocol()%>
    -Query string : <%=request.getQueryString()%>
    -Remote address : <%=request.getRemoteAddr()%>
    -Remote host : <%=request.getRemoteHost()%>
    -Remote user : <%=request.getRemoteUser()%>
    -Request URI : <%=request.getRequestURI()%>
    -Context path : <%=request.getContextPath()%>
    -Servlet path : <%=request.getServletPath()%>
    -Path info : <%=request.getPathInfo()%>
    -Path translated : <%=request.getPathTranslated()%>
    -
    -

    User Agent

    -<%=sUserAgent%> -
    - - - -<% -String sName = null; -String sValue = null; -Enumeration oEnum = request.getHeaderNames(); -while (oEnum.hasMoreElements()) -{ - sName = (String) oEnum.nextElement(); - sValue = request.getHeader(sName); -%> - -<% -} -%> -
    Header
    NameValue
    <%=sName%><%=sValue%>
    - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/controls.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/controls.tld deleted file mode 100644 index 0aa6674c2a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/controls.tld +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - 1.0 - 1.2 - controls - - JSP tag library containing custom GUI controls used in the - Tomcat Administrative Application. - - - - - - - - tree - org.ow2.jonas.webapp.taglib.TreeControlRenderTag - empty - - Render a "tree" control, based on the current state of a data object - of type org.apache.webapp.admin.TreeControl, which is identified - by the name specified in the "tree" attribute, in the JSP scope - specified by the "scope" attribute. - - - - action - false - true - - Hyperlink to which expand/contract actions should be sent, - with a string "${node}" marking where the node name of the - affected node should be included (which will usually be as - the value of a request parameter). - - - - - images - false - true - - Name of a directory containing the images for our icons, - relative to the page including this tag. If not specified, - defaults to "images". - - - - - scope - false - true - - The JSP scope within which the "tree" attribute is to be found - (page, request, session, or application). If not specified, the - "tree" attribute will be searched for in any scope. - - - - - style - false - true - - The CSS style class to be applied to the entire rendered output - of the tree control. If not specified, no overall style class - is applied. - - - - - styleSelected - false - true - - The CSS style class to be applied to the text of any node that - is currently selected. If not specified, no style class will be - applied to the text of the selected node. - - - - - styleUnselected - false - true - - The CSS style class to be applied to the text of any node that - is *not* currently selected. If not specified, no style class will - be applied to the text of non-selected nodes. - - - - - tree - false - true - - Name of the attribute (in the scope specified by the "scope" - attribute, if any) under which an object of type - org.apache.webapp.admin.TreeControl is stored. This object - represents the entire current state of the tree, including - a representation of the hierarchical representation of the - nodes, plus the current expanded/ or contracted state of - non-leaf nodes. - - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/flex/services-config.xml b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/flex/services-config.xml deleted file mode 100755 index d84d8c559a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/flex/services-config.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - session - org.ow2.jonas.domain.TreeDomain - - - - - - - - - org.ow2.jonas.server.ServerInformation - session - - - - - - - - - org.ow2.jonas.servers.Servers - session - - - - - - - - - org.ow2.jonas.clusters.Clusters - session - - - - - - - - org.ow2.jonas.clusters.Cluster - session - - - - - - - - - - org.ow2.jonas.domain.DomainMap - session - - - - - - - - - org.ow2.jonas.server.ServerMonitoring - session - - - - - - - - - org.ow2.jonas.clusters.ServersInCluster - session - - - - - - - - - org.ow2.jonas.domain.DomainSyntheticView - session - - - - - - - - - org.ow2.jonas.clusters.ClusterSyntheticView - session - - - - - - - - - org.ow2.jonas.stackdump.StackDump - session - - - - - - - - - - org.ow2.jonas.clusterdaemons.ClusterDaemonAdministration - session - - - - - - - - - session - org.ow2.jasmine.kerneos.login.LoginService - - - - - - - - - session - org.ow2.jasmine.kerneos.service.KerneosConfigService - - - - - - - - - - session - org.ow2.jonas.admin.jdbcconnections.service.JDBCConnectionsService - - - - - - - - - session - org.ow2.jonas.admin.auditconsole.service.AuditService - - - - - - - - - - session - org.ow2.jonas.admin.classloader.service.ClassLoaderService - - - - - - - - - session - org.ow2.jonas.admin.osgi.bundle.osgiBundleService - - - - - - - - - session - org.ow2.jonas.admin.osgi.obr.osgiOBRService - - - - - - - - - session - org.ow2.jonas.admin.osgi.service.osgiServiceService - - - - - - - - - session - org.ow2.jonas.admin.osgi.shell.osgiShellService - - - - - - - - - - session - org.ow2.jonas.admin.autostart.service.BuilderService - - - - - - - - - session - org.ow2.easybeans.console.jmxbrowser.service.JMXBrowserService - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/granite/granite-config.xml b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/granite/granite-config.xml deleted file mode 100755 index 60752d4575..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/granite/granite-config.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/jonas-web.xml b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 77895ba766..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - jonasAdmin - - - true - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/sj.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/sj.tld deleted file mode 100644 index 14492e28c0..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/sj.tld +++ /dev/null @@ -1,1262 +0,0 @@ - - - - - - - - 1.0 - 1.2 - sj - - JSP tag library containing custom GUI controls used in the - Jonas Administrative Application. - - - - - - - tabs - org.ow2.jonas.webapp.taglib.TabsTag - JSP - - Render a "tabs" object. - NOTE: The valid nested content for this tag is "tab" and "panel" tags and from this library. - - - - width - false - true - - The width of panel tabs. - - - - - height - false - true - - The height of panel tabs. - - - - - widthTab - false - true - - The width of each tabs. - If it's not specified, the width label text is used. - - - - - heightTab - false - true - - The height of each tabs. - If it's not specified, the height label text is used. - - - - - widthSeparator - false - true - - The space width between each tabs. - By default, 3. - - - - - heightSeparator - false - true - - The space height between tabs and panel. - By default, 1. - - - - - marginPanel - false - true - - The margin of panel. - By default, 5. - - - - - usingWhere - false - true - - Using a WhereAreYou instance in session to retreive some parameters. - - - - - imagesDir - false - true - - The directory where are the images. - Used to find the separator image. - - - - - - - - - tab - org.ow2.jonas.webapp.taglib.TabTag - JSP - - - - - href - false - true - - The href element for the tab. - - - - - forward - false - true - - The forward element for the tab. - - - - - forwardControl - false - true - - The forwardControl element to display the tab. - Note : it's necessary that the treeControl attribute of the parent tabs element exists - and the forwardControl's value is known in the "struts-config.xml" file. - - - - - selected - false - true - - The selected tab. - If none selected tab, the first tab is displayed. - If many selected tabs, the first selected tab is displayed. - - - - anchorfalsetrue - linkNamefalsetrue - namefalsetrue - pagefalsetrue - paramIdfalsetrue - paramNamefalsetrue - paramPropertyfalsetrue - paramScopefalsetrue - propertyfalsetrue - scopefalsetrue - targetfalsetrue - transactionfalsetrue - - - - - - - panel - org.ow2.jonas.webapp.taglib.PanelTag - JSP - - - - - - - - panelSeparator - org.ow2.jonas.webapp.taglib.PanelSeparatorTag - JSP - - - - - - - - xmlEditor - org.ow2.jonas.webapp.taglib.XMLEditorTag - JSP - - Display a form that will allow the user to edit the contents of an - XML file. - - - - fileName - true - true - - The name of the archive from which the XML file is retrieved. - - - - - mapping - true - true - - The mapping of ID to document node. - - - - - pathName - true - true - - The path within the archive to the XML file. - - - - - document - false - true - org.w3c.dom.Document - - The contents of the XML file. - - - - - - - - - - titleContent - org.ow2.jonas.webapp.taglib.TitleContentTag - JSP - - Render a title. - - - - usingWhere - false - true - - Using a WhereAreYou instance in session to retreive some parameters. - - - - usingParent - false - true - - Display the parent node label. - NOTA : "usingWhere" attribute it's mandatory to use this option. - - - - tomThumb - false - true - - Display the Tom Thumb for the current node. - NOTA : "usingWhere" attribute it's mandatory to use this option. - - - - tomThumbIcons - false - true - - Display the icons associates in the each item of the Tom Thumb. - NOTA : "tomThumb" attribute it's mandatory to use this option. - - - - - image - false - true - - The image to display. - - - - - title - false - true - - The title to display. - - - - - - - - - grid - org.ow2.jonas.webapp.taglib.GridTag - JSP - - Simple HTML Tag "table" with possibility alternate style line - - globalRowStyleClasstrue - oddStyleClasstrue - evenStyleClasstrue - periodRowtrue - bordertrue - cellSpacingtrue - cellPaddingtrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - gridrow - org.ow2.jonas.webapp.taglib.GridRowTag - JSP - - - changeStyletrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - gridcol - org.ow2.jonas.webapp.taglib.GridColTag - JSP - - Idem Html Tag "td" - - - aligntrue - valigntrue - widthtrue - heighttrue - nowrapfalse - colspanfalse - rowspanfalse - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jonasgrid - org.ow2.jonas.webapp.taglib.JonasGridTag - JSP - - Extends GridTag with default values : - - cellSpacing = "0" - - cellPadding = "2" - - width = "100%" - - globalRowStyleClasstrue - oddStyleClasstrue - evenStyleClasstrue - periodRowtrue - bordertrue - cellSpacingtrue - cellPaddingtrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jgRowTitle - org.ow2.jonas.webapp.taglib.JonasGridRowTitleTag - JSP - - - leveltrue - changeStyletrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jgColTitle - org.ow2.jonas.webapp.taglib.JonasGridColTitleTag - JSP - - - - aligntrue - valigntrue - widthtrue - heighttrue - nowrapfalse - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jgName - org.ow2.jonas.webapp.taglib.JonasGridNameTag - JSP - - Idem Html Tag "td" with : - - align = "right" - - width = "19%" - - valign = "top" - and a new column to space. - - - boldtrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - jonasgridname - org.ow2.jonas.webapp.taglib.JonasGridNameTag - JSP - - Idem Html Tag "td" with : - - align = "right" - - width = "19%" - - valign = "top" - and a new column to space. - - - boldtrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jgNameTitle - org.ow2.jonas.webapp.taglib.JonasGridNameTitleTag - JSP - - - - boldtrue - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - jgValue - org.ow2.jonas.webapp.taglib.JonasGridValueTag - JSP - - Idem Html Tag "td" with : - - align = "left" - - width = "80%" - - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - jonasgridvalue - org.ow2.jonas.webapp.taglib.JonasGridValueTag - JSP - - Idem Html Tag "td" with : - - align = "left" - - width = "80%" - - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jgValueTitle - org.ow2.jonas.webapp.taglib.JonasGridValueTitleTag - JSP - - - - aligntrue - valigntrue - widthtrue - heighttrue - - onblurtrue - onchangetrue - onclicktrue - ondblclicktrue - onfocustrue - onkeydowntrue - onkeypresstrue - onkeyuptrue - onmousedowntrue - onmousemovetrue - onmouseouttrue - onmouseovertrue - onmouseuptrue - styletrue - styleClasstrue - - - - - - jonasbutton - org.ow2.jonas.webapp.taglib.JonasButtonTag - - - disabled - false - true - - - disabledName - false - true - - - disabledProperty - false - true - - - disabledValueEqual - false - true - - - disabledValueNotEqual - false - true - - - - accesskey - false - true - - - anchor - false - true - - - forward - false - true - - -href -false -true - - -linkName -false -true - - -name -false -true - - -onblur -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -target -false -true - - -title -false -true - - -transaction -false -true - - - - - - - jgSubmit - org.ow2.jonas.webapp.taglib.JonasSubmitTag - - - form - false - true - - - - value - false - true - - - - disabled - false - true - - - - accesskey - false - true - - - anchor - false - true - - - forward - false - true - - -href -false -true - - -linkName -false -true - - -name -false -true - - -onblur -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -target -false -true - - -title -false -true - - -transaction -false -true - - - - - - - xmlFile - org.ow2.jonas.webapp.taglib.XmlFileTag - JSP - - Render a Xml file. - - - - - - - - - - tree - org.ow2.jonas.webapp.taglib.TreeControlRenderTag - empty - - Render a "tree" control, based on the current state of a data object - of type org.apache.webapp.admin.TreeControl, which is identified - by the name specified in the "tree" attribute, in the JSP scope - specified by the "scope" attribute. - - - - action - false - true - - Hyperlink to which expand/contract actions should be sent, - with a string "${node}" marking where the node name of the - affected node should be included (which will usually be as - the value of a request parameter). - - - - - images - false - true - - Name of a directory containing the images for our icons, - relative to the page including this tag. If not specified, - defaults to "images". - - - - - scope - false - true - - The JSP scope within which the "tree" attribute is to be found - (page, request, session, or application). If not specified, the - "tree" attribute will be searched for in any scope. - - - - - style - false - true - - The CSS style class to be applied to the entire rendered output - of the tree control. If not specified, no overall style class - is applied. - - - - - styleSelected - false - true - - The CSS style class to be applied to the text of any node that - is currently selected. If not specified, no style class will be - applied to the text of the selected node. - - - - - styleUnselected - false - true - - The CSS style class to be applied to the text of any node that - is *not* currently selected. If not specified, no style class will - be applied to the text of non-selected nodes. - - - - - tree - false - true - - Name of the attribute (in the scope specified by the "scope" - attribute, if any) under which an object of type - org.apache.webapp.admin.TreeControl is stored. This object - represents the entire current state of the tree, including - a representation of the hierarchical representation of the - nodes, plus the current expanded/ or contracted state of - non-leaf nodes. - - - - - - - - - - refreshTree - org.ow2.jonas.webapp.taglib.RefreshTreeTag - empty - - Refresh a "tree" control. To use before the body to be sure that run with all browsers. - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-bean.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-bean.tld deleted file mode 100644 index a4b8fd7fdf..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-bean.tld +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - - - -1.2 -1.1 -bean -http://struts.apache.org/tags-bean - -cookie -org.apache.struts.taglib.bean.CookieTag -org.apache.struts.taglib.bean.CookieTei -empty - -id -true -false - - -multiple -false -true - - -name -true -true - - -value -false -true - - - -define -org.apache.struts.taglib.bean.DefineTag -org.apache.struts.taglib.bean.DefineTei -JSP - -id -true -false - - -name -false -true - - -property -false -true - - -scope -false -true - - -toScope -false -true - - -type -false -true - - -value -false -true - - - -header -org.apache.struts.taglib.bean.HeaderTag -org.apache.struts.taglib.bean.HeaderTei -empty - -id -true -false - - -multiple -false -true - - -name -true -true - - -value -false -true - - - -include -org.apache.struts.taglib.bean.IncludeTag -org.apache.struts.taglib.bean.IncludeTei -empty - -anchor -false -true - - -forward -false -true - - -href -false -true - - -id -true -false - - -name -false -true - - -page -false -true - - -transaction -false -true - - - -message -org.apache.struts.taglib.bean.MessageTag -empty - -arg0 -false -true - - -arg1 -false -true - - -arg2 -false -true - - -arg3 -false -true - - -arg4 -false -true - - -bundle -false -true - - -key -false -true - - -locale -false -true - - -name -false -true - - -property -false -true - - -scope -false -true - - - -page -org.apache.struts.taglib.bean.PageTag -org.apache.struts.taglib.bean.PageTei -empty - -id -true -false - - -property -true -true - - - -parameter -org.apache.struts.taglib.bean.ParameterTag -org.apache.struts.taglib.bean.ParameterTei -empty - -id -true -false - - -multiple -false -true - - -name -true -true - - -value -false -true - - - -resource -org.apache.struts.taglib.bean.ResourceTag -org.apache.struts.taglib.bean.ResourceTei -empty - -id -true -false - - -input -false -true - - -name -true -true - - - -size -org.apache.struts.taglib.bean.SizeTag -org.apache.struts.taglib.bean.SizeTei -empty - -collection -false -true - - -id -true -false - - -name -false -true - - -property -false -true - - -scope -false -true - - - -struts -org.apache.struts.taglib.bean.StrutsTag -org.apache.struts.taglib.bean.StrutsTei -empty - -id -true -false - - -formBean -false -true - - -forward -false -true - - -mapping -false -true - - - -write -org.apache.struts.taglib.bean.WriteTag -empty - -bundle -false -true - - -filter -false -true - - -format -false -true - - -formatKey -false -true - - -ignore -false -true - - -locale -false -true - - -name -true -true - - -property -false -true - - -scope -false -true - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-config.xml b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-config.xml deleted file mode 100644 index cbf2a30ea7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-config.xml +++ /dev/null @@ -1,2134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-html.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-html.tld deleted file mode 100644 index b8be00e3f7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-html.tld +++ /dev/null @@ -1,3032 +0,0 @@ - - - - - - - - - - -1.2 -1.1 -html -http://struts.apache.org/tags-html - -base -org.apache.struts.taglib.html.BaseTag -empty - -target -false -true - - -server -false -true - - - -button -org.apache.struts.taglib.html.ButtonTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -cancel -org.apache.struts.taglib.html.CancelTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -checkbox -org.apache.struts.taglib.html.CheckboxTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -errors -org.apache.struts.taglib.html.ErrorsTag -empty - -bundle -false -true - - -locale -false -true - - -name -false -true - - -property -false -true - - - -file -org.apache.struts.taglib.html.FileTag - -accesskey -false -true - - -accept -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -maxlength -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -size -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -form -org.apache.struts.taglib.html.FormTag -JSP - -action -true -true - - -acceptCharset -false -true - - -enctype -false -true - - -focus -false -true - - -focusIndex -false -true - - -method -false -true - - -onreset -false -true - - -onsubmit -false -true - - -scriptLanguage -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -target -false -true - - - -frame -org.apache.struts.taglib.html.FrameTag - -action -false -true - - -module -false -true - - -anchor -false -true - - -forward -false -true - - -frameborder -false -true - - -frameName -false -true - - -href -false -true - - -longdesc -false -true - - -marginheight -false -true - - -marginwidth -false -true - - -name -false -true - - -noresize -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -scrolling -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -title -false -true - - -titleKey -false -true - - -transaction -false -true - - - -hidden -org.apache.struts.taglib.html.HiddenTag -empty - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - -write -false -true - - - -html -org.apache.struts.taglib.html.HtmlTag -JSP - -lang -false -true - - -locale -false -true - - -xhtml -false -true - - - -image -org.apache.struts.taglib.html.ImageTag - -accesskey -false -true - - -align -false -true - - -alt -false -true - - -altKey -false -true - - -border -false -true - - -bundle -false -true - - -disabled -false -true - - -indexed -false -true - - -locale -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -page -false -true - - -pageKey -false -true - - -property -false -true - - -src -false -true - - -srcKey -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -img -org.apache.struts.taglib.html.ImgTag -empty - -align -false -true - - -alt -false -true - - -altKey -false -true - - -border -false -true - - -bundle -false -true - - -contextRelative -false -true - - -height -false -true - - -hspace -false -true - - -imageName -false -true - - -ismap -false -true - - -locale -false -true - - -lowsrc -false -true - - -name -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -paramId -false -true - - -page -false -true - - -pageKey -false -true - - -action -false -true - - -module -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -src -false -true - - -srcKey -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -title -false -true - - -titleKey -false -true - - -useLocalEncoding -false -true - - -usemap -false -true - - -vspace -false -true - - -width -false -true - - - -javascript -org.apache.struts.taglib.html.JavascriptValidatorTag -empty - -cdata -false -true - - -dynamicJavascript -false -false - - -formName -false -true - - -method -false -true - - -page -false -true - - -scriptLanguage -false -true - - -src -false -true - - -staticJavascript -false -false - - -htmlComment -false -true - - - -link -org.apache.struts.taglib.html.LinkTag - -accesskey -false -true - - -action -false -true - - -module -false -true - - -anchor -false -true - - -forward -false -true - - -href -false -true - - -indexed -false -true - - -indexId -false -true - - -linkName -false -true - - -name -false -true - - -onblur -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -target -false -true - - -title -false -true - - -titleKey -false -true - - -transaction -false -true - - -useLocalEncoding -false -true - - - -messages -org.apache.struts.taglib.html.MessagesTag -org.apache.struts.taglib.html.MessagesTei -JSP - -id -true -false - - -bundle -false -true - - -locale -false -true - - -name -false -true - - -property -false -true - - -header -false -true - - -footer -false -true - - -message -false -true - - - -multibox -org.apache.struts.taglib.html.MultiboxTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -option -org.apache.struts.taglib.html.OptionTag - -bundle -false -true - - -disabled -false -true - - -key -false -true - - -locale -false -true - - -style -false -true - - -styleId -false -true - - -styleClass -false -true - - -value -true -true - - - -options -org.apache.struts.taglib.html.OptionsTag -empty - -collection -false -true - - -filter -false -true - - -labelName -false -true - - -labelProperty -false -true - - -name -false -true - - -property -false -true - - -style -false -true - - -styleClass -false -true - - - -optionsCollection -org.apache.struts.taglib.html.OptionsCollectionTag -empty - -filter -false -true - - -label -false -true - - -name -false -true - - -property -false -true - - -style -false -true - - -styleClass -false -true - - -value -false -true - - - -password -org.apache.struts.taglib.html.PasswordTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -maxlength -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -readonly -false -true - - -redisplay -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -size -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -radio -org.apache.struts.taglib.html.RadioTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -property -true -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -true -true - - -idName -false -true - - - -reset -org.apache.struts.taglib.html.ResetTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -rewrite -org.apache.struts.taglib.html.RewriteTag -empty - -action -false -true - - -module -false -true - - -anchor -false -true - - -forward -false -true - - -href -false -true - - -name -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -transaction -false -true - - -useLocalEncoding -false -true - - - -select -org.apache.struts.taglib.html.SelectTag -JSP - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -multiple -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -size -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -submit -org.apache.struts.taglib.html.SubmitTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -text -org.apache.struts.taglib.html.TextTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -disabled -false -true - - -indexed -false -true - - -maxlength -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -readonly -false -true - - -size -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -textarea -org.apache.struts.taglib.html.TextareaTag - -accesskey -false -true - - -alt -false -true - - -altKey -false -true - - -cols -false -true - - -disabled -false -true - - -indexed -false -true - - -name -false -true - - -onblur -false -true - - -onchange -false -true - - -onclick -false -true - - -ondblclick -false -true - - -onfocus -false -true - - -onkeydown -false -true - - -onkeypress -false -true - - -onkeyup -false -true - - -onmousedown -false -true - - -onmousemove -false -true - - -onmouseout -false -true - - -onmouseover -false -true - - -onmouseup -false -true - - -property -true -true - - -readonly -false -true - - -rows -false -true - - -style -false -true - - -styleClass -false -true - - -styleId -false -true - - -tabindex -false -true - - -title -false -true - - -titleKey -false -true - - -value -false -true - - - -xhtml -org.apache.struts.taglib.html.XhtmlTag -empty - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-logic.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-logic.tld deleted file mode 100644 index f267fcc917..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-logic.tld +++ /dev/null @@ -1,652 +0,0 @@ - - - - - - - - - -1.2 -1.1 -logic -http://struts.apache.org/tags-logic - -empty -org.apache.struts.taglib.logic.EmptyTag -JSP - -name -false -true - - -property -false -true - - -scope -false -true - - - -equal -org.apache.struts.taglib.logic.EqualTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -forward -org.apache.struts.taglib.logic.ForwardTag -empty - -name -true -true - - - -greaterEqual -org.apache.struts.taglib.logic.GreaterEqualTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -greaterThan -org.apache.struts.taglib.logic.GreaterThanTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -iterate -org.apache.struts.taglib.logic.IterateTag -org.apache.struts.taglib.logic.IterateTei -JSP - -collection -false -true - - -id -true -false - - -indexId -false -false - - -length -false -true - - -name -false -true - - -offset -false -true - - -property -false -true - - -scope -false -true - - -type -false -true - - - -lessEqual -org.apache.struts.taglib.logic.LessEqualTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -lessThan -org.apache.struts.taglib.logic.LessThanTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -match -org.apache.struts.taglib.logic.MatchTag -JSP - -cookie -false -true - - -header -false -true - - -location -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -messagesNotPresent -org.apache.struts.taglib.logic.MessagesNotPresentTag -JSP - -name -false -true - - -property -false -true - - -message -false -true - - - -messagesPresent -org.apache.struts.taglib.logic.MessagesPresentTag -JSP - -name -false -true - - -property -false -true - - -message -false -true - - - -notEmpty -org.apache.struts.taglib.logic.NotEmptyTag -JSP - -name -false -true - - -property -false -true - - -scope -false -true - - - -notEqual -org.apache.struts.taglib.logic.NotEqualTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -notMatch -org.apache.struts.taglib.logic.NotMatchTag -JSP - -cookie -false -true - - -header -false -true - - -location -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -scope -false -true - - -value -true -true - - - -notPresent -org.apache.struts.taglib.logic.NotPresentTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -role -false -true - - -scope -false -true - - -user -false -true - - - -present -org.apache.struts.taglib.logic.PresentTag -JSP - -cookie -false -true - - -header -false -true - - -name -false -true - - -parameter -false -true - - -property -false -true - - -role -false -true - - -scope -false -true - - -user -false -true - - - -redirect -org.apache.struts.taglib.logic.RedirectTag - -action -false -true - - -anchor -false -true - - -forward -false -true - - -href -false -true - - -name -false -true - - -page -false -true - - -paramId -false -true - - -paramName -false -true - - -paramProperty -false -true - - -paramScope -false -true - - -property -false -true - - -scope -false -true - - -transaction -false -true - - -useLocalEncoding -false -true - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-template.tld b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-template.tld deleted file mode 100644 index 6ed25493f9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/struts-template.tld +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - -1.0 -1.1 -template -http://jakarta.apache.org/struts/tags-template-1.0.2 - -insert -org.apache.struts.taglib.template.InsertTag -JSP - -template -true -true - - - -put -org.apache.struts.taglib.template.PutTag -JSP - -name -true -true - - -role -false -true - - -content -false -true - - -direct -false -true - - - -get -org.apache.struts.taglib.template.GetTag -empty - -flush -false -true - - -name -true -true - - -role -false -true - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/web.xml b/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 9af7b1283d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,575 +0,0 @@ - - - - Jonas Administration Application - Jonas HTML based administration web application. - - - AMFMessageFilter - - org.granite.messaging.webapp.AMFMessageFilter - - - - AMFMessageFilter - /graniteamf/* - - - - org.granite.config.GraniteConfigListener - - - action - org.apache.struts.action.ActionServlet - - config - /WEB-INF/struts-config.xml - - - debug - 0 - - - detail - 0 - - - locale - true - - - nocache - true - - - tagsimagesroot - ${CONTEXT}/images - - - treebuilders - org.ow2.jonas.webapp.jonasadmin.JonasTreeBuilder - - - validate - true - - 2 - - - MemoryGraphServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.MemoryGraphServlet - - - MemoryGraphRemoteHostServlet - org.ow2.jonas.webapp.jonasadmin.clusterd.servlet.MemoryGraphRemoteHostServlet - - - - ThreadCountServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.ThreadCountServlet - - - ServerCurrentTxServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.ServerCurrentTxServlet - - - - AMFMessageServlet - - org.granite.messaging.webapp.AMFMessageServlet - - 1 - - - - - BytesReceivedByConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.BytesReceivedByConnectorTomcatServlet - - - - BytesSentByConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.BytesSentByConnectorTomcatServlet - - - - - ErrorCountByConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ErrorCountByConnectorTomcatServlet - - - - - ProcessingTimeByConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ProcessingTimeByConnectorTomcatServlet - - - - RequestCountByConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.RequestCountByConnectorTomcatServlet - - - - - ThreadBusyConnectorTomcatServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ThreadBusyConnectorTomcatServlet - - - - - - - - JmsQMsgDeliverServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.JmsQMsgDeliverServlet - - - - - JmsQMsgReceiveServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.JmsQMsgReceiveServlet - - - - - - JmsTopicMsgDeliverServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.JmsTopicMsgDeliverServlet - - - - - JmsTopicMsgReceiveServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.JmsTopicMsgReceiveServlet - - - - - - - TotalCommittedTransactionsServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.TotalCommittedTransactionsServlet - - - - BegunTransactionsServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.BegunTransactionsServlet - - - - TotalExpiredTransactionsServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.TotalExpiredTransactionsServlet - - - - - TotalRolledbackTransactionsServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.TotalRolledbackTransactionsServlet - - - - - - ConnectionFailuresJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ConnectionFailuresJCAConnectionServlet - - - - - ConnectionLeaksJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ConnectionLeaksJCAConnectionServlet - - - - - CurrentBusyJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentBusyJCAConnectionServlet - - - - - RejectedOpenJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.RejectedOpenJCAConnectionServlet - - - - - ServedOpenJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ServedOpenJCAConnectionServlet - - - - - WaiterCountJCAConnectionServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.WaiterCountJCAConnectionServlet - - - - - - - - ConnectionLeaksJDBCResourceServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ConnectionLeaksJDBCResourceServlet - - - - - CurrentBusyJDBCResourceServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentBusyJDBCResourceServlet - - - - - RejectedOpenJDBCResourceServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.RejectedOpenJDBCResourceServlet - - - - - ServedOpenJDBCResourceServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.ServedOpenJDBCResourceServlet - - - - - WaiterCountJDBCResourceServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.WaiterCountJDBCResourceServlet - - - - CurrentNumberOfEJBServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentNumberOfEJBServlet - - - - - - CurrentNumberOfEntityBeanServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentNumberOfEntityBeanServlet - - - - - CurrentNumberOfMDBServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentNumberOfMDBServlet - - - - - CurrentNumberOfSBFServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentNumberOfSBFServlet - - - - - - CurrentNumberOfSBLServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.CurrentNumberOfSBLServlet - - - - LoadCPUServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.LoadCPUServlet - - - - - WorkersServlet - org.ow2.jonas.webapp.jonasadmin.monitoring.graph.servlets.server.WorkersServlet - - - - LogoutServlet - org.ow2.jasmine.kerneos.login.LogoutServlet - - - - FileUploadServlet - org.ow2.jonas.admin.autostart.servlet.FileUploadServlet - - - - FileDownloadServlet - org.ow2.jonas.admin.autostart.servlet.FileDownloadServlet - - - - - - FileUploadServlet - /FileUploadServlet - - - - FileDownloadServlet - /FileDownloadServlet - - - LogoutServlet - /LogoutServlet - - action - *.do - - - MemoryGraphRemoteHostServlet - /MemoryGraphRemoteHostServlet - - - MemoryGraphServlet - /MemoryGraphServlet - - - ThreadCountServlet - /ThreadCountServlet - - - ServerCurrentTxServlet - /ServerCurrentTxServlet - - - - BytesReceivedByConnectorTomcatServlet - /BytesReceivedByConnectorTomcatServlet - - - - BytesSentByConnectorTomcatServlet - /BytesSentByConnectorTomcatServlet - - - ErrorCountByConnectorTomcatServlet - /ErrorCountByConnectorTomcatServlet - - - - ProcessingTimeByConnectorTomcatServlet - /ProcessingTimeByConnectorTomcatServlet - - - - RequestCountByConnectorTomcatServlet - /RequestCountByConnectorTomcatServlet - - - - ThreadBusyConnectorTomcatServlet - /ThreadBusyConnectorTomcatServlet - - - - - AMFMessageServlet - /graniteamf/* - - - - - - JmsQMsgDeliverServlet - /JmsQMsgDeliverServlet - - - - JmsQMsgReceiveServlet - /JmsQMsgReceiveServlet - - - - JmsTopicMsgDeliverServlet - /JmsTopicMsgDeliverServlet - - - - JmsTopicMsgReceiveServlet - /JmsTopicMsgReceiveServlet - - - - TotalCommittedTransactionsServlet - /TotalCommittedTransactionsServlet - - - - BegunTransactionsServlet - /BegunTransactionsServlet - - - - TotalExpiredTransactionsServlet - /TotalExpiredTransactionsServlet - - - - TotalRolledbackTransactionsServlet - /TotalRolledbackTransactionsServlet - - - - ConnectionFailuresJCAConnectionServlet - /ConnectionFailuresJCAConnectionServlet - - - ConnectionLeaksJCAConnectionServlet - /ConnectionLeaksJCAConnectionServlet - - - - CurrentBusyJCAConnectionServlet - /CurrentBusyJCAConnectionServlet - - - - RejectedOpenJCAConnectionServlet - /RejectedOpenJCAConnectionServlet - - - ServedOpenJCAConnectionServlet - /ServedOpenJCAConnectionServlet - - - - WaiterCountJCAConnectionServlet - /WaiterCountJCAConnectionServlet - - - - - ConnectionLeaksJDBCResourceServlet - /ConnectionLeaksJDBCResourceServlet - - - - CurrentBusyJDBCResourceServlet - /CurrentBusyJDBCResourceServlet - - - RejectedOpenJDBCResourceServlet - /RejectedOpenJDBCResourceServlet - - - - ServedOpenJDBCResourceServlet - /ServedOpenJDBCResourceServlet - - - - WaiterCountJDBCResourceServlet - /WaiterCountJDBCResourceServlet - - - - - - CurrentNumberOfEJBServlet - /CurrentNumberOfEJBServlet - - - - CurrentNumberOfEntityBeanServlet - /CurrentNumberOfEntityBeanServlet - - - - CurrentNumberOfMDBServlet - /CurrentNumberOfMDBServlet - - - - CurrentNumberOfSBFServlet - /CurrentNumberOfSBFServlet - - - - CurrentNumberOfSBLServlet - /CurrentNumberOfSBLServlet - - - - LoadCPUServlet - /LoadCPUServlet - - - - /WEB-INF/struts-bean.tld - /WEB-INF/struts-bean.tld - - - /WEB-INF/struts-html.tld - /WEB-INF/struts-html.tld - - - /WEB-INF/struts-logic.tld - /WEB-INF/struts-logic.tld - - - /WEB-INF/struts-template.tld - /WEB-INF/struts-template.tld - - - Jonas Server Configuration Security Constraint - - Protected Area - /MemoryGraphServlet - /MemoryGraphRemoteHostServlet - /ThreadCountServlet - /ServerCurrentTxServlet - - /BytesReceivedByConnectorTomcatServlet - /BytesSentByConnectorTomcatServlet - /ErrorCountByConnectorTomcatServlet - /ProcessingTimeByConnectorTomcatServlet - /RequestCountByConnectorTomcatServlet - /ThreadBusyConnectorTomcatServlet - /JmsQMsgDeliverServlet - /JmsQMsgReceiveServlet - /JmsTopicMsgDeliverServlet - /JmsTopicMsgReceiveServlet - /TotalCommittedTransactionsServlet - /BegunTransactionsServlet - /TotalExpiredTransactionsServlet - /TotalRolledbackTransactionsServlet - /ConnectionFailuresJCAConnectionServlet - /ConnectionLeaksJCAConnectionServlet - /CurrentBusyJCAConnectionServlet - /RejectedOpenJCAConnectionServlet - /ServedOpenJCAConnectionServlet - /WaiterCountJCAConnectionServlet - /ConnectionLeaksJDBCResourceServlet - /CurrentBusyJDBCResourceServlet - /RejectedOpenJDBCResourceServlet - /ServedOpenJDBCResourceServlet - /WaiterCountJDBCResourceServlet - /CurrentNumberOfEJBServlet - /CurrentNumberOfEntityBeanServlet - /CurrentNumberOfMDBServlet - /CurrentNumberOfSBFServlet - /CurrentNumberOfSBLServlet - /LoadCPUServlet - *.jsp - *.do - *.html - *.swf - - - jonas-admin - - - NONE - - - - - FORM - JOnAS Realm - - /login.jsp - /error.jsp - - - - The role that is required to log in to the Administration Application - jonas-admin - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/begin.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/begin.jsp deleted file mode 100644 index 9a97a5e211..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/begin.jsp +++ /dev/null @@ -1,5 +0,0 @@ - - <bean:message key="title.application"/> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/blank.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/blank.jsp deleted file mode 100644 index deb0aaf7ce..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/blank.jsp +++ /dev/null @@ -1,24 +0,0 @@ - - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - - - - -<%@ include file="begin.jsp" %> - - - - - - - - - -<%@ include file="end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connector.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connector.jsp deleted file mode 100644 index 663b66fa26..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connector.jsp +++ /dev/null @@ -1,410 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- do not show scheme while creating a new connector --%> - - - - - - - - - - - - - - <%-- do not show scheme while creating a new connector --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- Input only allowed on create transaction --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --%> - - <%-- The following properties are deprecated--%> - -<%-- The following properties are supported only for Coyote HTTP/S 1.1 Connectors --%> - - - - - - - - - - - - - - - - - - - -<%-- The following properties are supported only on HTTPS Connector --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- Input allowed only on create --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectors.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectors.jsp deleted file mode 100644 index 0b7ffa8dfb..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectors.jsp +++ /dev/null @@ -1,99 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectorsConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectorsConfirm.jsp deleted file mode 100644 index 86557e4d22..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/catalina/connectorsConfirm.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/DaemonProxyClusterDisplayServerConfig.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/DaemonProxyClusterDisplayServerConfig.jsp deleted file mode 100644 index cf74cf8b44..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/DaemonProxyClusterDisplayServerConfig.jsp +++ /dev/null @@ -1,129 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - -<%@ include file="../common/begin.jsp"%> - - - - - - infos - - - - - - Config. - - - - - - Name - - - - - - - State - - - - - - Description - - - - - - - - - java Home - - - - - - - Jonas Root - - - - - - - Jonas Base - - - - - - - - - - - java Home - - - - - - - Jonas Root - - - - - - - Jonas Base - - - - - - - - - Extra parameter - - - - - - Auto Boot - - - - - - - - - - - - - Confirm configuration - - - - - - - - -<%@ include file="../common/end.jsp"%> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/addServerCd.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/addServerCd.jsp deleted file mode 100644 index de8fd7cb84..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/addServerCd.jsp +++ /dev/null @@ -1,141 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> -<% -String cdName = (String) request.getAttribute("clusterdName"); -%> - - - - - - - - <%=cdName%> infos - - - - - - - - - - - - - - - - - - - Add Server - - - - - - Add Server & Save - - - - - Remove from view - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configure - - - - - - - - Configure - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp"%> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/daemonProxyClusterModify.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/daemonProxyClusterModify.jsp deleted file mode 100644 index 218ca28976..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/daemonProxyClusterModify.jsp +++ /dev/null @@ -1,94 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/graph/vmMemory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/graph/vmMemory.jsp deleted file mode 100644 index 9fa49d6c0f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/graph/vmMemory.jsp +++ /dev/null @@ -1,76 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - Infos - Used Memory - - - - - - " name="memory" width="" height=""> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/serversConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/serversConfirm.jsp deleted file mode 100644 index 5fa7104378..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/clusterd/serversConfirm.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Domain - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiClusterInfo.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiClusterInfo.jsp deleted file mode 100644 index 51da893700..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiClusterInfo.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    -
    - - - - - - - - - - - -   - - - - - - -
    -
    -
    -<%@ include file="../common/end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiInfo.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiInfo.jsp deleted file mode 100644 index 1df533d3f8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiInfo.jsp +++ /dev/null @@ -1,159 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CMI Global Properties - - - - - - -
        -
    - - - -     - - -
    -
    - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - -
    -
    -
    -
    - <%@ include file="../common/end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiObjectInfo.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiObjectInfo.jsp deleted file mode 100644 index 870622d4bd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiObjectInfo.jsp +++ /dev/null @@ -1,270 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - -
    - - - -
    - -
    -
    - - - -
    - - - - -
    - -
    -
    - - - -
    - -
    - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - - - - - - -
    - - -
    -     -
    -
    - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - - -
    - - - -
    - -
    -
    - - - - -
    - - - -
    - -
    -
    - - - - -
    -
    - - - - - - - - - - -
    -
    -
    - <%@ include file="../common/end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiProtocolInfo.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiProtocolInfo.jsp deleted file mode 100644 index 271a59180f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiProtocolInfo.jsp +++ /dev/null @@ -1,70 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    -
    - - - - - - - - - - - -   - - - - - - -
    -
    -
    -<%@ include file="../common/end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiServerInfo.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiServerInfo.jsp deleted file mode 100644 index d74225ce00..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/cmi/displayCmiServerInfo.jsp +++ /dev/null @@ -1,85 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - - - -
    -
    - - - -
    - - - -
        -
    - - - -     - - -
    -
    - - - - - - - - - - -
    -
    -
    -<%@ include file="../common/end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/common/begin.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/common/begin.jsp deleted file mode 100644 index 5de2b5318c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/common/begin.jsp +++ /dev/null @@ -1,7 +0,0 @@ - - <bean:message key="title.application"/> - - - - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/common/end.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/common/end.jsp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deploy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deploy.jsp deleted file mode 100644 index 8269057c80..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deploy.jsp +++ /dev/null @@ -1,91 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    - - - -
     
    - - - -
    -
    - - - - - - -
    - -   - -   - -
    - - - - - - - - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deployConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deployConfirm.jsp deleted file mode 100644 index d86c6ffe55..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/deployConfirm.jsp +++ /dev/null @@ -1,109 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeploy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeploy.jsp deleted file mode 100644 index 9e3ba75a36..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeploy.jsp +++ /dev/null @@ -1,164 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - -   - - - - - - - -   -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    -
    - - - - - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployConfirm.jsp deleted file mode 100644 index 35c26d74d2..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployConfirm.jsp +++ /dev/null @@ -1,125 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - Action selected: - - - - - Action selected: - - - - - Action selected: - - - - - Replace existing files: Yes - - - - - Replace existing files: No - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployProgress.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployProgress.jsp deleted file mode 100644 index aa5cf7e9c2..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainDeployProgress.jsp +++ /dev/null @@ -1,95 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Total applications to undeploy: - - - Total applications to deploy: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainUndeployConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainUndeployConfirm.jsp deleted file mode 100644 index 26a2485486..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/domainUndeployConfirm.jsp +++ /dev/null @@ -1,92 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/remove.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/remove.jsp deleted file mode 100644 index 77659fd1df..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/remove.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/removeConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/removeConfirm.jsp deleted file mode 100644 index 64d50e0ca7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/removeConfirm.jsp +++ /dev/null @@ -1,95 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/upload.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/upload.jsp deleted file mode 100644 index e02e1bc2bf..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/upload.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/uploadResult.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/uploadResult.jsp deleted file mode 100644 index d58d077046..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/deploy/uploadResult.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - FileName - <%= request.getAttribute("fileName") %> - - - The File size - <%= request.getAttribute("size") %> - - - Result - <%= request.getAttribute("data") %> - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addCluster.jsp deleted file mode 100644 index 00bdd7ac2c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addCluster.jsp +++ /dev/null @@ -1,51 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServer.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServer.jsp deleted file mode 100644 index 4032d9f16b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServer.jsp +++ /dev/null @@ -1,86 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServerCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServerCluster.jsp deleted file mode 100644 index e2dc46a1e5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/addServerCluster.jsp +++ /dev/null @@ -1,83 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - No servers to add - - - - - - - Cluster name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/clustercmi.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/clustercmi.jsp deleted file mode 100644 index 2f3ffd744c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/clustercmi.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - no cluster daemon - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/domain.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/domain.jsp deleted file mode 100644 index c242b2b86a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/domain.jsp +++ /dev/null @@ -1,562 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirm.jsp deleted file mode 100644 index 8b22c69f0d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirm.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Domain - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirmMove.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirmMove.jsp deleted file mode 100644 index 61142cc552..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/domain/serversConfirmMove.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/end.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/end.jsp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/error.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/error.jsp deleted file mode 100644 index 732318afa6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/error.jsp +++ /dev/null @@ -1,36 +0,0 @@ - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - - - -<%@ include file="begin.jsp" %> - - - - - - - - - - - - - - -
     
    - - - - - -<%@ include file="end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/framemain.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/framemain.jsp deleted file mode 100644 index 9ee311e8a8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/framemain.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - -<%@ include file="begin.jsp" %> - - " scrolling="auto"> - " scrolling="No"> - -<%@ include file="end.jsp" %> - - -<body bgcolor="#FFFFFF" text="#000000"> - <h1>Sorry, use a browser who accepts the frames !</h1> -</body> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/frameright.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/frameright.jsp deleted file mode 100644 index b9d27cbedf..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/frameright.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - -<%@ include file="begin.jsp" %> - - " scrolling="No"> - " scrolling="auto"> - -<%@ include file="end.jsp" %> - - -<body bgcolor="#FFFFFF" text="#000000"> - <h1>Sorry, use a browser who accepts the frames !</h1> -</body> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/globalerror.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/globalerror.jsp deleted file mode 100644 index 842a0f8fa9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/globalerror.jsp +++ /dev/null @@ -1,44 +0,0 @@ - - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - - - - -<%@ include file="begin.jsp" %> - - - - - - - - - - - - - -

     
    - - - - -<%@ include file="end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/button/GraphButton.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/button/GraphButton.png deleted file mode 100644 index 6142124230a94d0966bc85b9a2967874c411025f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 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 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot.gif deleted file mode 100644 index 5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot1.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot1.gif deleted file mode 100644 index 5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot5.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/dot5.gif deleted file mode 100644 index 52019098523be482650b88d8b37ec0abcc90618c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45 ocmZ?wbhEHbWMyDwXkdT>#h)yUAf^t80Ld^gv9$EBj9{<^0D}_+-2eap diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/BalJonasGreen.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/BalJonasGreen.gif deleted file mode 100644 index 4be83dc838e073d70cc949bcb645319801acac31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmV-m0-ybfP) zQ4kmDqLcmu+P}cXrOpl_f{U|G3JN-@h!jg(ga}G&6Qd;Y<-Pa4_c}-0=g+_(0ni4}qdtrCFj$^c6DKJ~ z1I7SAFc;1G_27~M8Gr$RKfNMj`Fi$j;sF5g0RsSqBb8OkIUayywBuG9X^N^-ftd(@ zgM)2Y0|4Gka2i0Su^{`LxDd>M$Vi6+C8`5hP-q!Y2fyITT^q^;&U8mNNmWr>X@0Si z^!jf)SCWnXdUT_D&vudwB2}AmgHkR_i3X_XhHTph{3Lrc3gQxxTU%+COz5UwEf)j);u2zyG~|9p6nNlN4h^iG>UqO}I!DBg>Vg z8A_n*vQ3M25jDH0$e<9ST|~PUhE!0f8#g@`rJ?!CMssGa^SXB)_uiR%@Bg$2#jHgK zzRltAJDl%)jEL~BVvI@M7cRC1S~>zkE~!jvS#|ouRCIFe**hXiY|ZTiFvi%O;gPGp z#^y^!)!xI2tUxkrA#FHFr!!C!8%sG=dHHqXd2s&y>+BzZj?mD^0U`pI8HBnru6%ygzXhngBSXvyC%MIJgK{z%TV~}|cq$#2LSH&HikmW zOCKNg`T@Y#eeaY5jib+fBEh3?XA}l5&D9ov!`xO z84c%dJq92F;5GiU$B77=a(leHyn!zN_8t*|x1GPz>uVi6q%V9^ikUS@L;`>S@M(L% tQp&0ZK>I7Qtvy38n!AP`>?HrMegTGNUwa-u^>Y9K002ovPDHLkV1iL5Gu8kA diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Database.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Database.gif deleted file mode 100644 index b2ccc7ee1d3a6641b2559f9093615b11ee80d700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0#bNk%w1VGsZi0K^{v|H)|f+^h8C#{c87WmP!a$*Qo9OKe|B+`p0i(}>us zRsYO$C^H|AbVKa8VgKEp$gFt()sXzfVePqG>$_FsvsCD|U7Ct*n1ousonZgkmjBOu z^S@sn9v&?%EdT%jA^8LW0018VEC2ui01yBW000G_;3r;(=XD-|iR^bAS0T&-gu(0q z&4VxukAdcqA&3aF-Y+jFt=Gzc5v&=GY4iU#52VGtS_i6>f!Jlu)MW&r>g zx}OdL@P5Pr92OJ?Yabp63mS0?bb%FjUIiK(a{v+?91aSEYzuM#3lbC-7GZc_b(azj o6BDHrg-CP~fE5b2gM}_<1`4AU83qJKEiNStC{o4C%q$@QJD5&#bpQYW diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Datasource.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/Datasource.gif deleted file mode 100644 index d36a4f61fbb229b679f5f4e06725dcdc15a7b41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$KiNk%w1VGsZi0K^{v{pqt{RX6F&Xl!Cf@aD??=9}!*lK-wR&a_|uqYa*G z2sSY%i+Dw;lu*~ru*9ic{@i$$hE>*y2A7O(=#l{S(`v)9eYU1?LOnC&#b3dA1GAk` z+rMTW9v&?%EdT%jA^8LW0018VEC2ui01yBW000G;;3rPQ;&oUMiR?EFlS9me6~XLa z%|H(nzrrOT3dnrFpy4tQd0rEXp->Q5NP~{3bC5&=n2u)=U`P@k=V8r0B-{y&_S1Q3 zDDOlL0vrOEIb|CN862R6L@h2Q3t~^c#KkNj06ST-Y+3*S diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/FolderBalJonas.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/FolderBalJonas.gif deleted file mode 100644 index ff461ad6e1989360551aa5af76047566bbd2394a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0pg|2va&4I=(6JDn5Cu^Ots0GnH1&Qg8(E*B(~aZ+S)FXjU;W6 z07z{Bk+uMBkpKVyA^8LW0018VEC2ui01yBW000G-;3tkySv6xy7J!qS>7>kxWZMZ6 z7d#96fLuxwaX1#m1mPhZ4JZqSKw?}rMGX&wVsH??Ox*}^;CL*F$I_soWGJG^;&4vb z6&?)6E%;Or4I2Rngd81*9TOJsF%51d2MPOda@=TZ`*kh4UJE_nhRMvAJRE zslFo@bLOq8*ma_M?-_~SbIF@#j9RZm`j@vdiFie^;C^fR{^ zytB=MV;!e%RGYA>Y0o)><{3>_9>_M#G3{8IxoXGcIrCSn+nBoHNb2;ZdTn!<<7=4u z*Xm`|@fA%jS#zkQp^ecmzkT(VxD~r?TBq@Lt&psq(0k&#a%M&4+9O=^cBU3rDwa)6 z$SV=(TFzh@WabedkW$KEAGhMb@r7q@vbn|R_AO*^3M*@DQ>mQB7*>7r)raUqml#dF zs!!e6zGt6PZLjF;?HuLPig#a7S-xMz$yd`WOs05x$kyZ1Ua<#mJ#pM|=Ipb#oRilp z<@F2sCvLg*Wbe(#T&aBwDc#n)&dKGqo6ps$E67h0u0swUlh>V diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bean.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bean.gif deleted file mode 100644 index ba74d6432038739746f1fb5f93bb028ce557622a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmZ?wbhEHb6krfw*v!R{X3Q{iX4;vVGtZnkV+>-?G&VL)OJkS`l)wfQf3h$#FmN&G zfFwa?FtE4vFI`iunUNHRLeICF)f?0ldq#; ilIa{3mWC&jJayb=Ml`7wrV7T*=yP}0n{6n_U=0A2Pbnk- diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bullet.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/bullet.png deleted file mode 100644 index 96c596e7c9c8799ac5a4d2844e21a1644dcb3c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3169 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 Hu0mjf04v>F diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/caution.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/caution.png deleted file mode 100644 index 88d494e79d28b8e9fba47279b5d5c7e6ac596de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmV)4D`2Ea1J0^EV)gL7Hc zI6nsvC~8QNghuwxT!P=;E*5ZR#(!Z0SZ$@0s`mhfRYFw_unjDe>zGSCNT` zg+o4EyR4|#sonapEUpS6+^8D9n?fi)KZT|HTO^wbMX928ZCGZbA7ey(j`Y8 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/connectors.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/connectors.gif deleted file mode 100644 index 7059d873350dab646bcd3be6ad99c73a8da78609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZ?wbhEHb6krfw*v!fB|4iEd|7ZUHpZOmM&KUncGxN-uGihmQ3^;(|PZmZ722KVY zkUYo?29{uhlg|BnD*Adi+23vmxi2_}aZ#CMmy+8X(N+iX4eBc$_p_j9Tb*{STR-FBv9))LI^I!0cbKEBwm@O?G*WqAr0vjfk+EctakS6FrA! zZfntK_|V~%5VtsMbAwF;Tax!(5tn%P LZQXJY1_o;YP9;H4 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_ear.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_ear.gif deleted file mode 100644 index 752b55c04c2f8ba1b04c56deb43f452c721aec4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmZ?wbhEHb6krfwXyIUBFrLXU6Nro%{{K%)Gd4D!dFITSnQ6xV|NoykGmYWQ8HSl> z(u^5qrlm2Y8KVz5)BZC6dANb%KT+qR)Wnk16ovB4k_?5A zj8p}8Pu~Cr#h)yU3=HxNIzatErwA}Gu+~0M@0%YwS7T+AFpHv?r0T@Zd0{qoo`-fB za4lW*+lHr2Ugfw{S6|1I6eSfiZMVaZ51tBK>wLQT!iT4P*I(~AxZ#V`&JC$MRKM`C zxGDNxU&O@7SLjmf>CD8$#ZcTL>h9ex#9i$i@7|`)9p@}!7~STq9#U-SAMNWjcd3#h GgEavB!+HGx diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_jar.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_jar.gif deleted file mode 100644 index f2396cca3d1d83d0542b7ca9379db94d6716e672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmZ?wbhEHb6krfwc+Ad_X3Q{iX4;vVGtZnkV+>-?G&VN=|Nnnl8Uql_Ofx?7|347V z1d?e$;s1*NM4gLL6H8K46v{J8G895GQWe}ieFGR2f3h$#Fz_?zfb@Y3XJASFaPsG* z-7{Vtxn|X=7I|Z8i_-H(-^UB4?3y!Ywvo^8Yv+#5**TZn&6}rUPoSb=fQH}Uma`HC zN*oMNHY_+GAi(${+rq&^w((1`g-A+l=yS^%3~TiLdhCYGe8D3oWGWGIAWq$;?3`UWs4{$ycfVBloX0U8Q)iU0!x zYhHp<-^t5!G&Eax~8hA!PdR}1;dCd7Su#9Nk=n(tDjZk-;&*Wjh@$=_7L Sz!2)dV=*y$)+{AO25SH&?24ZN diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_war.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployDomain_war.gif deleted file mode 100644 index cecb892019e9ace3a14e8a534084be226619169f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmZ?wbhEHb6krfwXklRZ|Nnnl+RQURIP(kx5Cg&g|1&`#je#M}_{@KX{|pR3iU0qN z)BZC6#byGzAR(YeVu0d5QRkx6#FEq$h4Rdj426)4R0VfW-v9>1pDc_F4Dt**K(l~O z5ny0o&3T~SH~+~TjmSkS7(KF9O00A7-k^1sZJi0PyI;wTzfJodXaw9)mF=ASsk!2T zir~tCCL5Pc6ZH93y4IW*Y%6=i;S!K;Ce8TJYTty`xx9im_Vbsfcr~d9X4~`0H#w@? Udpc*iJ0$a3ScT7YR%EaS0DrK1(*OVf diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_datasource.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_datasource.gif deleted file mode 100644 index 2e794cc3465a090843e82c724f6f2647b407dd7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmZ?wbhEHb6krfwI3mXI|IC^H|If^vY5f08nz1pEoC&06&P)RWAOYk7`9SIa|A7do z7AR~C)BwalzH!=r20}pbCkrD3gBXJjNFm5h2G+U-s(oRub2V0m1<r-L)-H^t7_J zuW)HMPt$}0o8D?HKFlbPaVu%fJl2amBI~BQF($qa<>+L792FoV)N*NJK%4{5gw_NG z&CsfxPo)MGOS~(pYHGOZ%S9@in_HFIbGo`+0!0LPySVsk1VpUOIhnY+nYe9)&6FLT LC;2NYGFSru9aC9g diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_ear.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_ear.gif deleted file mode 100644 index 2c9efebfc00ef4b5f47b22bcaa4dcfd2fd25c8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmZ?wbhEHb6krfwI3mu#U_6syCJ-4j{QsYpW^8Oc^URquGt-R!|NlR8W*WnpGYm7& zq!}~JOiN=(GfqoOI|CF?V_^6{)A-E)ng9PAr~PNZ3lx8{FfuTRGw6U+f$U^p?S7!z zH$8N&#>yyR7DX{hRpY}O)`|A}Kl;6fvo+{utQ;G&%gIZe+Da;i94c%|roH~0vEi4L z*!8PUXN06UnVJg}9ORZhe|*NG=5B%PMXwKAC0X;8QbaxY&G;A@`B)27t34T*nVFcl r82VZ~1X#JI2yyooPVi!7WLntdWEkc-hoLdd*(xw>TXKZ5B7-#m#~fCg diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_jar.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_jar.gif deleted file mode 100644 index 41cf86c8d963b8b7964bb6167c14722055968660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmZ?wbhEHb6krfw*v!w6X3Q{iX4;vVGtZnkV+>-?G&VN=|Nnnl8Uql_Ofx?7|347V z1d?h0fg*}OSr{1@_!)FS(jYS!STa7G{5fg&j8{jlS#@qJ^%m+9K5o)mylBo&s}(72 zG1~Xirfyl^vd}<+gK5XiUX1_?!Is&2h8#AW3`|S`jA9}ebd(B0W;8HsI082p|AIAsoK=1-fjYdlW;S-_!h#Ie067Xo3;+NC diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_rar.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deploy_rar.gif deleted file mode 100644 index 5326b68b0e7dcf6e00ce9a3642f541ec466f398a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmZ?wbhEHb6krfwI3mFC|BUhfGc*66Njn21|Ia)#6UZ>0nFd4*|Noyk^Z&o`ng2iu z+|0JKU6q!nZ*18bgwO5cUcb2L`kbuY5$-?iKfg_OaK|(|V#h)yU3=F~yIw18RI~iCjAE@+Aelka6rB_!X!=zo?+C)yX7j5vm zY+)YAXArR=$M(2JK!k<7nP<~iVMVzKN0pU24R%bL|3siO;q*io7A9Y%3or78lYX;4 zc=3!`s!ZVqOGacwNv!}=lt5}kPpMaA4iD#~9FNePoXN9zLL4W}pIpjorX9Gz>% diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployed.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/deployed.gif deleted file mode 100644 index 68e9a5b37f6ca74f7ee4fbc8d46f584fac02a680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZ?wbhEHb6krfw*v!H3|Ns9p|Nk?bF*ZK)f9C)H#%cc<{u?vk28usf7#SEi7<52N zKxQzo1Ph$3?AmL5+SrMqeOci>!LBO?0xpG%=Ij)Ek){+AJ-_MZKBdNk6BaLQahWfu vI6-8>^5(wG3@6RYiKQGYI4@aCsZGVPW7Q@-q0@)5 zB)XjLC^r@y^5T(bX!n|7EY{M?pmivH4- lnbP?=OX<)Vy-&{R47@%J4$fALJWlK}#vGjN?3#)U)&P%gLz(~p diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/domain_jonas.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/domain_jonas.gif deleted file mode 100644 index 451ce40bc5bc1b0caec8417798ec3475c4551149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)!+{V2|Ei&(*hqAL)YIJ~LJ0g_iHPC4cse;38uXsv4o~P8@1srX*)BJ* zQ8U@&#l@xhY$j6$&KA(%s`79lF1C&WQJ51&h7k%uQwMi z&D{6{aCPe7?bLYaBvUj2nL9zbUTslTH3p>}fMha5YH_dJur=h~7t>P5JUtPbO&#_p zs4T4kFaZd&ZINd$^GZ)fKrlsx;qy;P0O0d*@A!ef5lYFo?k$DMB6Tcb?g9V+5F$|t z0EWZ*@k0^UX7?~xtU243t!oOEcQf0Tg=+cp0|@})0WAQaS+1G<)w}Or+ZI7tCZw{l zMTLL^fCB&n1hFg&rPbAsE1BmP?#-ULLIJ>`$oiwq7xpx}zK}093iId3?p8M2Zkf_J zFVv$=qUoAvfI0j9cCqsFVfs#bx^oF7gwVOksOEMl?Z{pS&#nDv9v$6xYe3WXJXtPe z2_e#CYIGvZU9skR&H4Jp%Kh#rG#*e-CBx48+fQ3Tjmbd(+2uE-B7hfU9sLGEG5*5QzBH%+0000dL;q? diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/ear.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/ear.gif deleted file mode 100644 index c7ab6178725e057e039ab3738833ceeac45e7a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmZ?wbhEHb6krfwI3mq3b7mS4Fc<@AV`Jl)Xa4^OQfbBvGt(Ft{{LtAKa;^Y?F>kb z@tHGc7|x_I0LhtWz$$?1K)Q{Aif4lGnVB;gfVxnD;!hSv1_o&c9gr}{P6pQ82WovO zkxC3zYgX@Mbo_uS1+dohMn87To6&5vb%6D7Ld;Wf2q>6v=Y4@8r&ORCAm@ LLvNOfB7-#m9~e&~ diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/help.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/help.gif deleted file mode 100644 index 49f7541c087d9b3a807a509708bd352c7e99371d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 zcmeH`!Alfj7>CEvwcU!?H8&?HnhC;|EOsEOsSY`4yKa|t3Cp#D^&?rE4%TNSj09WL zmNAjl)TJ+3lz}eOMMpFo(9}sIha?!XU=I>)2W6r|Yf#xY(O(fgJp6ty@9~8<(s1+u zm+}*pM3HduV*He!V*C_KF$~3os1TNATselt@}UqLVzE5S$JkhsO$b~p$t46n#`6il zCxuu7B$6-zAOH#w01yNqKp;o}A|Pu52Fikn1W|{g07Vgs5)>6E8c>pAI=wmSG^nv`y16 zP0O^fMawiS3t29;7Z6r7^tQgn)V#JO6;tp4X8 zxj>Ek0q!pl-e1Igu02PWWOp~EXTrTi?KLv>=F7^3dfx^j*m^iR-Z*i6O+_d<_4FPf z@6zpK@%z%`gX(xW-O*SYx#dm2?jHSG_iCfJvhDLsKzdoWgS+zW$L7xT`~Wv6`39yZ zs>-YOcE$TY`hpp9E>}X(*B^?@U% zd@{2?s=SL&%?9XQVgJhZPaTWXceX|PPBrIl25Y47_ukgJ@=cYwbgIR3qlZ2**44fU zBH8M5p5d!o#mmbdM%CNge68f8_I1(?4u*Y00007bV*G`2iXb; z3nvm&$os_r000SaNLh0L01d1F01d1G?*_(4000AtNkl7%Q6vyAp&f1n8 zJ9a`pa2)EUjxD2#MiHVHAdrAcsCsZX<%V)VQ4}sv4wc%%fdd~(dq@N#D%Ze)TZP1- zty&dm1WMw9l19pxYCFM>?f7Hu{g|EIVRmUEF{}UKN%MaD-uu5noO3ulxm?aOJw1Ke zFyZ3!u`>hF-u`s7C*H4VsWU7Q#lTB!+lN(+@LE&Z{q<+1mj7mce*STHcei~6+TPyo z_q}WeC-pURR4(>}sLqq2p=84Zy=%usyl7g>Z8(icVw2XerHSe6CMazGX&PX*zf*ZZI=5{A2rMW`zl zv{eSG#z5CypcH*hl5Tzb#T{}ck-lU?FraGGg_x!ZO~rsli^BP{VMw120pV?6MoY{m z48Rd!Ar2S}Y9osWd&A-I2_nm$4$5rF5S}Y-3Jn2i2?)1s5OW2DM3UpI0|4^OYY~bM z#2t)@mk<)bh1~W-P1$cB)Kw^!+X7+$w}hjPsRBSL1+hoMUL^7*0VaTjBqW1hM#4t5 z)@U>|oJz(QY^_*rDQ(V7OH|_g9b9n%b6TYabs_i}1PcfjaX{8ZZ{N$QDpnqB5tkLl8m|$Xw@ry+m1ieE)%_X}i+LmoKY@ryHw4OI==1 zXF^f9m%Fo&+}7%~16cm61X~3W;|_rX2#~g&h*qmRYYRWDEI;~wbab?M^hAb-hvS`H z@he@iH{Z*yvxsT?k&T4JDmc@TiI01b3Xz~~Ct?T1<;8{DE6a=DWipx7+1Xk12vn(5 zU~Fuxvs^A;chL_ZKYn831_wN02Tim}tH8qu=o10_* zd$i8k+1Y_?Hj5`FCVGh^^@JmlSR@iTDYhI}%H?{!(byI9*b{Mna&odgGc#lP{eCz1 YU(Rj?0h%DgOaK4?07*qoM6N<$f(#1N-~a#s diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jar.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jar.gif deleted file mode 100644 index 8e98e1114c684243bb6c599016e5f1e4583d0efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmZ?wbhEHb6krfwI3mjM{|tk%vGL5AX~t>BXJ!KFv@{?W$o~KT42Y9<=FFKiV+Nq; z%$deBK`Le%r=|S|$pZDxWFQ0-f3h$#Fo-hffE0r4WMEB5Q0+^JWD>DjyE;-cL?^gw zwGQ{B=cSe2lVp=_NdHyYrLsulm#&=P(cG7ZJvp12o4j`May79nUYNR1tdZ%l!U?`J l=0^`sw2+bFwm6^AAW#wN)1xv2)dT(2?q2Hb+P}MumaF8UU|d BArJrn diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_connector.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_connector.gif deleted file mode 100644 index b652a036b6252fb63a25ef37db83c77313cdb67f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmZ?wbhEHb6krfw*v!fB|NqSYXJ-EYf9C(0w3#z!rlqBwIdkU!|Njg)fZ|UUMg|5> z1|5(*$P5M+Z-bMb*-9GOE;*;%CDP=IW;~AUTaY!gO+q0Z*Jt{;0^Xp6Z*NhkAcA&0P;#O`Tzg` diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_queue.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_queue.gif deleted file mode 100644 index 1dbb30155971eba62c29e2cdd4fd8a0a95f2f602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmZ?wbhEHb6krfwSj56`=FFLyGiUz)|DORBDE?$&WME)n&;bd9)G{zzdF;CL&)|^3 zD%ppj2P<>0D0JMr5pgd~>!AjNtc}hKhVu7oI+7|9w_Ma+#{ElAvW<6owT!N3XUQ%P H1_o;Y>NqAr diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_topic.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/jms_topic.gif deleted file mode 100644 index f9c5ca65bf1d2e9a523100aa908e7689c88eac1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmZ?wbhEHb6krfwSj5gSGmYWQnKLtI&P+>7`+vsx|Ns9CV4(Pug^_`Qok0i01F25zHFGi?UwbG! K?o6m7gEau5?phE4 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/logger_jonas.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/logger_jonas.gif deleted file mode 100644 index 435867a3350c87bac727ca1905318a4b9a92337f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmZ?wbhEHb6krfwIKse?Hgl%&%rpQ0|DSmVNS-k^PGbP#Ga!yJP%3RE1DFR?#{lA{ zF#yrbGig9D6R6nO_{^D^Gl6I(0}i10lLaiJ10q3oGO+e2v;`)6&Qn!elXJVPX~nTk zKD#Ztc}20Z58(#R(?)qM+qTu1|f!x5;=+t)&L0xQGoye diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/loggers.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/loggers.gif deleted file mode 100644 index 6a67bfc37dd95a66037037e466e44c718b853344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103 zcmZ?wbhEHb6krfwn8?8J9|X=A8yhn)Fev_H0g?<1Iv@fh&%k7Hr=)W>Gk>zlfgM@8 z(`15rQ=J`3g!wVII?l|y0@jLjC>b9ntS|3lLvoLT)jv&j55&>2Qo^QMATwaT_3%9485Y25noc$wP dwrswJyQuS-FgIz1nV0^qy0jwArjLQa8UQRxFVX-2 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_mime.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_mime.gif deleted file mode 100644 index db6f618fd8c14c66736e5f3b3de7d2ab20465ce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?wbhEHb6krfw*v!F@HuKC(W8?p6X~r|p{Qv*|3<&&Zzzr0CvM@3*a4_hAlz_}& zU@;Ro>A8BZMRx73|MN=(QZl&?DGIe-+?OY?;zS0+fri~Swuc<1_dmELTCh7&;03d# N_3RZTUcC$q)&S^*D?tDN diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_session.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mail_session.gif deleted file mode 100644 index fd3c984a06b1aabd6363cffee96bcf4a9b793e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHb6krfwSj56G)7bcbTH62r{~1t$;!hSv1_l-e9gr|cEd#T<$F4j747@B? o?G5KWxSRjrg32Wf3`!fPrtI1@m%IAYnVk`FzBTXvb23;10JmEmwEzGB diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbean.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/mbean.gif deleted file mode 100644 index 47d2ad6cbdc52eb8d61bd82468ef7cea3ef837b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmZ?wbhEHb6krfwI3moD@4>mKEp*@N?)8(CHqNWNckiB?v2dgj@5PH3E!EgotXR?A z-R+~wP!lS)pwfz$mv?fG?*B8!3`7IPpDc_F48jaLARQn(8Ca7asPv_1dR^+6l{Ljn zui8y-?x_N~$9k{qgdQ|cnf*kBwWYzpW^I5F;}OP8gITMX8nbK-q!=D8I`zSfsj1JTUtV2VOHoi>QE769YFb)aXR_MTDiZ~9&Yl!y32lX=D=Q8yuQ;$}-tx|{Sw)6Z zDnl04IWDX)n>B0Jl~cRc&nQ}0Wp(MunyO&wz`!5|hUtuqQ^WOHX3m_+@SlN!A&r4y zCWK&M`2YWmF;HlT0>z&!j0_CU3_2k9gW`mNeOZH(lXFW`OM8ctV{=z?N2g==#J>L4 zNxfErR!UYAntEl$tnKaWZKw5gTU#%+bFf)H-+BHT2YUxwhbhih>Y{Rz4u@>E+4V8- z8W@^ra5|VfFfDFoVARqSx4b2Nam_IXGe%S4Te>_P3~TJ|ofMcYWt63i_>5UZmMn2% y;bY+Evw!)<&Yhpb0rc{P3Xp6maYS)q$|K%Nl@`_3aw#0IbmJ-*}RG*xosvyoOEXo(I&+`9_F#`^u_>+Z^fx(hN2P6;j69ZeL zgN&ZLh)}=Bo!k{NN|U#zUiqoxHTwwrDG_V4*3+{ZoEt5a!k!5=WLD&SaP~VP!o(rD zBSmP1tv;KXyc9RH7zd}UzcjzHk-jJ^7f+o>Qc9YjnU0yiX--~&SQ_M|8;Y4M+&p*p29 zq_fz!J4trs$`y-Sg5?#JmUo6pXe-PrGF;vfxUj;^!rFd8TWnRZw7jm-tXZ>`*O+T5 z3TjC+YAXpzs;b5qvUDb^#hG(5?tXM&%e$5N%c=7*?F#|TB_>+Z^fx(JF2P6sd z69Ze*ffzq`5uyGQGI=XxlqT;;z4BAXYxdRT;2me8X2#ylt+_1K>TGmVdmk&)tK~-~ z{M>UjS?R!{&Xaz|=ImL{3`{DTyk_0HS*Df@+DsA(-Q4183@QBrd}d0D{01UgCi=;y o{j5A3dV-vy8p5;8SNh3vN$aR~n<=mC_h4a`kxO%Pab&Ot0KFb?`Tzg` diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/monitoring.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/monitoring.gif deleted file mode 100644 index a0f453e6b040e92b72927e5d98398bb2722886f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmZ?wbhEHb6krfwSj5Kg|Ns9pXU@!=IWsLSjbY{)1{hHM$->CMz{a2h5&)@XV0O+3 zyYr9dglB5t(n(x%o?ZVGDz`P)L7-(Or@*QxKLeS~B>}ICls{TaYl~gsYN#s#j|aPV>&cS@3?{{Ol)%jeRGUOq$5RU=0B48YTY# diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/resourceAdapter.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/resourceAdapter.gif deleted file mode 100644 index 08e7f1902efd303f092d40dd1e7c4208c609e6f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmZ?wbhEHb6krfw*v!lD|BUhfGc*66Njn21|Ia)FVi?a%10sh1K#7@Y|NsAIKmv+C zSr{1@co}p+VjwdZSo}Af^jy8y!vC1{@iR(&JUe(aqT&`7?Kzy)>YT`4t%dM%Y^ zGH@8mp1XA{^b$kbqieB^oL$1|tZS_g8OQRkJo9SpynF_pZyv%5{BBVyy{p+(vsOll Iaxz#00Fja)jsO4v diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security.gif deleted file mode 100644 index ab8a7a2b76a53c8fa0968d6d126a7b17990555d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmZ?wbhEHb6krfwSj57RX3TJArZEEp!~ZiN5)Kr9vM@3*urTO=L_lg8n9V(Q-T7x= z<+xNxnMbiuPWlOBl-pcUwh0NG`>t%5=9qi^i= diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security_database.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/security_database.gif deleted file mode 100644 index facb04cdc7118206939f3fe322d612900f2436e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmV&5fhrT^1<>$+R~-=68z zm;1(K9}2teNt6WM`kks z%$YL)0095YGXMYpA^8LW0018VEC2ui01yBW000Gh;3syZXr5;0abAa_>gu)cIB)Dq z?xninv)pV*^89ifjdIB;9%mXtVQL6yibhtnG8qgK3hO7P&0GuyMM9F%*tC&AW}X2c z+#`|(A{Yn+2MqvtCwmYF4+|6sgD)Bph!%?sjVKxd4Gjwz3c%JTbnBTk4_^`_Uw9E64pvzieYi2V5 z%$YL)0095YGXMYpA^8LW0018VEC2ui01yBW000Gk;3syZXr5;0abAa_>gu)cIB)Dq z?xninv)pV*^89ifKx7#KaEiwnU@)mR9E_ro1sMz!;0wZG_{3Nd4Z?zHATpY=Sq2ek z?)ZS*OsZcr7ZM2%6?-Oi5_lQ`1coAY1sVwfln0Iv>e{vMIB)Dq z?xninvs`P|@&Q*IlEK4C8gnF#0U=P4ZcYXOKnP%}woWGCSRfb)NTpJ6eMpJPLZL_i v5Rbt!wMaB1bP5&)0VOE}2Mrei0}wqYBoqe>5sx(<0G2gxE^eDCn;`%@%r0vw diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_application.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_application.gif deleted file mode 100644 index dc25b5d61008fd62522dd312d159b0e06582f442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmZ?wbhEHb6krfwI3mMfY&>&jTAH!3ahfp$h?SPc01`1i^Z)iWqw4~Wcp!7<^{X11u`*-@bQT;SStGqvvG5aiVCr@ oYWQ<72=)sJc1(4hE+8t&&oM>CVm<>K!_sBTgEp*FR%EaS0NMXg>i_@% diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_database.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_database.gif deleted file mode 100644 index d28c42d1485ac4a58011bedac3d9cdab740622e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmZ?wbhEHb6krfwI3mpO|IEz)XVT8hO#2U{jE!f`1QNzTVrCi;82|r2^URsF|7U<; z=9!tsXMoaaX*19KXCN9V{$ycfU=U`|0qFqQ$-r9pK&5YS%A^$;UKeJq5)e7N@yn*- zdwrho)paAEgj5)?c{D6ASmG&kf-!+BfT6*7GGm~CkFwkO`nss{c)~xT4`+^n?_noU4;f`b5|LQCObP5cR3R~r+zBi+B&6LA2>pYQ$Jym{wvnsbtbRwyB>Bzn^z^FexslL>B^aS5_zQ?WRbaua}h9Z#&6Ap)G0f4+1>Q}E{6ujD>Uo@|oMVoSJ z&JZS^&dck8K;U8jz560t-NeQ-6!El;&kNILMj6|W#lHEX(P)Vygxe-9x4d#7MdV^i zq~>pN{MFani9`Y?+k-{oX=0a_mtj_Tq%9WGu~s*4owm&i^Af;S_F8BC%+BVIZ8d9e zWGyMJ8XnK|%>3SNeqU~ zwWrR7Z!jxy0~?71{5}_|BtN*sB35HN*enNh#_0h{>7v`sl24lkR+AQd^+zC!HE>f4 zW^x@{#ab9;#^nfjzp%7LY>TM*Jv7zv@UkUHE(Yl@Z=jVq=zJr}xun850UFvv-Lbr6 zAGhBTYBdwnuwd~zNGXr0?;hJMM8~%#AN4u{gu2#_kITwRktjC>-`-rcK#aAN?k!|= zH!n5Mu1yT~0)qgh^gjcT`yNN^Gk2bs#TtL}VVMIT+8}u0%1B(9Q-?G&VL)OJkS`lwe>;OG}%1=0A`D z2Z}#g7#SFN7<51)ATtJ}`+vL55+Y3**5xa!gJv{fwz{0*zaOVgwm3y!txhPuy+J RHM=HV_%orfjz^He8UP%UJk$UH diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_jms.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_jms.gif deleted file mode 100644 index 92a261c3a44ccd77db064c6e513af0c9ec5ea43a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmZ?wbhEHb6krfwSj5JVmXOfI&di)S^Z)<<3^1VhlZBCifsH{2Bmh#&!0ef^ zEBai(PNuXe3@vj{FO80HGL5V^M%Wua?L8%i_h&YzDWNZsM9u&VSCHU eX%-q~ZSOWllKQV>? diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_mail.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_mail.gif deleted file mode 100644 index e93d626745232c00b5d90b0b756f2edc68d39c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmZ?wbhEHb6krfw*v!R{HuKC(W8?p6X~r|p{QnQ6)6Rgve;|(m8&Leo!pOkD#h?R{ z1ew9W5*TpOa`MuMTOnoFTpN25KNTk5N)_u=691~Up?j-``k`lgS1;==IKe5@=dr{= sz*~TaeZ?06jxQqTm>CRixGfHUUQ)v$yeRIlSc1Xi<%vp#LW~U700N6R>i_@% diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_resource.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_resource.gif deleted file mode 100644 index 2e333f67664c673cd22db807ab32a8b15290b492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmZ?wbhEHb6krfw*v!u`GmYW@nY90BX3k7A{{R2XnKQ;`&dfXm5&?2&0!4vf=9&LM zzyJn{KUo+V82A}r;UldxF# zZpl@R<^_(&ByaMxFLBtKv_;0e*+D?#n$3mGgl;93fZnw?Qap8XPdY8!HFH+XBL=3U bS53GY{=^*Ks`#%ypRZO^LsXn!kii-NGn`U4 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_security.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_security.gif deleted file mode 100644 index a06e9d94bf0375951e09a657bd3454760cd75d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZ?wbhEHb6krfwSj5JVmXOiFhBGsb|DQ2tfC0syEQ|~cYz#Ue0gze-X8(*` z(dPnoGNnynXqkI@X>^1uA3IzBlZ*`M9ydoGm&8r|Ho~PD$7~pL%`}->s%cXt{4Aua@@+`jq diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_smartclient.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_smartclient.gif deleted file mode 100644 index 684bacfd94e84423537c888aecc2e07153d95483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmZ?wbhEHb6krfw00PCIEUX|}2Sk9xTK z1gp|!&YXGo%&PzY|95nB?B2cm?%mxTX)bqHmA|`tW@bm)?o}N?ML>P;-n|PAb(uM{ z<1SG3s#SOI-d(k-Vyq(tsEU{{R2a00xRbSr{1@*co&{Jdj!jX1|JE z+2;Z*nbW2)w9GxbG&;hSkDZObSZW35RL7+Y?^$=tEquS{o@~n@2M-xOEz_or9xMhN ilV2R!+2FM}#5Ew`LDlZa2jwvw!bUGj+9onESOWlBNHX{U diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_versioning.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_versioning.gif deleted file mode 100644 index 384a4b9481c2abf72c34199289e0e22c1d0d1f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmZ?wbhEHb6krfw00PCIEUX|}2Sk9xTKS8ZW-=Jh1j;c0wfqMvKLdnmKrO}~6BU25FfuU6 zGw6T}1KG*ITJu1?FF9$_iVU?IvsOujoh|&dsrcS9wcc=b!B(b&7HXUe-a8k1=(I9A zJoq_RL&n$9z(R(@O8RK>4K}^@?uCIXYYiF?sMWo&;L^VRT=2cI3M+%7k^qNfF(Ydu obCohjc`Q2{Lr||Wb07-~7ZcMoWx=_#xmdX8t1Q#gS7fjT0Hg;{z5oCK diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_workcleaner.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/service_workcleaner.gif deleted file mode 100644 index a2a19f17ce7cca142999df2e90748a7fdd5d2d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmZ?wbhEHb6krfw00PCIEUX|}2Sk9xTL1t54`j|f^FJ*u?Hv&8X86CG;VuxIIkT!f zZTG5=*q{YU@+$g54D<^bqP1$YTSsWglEFwh|*WGGx&})zq z>@ShE(-*d4s7Wq!V^J3iPbzJR(@^9I49Icg<7Q*!We-esWf5m(RghBk@?v3;7UAV( k+Z^fq|Dn2gC!J!N8)t;iTv5kki{317cYwgtjj5IpJx*cFKU$ SIK)u7=gL8rs6*j`4AuZIhb=V# diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/tag_green.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/tag_green.gif deleted file mode 100644 index 38e98447d167125279b1a1025bd9e5bf97331b47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmZ?wbhEHbn5I<7_~O4e0TZoySsgt`9A&hbm4`CH{aa+ z^z)PPOymFm|1*Gr;!hSv1_oXR9S{#>1_O)ohLfJJLr!mV42Wf%7|Oc9=Y*sI+bIK1 T;}ApUo+}4Aq7H=%GFSrup%g9x diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/war.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/icon/war.gif deleted file mode 100644 index 963bebfdda8aa96e3050175d9ff5f18015f9ca05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmZ?wbhEHb6krfwI3mE1mNxVM|Nk>*o=HnfV*pY!&j7*9nQ1d;&SYRnWBAX&zyM@` zm|z;jCkZJ2WMO0gTBQTh1+tTYHBLdLFC}xHMvKgeh9%hw8h(#;)DkrI+_mA9d6^LW zN2dR1v!j!Z+&1+OfyrHbK`V=%Z*XFWe7Wx82e~Ykm4{!v=#ydnb~#*iZFYCUqP*`f WKXb<^H`MbqskU`$b}K6~SOWmCR6}+E diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/jonasAdmin.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/jonasAdmin.png deleted file mode 100644 index 333fac11c3844061ba02497d8a954e23e7699e68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8993 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 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSadSmall_Orange.jpg b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSadSmall_Orange.jpg deleted file mode 100644 index d98f8a5ded4298467f11591707896276904ed5d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4775 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 KrJL5}^nU@8@vAog diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSmall_White.jpg b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSmall_White.jpg deleted file mode 100644 index 92000653a237439a24e28afa95c2078d1cfe1f83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9625 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 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/balJonasAdmin.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/balJonasAdmin.png deleted file mode 100644 index affe9524c87f03055d642bf0c1ea29c01bdfa01a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26496 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≫9Gg#~4Mw zAv}0&5yQh3U(7rE%JPiRP3M94D3xerh}Y_1#qf`8;%#M=uk`S3k*Vjw3bZlPYs`PQ z!#(OYZbAfNFbNd1MJ0)L!VYDv?0)C{#<;AK*3tVIfaHaM_|Ogy3%o;!y$S|?Ks$*@ ztHA?bUhpQNz-t71DJ>`9_=SJZ4X6OqRA*PR54z zrc8E@<{9VwpCBMeA*98G)!Z{rv)nR?)RzW)&CP7r*12tFJVibpeSk*Fg+`W#7Y|2Q zx)JYOJ6K*SRgf+sCdijQ4SkgsiD^)cUX^Ihe0D!y17vvsZW z=*XF1yU)JPbjoffIDfhG$Y$?>V1Y1(Nc1Cx4%dyXs7t^WdP}S0tCO3 zc6@GS5yP6vm~%8}VchvQ2@AyM(4ZZ2e1`TYi4zmBw zHz^_#^6xyM!iWe&|D6$*k<$6UWAW-^C;xwckksoLgm7jk2WQC}$=bS)DSaQJM07IO z>QheN`>|aPFj24+SW{%7KASZg;^qq^N(u~2=qSIu`CNLw*jl_=^Y&@^K8vG4vo4b6 zilV&=d6s|0fv@eqc&ooDUAbU-)N#t^eZA9OsXDal{C6?}VDj@wnvTlFnFq+dMj08j z?Y`M42Y#ve{BTuC^tbQ!Imy8HSpqm=>i?WjD=79Y#tvr<8bYwOe22TWvDiv>Wbqkw zokVMTqXQjU7>T+BFOBpmtgjgE6HX5C!$yb?x`)%8{`NZ&6PhbGv2y=yqdoweK!or^ zG%>;JG-fOx``f6X#$IDDv4Vt{Lp$Gp1H%LcW&}}vnm4&VG~*pJY^irRyJ4@1Kxp;f zBtZT9vmc9BL6c&l=IHWUtGcx7@a3wdQ`I{Z@|zAV*mt(e)tn_+8wyjRQF(N^$f!x zav@IcrK27-si#D1?Rj^#82NS?Lkhp`{^JLVFp@p6I!4{3D4fK~vQ5L@-Dt9Rjf%k4 z4IutE!0QA)J_W^MrTL{?oW7m5^MH{*8BZ%T0RDGiT4I3zH_-EBW!=r18>(_dIm((V zW%m9Xf7wW19;Ei)GCH&giG+X*m9eT(7Yb##?W7jwNtC|v@y$+)1>hE`RIo5Uhns4B z*1*bD($GvTzhs3?Lx{x>9K};aM6#qVu~gn1`YE`iq!t-m>zG?p`_&p>K*c)EF}|v> zMT5VLW2U?u1F>lA@B6oLk@t`TU9{x|?E?igXoo!DWASdSW74O6QKBC!=LINk6TleV+iJ+de#rCFw;hL<5Fw5Fr&8vk3{ThyYweV2gy z;5MdBXfZx;&*!7^B&Y8y@DDEd7`(kdg_XPXUL}nVpRH6eQBHBqCGxs0r=lNNsAWX@ zE|1#2jmmAr4)bd0a6*c!iz=&WAm#`{_zPp;1%4D#24Rio()v|6(w2P`hrvn`RsOJa zsiy%lNuo&7h|>V6s;NVUK-=4A-_or!QGUIf>m_iTt>>`L^1W=2nXc++Q-oG5=?>W3 zs;#|wLco0FJJ7{jX8E3J(i(ySBtZvf06WoE8lCYKKBnqMKCj)EX=lHNhB|~aOYp%2 zstVelk%`!|)T2`U0^%K6Sl}T^t0Se9)rGdw@`rh_Dt{k5u?0vB)?0Fg|BRXGjVW`q zH|a0Jj;_xmXLK42ht#6=XXe1(B2)cfkM0LQ9v991B#_B9v#`FA!z_%}dxZj}gtAEq(R978BA2ywq8|hQCs21~H^7`E zW^Ads$5%p-vXEkmYvLYsa$#jkrH8qVn(oM{+X01V!-f(IKq$*B={I0FE!RX=U zF$vZ%(#iqA zYcDp27IPWncT<)}h98&l>mDM$csFbY+J8`edcLOl7ps~c((KD$)q%tSmDAq3cli#+ z1H0T;PKp!Rgw^y6j47EjgBQ46&Iee$c0tfk@nk9q=&TY~xqo#shI!O>d*MM{JZv^; zjhp-gxl`6^CjI8m>T@7FS0WQJ1v3+kU5g7I2-r}_z(Zpt9!Wo_Rc0X#wE|OY%OElx zKA5d#x{7b(*uvxLz{;zM-B;u?x_9Sn01G2<|qzbQ0f8|0j+a(*Z&ZpPJB{I@sdrfVUGFn~Yk|uB*h9u9q|hL&rVcGy7|T<8 zD~yy|b_K5#Uj677s<$UVn`BrqsJmG$SP0$yxy*VC7fmuG@Nqf_u8T8inF#{oh zR6$G%n8$EQ;!p+8XXLBphUA;bmaw|V<^`Rt49{a8S_Z}dN;a^1fuwrPuSo(XTsfuyUXaBTZfZsiO`y$ zrQ_e4llS~Xedm~eEP!1tU-X7AO3mD(LCi{W=dblv0pp~Q&HcQr<|5Sc#!$< zkHnOUQrTlkN%Ku&UV02Q!JKVAHm3H80|$W?YgO*q@buG-bCO;xl0|DJXkt+$0Lg!|CuGC^Sc9YLgT1`ovV~L@fNc_KTmUJu_hs zaf}r$5?*^d2i1c5P2_FmIX+oH0)m1pn<4`M@t%!$w^01Z85NQ=Ga#=&DBw0QHa*G{ zfp&*z5V`lw>ZiEMC_4Jg)MAySQf+|f-uKzQ#Q16J$Xk$(thuR`!%uNjcP5*pvl$AW zZ%j6@2_!m-mOSE)^|UHOB|H|Z52yvkHt@;FqAQh+xkai5Dx`c&UoLvOemZhKBRH}M zi%lJh(-Qt>p_R;-yqmg~C3)Z382389a-Vs)Dy6A>_39o`n-E3o4MRd8+D^TGxG=(e zZgyg7l>RDAbZWekj-E_K8N^0A|sN7LP0A`&73`*yAz38<`P?Nae`nnUy}EG_~&a8 z`VyhNOvQ*Kr%Eh}=XunX>nW$4_vM3)cMR)5&;nOxvrYB8({cU~xjfFZn zimk#wbLSLHew0dj^3%VkmPZ8IvVAuMR7$1(=Ym;&1pm;gbDUBF| zJquO(NYMzSv>A=bpag0k$5IY?d?1kO+unbyHavRh=}~n!93^cBnrCD3J4gE7{;T1H zj4t9LA%{-cUL0Iog$I3Al-t&)h1_1Mp!e-^EeBGEU!noRRIX_VN@bkpEKa>y#_jQB6ik$ba!B|k0Na1I z7hIo|{WdJFtoDm|AoflLxnbGc)lr115th5Kp(%I0zcy&?(D<&M)x~UX~2I@_1dislHFm4o7}G zQZo)^qsVc4P8w@9PHpXc$sb5Zw4%#WB<7*eX<|vaZxRvHCH>dR$Oo3cS;hPuW1{?o zSxSqfqUmf*!RdLRr%>xU-7EMGmSOWsv;m#FYC&b^Vf>92s<%b3n{(z=zCJIos1U*A zykb?CyCgq44u9*sA5^;2x`$8N1Ws3bND@a$-Yp6zloUteG1pBZ)g1PFW;T@Dt$N0fuNjb<+cb{3v_5!&7Ywt4r=vW zcL%r_{Mob3H-rLZ>igM+%hoJE`54$ViAefR~|nc5ZtFd=# zu?M57J{Pl@9BwILFjmq&^Fm*w8PrL0nl1d`7*{ZS6l1)xl;xi7yZK>btnV_t+bnc4 zJI_>UH#B% zy8qINuBhkU;&X3s7LXlLvFqdLM(!HD+yzp=WKx(Skfj`Gi59?~u%TPnA1f$t5^l3k z(4Wi`C==ExU8SszyssO2G?4nz{8V&&V0kiu#33F<2t;J_l2az9jVYcbx=hEPZ%DdN zYX%4BbE4TkFDdsnOS6yV?{5xMb;NZ5@{u%Y^F*B^=Bg;m?R4VYO-2_B8Q$8Ci5$lB zW^QL=v@A5CqY|RXN(|^f?MpZ$V1mErY#r@LD4T{~mhAs_bmJOdg_G2%ooG-2O@EY> z*^(L|q)VfqVvwREl-3%nrz0Gy4^ONhFD!{QtrUD7ZpuLPD|}d_{}HK7WXmgPL03Qe zc}Y|Ol(rnjoYgBY;H|Kh9Go{*T)j2oL%7(I|InXN8MY2+q-hcfAWYpRadG3gH(t#K z9zES~R$p@5Uge%1JaE~-S;mohq%>*BQ{0;8E3$slvvz4J&ja2(Ax*H23k8s z&)Ah1FWU3jmb=SLPL=U(&)n+WGS_Dh7>EP54mJp^-Cwh3I_%FHru3V~?tkMuz1R@z zVF1%gD+WOZ!3kmCza*@-5dM0C&blep+kBZsu-zCGpvvTXc!gVVRCmChpy{u?Y9EL; zG&hr)$JbwIid`k|wLv z#ih#4O4NwEH+g%L9@Oo$4xDC! zGHG+|Z%S2o<7gibRJD`oYHNL#<@D=9LV&vVIw>Xu`2QyJ5 zE5*jD4~Bn3r(CyMdSc}2KaDFj>!+78xNs7~CBR{gD_*om?QZ&fOzz(Ha(!-0o8i%{ z$@(rBp7UMq@e#FS#v^$Eko%z@pb9JDzq~yiESC84Yu`jvdF|XyKBnmOL6BvX4TpV5 zpq#L;!FASK@BFfkZmf}T}GI{a6el(DJr~+V_k{F7*losi8KTGZ(WV? zMYV*wjti8V*U_}WMP2c)`jlqZ@}IQ`pWzJqoDkigl$5wpJGNUPN!tFlS9#q!#VOyv zlwEQY1GWL_6A>UnqF0^F2k@)-^&c~GUXSA@X_(uCS*Z^Lx^RB8mf+WgvaBqMEAG>z zX-uuA_5065-*HjdH-Up1QX}1EIA;2p~U{?#* zfRI|r8jMgka53Guj(3W(@*aoUwZwF7GD6A=dQk0`rUtVip5 zo4<{|@4eUm=%$uJ*J7if(+Mg!BAL?-6%D;fQa(7jzdM=oSUce`ltHQx*^^WCIr#y`n|EG4nv7eU{f=`NUV( zw+WwDUl9k(W-Y%i9u*@Dgcc%hgy6)yJgRtL8RXC%K9_O}wp{^9njrnzr?s}e5wf+YI@}sj2Zo#8U{E`siGnW&@|`=f5sN5&vn1wVIy|D>AN9z zD}ivy{I3G6aM_FMle(!fz9?;^i^!@;uw|{>*+lj(=5wuc>BU43hB2mmB>=6E>Swg| z1?$c(+G7xSEFMs_R3tbiC@+Z6u~%5-?oysZVjC-aA1^>MxBv8c50f<70rUSe(28Ow zdHkh|L9Ki2VL85zkDN5#J9i{(zNE1cAMwP0Fwr9^6NMZ~@fU8}YZu)~Oc6iY)J#qG zC9;-nTkf!;au;WeHtc`O^Rkg!cm_USoZtD2^^Mi?@N%)oIoVw#P9}vW7$5su0M~0D zVec8xfPMp~|HwBI1}_bZeuseT0ndRh@8e11yHKo`fai~1TCrMVIj*IS`q8P`G!bL- zPnJO|)@)G7*AC_cR`f#_P`CuDV*T4G@{7(r{c#;=1Pc4fQt{H(AOy<5MSHzeKBiF{ z=FCh7_Y*^X7BAwLIrfOo`?KB@eltLpfXsl)6@ENMj$DlkNB zR@TAujcvv&&&+3}&d&u00a1RVJtN2To2%U*pJYu%g_z4@EWwUL!qb$%ysLDmXVnm) zhgWZ>$+#{>X&C9`I8(Q%PRZx5jIVLN`+n8=S?10mEWrC%fBYCn7(8oq)nW5mY(u>0 zxL61fMB_k2$WQgxT0BevCsD+!**7r;Nr|xXQw)2`awBmyc%E47d^gB9#AO0E4z;rq zjoL48!=lGlDLG;ioXa{d4S-v&Q%7vKw_C|52R^{Rq0#TJVY#1~zUA;W3cj`LDcO_Nayuq&}k_#_Lpak?IJX zvHmAeh?n)x-&PGwT&sOWuU)WSmzPn|T+xdzkybewh7-LK3nD}6N@=IRW<2RY=I<>| zOVQV7-GW< znTtp`0c)!@cQ!hO9;mq$oZsC~=@W@gz)Y}cV{P?md}b&|tYFCGdP=p?_+h)85wg74 zlEEq}GQYO^x6=wDTnhsip))eKOViDMRzq!eUHJhm-x0mOr@6s;`^Fh)Y%QD=KF^LU z*D0X-EZ=#`iuuX+B||a?>qH{DW}zKoX)tU{CHYL1N7717!d!mX z>Qi4*zWh85HvyitoF%vDCwb|F1SuI|xk5#3=1u(h4M!PuxVKW4fW3DEa8z zw>;qpJLZS=c_Vq19nPZsJhwcRyCA0fEv<<(=?`k7??#(hjh9jP>+(q+6*6ehQ|AAW z*mQuhcc9;S*7?eAHs*g-<&d8`coe2{45;69@*}w#R)gqS&9_7Da3nnIOcfP?;)=)A zMQPzR7ZiNvs$MMEMu*QUSfO?N*r60>+IGup%frLn*7EDAzi`4P(^$GDL}@sx`pFhu z?fhH+oZ$J?f!W{(X!-#P4x_mDcVY#-UDkiIG(no{1bI0}K%t+?cX89AsPC5l6A>#R zl|@3raVpv5tGE+oRQ;$txhO8_GT!SUsTjlv2={6RnZT-Lh|;>&F2mK=Ps|(>1otAo zw^X4Jd5mI2n3%s|^Kp(3l7?z!YGBz1Hr`x=$Ai-frNVLrf6|t+djIg-;ffVgbWE zyhd!~2z_9%NmJAJrNirE5gCGAQlA#fo%&>D%_zM#$Xk+*AMTz|AV1||-H_lIy?#$r z-4HDj)J-c?AJ}4VV@R3)IpdwcFFy@m6Nrs^UZx-VwP*1J%#BrX?r*8W9>Cx48 z+t|mLU*|zk;gI$HCI!>US*q#Cpa1k5LE&bc#`8=;+15@SRz}SmV0>L#=ukqCVC*2g z;IGC|P4*>d)qCfp9wUw>c|Rue@|snFmlHD1`@le>??0R%Tm5#Plk2{EbcwCOtF!ql zuR9m)x&0W5JOj5EtUlm=(~Q47%0Iw^NLEb2z39gHksUf@9Ql0dw+n*b0k{niSBEaN zdF)b;PX~OREUqs%h6}#u5dqSEi_nVuzbhbrDT{)m4Vj9037H8joO;k4wure_*MhaJ zBb5mxJ8Po|yM7evclA2ibw5ek2LFI^-)qLTpFeaWtsWJ8E;HaP3*;yu zhuTN2VeSo1@L0EG;I7#^3;ac=xB*^4@?KpwI38?6omY^Qv@-hUSuW$NgAVN=N0!SD z@A2SELBmOi!|Zh#HvmHo&r=h3wm=R_-&CF*%_pq?PFTeeC(pqH05aoe)tWe10hcR% zLf6)6BAnRQ0lUlOfTQ5p`3ST!TeYaypcm(fXDDcB|5G6M#i;f^AVs<9ezK?NsR$3 z=H;0Fu1BB$0WP;#}zE z03l2Qly=&hQ^~-I1}9h0m$R%Y=Xz&@DxHHZ1ORqbq9W$8SFbB7ZaGeG;{J6L0^BoQ zW02%-{$nro1AC*G16%F7E9ni6wXBHbR#`D2$diRpK1?i&1jm7y-&}cPPDM^CZ$W1P zK@Af}F)`ra;+*d&Cl~7rz2Ikc^De7BR{I*=R>W$P(`L^=W=p>8!H;i|Xsx3DJLJ@uBg}q)%8< zL|8_Hs5eO1gcMiaA$)o9#6DA1WuKR@4!MHMK08F)nuE}$YpTJQBK%mUn)3~P`r9Xn z$;rh~=C$t(m91~zA%q%q;Icf8;MI{~j77%D8Z9Er7g>1sre<|(wm8SN7P>~blpVMZ}qf)Zou03q@51BA^A1-!cAlps9;P`GT_j=$1c9-Q+wmzUXF z?h~(hz%#UlHC{Z{1V}P{Y37PwY9yGez=s@TkvBr4}l}{J(gY7k@;(Ed$&JWL-*G zZgEtK9BFj~S$y&-Pwa$PO%4eX;@B8⁢yEcKA_F8Xgwwj_l3{6po6ppUyze8p7X9 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�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 Q%r-zpNfTJBX!ZGj0WE4xMgRZ+ diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/jonasAdminWelcomeMessage.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/jonasAdminWelcomeMessage.png deleted file mode 100644 index 07734732e0683804153ffac626001e32127ad106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7750 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 M07*qoM6N<$f^nn1p#T5? diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/logoOW2.png b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/logoOW2.png deleted file mode 100644 index 35cee5856c041ecf5b1b5e8c8a0d784a225a9a3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3608 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 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tableftF.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tableftF.gif deleted file mode 100644 index 021624c09aeb41c9d62699c67d9f30056fe4bb43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmZ?wbhEHbWMK$lxT?eO|NsA`@BXHxrRA-AI&IgRNjJVv-1hSC-+zrq-@keNX7>KK zeVbmC?|k**#fw+3UN3m@=k43K^N+r(s;Vk0uXyt0Y3KRRvmX9hdiuk=ckj!)mn~ho z^wHzTA3uJ4_Uw61PEKxa?(JK*KYjk(z4rOfpFcWQKl}9Q)BE=yK7amv=gysnm`OV(=~}cpHC@S2vADt7U=uf={mtLn`liN~nzn}a=FZlR-mbo$dM9By z9brk8=}Jm+-1C^&7BaCcVd7fOB)E!6d@U361}2`(OdQ*oM0YZ=?qL$!&%}R-iSg)> gV@DZ}pE`N^+}R5!E}gl2{_4dmH?Q5g;mBYO04|!Wt^fc4 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tabrightF.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/tabrightF.gif deleted file mode 100644 index 7c236f3a27e89632ca1a12fff0b8026b83b79dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2095 zcmcJM`6CmG1HdO|QPL|4rTXRwdGb<@96i^}(V=pr9=?SXPdw+hSD4#!)*N%pHpATa zm2#vR=E{}hnQdm5na!AK+k5Yi_P4rNt!{Yl}!CZEtVqwA0|!AF$7xWkW1j9}E6<3r;&&US8hXV&}Hea@*;dO;rB= zKAB9W)Bka@(Om1v5Y^3KFqygE_qbdxw1*)Qi9#AEY&M(A;TEn5((5+%`TGe*B(bv}>6BE%BCp4` z(R+G&(z+N^lT$0pDwWPN=-GBOf2NXLG~!eFrEq+}!#IX6H5^5sjP zR|(1Jf${N)e<}g~KU~if%6{mIQ{e1rv_6`5<+nLVS6F~Tv0m0`m&IQwlO=b-BIj=7pjq^dx6qQJHinX2 zI$_*maTRd14=g_Bs?HB3Vl(93>o3HxPfj8$J)SIgg)#7jPFW#m%_GQT{lCqBvKRtr zIinQWD&@Tgdu-BZ+3mNMkORK&%<6>3n>Rm%(mI4U;x$>R;Z{Z-1OoV|rA|3m z3FNVsc-$|rKS}W~!dl9yu+H*i1DfBs| zFc4i$DGHh~7&<1Ubc9~h_|>brrg<)iQ3p+rXViZj z0KI7Flj)%~3@E=~BEOugVKygejWSz?%;Yy)KZ2Y#+uFP`Hrs21MmIaq^dqd!rdTId zS5Z+0t2+-f%IeANmf!lAHsZ9^+eNHtK<%>RfB!6MmJjWt9&Sj&Xz!E*SdnWV5~(pu3Xd?zO#h1cCjIE*3JDLZ`SK~m$q4tsNS}P zCs{|^zdy?pMl1&8mqaXi4+^g@1^%zDeaS<%DbY&vy-&hnb*XdFt8e8kJ6Ge>T%(EV z`XSMzR4W5ha+2P;uJsRYoahzc!`XxM+6<)u(S_FpvG~V9nV3IsCGqBboTM!r zaH_ys+K3&enCK&+X>tp|nuwDcgG*?p_RE<~f>peIWcKzFH5AqoZP?gD4~GYoyV*&G zka7jz1+eN|XtK$e@3G)$o3jFTiV@jYv5}pq`h$=P+;R8`0*Kc#+fKU!L7c2SZKvhh zB;$cXD0k@C>4B6oj6E)@V1f49u~*Z5oRO-+wYclu+wVdlNc9b%gXt$iW>hWm++L@{ zO-fEyoWiBELLl&00ZAg&8Ff(wH*9al$$94;e@XK&4&*hRn};H6-oW7;{5j&hvK?7T zd&iM`MV$9l&K0_MaS0FG!#*@Zp6Nf{2YD`XpcqtzK?F@vn$OAaQ$QQ0IF9)p`$cBh z7JW4z=j^ZLR)~k7uVw6yoz{UD;dW$?>Gt76!op#HF||wvJ>y@c=M}Ho21tANxkjRY zDxvK7-yE$Tj|pojVYX^pta;uJqq~*y6#}h=7ZQ%8!r^CuRkx0&-$_#5fgf?9+NhaL zr5c<>Cj$^Iz|R+=>MM0hr*c zU86?6l?rw$t&d{vq=04+s=O-T5X~iTWCm@Ze79vpeI&l-NlN;BuYlKJx~bea(7!TjIRW_ iFFl;=o~y$AdFAM?7&R*~U diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line.gif deleted file mode 100644 index 0597cb126ee5d41dab4882b3499b71c08ab2260d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHb6krfzXkcVWOG{&5U{L(Y!pOkD$e;scGk|0mn5299SF*j{FEz*iQn${r Vs>|;j6JGQzNt!p)Y9=d#H2?ww6L|mt diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_first.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_first.gif deleted file mode 100644 index 975b2a9e3ca0dab6d8a0354e4af731dc7f5674b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZ?wbhEHb6krfzXkcVWOG{&5U{L(Y!pOkD$e;scGk|0mn5268SDt>$zj)4;C=RE4 UzZSi*OgPcABx#;}Fav`%0QLP6)&Kwi diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_last.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/line_last.gif deleted file mode 100644 index f5a08f400c9375cf865cc45f95371babbe237009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZ?wbhEHb6krfzXkcVWOG{&5U{L(Y!pOkD$e;scGk|0mn5268SF*j{FEz*iQn${r Us>^I_3*DzZ>s^I_3zwIql*Xk+ZMrNa!e9*m7BLdl diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_close.gif deleted file mode 100644 index 722763bc07f8d1060b449c4617201146314faf2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmZ?wbhEHb6krfzn8?78mX^lAz+jv<6G$rlWMO1rU}n$(vKc_~3{0AH`d6NQ%fGl} pLDX)CdulRk8=BKQI>eT|T(I@NeT|T(I@N{y{YJMOy6^>4PK4AuY{%NS<> diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_first.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_first.gif deleted file mode 100644 index a24ca319551f2c3423afff46f68476119c42e616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHb6krfzn8*MEX=!Q3X)}Qg#h)yU3=GT+Iv`PyJOh*3oc@)k-|{amSs1n3 i>7G~lyo>`De77nq6gyVv&W^jzvhz#wecwD025SIi6dB6^ diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_last.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_last.gif deleted file mode 100644 index 75c6e1d522acff775d949f38d1f2df6bc71fb6f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHb6krfzn8*MEX=!Q3X)}Qg#h)yU3=GT+Iv`PyJOh*3oc@(!ulGyM@xLU! i>Dor^?uPagB?l_`&RSJ*uH2QlCHH#o^I!W!7_0$j#~UC3 diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_middle.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/node_open_middle.gif deleted file mode 100644 index fa28a082ae5eebf1c0afe212a80b22f3cbf79435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87 zcmZ?wbhEHb6krfzn8*MEX=!Q3X)}Qg#h)yU3=GT+Iv`PyJOh))oc@(!ulGyM@xLU! k>Dor^?uPagB?l_`&RSJ*uH2QlCHFe-{eX4Wm5dD50G7)dfdBvi diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/noline.gif b/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/tree/noline.gif deleted file mode 100644 index af2f8eb64bbb8b2a2be467462732fa89e2d0d1fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58 zcmZ?wbhEHb6krfzXkdT>#h)yUAf^t80Ld^g3AXgFJpGn`@tiHUx;Nk3Qysv-U=08x C{0;#C diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/index.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/index.jsp deleted file mode 100644 index ba2fab2879..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/index.jsp +++ /dev/null @@ -1,4 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<% -response.sendRedirect(response.encodeRedirectURL("index.html")); -%> diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/ConnectionFactoryEdit.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/ConnectionFactoryEdit.jsp deleted file mode 100644 index c5c3eaff0c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/ConnectionFactoryEdit.jsp +++ /dev/null @@ -1,92 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " value=""> - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAdd.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAdd.jsp deleted file mode 100644 index 646b5188fc..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAdd.jsp +++ /dev/null @@ -1,88 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - <%--sj:tab forward="JonasMqConnectStartAction"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAddConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAddConfirm.jsp deleted file mode 100644 index d367461254..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationAddConfirm.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -Add destinations - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDelete.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDelete.jsp deleted file mode 100644 index 4884d5f2cf..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDelete.jsp +++ /dev/null @@ -1,86 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - <%--sj:tab forward="JonasMqConnectStartAction"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDeleteConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDeleteConfirm.jsp deleted file mode 100644 index 33c6fd4ba0..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationDeleteConfirm.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -

    Delete destination

    - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationEdit.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationEdit.jsp deleted file mode 100644 index 7d77560db3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/DestinationEdit.jsp +++ /dev/null @@ -1,131 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - <%--sj:tab forward="JonasMqConnectDestinationEditAction" selected="true"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - - - - - - - - - - - - " value=""> - - - - - - - - - - - : - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Destinations.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Destinations.jsp deleted file mode 100644 index bb71c38181..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Destinations.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="/common/begin.jsp" %> - - - - - <%--sj:tab forward="JonasMqConnectStartAction"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="/common/end.jsp" %> - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnect.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnect.jsp deleted file mode 100644 index 020bf5f8be..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnect.jsp +++ /dev/null @@ -1,189 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="/common/begin.jsp" %> - - - - - - - <%--sj:tab forward="JonasMqConnectForm" selected="true"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "> - - - - - - - - - - - "> - - - - - - - - - - - "> - - - - - - - - - - - "> - - - - - - - - - - - "> - - - - - - - - - - - - - - - -   - - - - - - - -   - - - - - - - -   - - - - - - - - - - - -<%@ include file="/common/end.jsp" %> - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnectPlatform.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnectPlatform.jsp deleted file mode 100644 index e9ce6a5b43..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/JonasMqConnectPlatform.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="/common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="/common/end.jsp" %> - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/MdbEdit.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/MdbEdit.jsp deleted file mode 100644 index 3e15fb107f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/MdbEdit.jsp +++ /dev/null @@ -1,53 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - <%--sj:tab forward="JonasMqConnectStartAction"> - - - - - - - - - - - : - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Mdbs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Mdbs.jsp deleted file mode 100644 index b9b34131f6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasmqconnect/Mdbs.jsp +++ /dev/null @@ -1,57 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="/common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="/common/end.jsp" %> - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jmxserver.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jmxserver.jsp deleted file mode 100644 index df9a37e7f9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jmxserver.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasserver.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasserver.jsp deleted file mode 100644 index b1c7d5fd3c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasserver.jsp +++ /dev/null @@ -1,86 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); - %> - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - versions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasversions.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasversions.jsp deleted file mode 100644 index b9fb3df3d6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jonasversions.jsp +++ /dev/null @@ -1,45 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - -
    -            
    -          
    -
    -
    -
    - -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jvm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jvm.jsp deleted file mode 100644 index c91d8dc605..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/jvm.jsp +++ /dev/null @@ -1,48 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/listRegistry.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/listRegistry.jsp deleted file mode 100644 index a1c13ce71c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/listRegistry.jsp +++ /dev/null @@ -1,105 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - -   - - - - - - - -   - - -   - - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/registry.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/registry.jsp deleted file mode 100644 index 6b57d4c2c3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/registry.jsp +++ /dev/null @@ -1,136 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - -   - - - - - - - -   - - -   - - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/servletServer.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/servletServer.jsp deleted file mode 100644 index 4b23bb6d11..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/jonasserver/servletServer.jsp +++ /dev/null @@ -1,111 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> -<% String cmi = (String)request.getAttribute("cmi"); - String master = (String)request.getAttribute("master"); -%> - - - - - - - <%if("true".equals(cmi) || "true".equals(master)){%> - - <%}%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addreader.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addreader.jsp deleted file mode 100644 index 70eb441b72..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addreader.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addwriter.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addwriter.jsp deleted file mode 100644 index 9728a01d0d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/addwriter.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createdestination.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createdestination.jsp deleted file mode 100644 index 04afbb60c1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createdestination.jsp +++ /dev/null @@ -1,89 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createuser.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createuser.jsp deleted file mode 100644 index 324ea12b4d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/createuser.jsp +++ /dev/null @@ -1,81 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramadapter.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramadapter.jsp deleted file mode 100644 index ed5582d14c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramadapter.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdestinations.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdestinations.jsp deleted file mode 100644 index d76cdaaeed..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdestinations.jsp +++ /dev/null @@ -1,138 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdeststatistics.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdeststatistics.jsp deleted file mode 100644 index 127b44d627..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramdeststatistics.jsp +++ /dev/null @@ -1,78 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramplatform.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramplatform.jsp deleted file mode 100644 index 5de65939b5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramplatform.jsp +++ /dev/null @@ -1,191 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueue.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueue.jsp deleted file mode 100644 index 1c4a6a9537..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueue.jsp +++ /dev/null @@ -1,170 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuereaders.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuereaders.jsp deleted file mode 100644 index fa1fee2566..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuereaders.jsp +++ /dev/null @@ -1,130 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuewriters.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuewriters.jsp deleted file mode 100644 index d06ff2bf1c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramqueuewriters.jsp +++ /dev/null @@ -1,130 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremotedestinations.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremotedestinations.jsp deleted file mode 100644 index 69c008e299..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremotedestinations.jsp +++ /dev/null @@ -1,133 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremoteserver.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremoteserver.jsp deleted file mode 100644 index 11e27e73ad..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramremoteserver.jsp +++ /dev/null @@ -1,44 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramservers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramservers.jsp deleted file mode 100644 index eb5f3c01af..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramservers.jsp +++ /dev/null @@ -1,93 +0,0 @@ - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopic.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopic.jsp deleted file mode 100644 index 7ac58b44c6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopic.jsp +++ /dev/null @@ -1,141 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicreaders.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicreaders.jsp deleted file mode 100644 index 8188a8c3ac..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicreaders.jsp +++ /dev/null @@ -1,130 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicwriters.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicwriters.jsp deleted file mode 100644 index a3a7615933..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramtopicwriters.jsp +++ /dev/null @@ -1,131 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramusers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramusers.jsp deleted file mode 100644 index 4d0f6549ec..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramusers.jsp +++ /dev/null @@ -1,93 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramxml.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramxml.jsp deleted file mode 100644 index 96dab312fd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/joramxml.jsp +++ /dev/null @@ -1,30 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/queueUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/queueUsedBy.jsp deleted file mode 100644 index 34abdbf944..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/queueUsedBy.jsp +++ /dev/null @@ -1,77 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeDestinationsConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeDestinationsConfirm.jsp deleted file mode 100644 index 22588850c9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeDestinationsConfirm.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeUsersConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeUsersConfirm.jsp deleted file mode 100644 index 8cb3f7c042..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/removeUsersConfirm.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/topicUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/topicUsedBy.jsp deleted file mode 100644 index fecf993f03..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/joramplatform/topicUsedBy.jsp +++ /dev/null @@ -1,77 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/catalinaAccessLogger.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/catalinaAccessLogger.jsp deleted file mode 100644 index b836054fd7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/catalinaAccessLogger.jsp +++ /dev/null @@ -1,159 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - -    - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggers.jsp deleted file mode 100644 index 435b306b50..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggers.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggersConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggersConfirm.jsp deleted file mode 100644 index 1172cd0216..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggersConfirm.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingJonas.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingJonas.jsp deleted file mode 100644 index 85276f54d5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingJonas.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingView.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingView.jsp deleted file mode 100644 index 77918ee019..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/logging/loggingView.jsp +++ /dev/null @@ -1,83 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/login.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/login.jsp deleted file mode 100644 index 700b09f5d5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/login.jsp +++ /dev/null @@ -1,113 +0,0 @@ - - -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> - - - - - - - - -<%@ include file="begin.jsp"%> - - - - - - - - -
    -
    - - - - - - - -
    -
    -

    -

    - -
    -
    - - - - -
    -
    - - - - -
    -
    JOnAS Administration
    -
    - - - - - - - -
      - - - - - - - - - - - - - -
    - -
    - -
      -    -
     
    -
    - - - - - - - -<%@ include file="end.jsp"%> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listJ2eeMBeans.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listJ2eeMBeans.jsp deleted file mode 100644 index 770e5f21c9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listJ2eeMBeans.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanAttributes.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanAttributes.jsp deleted file mode 100644 index 77b1f04fbd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanAttributes.jsp +++ /dev/null @@ -1,95 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - == - - -
    -
    -
    -
    -
    - - - - ( - - - - ) - - - - -
    -
    -
    -
    -
    -
    - -<%@ include file="../common/end.jsp" %> -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanOperations.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanOperations.jsp deleted file mode 100644 index 37cdd158b1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanOperations.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanProperties.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanProperties.jsp deleted file mode 100644 index b26a5b1759..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeanProperties.jsp +++ /dev/null @@ -1,43 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - domain - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeans.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeans.jsp deleted file mode 100644 index 946423c97d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listMBeans.jsp +++ /dev/null @@ -1,55 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listOwnerMBeans.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listOwnerMBeans.jsp deleted file mode 100644 index 238ef32c27..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listOwnerMBeans.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listUnknownMBeans.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listUnknownMBeans.jsp deleted file mode 100644 index cd810e1795..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/mbean/listUnknownMBeans.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - -   - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiCluster.jsp deleted file mode 100644 index 07e8e5ed2d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiCluster.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - Info - - - - - - State - - - - - - - - - - Configuration - - - - - - McastAddr - - - - - - - - McastPort - - - - - - - - Protocol - - - - - - - - DelayToRefresh - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiMember.jsp deleted file mode 100644 index 64a10e79e1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/cmiMember.jsp +++ /dev/null @@ -1,36 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyCluster.jsp deleted file mode 100644 index a822af0609..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyCluster.jsp +++ /dev/null @@ -1,775 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp"%> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyMember.jsp deleted file mode 100644 index dcfe68d468..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/daemonProxyMember.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -

    In progress

    - -<%@ include file="../common/end.jsp" %> - -
    \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/displaynode.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/displaynode.jsp deleted file mode 100644 index 61ca7ed9af..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/displaynode.jsp +++ /dev/null @@ -1,715 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - Infos - - - - - - - Global - - - - - State - - - - - - - - Threads Count - - - - - - - - - - Memory Load - - - - - - - - - - Total Memory - - - - - - - - JOnAS Version - - - - - - - - JVM Version - - - - - - - - JVM Vendor - - - - - - - - Protocols - - - - - - - - Jmx Connection URL - - - - - - - - - - - - - Transactions - - - - - Begun Transactions - - - - - - - - - - Committed Transactions - - - - - - - - - - Current Transactions - - - - - - - - - - Expired Transactions - - - - - - - - - - Rolled Back Transactions - - - - - - - - - - - - - - - JOnAS Worker Pool - - - - - Current Pool Size - - - - - - - - Max Pool Size - - - - - - - - Min Pool Size - - - - - - - - - - - - - Tomcat - - - - - Total Max Threads - - - - - - - - Total Threads Number - - - - - - - - Total Threads Busy - - - - - - - - - - Total Bytes Received - - - - - - - - - - Total Bytes Sent - - - - - - - - - - Total Error Count - - - - - - - - - - Total Processing Time - - - - - - - - - - Total Request Count - - - - - - - - - - - - - - - JCA - - - - - Total Opened Connections - - - - - - - - - Total Busy Connections - - - - - - - - - - Total Connection Failures - - - - - - - - - - Total Connection Leaks - - - - - - - - - - Total Rejected 'open' calls - - - - - - - - - - Total served XA connections - - - - - - - - - - Total Waiters - - - - - - - - - - Total Waiting Time - - - - - - - - - - - - - - JDBC - - - - - Total Opened Connections - - - - - - - - Total Busy Connections - - - - - - - - - - Total Connection Failures - - - - - - - - - - Total Connection Leaks - - - - - - - - - - Total Rejected 'open' calls - - - - - - - - - - Total served XA connections - - - - - - - - - - Total Waiters - - - - - - - - - - Total Waiting Time - - - - - - - - - - - - JMS - - - - - Total Messages Received in Queues - - - - - - - - - - Total Messages Delivered from Queues - - - - - - - - - - Total Messages Received in Topics - - - - - - - - - - Total Messages Delivered from Topics - - - - - - - - - - Total Messages Sent to DMQ - - - - - - - - - - - - EJBs - - - - - Number Of EJB - - - - - - - - - - Number Of EntityBean - - - - - - - - - - Number Of Stateful SessionBean - - - - - - - - - - Number Of Stateless SessionBean - - - - - - - - - - Number Of MessageDrivenBean - - - - - - - - - - - - - - - - Global - - - - - - State - - - - - - - - - - - - <%@ include file="../common/end.jsp"%> - - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaCluster.jsp deleted file mode 100644 index da6cb6a97d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaCluster.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - - - Configuration - - - - - - McastAddr - - - - - - - - McastPort - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaMember.jsp deleted file mode 100644 index 049ef770db..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/ejbHaMember.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverGraphs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverGraphs.jsp deleted file mode 100644 index e8d8eaa0df..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverGraphs.jsp +++ /dev/null @@ -1,88 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - <%=serverName%> infos - <%=selectedTabTitle%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverTransactionCount.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverTransactionCount.jsp deleted file mode 100644 index fede4a5fe1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/graph/serverTransactionCount.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - Server's infos - Tx Graph - - - - - - " name="memory"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkCluster.jsp deleted file mode 100644 index a190f1dd2a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkCluster.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - Load balancer workers - - - - - - - - Sticky session - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkMember.jsp deleted file mode 100644 index a4c57d5399..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/jkMember.jsp +++ /dev/null @@ -1,81 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - Host - - - - - - - - State - - - - - - - - - - - - - Jk worker info - - - - - - Load balance factor - - - - - - - - Type - - - - - - - - Port - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramCluster.jsp deleted file mode 100644 index cea4e0a771..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramCluster.jsp +++ /dev/null @@ -1,36 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramMember.jsp deleted file mode 100644 index dcfe68d468..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/joramMember.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -

    In progress

    - -<%@ include file="../common/end.jsp" %> - -
    \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalCluster.jsp deleted file mode 100644 index d107d1708b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalCluster.jsp +++ /dev/null @@ -1,38 +0,0 @@ - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - State - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalMember.jsp deleted file mode 100644 index dcfe68d468..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/logicalMember.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -

    In progress

    - -<%@ include file="../common/end.jsp" %> - -
    \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/memory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/memory.jsp deleted file mode 100644 index afda226e43..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/memory.jsp +++ /dev/null @@ -1,78 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - " name="memory" width="" height=""> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/monitoring.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/monitoring.jsp deleted file mode 100644 index 0628410acd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/monitoring.jsp +++ /dev/null @@ -1,56 +0,0 @@ - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/stackDump.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/stackDump.jsp deleted file mode 100644 index 384036034a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/stackDump.jsp +++ /dev/null @@ -1,30 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp"%> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatCluster.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatCluster.jsp deleted file mode 100644 index 6ac7f254c3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatCluster.jsp +++ /dev/null @@ -1,87 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - Info - - - - - - State - - - - - - - - - - Membership multicast ping - - - - - - McastAddr - - - - - - - - McastPort - - - - - - - - McastFrequency - - - - - - - - McastDropTime - - - - - - - - McastSocketTimeout - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatMember.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatMember.jsp deleted file mode 100644 index 7658d78358..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/monitoring/tomcatMember.jsp +++ /dev/null @@ -1,148 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - Info - - - - - - Host - - - - - - - - State - - - - - - - - - - - - - - Receiver info - - - - - - Version info - - - - - - - - TCP listener address - - - - - - - - TCP listener port - - - - - - - - Number of TCP listener worker threads - - - - - - - - - - - - Sender info - - - - - - Version info - - - - - - - - Replication mode - - - - - - - - Acknowledge timeout - - - - - - - - AutoConnect - - - - - - - - Create processing time stats - - - - - - - - Wait for ack after data send - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/createDestination.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/createDestination.jsp deleted file mode 100644 index a1c013f501..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/createDestination.jsp +++ /dev/null @@ -1,72 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasourceProperties.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasourceProperties.jsp deleted file mode 100644 index 0eb6f20c7a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasourceProperties.jsp +++ /dev/null @@ -1,221 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasources.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasources.jsp deleted file mode 100644 index 0a8cff2bdf..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/datasources.jsp +++ /dev/null @@ -1,81 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - -   - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployDatasource.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployDatasource.jsp deleted file mode 100644 index 97974d1b00..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployDatasource.jsp +++ /dev/null @@ -1,77 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    - - - -
     
    - - - -
    -
    - - - - - - -
    - -   - -   - -
    - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployMailFactory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployMailFactory.jsp deleted file mode 100644 index ff29bffe8f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/deployMailFactory.jsp +++ /dev/null @@ -1,77 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    - - - -
     
    - - - -
    -
    - - - - - - -
    - -   - -   - -
    - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/destinationsConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/destinationsConfirm.jsp deleted file mode 100644 index bc2b196a80..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/destinationsConfirm.jsp +++ /dev/null @@ -1,54 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/jmsResources.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/jmsResources.jsp deleted file mode 100644 index d6334c5a5b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/jmsResources.jsp +++ /dev/null @@ -1,98 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactories.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactories.jsp deleted file mode 100644 index 9fdcacd166..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactories.jsp +++ /dev/null @@ -1,101 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactoryProperties.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactoryProperties.jsp deleted file mode 100644 index 7660c6de11..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mailFactoryProperties.jsp +++ /dev/null @@ -1,137 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mimePartFactoryProperties.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mimePartFactoryProperties.jsp deleted file mode 100644 index dbf4d1d0d6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/mimePartFactoryProperties.jsp +++ /dev/null @@ -1,133 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/sessionFactoryProperties.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/sessionFactoryProperties.jsp deleted file mode 100644 index 6632424b40..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resource/sessionFactoryProperties.jsp +++ /dev/null @@ -1,105 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createJDBCResourceAdapter.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createJDBCResourceAdapter.jsp deleted file mode 100644 index 0cd411d22a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createJDBCResourceAdapter.jsp +++ /dev/null @@ -1,292 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createOtherResourceAdapter.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createOtherResourceAdapter.jsp deleted file mode 100644 index 831d9672ed..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createOtherResourceAdapter.jsp +++ /dev/null @@ -1,115 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createResourceAdapter.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createResourceAdapter.jsp deleted file mode 100644 index c715c1ccf3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/resourceadapter/createResourceAdapter.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JDBC (DriverManager)
    - Other
    -
    -
    - - - - - - -
    -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/script/jonasAdmin.js b/jonas/modules/ee-components/jonas-admin/src/main/webapp/script/jonasAdmin.js deleted file mode 100644 index 68b4048665..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/script/jonasAdmin.js +++ /dev/null @@ -1,214 +0,0 @@ -function ListOption(content, id) -{ - this.content = content; - this.id = id; -} -function copySelected(p_FormName, p_ListNameSource, p_ListNameDestination) -{ - var oSelectSrc = eval("document." + p_FormName + "." + p_ListNameSource + "Selected"); - var oSelectDst = eval("document." + p_FormName + "." + p_ListNameDestination + "Selected"); - var len, i, cpt, cptSel; - var tab = new Array(); - var tabSel = new Array(); - cpt = 0; - cptSel = 0; - oSelectDst.selectedIndex = -1; - for (i = 0; i < oSelectSrc.options.length; i++) - { - if (oSelectSrc.options[i].selected) - { - oSelectDst.options[oSelectDst.options.length] = new Option(oSelectSrc.options[i].text,oSelectSrc.options[i].value); - tabSel[cptSel++] = oSelectDst.options[oSelectDst.options.length - 1]; - } - else - tab[cpt++] = new ListOption(oSelectSrc.options[i].text, oSelectSrc.options[i].value); - } - // we recontruct the select options, otherwise, IE5 crashes when you affect null value to a select option - oSelectSrc.selectedIndex = -1; - oSelectSrc.options.length = 0; - for (i = 0; i < tab.length; i++) - oSelectSrc.options[i] = new Option(tab[i].content, tab[i].id); - // we reselected the item which have just been moved - for (i = 0; i < tabSel.length; i++) - tabSel[i].selected = true; - // Update the corresponding Hidden field - updateHiddenSelect(p_FormName, p_ListNameSource); - updateHiddenSelect(p_FormName, p_ListNameDestination); - return false; -} - - -function selectToString(p_Select) -{ - var len = p_Select.length; - var i; - var res; - res = ""; - for (i = 0; i < len; i++) - { - res += p_Select.options[i].value; - if (i < len - 1) - res += ","; - } - return res; -} - - -function updateHiddenSelect(p_FormName, p_ListName) -{ - var oSelect = eval("document." + p_FormName + "." + p_ListName + "Selected"); - var oHidden = eval("document." + p_FormName + "." + p_ListName); - oHidden.value = selectToString(oSelect); -} - -function submitHiddenSimple(p_FormName, p_HiddenName, p_HiddenValue) -{ - var oForm = eval("document." + p_FormName); - var oHidden = eval("document." + p_FormName + "." + p_HiddenName); - oHidden.value = p_HiddenValue; - oForm.submit(); -} - - -function submitHidden() -{ - var oHidden; - var oForm = eval("document." + arguments[0]); - for (i=1; i < arguments.length; i+=2) - { - oHidden = eval("document." + arguments[0] + "." + arguments[i]); - oHidden.value = arguments[i+1]; - } - oForm.submit(); -} - - -function submitForm() -{ - var oForm = eval("document." + arguments[0]); - oForm.submit(); -} - - -function refreshTree() -{ - if (arguments.length > 0) - { - var sHref = arguments[0]; - if (sHref.length > 0) - { - top.tree.location.href = sHref; - return; - } - } - top.tree.location.reload(); -} - -function selAll(p_FormName, p_Servers, _v) -{ -var oForm = eval("document." + p_FormName + "." + p_Servers); -for(var i=0;i< oForm.length ;i++) - -oForm[i].selected=_v; -} -function enableReplace(p_FormName) -{ - var checkBox = eval("document." + p_FormName + ".replaceOnTarget"); - checkBox.disabled = false; -} -function disableReplace(p_FormName) -{ - var checkBox = eval("document." + p_FormName + ".replaceOnTarget"); - checkBox.disabled = true; -} - -function setHidden(p_FormName, p_HiddenName, p_HiddenValue) { - var oForm = eval("document." + p_FormName); - var oHidden = eval("document." + p_FormName + "." + p_HiddenName); - oHidden.value = p_HiddenValue; - } - - - /** - - **/ - function checkNotEmpty(eltId) { - var elt; - if (document.getElementById) { - //try to use DOM - elt = document.getElementById(eltId); - alert('DOM not activated'); - } else { - elt = document.forms[0].elements[eltId]; - alert('DOM not activated'); - } - - var elt = document.getElementById(eltId); - if (elt.value == "") { - alert('the field cannot be empty'); - elt.focus(); - } - } - - -//confirm operation before submitting.usefull when removing. -/** - arguments[0] the form name - arguments[1]..arguments[argument.length-2]: actioName;actionValue - arguments[argument.length-1]: the confirm message -**/ -function submitHiddenWithConfirm() { - var oHidden; - var oForm = eval("document." + arguments[0]); - for (i=1; i < arguments.length-1; i+=2) - { - oHidden = eval("document." + arguments[0] + "." + arguments[i]); - oHidden.value = arguments[i+1]; - } - //argument[length -1] == message to display - var response = confirm(arguments[i]); - if(response == true) { - //response is "yes" - oForm.submit(); - }else { - return; - } -} -/** - formName: the form name - actionElt: the action element - actionToApply: action to Apply (blacklist/unblacklist) - serverElt: form element that will contain a server value - serverValue: The value to set in serverElt -**/ -function applyCmiServerAction(formName, actionElt, actionToApply, serverElt, serverValue) { - var oForm = document.forms[formName]; - var action = oForm.elements[actionElt]; - action.value = actionToApply; - var server = oForm.elements[serverElt]; - server.value = serverValue; - oForm.submit(); - return; -} - -/** - * Diplay the url of a given deployable. - * @param selectables : set of selectable deployables. - * @param where2display : html text where to display the url. - */ -function displayDeployable(selectable, where2display) { - var dispDest; - var selectElement; - if (document.getElementById) { - //try to use DOM - dispDest = document.getElementById(where2display); - //selectElement = document.getElementById(selectable.id); - } else { - dispDest = document.forms[0].elements[where2display]; - //selectElement = document.forms[0].elements[selectable.id]; - } - dispDest.value = selectable.value; - dispDest.size = selectable.value.length + 5; - selectable.title = selectable.value; -} - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/confirmActionMemoryRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/confirmActionMemoryRealm.jsp deleted file mode 100644 index 5f0ba2ed47..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/confirmActionMemoryRealm.jsp +++ /dev/null @@ -1,108 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/datasourceRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/datasourceRealm.jsp deleted file mode 100644 index 2007096f6b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/datasourceRealm.jsp +++ /dev/null @@ -1,133 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/groupMemoryRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/groupMemoryRealm.jsp deleted file mode 100644 index f953879388..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/groupMemoryRealm.jsp +++ /dev/null @@ -1,153 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    -    -
     
    -    -
    -
    - - - - - - -
    -
    - - - - - - - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/ldapRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/ldapRealm.jsp deleted file mode 100644 index 9c0af067f5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/ldapRealm.jsp +++ /dev/null @@ -1,201 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealm.jsp deleted file mode 100644 index d1b5189cfb..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealm.jsp +++ /dev/null @@ -1,125 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - -   - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmGroups.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmGroups.jsp deleted file mode 100644 index 6f3427ffab..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmGroups.jsp +++ /dev/null @@ -1,101 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmRoles.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmRoles.jsp deleted file mode 100644 index fa25bf0119..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmRoles.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmUsers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmUsers.jsp deleted file mode 100644 index 45097849d5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/memoryRealmUsers.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realms.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realms.jsp deleted file mode 100644 index 20841119b1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realms.jsp +++ /dev/null @@ -1,161 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsConfirm.jsp deleted file mode 100644 index 668ac4fd10..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsConfirm.jsp +++ /dev/null @@ -1,86 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsStopped.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsStopped.jsp deleted file mode 100644 index 15d905447c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/realmsStopped.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - not active - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/roleMemoryRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/roleMemoryRealm.jsp deleted file mode 100644 index e2e83820e5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/roleMemoryRealm.jsp +++ /dev/null @@ -1,112 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/securityCatalinaRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/securityCatalinaRealm.jsp deleted file mode 100644 index b4daa96e75..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/securityCatalinaRealm.jsp +++ /dev/null @@ -1,50 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - -   - - - - - - - - - - -   - -   - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/userMemoryRealm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/userMemoryRealm.jsp deleted file mode 100644 index e302f27aba..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/security/userMemoryRealm.jsp +++ /dev/null @@ -1,213 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    -    -
     
    -    -
    -
    - - - - - - -
    -
    - - - - - - - - - - - - -   - - - - - - - - - - - - - - -
    -    -
     
    -    -
    -
    - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/appContainers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/appContainers.jsp deleted file mode 100644 index 2a7f5d4b58..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/appContainers.jsp +++ /dev/null @@ -1,57 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - -   -   - - - - - - -   - -   - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/cfUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/cfUsedBy.jsp deleted file mode 100644 index 2c7448d5d4..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/cfUsedBy.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/confirmActionXaResource.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/confirmActionXaResource.jsp deleted file mode 100644 index 640dc2e4fd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/confirmActionXaResource.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/container.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/container.jsp deleted file mode 100644 index 457ac64843..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/container.jsp +++ /dev/null @@ -1,53 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerEjbs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerEjbs.jsp deleted file mode 100644 index 9b811c953b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerEjbs.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerStatistic.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerStatistic.jsp deleted file mode 100644 index 40ee40498f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containerStatistic.jsp +++ /dev/null @@ -1,186 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containers.jsp deleted file mode 100644 index 136084654d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/containers.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/databases.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/databases.jsp deleted file mode 100644 index cab707bc7e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/databases.jsp +++ /dev/null @@ -1,48 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasource.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasource.jsp deleted file mode 100644 index ef5eb5215e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasource.jsp +++ /dev/null @@ -1,174 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceStatistics.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceStatistics.jsp deleted file mode 100644 index 0ca43c590d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceStatistics.jsp +++ /dev/null @@ -1,180 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceUsedBy.jsp deleted file mode 100644 index 3faf4ef84a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/datasourceUsedBy.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/depmonitorService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/depmonitorService.jsp deleted file mode 100644 index 430512ae75..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/depmonitorService.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/discovery.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/discovery.jsp deleted file mode 100644 index ff5d68c8e9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/discovery.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ear.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ear.jsp deleted file mode 100644 index a2f5630c36..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ear.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earJars.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earJars.jsp deleted file mode 100644 index 745a05120b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earJars.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earRars.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earRars.jsp deleted file mode 100644 index e7f2c3568f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earRars.jsp +++ /dev/null @@ -1,59 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earWars.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earWars.jsp deleted file mode 100644 index f80ce30d93..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earWars.jsp +++ /dev/null @@ -1,61 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earXmlDeployment.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earXmlDeployment.jsp deleted file mode 100644 index 61dfdf95eb..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/earXmlDeployment.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejb.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejb.jsp deleted file mode 100644 index 8b175bcfb5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejb.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - Type - - - - Name - - - - File - - - - Node - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainerService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainerService.jsp deleted file mode 100644 index ca837f78f3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainerService.jsp +++ /dev/null @@ -1,48 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainersStatistic.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainersStatistic.jsp deleted file mode 100644 index 911c88ef20..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbContainersStatistic.jsp +++ /dev/null @@ -1,208 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj"%> - - -<%@ include file="../common/begin.jsp"%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - -<%@ include file="../common/end.jsp"%> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbDependency.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbDependency.jsp deleted file mode 100644 index 895567c4a8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbDependency.jsp +++ /dev/null @@ -1,260 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <% - java.util.HashMap params = new java.util.HashMap(); - params.put("name", param1); - params.put("id", param2); - pageContext.setAttribute("paramsName", params); - %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbEntity.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbEntity.jsp deleted file mode 100644 index eb7aaa93d9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbEntity.jsp +++ /dev/null @@ -1,175 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbMessage.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbMessage.jsp deleted file mode 100644 index 7d41ff1211..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbMessage.jsp +++ /dev/null @@ -1,143 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbSession.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbSession.jsp deleted file mode 100644 index e32909bb79..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbSession.jsp +++ /dev/null @@ -1,203 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbVirtual.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbVirtual.jsp deleted file mode 100644 index 0b7f17e186..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ejbVirtual.jsp +++ /dev/null @@ -1,76 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - -
    " method="post"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - -
    \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactories.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactories.jsp deleted file mode 100644 index f87160a35d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactories.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactory.jsp deleted file mode 100644 index e277f19ee8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsConnFactory.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsDestinations.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsDestinations.jsp deleted file mode 100644 index 2c816afdd9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsDestinations.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueue.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueue.jsp deleted file mode 100644 index 291a3a39bd..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueue.jsp +++ /dev/null @@ -1,41 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueues.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueues.jsp deleted file mode 100644 index 3e9b61a347..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsQueues.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsService.jsp deleted file mode 100644 index 3a66497585..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsService.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopic.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopic.jsp deleted file mode 100644 index 36dbe90139..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopic.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopics.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopics.jsp deleted file mode 100644 index 03bd6510c6..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jmsTopics.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmService.jsp deleted file mode 100644 index 623ff46e8d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmService.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmServiceStopped.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmServiceStopped.jsp deleted file mode 100644 index 1b45441d8d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/jtmServiceStopped.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - not active. - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mailService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mailService.jsp deleted file mode 100644 index be3f783850..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mailService.jsp +++ /dev/null @@ -1,41 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactories.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactories.jsp deleted file mode 100644 index c3acfb61db..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactories.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactory.jsp deleted file mode 100644 index 0d2dd1eb2f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartFactory.jsp +++ /dev/null @@ -1,134 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartMailFactoryUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartMailFactoryUsedBy.jsp deleted file mode 100644 index b12db714b2..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/mimepartMailFactoryUsedBy.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/queueUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/queueUsedBy.jsp deleted file mode 100644 index 301a156960..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/queueUsedBy.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10.jsp deleted file mode 100644 index 152715e209..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10.jsp +++ /dev/null @@ -1,214 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10Stats.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10Stats.jsp deleted file mode 100644 index 97e2eac713..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar10Stats.jsp +++ /dev/null @@ -1,181 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15.jsp deleted file mode 100644 index d73b16ec49..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15.jsp +++ /dev/null @@ -1,120 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AO.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AO.jsp deleted file mode 100644 index eba6f63697..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AO.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AOs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AOs.jsp deleted file mode 100644 index e92c6e7239..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AOs.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AS.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AS.jsp deleted file mode 100644 index cb86a2e03d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15AS.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15ASs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15ASs.jsp deleted file mode 100644 index dfba190af7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15ASs.jsp +++ /dev/null @@ -1,53 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CF.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CF.jsp deleted file mode 100644 index aaf4ab0283..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CF.jsp +++ /dev/null @@ -1,189 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFStats.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFStats.jsp deleted file mode 100644 index df4d3bf67b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFStats.jsp +++ /dev/null @@ -1,195 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFs.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFs.jsp deleted file mode 100644 index 4644e80e58..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rar15CFs.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarPoolStatistics.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarPoolStatistics.jsp deleted file mode 100644 index 812b88c536..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarPoolStatistics.jsp +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarStatistics.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarStatistics.jsp deleted file mode 100644 index a03a4b3748..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarStatistics.jsp +++ /dev/null @@ -1,180 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy10.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy10.jsp deleted file mode 100644 index a527d19da9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy10.jsp +++ /dev/null @@ -1,64 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy15.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy15.jsp deleted file mode 100644 index f2a7e4213f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rarUsedBy15.jsp +++ /dev/null @@ -1,77 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rars.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rars.jsp deleted file mode 100644 index ea431a3e7a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/rars.jsp +++ /dev/null @@ -1,59 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/security.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/security.jsp deleted file mode 100644 index f57f3ad524..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/security.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - -   - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/securityStopped.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/securityStopped.jsp deleted file mode 100644 index 39bf12980e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/securityStopped.jsp +++ /dev/null @@ -1,28 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - not active. - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/services.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/services.jsp deleted file mode 100644 index 083d271f10..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/services.jsp +++ /dev/null @@ -1,233 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - Mandatory services - - - - -   -   -   - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - Container services - - - - -   -   -   - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Webservices services - - - - -   -   -   - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Other services - - - - -   -   -   - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactories.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactories.jsp deleted file mode 100644 index d9d259437f..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactories.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactory.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactory.jsp deleted file mode 100644 index c412bdb762..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionFactory.jsp +++ /dev/null @@ -1,108 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionMailFactoryUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionMailFactoryUsedBy.jsp deleted file mode 100644 index 44fe48b7e0..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/sessionMailFactoryUsedBy.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/smartclientService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/smartclientService.jsp deleted file mode 100644 index 642e44518e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/smartclientService.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/topicUsedBy.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/topicUsedBy.jsp deleted file mode 100644 index 41023dd64e..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/topicUsedBy.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionMonitor.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionMonitor.jsp deleted file mode 100644 index 23443e9894..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionMonitor.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionRecovery.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionRecovery.jsp deleted file mode 100644 index 989338036b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionRecovery.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionStatistic.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionStatistic.jsp deleted file mode 100644 index 9de3fc3d2d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/transactionStatistic.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/versioningService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/versioningService.jsp deleted file mode 100644 index 15b482d183..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/versioningService.jsp +++ /dev/null @@ -1,55 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/war.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/war.jsp deleted file mode 100644 index 53a05fdc84..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/war.jsp +++ /dev/null @@ -1,94 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warJonasXml.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warJonasXml.jsp deleted file mode 100644 index 19b56c0b81..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warJonasXml.jsp +++ /dev/null @@ -1,48 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warServlets.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warServlets.jsp deleted file mode 100644 index d272fba5d8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warServlets.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warWebXml.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warWebXml.jsp deleted file mode 100644 index 5d8617fef1..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/warWebXml.jsp +++ /dev/null @@ -1,50 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webApp.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webApp.jsp deleted file mode 100644 index 5738894a54..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webApp.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppCatalina.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppCatalina.jsp deleted file mode 100644 index 015aa4f1e2..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppCatalina.jsp +++ /dev/null @@ -1,196 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppJetty.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppJetty.jsp deleted file mode 100644 index b9ed6bbd35..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppJetty.jsp +++ /dev/null @@ -1,116 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppVirtualCatalina.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppVirtualCatalina.jsp deleted file mode 100644 index f5827c74df..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webAppVirtualCatalina.jsp +++ /dev/null @@ -1,98 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> -<%@ page import="java.util.Map"%> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - <% - request.setAttribute("tempON", ((String) - ( - ((Map)(request.getAttribute("objectNames"))).get( - ((Map.Entry)context).getKey() - ) - ))); - %> - - - - - - - <%=((Integer)(((Map)(request.getAttribute("nbSessions"))).get(((Map.Entry)context).getKey())))%> - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webContainers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webContainers.jsp deleted file mode 100644 index 925610a964..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/webContainers.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workcleanerService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workcleanerService.jsp deleted file mode 100644 index d060121868..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workcleanerService.jsp +++ /dev/null @@ -1,82 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workmanagerService.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workmanagerService.jsp deleted file mode 100644 index 89bc0a978c..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/workmanagerService.jsp +++ /dev/null @@ -1,59 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - -    - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/handlersDetails.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/handlersDetails.jsp deleted file mode 100644 index 4c6c777c06..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/handlersDetails.jsp +++ /dev/null @@ -1,99 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ page import="java.util.HashMap" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
    • - -
    • -
      -
    -
    -
    - - - - -
      - -
    • - -
    • -
      -
    -
    -
    - - - - -
      - -
    • - = -
    • -
      -
    -
    -
    -
    - - -
    -
    - -<%@ include file="../../common/end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/portComponentsDetails.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/portComponentsDetails.jsp deleted file mode 100644 index 37de3a5ff8..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/portComponentsDetails.jsp +++ /dev/null @@ -1,103 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%=portUrl %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewHandlers.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewHandlers.jsp deleted file mode 100644 index 5436dfb7d5..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewHandlers.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="java.util.HashMap" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <% - HashMap handlerDetailsMap = new HashMap(); - handlerDetailsMap.put("wsdselect", wsdId); - handlerDetailsMap.put("pcselect", pcId); - handlerDetailsMap.put("handlerselect", handlerId); - request.setAttribute("handlerDetailsMap", handlerDetailsMap); - %> - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewPortComponents.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewPortComponents.jsp deleted file mode 100644 index e6f3058f1b..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/viewPortComponents.jsp +++ /dev/null @@ -1,62 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="java.util.HashMap" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <% - HashMap paramMap = new HashMap(); - paramMap.put("wsdselect", wsdId); - paramMap.put("pcselect", pcId); - request.setAttribute("paramMap", paramMap); - %> - - - - - - - - <%=portUrl %> - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDescriptions.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDescriptions.jsp deleted file mode 100644 index 729154e2c3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDescriptions.jsp +++ /dev/null @@ -1,58 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%=wsdlUrl %> - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDetails.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDetails.jsp deleted file mode 100644 index 6d2e26c1f0..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/ws/webserviceDetails.jsp +++ /dev/null @@ -1,78 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%=wsdlUrl %> - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/xaresourceRecovery.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/xaresourceRecovery.jsp deleted file mode 100644 index ed28b4f839..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/service/xaresourceRecovery.jsp +++ /dev/null @@ -1,79 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/iepngfix.htc b/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/iepngfix.htc deleted file mode 100644 index 4e7199f07a..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/iepngfix.htc +++ /dev/null @@ -1,85 +0,0 @@ - - - - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/jonasAdmin.css b/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/jonasAdmin.css deleted file mode 100644 index e37c1950f3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/style/jonasAdmin.css +++ /dev/null @@ -1,659 +0,0 @@ -body { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - background-color: #a9a9a9; - SCROLLBAR-FACE-COLOR: #FFFFFF; - SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF; - SCROLLBAR-SHADOW-COLOR: #FFFFFF; - SCROLLBAR-ARROW-COLOR: #FFFFFF; - SCROLLBAR-TRACK-COLOR: #FFFFFF; - scrollbar-3d-light-color: #FFFFFF; - scrollbar-dark-shadow-color: #FFFFFF -} - -img, div { - behavior: url("./style/iepngfix.htc"); -} - -td { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; -} - -a { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; -} - -select { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; -} - -select.deploy { - width: 250px; -} - -select.dispatch { - width: 150px; -} - -input { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color:#000000; -} -.longButton { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - background-color: #404e55; - color: #FFFFFF; - font-weight: bold; - text-align: center; - margin: em; - text-decoration: none; -} - - -.button { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - color: #FFFFFF; - background-color: #404e55; - font-weight: bold; - text-align: center; - text-decoration: none; -} - -.buttonDeploy { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - background-color: #404e55; - color: #FFFFFF; - font-weight: bold; - width: 50px; - text-align: center; - text-decoration: none; -} -.buttonSelect { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - background-color: #404e55; - color: #FFFFFF; - font-weight: bold; - text-align: center; - text-decoration: none; -} - -td.top { - font-size: 12px; -} - -a.top { - font-size: 12px; - font-weight: bold; - color: #404e55; -} - -a.top:active { - color: #404e55; - text-decoration: none; -} - -a.top:link { - color: #404e55; - text-decoration: none; -} - -a.top:visited { - color: #404e55; - text-decoration: none; -} - -a.top:hover { - color: #000000; - text-decoration: none; -} - -select.top { - font-size: 12px; -} - -td.topTitle { - font-size: 24px; - color: #000000; -} - -td.maintitle { - font-size: 36px; - color: #FFFFFF; -} - -td.tomthumb { - font-size: 14px; -} - -td.topErrors { - font-size: 10px; - color: #000000; - background-color: #E0ECFF; -} - -tr.errors { - color: #000000; - background-color: #E0ECFF; -} - -td.errors { - font-size: 12px; -} - -td.errorTitle { - font-size: 24px; - font-weight: bold; -} - -td.errorLink { - font-size: 16px; - font-weight: bold; -} - -a.error { - font-size: 16px; - font-weight: bold; - color: #404e55; -} - -a.error:active { - color: #404e55; - text-decoration: none; -} - -a.error:link { - color: #404e55; - text-decoration: none; -} - -a.error:visited { - color: #404e55; - text-decoration: none; -} - -a.error:hover { - color: #666666; - text-decoration: none; -} - -td.contentTitle { - font-size: 16px; - color: #404e55; - font-weight: bold; -} - -td.contentTitleImage { - -} - -td.contentTitleTomThumb { - color: #000000; -} - -.contentTitleTomThumbNotLink { - color: #404e55; -} - -a.contentTitleTomThumb:active { - color: #404e55; - text-decoration: none - font-weight: bold; -} - -a.contentTitleTomThumb:link { - color: #404e55; - font-weight: bold; - text-decoration: none -} - -a.contentTitleTomThumb:visited { - color: #404e55; - text-decoration: none -} - -a.contentTitleTomThumb:hover { - color: #000000; - text-decoration: none -} - -tr.gridRowEven { - background-color: #87a4b3; -} - -tr.gridRowOdd { - background-color: #FFFFFF; -} - -a.tab { - text-decoration: none; - font-weight: bold; - color:#D4D0C8; - - -} -a.tab:visited { - color:#D4D0C8; -} - - -a.tab:hover { - color: #FFFFFF; - font-weight: bold; - -} - -td.tab { - background-color:#738188; - color:#FFFFFF; - border: thick; - border-bottom-color: #404e55; - border-bottom-width: 2px; -} - -td.tabSelect { - color: #FFFFFF; - background-color:#404e55; - border: thick; - font-weight: bold; - border-bottom-color: #404e55; - border-bottom-width: 2px; - border-bottom-width: 1px; - -} - -td.tabSeparatorVertical { - width: 5px; - background-color: transparent; - border-bottom-color: #404e55; - border-bottom-width: 2px; -} - -td.tabSeparatorHorizontal { - width: 0px; -} - - - -tr.panel { - background-color:#87a4b3; -} - -td.panel { - background-color:#404e55; - border-bottom-color: #FFFFFF; - border-bottom-width: 3px; -} - -a.panel { - font-size: 12px; - font-weight: bold; - color: #404e55; -} - -a.panel:active { - color: #404e55; - text-decoration: underline; -} - -a.panel:link { - color: #404e55; - text-decoration: underline; -} - -a.panel:visited { - color: #404e55; - text-decoration: underline; -} - -a.panel:hover { - color: #000000; - text-decoration: underline; -} - -tr.panelTitle { - background-color: #404e55; -} - -td.panelTitle { - font-size: 14px; - color: #FFFFFF; - font-weight: bold; -} - -tr.panelTitle2 { - background-color: #D4D0C8; -} - -td.panelTitle2 { - font-size: 14px; - color: #404e55; - font-weight: bold; -} - -tr.panelSeparator { - background-color: #D4D0C8; -} - -td.panelSeparator { - background-color: #87a4b3; - font-size: 1px; -} - -a.action { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: bold; - color: #660066; -} - -a.action:active { - color: #660066; - text-decoration: underline; -} - -a.action:link { - color: #660066; - text-decoration: none; -} - -a.action:visited { - color: #660066; - text-decoration: none; -} - -a.action:hover { - color: olive; - text-decoration: none; -} - -td.btn { - background-color: #404e55; - text-decoration: none; -} - -td.btnBorderLight { - background-color: #999999; -} - -td.btnBorderShadow { - background-color: #000000; -} - -td.btnDisabled { - font-size: 12px; - font-weight: bold; - color: #FFFFFF; - background-color: #404e55; - text-decoration: none; -} - -a.btn { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - color: #FFFFFF; - background-color: #404e55; - font-weight: bold; - width: 100px; - text-align: center; - text-decoration: none; - } - -a.btn:active { - color: #FFFFFF; - background-color: #404e55; -} - -a.btn:link { - color: #FFFFFF; -} - -a.btn:visited { - color: #E9F3F2; - text-decoration: none; -} - -a.btn:hover { - color: #FFFFFF; - text-decoration: underline; -} - -a.panel2 { - font-size: 12px; - font-weight: bold; - color: #000000; -} - -a.panel2:active { - color: #000000; - text-decoration: underline; -} - -a.panel2:link { - color: #000000; - text-decoration: underline; -} - -a.panel2:visited { - color: #000000; - text-decoration: underline; -} - -a.panel2:hover { - color: #404e55; - text-decoration: underline; -} - -.tree-control { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 80%; - line-height: 1.0; -} - -.tree-control-selected { - color:#404e55; - font-weight: bold; - font-size:13px; - text-decoration: none; -} - -.tree-control-unselected { - color: black; - font-style: normal; - font-weight: normal; - text-decoration: none; -} - -.xmlElement { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color: #404e55; -} - -.xmlText { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color: #000000; -} - -.xmlHeader { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 10px; - font-style: normal; - color: #000000; -} - -.xmlComment { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; - color: #660066; -} - -div.element - { - margin-left: 20px; - margin-top: 3px; - margin-bottom: 3px; - background-color: #FFFFCC; -} - -div.element2 { - margin-left: 20px; - margin-top: 3px; - margin-bottom: 3px; - padding: 2px; -} - -div.element1 { - margin-left: 20px; - margin-top: 3px; - margin-bottom: 3px; - padding: 2px; - border: 1px solid #dcdcdc; -} - -div.element2-new { - margin-left: 20px; - margin-top: 3px; - margin-bottom: 3px; - padding: 2px; - background-color: #FFFFCC; -} - -div.element1-new { - margin-left: 20px; - margin-top: 3px; - margin-bottom: 3px; - padding: 2px; - border: 1px solid #dcdcdc; - background-color: #FFFFCC; -} - -div.buttons { - float: right; - padding: 3px; - border-left: 1px solid #dcdcdc; - border-bottom: 1px solid #dcdcdc; -} - -.elementSelect { - font-size: 12px; - border: 1px solid; - border-color: #999 #ccc #ccc #999; -} -.actionButton { - font-size: 12px; - padding: 3px; - background-color: #E4E4E4; - border: 1px solid; - border-color: #999 #ccc #ccc #999; - text-align: center; -} -.removeButton { - font-size: 9px; - padding: 1px; - background-color: #EAEAEA; - border: 1px; -} - -.textElement { - font-size: 12px; - padding: 3px; - background-color: #D4D0C8; - border: 1px solid; - border-color: #999 #ccc #ccc #999; -} - -.textElement:focus { - background-color: #FFFFCC; -} - -.attribute { - font-size: 12px; - padding: 3px; - background-color: #D4D0C8; - border: 1px solid; - border-color: #999 #ccc #ccc #999; -} - -.elementName { - cursor: pointer; - cursor: hand; -} - -td.loginTr { - align: center; - color: #FFFFFF; -} -.graphButton { - background-image:url(../images/button/GraphButton.png); - height: 10px; - width: 47px; - float: right; - padding: 3px; - border-left: 1px solid #dcdcdc; - border-bottom: 1px solid #dcdcdc; - - - } - -selectSoft { - font-family: arial, verdana, geneva, helvetica, sans-serif; - font-size: 12px; - font-style: normal; -} - -selectSoft.deploy { - width: 250px; -} - -selectSoft.dispatch { - width: 150px; -} -.mainLoginTable { - background-image:url(../images/logo/jonasAdmin.png); - background-repeat:no-repeat; -} - -.authentifLoginTable{ - filter:alpha(opacity=70); - -moz-opacity:0.70; - opacity: 0.70; - background-repeat:no-repeat; -} - -.htmlText{ - width : 100px; - } - .htmlTextLbPolicy{ - width : 150px; - } - - .htmlTextLbPolicyChanged{ - width : 150px; - background-color: #FFCC99; - } -.boldText{ - font-weight: bold; -} -.htmlTextChanged{ - width : 100px; - background-color: #FFCC99; - } diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/top.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/top.jsp deleted file mode 100644 index 6ee079d768..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/top.jsp +++ /dev/null @@ -1,78 +0,0 @@ - - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.action.Action"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - - -<%@ include file="begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - JOnAS Administration
    - - - - - - -
    - - - - - - - - - -  
    -
    - - - - -<%@ include file="end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/tree.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/tree.jsp deleted file mode 100644 index 80cc3b8cd9..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/tree.jsp +++ /dev/null @@ -1,47 +0,0 @@ - - -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - - - -<%@ include file="begin.jsp" %> - - - - - - - - - - - - - - - - - -<%@ include file="end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/welcomeContent.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/welcomeContent.jsp deleted file mode 100644 index 6ed9e9717d..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/welcomeContent.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> - - -<%@ include file="begin.jsp" %> - - - - - - - - - -

    JOnAS Administration

    - -<%@ include file="end.jsp" %> -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfig.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfig.jsp deleted file mode 100644 index d6563d1a03..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfig.jsp +++ /dev/null @@ -1,498 +0,0 @@ - <%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jonas-ra.xml
    -
    - - ra.xml
    - -
    -
    - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -<%@ include file="../common/end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAdvanced.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAdvanced.jsp deleted file mode 100644 index 4d87b48902..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAdvanced.jsp +++ /dev/null @@ -1,109 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jonas-ra.xml
    -
    - - ra.xml
    -
    -
    - - - -
    -
    - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -<%@ include file="../common/end.jsp" %> - -
    diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAjax.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAjax.jsp deleted file mode 100644 index 08fd9baeee..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigAjax.jsp +++ /dev/null @@ -1,22 +0,0 @@ - -<%@ page language="java" contentType="text/xml;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigConfirm.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigConfirm.jsp deleted file mode 100644 index dc3e9fe6a7..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigConfirm.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<%@ include file="../common/end.jsp" %> - - diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigSelect.jsp b/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigSelect.jsp deleted file mode 100644 index 224630f2e3..0000000000 --- a/jonas/modules/ee-components/jonas-admin/src/main/webapp/xml/archiveConfigSelect.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%@ page language="java" contentType="text/html;charset=utf-8" %> -<%@ page import="org.apache.struts.Globals"%> -<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> -<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> -<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/sj.tld" prefix="sj" %> - - -<%@ include file="../common/begin.jsp" %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - META-INF/ra.xml
    - META-INF/jonas-ra.xml
    -
    -
    - - - -
    - - - - - -
    - - - - - - - - - -
    -
    -
    - -<%@ include file="../common/end.jsp" %> - -
    - diff --git a/jonas/modules/ee-components/jonas-ctxroot/pom.xml b/jonas/modules/ee-components/jonas-ctxroot/pom.xml deleted file mode 100644 index f88904046a..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - org.ow2.jonas - jonas-ee-components - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - jonas-ctxroot - war - JOnAS :: EE Components :: Web Context Root - - - - org.ow2.jonas - jonas-version - ${project.version} - provided - - - org.ow2.jonas - jonas-management-javaee - ${project.version} - provided - - - org.ow2.jonas - jonas-commons - ${project.version} - provided - - - - - ctxroot - - - - org.codehaus.mojo.jspc - jspc-maven-plugin - - - jsp-compiler - - compile - - - - - - - org.codehaus.mojo.jspc - jspc-compiler-tomcat6 - ${jspc.version} - - - - - org.apache.maven.plugins - maven-war-plugin - - ${pom.basedir}/target/jspweb.xml - - - - - \ No newline at end of file diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/jonas-web.xml b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 63dcb6f420..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - / - - - true - diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/web.xml b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index fe61337db1..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/index.jsp b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/index.jsp deleted file mode 100644 index 04d99cbb04..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/index.jsp +++ /dev/null @@ -1,213 +0,0 @@ -<%@ page - language="java" - contentType="text/html;charset=utf-8" - import = "java.util.List" - import = "java.util.Set" - import = "javax.management.MBeanServerFactory" - import = "javax.management.MBeanServer" - import = "javax.management.ObjectName" - import = "javax.management.QueryExp" - import = "javax.management.Query" - import = "org.ow2.jonas.Version" - import = "org.ow2.jonas.lib.bootstrap.JProp" - import = "org.ow2.jonas.lib.util.JonasObjectName" - import = "org.ow2.jonas.lib.management.javaee.J2eeObjectName" -%> - - - - - - - - <% - - // Connect to the local MBeanServer - MBeanServer mbeanServer = null; - List mbeanServers = MBeanServerFactory.findMBeanServer(null); - if (mbeanServers.size() > 0) { - mbeanServer = (MBeanServer) mbeanServers.get(0); - } - - String webContainer = ""; - boolean isJetty = false; - boolean isTomcat = false; - boolean useEarSample = false; - boolean useJavaEEEarSample = false; - boolean isDocumentationAvailable = false; - boolean isJavaDocAvailable = false; - - if (mbeanServer != null) { - - // Retrieve domain - String domain = JProp.getInstance().getValue(JProp.DOMAIN_NAME); - - // Web Container ? - ObjectName webContainerON = JonasObjectName.webContainerService(domain); - - boolean hasWebContainer = mbeanServer.isRegistered(webContainerON); - - if (hasWebContainer) { - // Determine if Jetty or Tomcat - String name = (String) mbeanServer.getAttribute(webContainerON, "ServerName"); - if ("jetty".equalsIgnoreCase(name)) { - isJetty = true; - } else if ("apache tomcat".equalsIgnoreCase(name)) { - isTomcat = true; - } - - // Get version - String version = (String) mbeanServer.getAttribute(webContainerON, "ServerVersion"); - - // Compose web container displayed name - webContainer = name + " v" + version; - - // Web-apps deployed - // ------------------------------------ - // jonas-doc-en - QueryExp query = getContextRootQuery("jonas-doc-en"); - ObjectName on = JonasObjectName.allWars(domain); - Set result = mbeanServer.queryMBeans(on, query); - - if (!result.isEmpty()) { - // Got a matching webapp - isDocumentationAvailable = true; - } - - // jonas-javadoc - query = getContextRootQuery("jonas-javadoc"); - result = mbeanServer.queryMBeans(on, query); - - if (!result.isEmpty()) { - // Got a matching webapp - isJavaDocAvailable = true; - } - - // Same with Ear - // --------------------- - // j2ee-1.4 sample - on = J2eeObjectName.J2EEApplications(domain); - query = getJ2EEApplicationQuery("j2ee-1.4"); - result = mbeanServer.queryMBeans(on, query); - - if (!result.isEmpty()) { - // Got a matching app - useEarSample = true; - } - - // Java EE 5.0 Sample - query = getJ2EEApplicationQuery("javaee5-earsample"); - result = mbeanServer.queryMBeans(on, query); - - if (!result.isEmpty()) { - // Got a matching app - useJavaEEEarSample = true; - } - - - } - - } else { - // We can't do anything, just print a nice warning and exit - } - - // Now display data ... - String title = "JOnAS v" + Version.getNumber(); - if (webContainer != null) { - title += " / " + webContainer; - } - title += " Package"; - out.print(title); - %> - <%! - /** - * Create a JMX Query that match the ContextRoot attribute. - */ - private static QueryExp getContextRootQuery(final String contextName) { - return Query.eq(Query.attr("ContextRoot"), Query.value(contextName)); - } - - /** - * Create a JMX Query that match the name attribute. - */ - private static QueryExp getJ2EEApplicationQuery(final String appName) { - return Query.eq(Query.attr("name"), Query.value(appName)); - } - %> - - - - -
    logo
    -
    - <% - if (isTomcat) { - out.print("\"Apache"); - } - if (isJetty) { - out.print("\"Mortbay"); - } - %> - JOnAS WebSite -
    - -
    - <% - out.print(title); - %> -
    - - - - - - diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/jetty.gif b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/jetty.gif deleted file mode 100644 index 01f44a87f6801b200f142513d0d02b12cea0fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 A+yDRo diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/logoOW2.png b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/logoOW2.png deleted file mode 100644 index 71a185b68ed53e228e23c82c4ea0aa47b7556959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13572 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 diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow2_jonas.css b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow2_jonas.css deleted file mode 100644 index c1105511cd..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow2_jonas.css +++ /dev/null @@ -1,183 +0,0 @@ -/* - Context Root css. based on css from http://jonas.objectweb.org - XHTML by Florent BENOIT -*/ - - -body -{ - top:10px; - margin-top:10px; - background-color: #FFF; - color: #000000; - } - - -img { - margin: 5px; - border:0; -} - - - -div.logos { - top: 5px; - width: 99%; - text-align: right; -} - - -div.links { - font-size: 14px; - margin-top : 40px; - margin-left : 100px; -} - - -div.titlepage { - margin-left: 200px; - font-family: Arial, Helvetica, sans-serif; - font-size: 1.5em; - line-height: 1.5em; - border-bottom: 1px solid #0099cc; - color : #ff6600; - font-weight : bold; -} - - -div.footer { - margin-top : 50px; - color: #FFFFFF; - font-size: 8pt; - text-align: center; -} - - -/*HTML elements */ - - - -ul, ol, dl -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; -} - -li -{ - color: black; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - font-weight: normal; - margin: 10px 0px 5px 0px; - -} -a -{ - color: #3F3975; - background-color: transparent; - text-decoration: underline; -} - -a:visited -{ - color: #9898CB; - background-color: transparent; - text-decoration: underline; -} - -a:hover -{ - color: #E06611; - background-color: transparent; - text-decoration: underline; -} - - -a:active -{ - color: #FFFFFF; - background-color: #E06611; - text-decoration: underline; -} - - - - -.h1, .h2, .h3, .h4, .h5 { - color: #000; - background-color: inherit; - padding: 0; -} - -.h1 { - margin-top: 5px; - font-size: 2em; - line-height: 1.5em; - margin: 30px 0 30px 0; - border-bottom: 1px solid #0099cc; - color : #ff6600; - font-weight : bold; -} - -.h2 { - margin: 20px 0 15px 0; - border-bottom: 1px solid #0099cc; - font-weight:normal; - font-style: normal; - font-size: 1.6em; - line-height: 1.4em; - color : #0099cc -} - -.h3 { - font-weight: normal; - font-size: 1.4em; - line-height: 1.4em; - margin: 20px 0 15px 0; -} - -.h4 { - font-weight:normal; - color: #404040; - margin: 20px 0 0 0; - left: 0px; - font-size: 1.4em; - line-height: 1.4em; -} -.h5 { - font-weight:normal; - color: #404040; - font-style: normal; - margin: 0px; - left: 0px; - font-size: 1.2em; - line-height: 1.2em; -} - -td -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - font-weight: normal; -} - -p -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -p.error -{ - color: red; -} - diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow_jonas_logo.gif b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/ow_jonas_logo.gif deleted file mode 100644 index 1b56943a721f82a8cb81776030567772265433f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/style.css b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/style.css deleted file mode 100644 index 4f852c2a87..0000000000 --- a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/style.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - background : white; - color : black; -} -h1, h2, h3 {font-family : sans-serif; } -h1 {font-size : 175%; color : DarkCyan; text-align : center;} -h2 {font-size : 150%; color : DarkCyan; - border-bottom : solid; - border-bottom-width : 1; -} -h3 {font-size : 125%; } -strong { font-weight : bold; } -hr { size : 1; width : 100%; } diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/tomcat.gif b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/tomcat.gif deleted file mode 100644 index 61756736b82350f64b5ea1b2bfc31ac57e30a3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1934 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 Re0F?dK$vW)v>aKN{y(`9mQw%# diff --git a/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/vcss.png b/jonas/modules/ee-components/jonas-ctxroot/src/main/webapp/vcss.png deleted file mode 100644 index 9b2f596e016533327216d98a0a927738fe17384f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@@!3-or#C~03U|`e?@Ck7Ra+Q_kdEDnlhI%!W zMb4c&_g;@{HxGAjZ*NM+!7cOCYk@#Y{Pps{+}zwx_wR4FlUu4N92*~!s#T`6W<+- zt4%e$w+9&~i2E*D*W)T9Bhx(p?A&_0|7X(X^Ya7IW>?MPDaUzu zczTO0wr<^e|Jf%QG42CClNSR6E4d`dFZlmw6q^`8Jh0FrC=HPY3SEXN1j@jH0f@DT z;lF?am<8g&3^agg*jyz(n}LC8qNj^vNX4zUQ)`1SI|v-Rel?4G(T!h0t6h3r9Tx_% z{GPN=z+e1GN8qGw>eHn5|8FmNua|o1m5;W_zoO+QbMz<2znfQG#(ynM{=I#{0V!X> zqF)tO-~TK+p#QH~U+~Uxw*7OC?@4lzU=MuwAfY=*I-PyJf}6|jF4ry6#nK@bObtKJ z{jpr)a7XQvK=_v<_kY&OUtDf7N2Y`!=sAP5DASo0{WX7G;uf&=`Gs|Enroa;cP#bwBZgT0Vk8}Ij!pi@+JzOex~wA_|LQI>iZ4KOPMZj@RJmq z{=ckJgo`sg=^ee+rLf!@|1r#|1Qou-tz zozY_28jcOAqH_ZHT>9G+6r2tD{%tx^c*pF4-nNSOH_A#)UvDaE^>6pwzeB^b1utmshBn2mW1YZ#q&(r+Ne9lLHSPV z;lJMu*6nF1eX&Vu#au@n)2h{;1^hB;>x|=8`0r4N5Dq`3W>NpNuIHfS-r}72x2dtZ z|1vypS3P_!s?6%3q3f=mrP_V^@twUAXY`EwoTZxX&st-k^Kye`&fdVV(2iA`qSwCa zO3SD?y)^LM2F^-1=1_^hVN1d%c)e7=87<81^0{cK;`g>k^UAjGxu$SW%#%-OqR3cMOS7CD$Nw90jSF7TjZ+3b%7?`))PKP%lew!LZ} z9@4ntXMQ2~DY0cQL^+Gz9jsW~FI2w%Uw?1i^C{7@K5}j{esbPgg&e IbxsLQ074N#oB#j- diff --git a/jonas/modules/ee-components/mejb/pom.xml b/jonas/modules/ee-components/mejb/pom.xml deleted file mode 100644 index 00a9d89c32..0000000000 --- a/jonas/modules/ee-components/mejb/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - org.ow2.jonas - jonas-ee-components - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - mejb - jar - JOnAS :: EE Components :: MEJB - - - - org.ow2.bundles - ow2-util-log - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - - - org.ow2.spec.ee - ow2-jsr77-1.1-spec - - - - - mejb - - - maven-ejb-plugin - - 3 - - - - - - diff --git a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ListenerRegistrationImpl.java b/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ListenerRegistrationImpl.java deleted file mode 100644 index 88fcdaa609..0000000000 --- a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ListenerRegistrationImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.ee.mejb; - -import java.io.IOException; -import java.rmi.RemoteException; - -import javax.management.InstanceNotFoundException; -import javax.management.ListenerNotFoundException; -import javax.management.MBeanServerConnection; -import javax.management.NotificationFilter; -import javax.management.NotificationListener; -import javax.management.ObjectName; -import javax.management.j2ee.ListenerRegistration; - -/** - * ListenerRegistration implementation. - */ -public class ListenerRegistrationImpl implements ListenerRegistration { - - /** - * Wrapped MBeanServer instance. - */ - transient private MBeanServerConnection connection = null; - - /** - * A ListenerRegistration object allows to ad/remove listeners to notifications emitted by - * MBeans which are registered in a remote MBeanServer. - * @param connection the remote MBean server - */ - public ListenerRegistrationImpl(final MBeanServerConnection connection) { - this.connection = connection; - } - - /** - * Add notification listener. - * @param name identifies the emitter MBean - * @param listener the listener to add - * @param filter the associated filter - * @param o the associated handback object - * @exception InstanceNotFoundException emitter MBean not registered in the MBeanServer - * @exception RemoteException operation failed - */ - public void addNotificationListener(final ObjectName name, - final NotificationListener listener, - final NotificationFilter filter, - final Object o) throws InstanceNotFoundException, - RemoteException { - try { - connection.addNotificationListener(name, listener, filter, o); - } catch (IOException e) { - throw new RemoteException(e.toString()); - } - } - /** - * Remove notification listener - * @param name identifies the emitter MBean - * @param listener the listener to remove - * @exception InstanceNotFoundException emitter MBean not registered in the MBeanServer - * @exception ListenerNotFoundException arg1 not registered as listener - * @exception RemoteException operation failed - */ - public void removeNotificationListener(final ObjectName name, - final NotificationListener listener) throws InstanceNotFoundException, - ListenerNotFoundException, - RemoteException { - try { - connection.removeNotificationListener(name, listener); - } catch (IOException e) { - throw new RemoteException(e.toString()); - } - } -} diff --git a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ManagementBean.java b/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ManagementBean.java deleted file mode 100644 index d09a72add3..0000000000 --- a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/ManagementBean.java +++ /dev/null @@ -1,298 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.ee.mejb; - -import java.util.List; -import java.util.Set; - -import javax.ejb.Stateless; -import javax.ejb.RemoteHome; -import javax.management.Attribute; -import javax.management.AttributeList; -import javax.management.AttributeNotFoundException; -import javax.management.InstanceNotFoundException; -import javax.management.IntrospectionException; -import javax.management.InvalidAttributeValueException; -import javax.management.MBeanException; -import javax.management.MBeanInfo; -import javax.management.MBeanServerFactory; -import javax.management.ObjectName; -import javax.management.QueryExp; -import javax.management.ReflectionException; -import javax.management.MBeanServer; -import javax.management.j2ee.ListenerRegistration; -import javax.management.j2ee.ManagementHome; -import javax.annotation.PostConstruct; -import javax.annotation.security.RolesAllowed; - -import org.ow2.util.log.LogFactory; -import org.ow2.util.log.Log; - -/** - * This is the Management EJB implementation for JOnAS. - * A MEJB instance is created and deployed at JOnAS start time. - * It is registered in the ejb/mgmt naming subcontext. - * - * The current implementation allows access to managed resources registered in - * the current (local) MBean server via the standard management methods defined in the - * javax.management.j2ee.Management interface. - * - * @author Adriana Danes - * @author Vivek Lakshmanan - * @author Matt Wringe - */ -@Stateless(name="MEJB", - mappedName = "ejb/mgmt/MEJB") -@RemoteHome(ManagementHome.class) -@RolesAllowed({"mejb-admin", "mejb-user"}) -public class ManagementBean { - - /** - * Logger. - */ - private static final Log logger = LogFactory.getLog(ManagementBean.class); - - /** - * Connection to the current JOnAS server's MBean server. - */ - private MBeanServer mbeanServer = null; - - /** - * Get the MBeanServer local reference. - */ - @PostConstruct - public void init() { - // TODO : find a 'very better' way to retrieve the MBeanServer used by JOnAS - // Look if there is already a MBeanServer for JOnAS. - List mbeanServers = MBeanServerFactory.findMBeanServer(null); - if (mbeanServers.size() > 0) { - mbeanServer = (MBeanServer) mbeanServers.get(0); - } else { - // Should not be the case, but anyway ... - logger.debug("Cannot find the default MBeanServer for the platform, create a new one."); - mbeanServer = MBeanServerFactory.createMBeanServer(); - } - } - - /** - * Gets the value of a specific attribute of a named managed object. - * The managed object is identified by its object name. - * @param name The object name of the managed object from which the - * attribute is to be retrieved. - * @param attribute A String specifying the name of the attribute - * to be retrieved. - * @return The value of the retrieved attribute. - * @throws MBeanException Wraps an exception thrown by the managed - * object's getter. - * @throws AttributeNotFoundException The attribute specified is - * not accessible in the managed object. - * @throws InstanceNotFoundException The managed object specified is - * not registered in the MEJB. - * @throws ReflectionException An exception occurred when trying to - * invoke the getAttribute method of a Dynamic MBean - */ - public Object getAttribute(final ObjectName name, - final String attribute) throws MBeanException, - AttributeNotFoundException, - InstanceNotFoundException, - ReflectionException { - return mbeanServer.getAttribute(name, attribute); - } - - /** - * Enables the values of several attributes of a named managed object. - * The managed object is identified by its object name. - * @param name The object name of the managed object from which - * the attributes are retrieved. - * @param attributes A list of the attributes to be retrieved. - * @return The list of the retrieved attributes. - * @throws InstanceNotFoundException The managed object specified is - * not registered in the MEJB. - * @throws ReflectionException An exception occurred when trying to - * invoke the getAttributes method of a Dynamic MBean. - */ - public AttributeList getAttributes(final ObjectName name, - final String[] attributes) throws InstanceNotFoundException, - ReflectionException { - return mbeanServer.getAttributes(name, attributes); - } - - /** - * Returns the default domain name of this MEJB. - * @return the default domain name of this MEJB. - */ - public String getDefaultDomain() { - return mbeanServer.getDefaultDomain(); - } - - /** - * Returns the number of managed objects registered in the MEJB. - * @return the number of managed objects registered in the MEJB. - */ - public Integer getMBeanCount() { - return mbeanServer.getMBeanCount(); - } - - /** - * This method discovers the attributes and operations that a managed - * object exposes for management. - * @param name The name of the managed object to analyze - * @return An instance of {@link MBeanInfo} allowing the retrieval of - * all attributes and operations of this managed object. - * @throws IntrospectionException An exception occurs during introspection. - * @throws InstanceNotFoundException The managed object specified is - * not found. - * @throws ReflectionException An exception occurred when trying to - * perform reflection on a managed object - */ - public MBeanInfo getMBeanInfo(final ObjectName name) throws IntrospectionException, - InstanceNotFoundException, - ReflectionException { - return mbeanServer.getMBeanInfo(name); - } - - /** - * Invokes an operation on a managed object. - * @param name The object name of the managed object on which the - * method is to be invoked. - * @param operationName The name of the operation to be invoked. - * @param params An array containing the parameters to be set - * when the operation is invoked - * @param signature An array containing the signature of the operation. - * The class objects will be loaded using the same class loader - * as the one used for loading the managed object on which the - * operation was invoked. - * @return The object returned by the operation, which represents the - * result of invoking the operation on the managed object specified. - * @throws InstanceNotFoundException The managed object specified is not - * registered in the MEJB. - * @throws MBeanException Wraps an exception thrown by the managed - * object's invoked method. - * @throws ReflectionException Wraps a {@link Exception} thrown while - * trying to invoke the method. - */ - @RolesAllowed("mejb-admin") - public Object invoke(final ObjectName name, - final String operationName, - final Object[] params, - final String[] signature) throws MBeanException, - InstanceNotFoundException, - ReflectionException { - return mbeanServer.invoke(name, operationName, params, signature); - } - - /** - * Checks whether a managed object, identified by its object name, is - * already registered with the MEJB. - * @param name The object name of the managed object to be checked. - * @return True if the managed object is already registered in the MEJB, - * false otherwise. - */ - public boolean isRegistered(final ObjectName name) { - return mbeanServer.isRegistered(name); - } - - /** - * Gets the names of managed objects controlled by the MEJB. This method - * enables any of the following to be obtained: The names of all managed - * objects, the names of a set of managed objects specified by pattern - * matching on the {@link ObjectName}, a specific managed object name - * (equivalent to testing whether a managed object is registered). When - * the object name is null or no domain and key properties are specified, - * all objects are selected. It returns the set of J2EEObjectNames for - * the managed objects selected. - * @param name The object name pattern identifying the managed objects to - * be retrieved. If null or no domain and key properties are - * specified, all the managed objects registered will be retrieved. - * @param query a relational constraints for results filtering - * @return A set containing the ObjectNames for the managed objects selected. - * If no managed object satisfies the query, an empty set is returned. - */ - public Set queryNames(final ObjectName name, final QueryExp query) { - return mbeanServer.queryNames(name, query); - } - - /** - * Sets the value of a specific attribute of a named managed object. - * The managed object is identified by its object name. - * @param name The name of the managed object within which the - * attribute is to be set. - * @param attribute The identification of the attribute to be set - * and the value it is to be set to. - * @throws InstanceNotFoundException The managed object specified - * is not registered in the MEJB. - * @throws AttributeNotFoundException The attribute specified is - * not accessible in the managed object. - * @throws InvalidAttributeValueException The value specified for - * the attribute is not valid. - * @throws MBeanException Wraps an exception thrown by the managed - * object's setter. - * @throws ReflectionException An exception occurred when trying - * to invoke the setAttribute method of a Dynamic MBean. - */ - @RolesAllowed("mejb-admin") - public void setAttribute(final ObjectName name, - final Attribute attribute) throws MBeanException, - AttributeNotFoundException, - InstanceNotFoundException, - InvalidAttributeValueException, - ReflectionException { - mbeanServer.setAttribute(name, attribute); - } - - /** - * Sets the values of several attributes of a named managed - * object. The managed object is identified by its object name. - * @param name The object name of the managed object within - * which the attributes are to be set. - * @param attributes A list of attributes: The identification - * of the attributes to be set and the values they are - * to be set to. - * @return The list of attributes that were set, with their new values. - * @throws InstanceNotFoundException The managed object specified - * is not registered in the MEJB. - * @throws ReflectionException An exception occurred when trying - * to invoke the setAttributes method of a Dynamic MBean. - */ - @RolesAllowed("mejb-admin") - public AttributeList setAttributes(final ObjectName name, - final AttributeList attributes) throws InstanceNotFoundException, - ReflectionException { - return mbeanServer.setAttributes(name, attributes); - } - - /** - * Returns the listener registry implementation for this - * MEJB. The listener registry implements the methods that - * enable clients to add and remove event notification - * listeners managed objects - * @return An implementation of {@link ListenerRegistration} - */ - public ListenerRegistration getListenerRegistry() { - // TODO I suspect that the MBeanServer will not support ser/deser process ... - return new ListenerRegistrationImpl(mbeanServer); - } - -} diff --git a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagement.java b/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagement.java deleted file mode 100644 index 364856a85f..0000000000 --- a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagement.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.ee.mejb; - -import javax.management.j2ee.Management; - -/** - * The XManagement is a fake interface introduced as a workaround for bug UTIL-45. - * - * @author Guillaume Sauthier - */ -public interface XManagement extends Management { -} diff --git a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagementHome.java b/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagementHome.java deleted file mode 100644 index cf9700ca48..0000000000 --- a/jonas/modules/ee-components/mejb/src/main/java/org/ow2/jonas/ee/mejb/XManagementHome.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.ee.mejb; - -import javax.management.j2ee.ManagementHome; - -/** - * The XManagementHome is a fake interface introduced as a workaround for bug UTIL-45. - * - * @author Guillaume Sauthier - */ -public interface XManagementHome extends ManagementHome { -} diff --git a/jonas/modules/ee-components/pom.xml b/jonas/modules/ee-components/pom.xml deleted file mode 100644 index 9977f2bd32..0000000000 --- a/jonas/modules/ee-components/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-ee-components - pom - JOnAS :: EE Components - - - jonas-ctxroot - jca - jonas-admin - mejb - - - diff --git a/jonas/modules/generators/jonas-genbase/pom.xml b/jonas/modules/generators/jonas-genbase/pom.xml deleted file mode 100644 index 78677a13fc..0000000000 --- a/jonas/modules/generators/jonas-genbase/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - org.ow2.jonas - jonas-generators - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-generators-base - bundle - JOnAS :: Generators :: Base - - - - org.ow2.jonas - jonas-commons - ${project.version} - - - org.ow2.jonas - jonas-deployment - ${project.version} - - - org.ow2.bundles - ow2-util-ee-deploy-impl - - - \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/GenBaseException.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/GenBaseException.java deleted file mode 100644 index 7c0ba73be1..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/GenBaseException.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase; - -/** - * This class represents the exception that can be throwned by the ClientStubGen tool. - * @author Guillaume Sauthier - */ -public class GenBaseException extends Exception { - - /** - * Constructs a GenBaseException with no specified detail message. - */ - public GenBaseException() { - super(); - } - - /** - * Constructs an GenBaseException with the specified detail message. - * @param msg Error message - */ - public GenBaseException(String msg) { - super(msg); - } - - /** - * Constructs an GenBaseException with the specified detail message. - * @param inner Cause Exception to wrap - */ - public GenBaseException(Exception inner) { - super(inner); - } - - /** - * Constructs an GenBaseException with the specified detail message. - * @param msg Error message - * @param inner Cause Exception to wrap - */ - public GenBaseException(String msg, Exception inner) { - super(msg, inner); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/NoJ2EEWebservicesException.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/NoJ2EEWebservicesException.java deleted file mode 100644 index 039e6d2a69..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/NoJ2EEWebservicesException.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genbase; - - - -/** - * Thrown By XMLUtils.newDocument() when DTD validated files are found. - * - * @author Guillaume Sauthier - */ -public class NoJ2EEWebservicesException extends GenBaseException { - - /** - * Constructs NoJ2EEWebservicesException. - */ - public NoJ2EEWebservicesException() { - super(); - } - - /** - * Constructs NoJ2EEWebservicesException. - * @param msg Exception message - */ - public NoJ2EEWebservicesException(String msg) { - super(msg); - } - - /** - * Constructs NoJ2EEWebservicesException. - * @param inner Inner Exception - */ - public NoJ2EEWebservicesException(Exception inner) { - super(inner); - } - - /** - * Constructs NoJ2EEWebservicesException. - * @param msg Message text - * @param inner Inner Exception - */ - public NoJ2EEWebservicesException(String msg, Exception inner) { - super(msg, inner); - } - -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/AbsArchive.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/AbsArchive.java deleted file mode 100644 index ac8530ed0f..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/AbsArchive.java +++ /dev/null @@ -1,181 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.util.Hashtable; -import java.util.Map; -import java.util.jar.Manifest; - -import org.ow2.jonas.lib.util.I18n; - - -/** - * An AbsArchive centralized commonly used methods for Jar and - * File support. - * - * @author Guillaume Sauthier - */ -public abstract class AbsArchive implements Archive { - - /** i18n */ - private static I18n i18n = I18n.getInstance(AbsArchive.class); - - /** root File of the Archive */ - private File root; - - /** the archive Manifest */ - private Manifest manifest = null; - - /** map between name and files added in the archive */ - private Map files = null; - - /** - * Create a FileArchive where the root if the given file. - * - * @param file the directory base of the archive - */ - public AbsArchive(File file) { - root = file; - files = new Hashtable(); - } - - /** - * add the content of the given directory into the root of the archive. - * - * @param directory directory to add - */ - public void addDirectory(File directory) { - addDirectoryIn("", directory); - } - - /** - * add the content of the given directory into the given directory of the - * archive. - * - * @param dirName archive directory name. - * @param directory directory to add. - */ - public void addDirectoryIn(String dirName, File directory) { - File[] childs = directory.listFiles(); - - // directory exists ? - if (childs != null) { - for (int i = 0; i < childs.length; i++) { - if (childs[i].isFile()) { - // File - addFileIn(dirName, childs[i]); - } else { - // Directory - addDirectoryIn(dirName + childs[i].getName() + File.separator, childs[i]); - } - } - } - } - - /** - * add a lonely file into the root directory of the archive. - * - * @param file the file to be added. - */ - public void addFile(File file) { - addFileIn("", file); - } - - /** - * add a file into the root directory of the archive with a specified name. - * - * @param file the file to be added. - * @param name filename - */ - public void addFile(File file, String name) { - files.put(name, file); - } - - /** - * add a lonely file into the given directory of the archive. - * - * @param dirName archive directory name. - * @param file the file to be added. - */ - public void addFileIn(String dirName, File file) { - files.put(dirName + file.getName(), file); - } - - /** - * Returns the File corresponding to the root of the archive. - * - * @return the File corresponding to the root of the archive. - */ - public File getRootFile() { - return root; - } - - /** - * Returns the name of the Archive. - * - * @return the name of the Archive. - */ - public String getName() { - return root.getName(); - } - - /** - * @return Returns the manifest. - */ - public Manifest getManifest() { - if (manifest == null) { - manifest = new Manifest(); - } - return manifest; - } - /** - * @param manifest The manifest to set. - */ - public void setManifest(Manifest manifest) { - this.manifest = manifest; - } - /** - * @return Returns the i18n. - */ - public static I18n getI18n() { - return i18n; - } - /** - * @return Returns the files. - */ - public Map getFiles() { - return files; - } - - /** - * close this archive - */ - public void close() { - this.files = null; - this.manifest = null; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Application.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Application.java deleted file mode 100644 index 448b8877cc..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Application.java +++ /dev/null @@ -1,578 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; -import java.util.jar.Attributes; - -import javax.xml.parsers.ParserConfigurationException; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ear.EarDeploymentDesc; -import org.ow2.jonas.deployment.ear.lib.EarDeploymentDescManager; -import org.ow2.jonas.deployment.ear.xml.Web; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.lib.loader.EjbJarClassLoader; -import org.ow2.util.ee.deploy.api.deployable.EARDeployable; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -/** - * Application is a wrapper around an ear (packaged as a jar or as an unpacked - * jar). - * - * @author Guillaume Sauthier - */ -public class Application extends J2EEArchive { - - /** list of embded clients archive. */ - private List clients; - - /** list of embded webapps archive. */ - private List webapps; - - /** list of embded ejbjars archive. */ - private List ejbjars; - - /** Application DeploymentDesc */ - private EarDeploymentDesc earDD = null; - - /** name to document map */ - private Map descriptors = new Hashtable(); - - /** application Descriptor */ - private Document app; - - /** EJB Jar ClassLoader */ - private URLClassLoader ejbCL = null; - - /** Common Libs ClassLoader */ - private URLClassLoader commonCL = null; - - /** libs path File */ - private List pathFiles; - - /** application archive filename */ - private String appFilename; - - private IDeployable deployable = null; - - /** - * Creates a new Application archive. - * - * @param archive the file containing the application archive. - * - * @throws GenBaseException When Init fails - */ - public Application(final Archive archive, final IDeployable deployable) throws GenBaseException { - super(archive); - this.appFilename = archive.getRootFile().getName(); - this.deployable = deployable; - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in Application"); - } - init(); - } - - /** - * Initialize the Application. Creates modules lists, unpack if not - * unpacked. - * - * @throws GenBaseException When application unpack fails or when Decriptors - * cannot be parsed or found. - */ - protected void init() throws GenBaseException { - - pathFiles = new Vector(); - - ejbjars = new Vector(); - webapps = new Vector(); - clients = new Vector(); - - // load META-INF/application.xml - try { - earDD = EarDeploymentDescManager.getDeploymentDesc((EARDeployable) deployable, Thread.currentThread().getContextClassLoader()); - } catch (DeploymentDescException dde) { - String err = getI18n().getMessage("Application.init.earDDExc", getArchive().getRootFile()); - throw new GenBaseException(err, dde); - } - - // add EjbJars - String[] ejbs = earDD.getEjbTags(); - - for (int i = 0; i < ejbs.length; i++) { - File ejbFile = new File(getRootFile(), ejbs[i]); - Archive ejbArch = null; - - if (ejbFile.isDirectory()) { - // Unpacked Jar - ejbArch = new FileArchive(ejbFile); - } else { - // Packed Jar - ejbArch = new JarArchive(ejbFile); - } - ejbjars.add(new EjbJar(ejbArch, this)); - - // add entries for Class-Path - addClassPathEntry(ejbArch); - } - - // add WebApps - Web[] webs = earDD.getWebTags(); - - for (int i = 0; i < webs.length; i++) { - File webFile = new File(getRootFile(), webs[i].getWebUri()); - Archive webArch = null; - - if (webFile.isDirectory()) { - // Unpacked Jar - webArch = new FileArchive(webFile); - } else { - // Packed Jar - webArch = new JarArchive(webFile); - } - webapps.add(new WebApp(webArch, this)); - } - - // add Clients - String[] clts = earDD.getClientTags(); - - for (int i = 0; i < clts.length; i++) { - File clientFile = new File(getRootFile(), clts[i]); - Archive clientArch = null; - - if (clientFile.isDirectory()) { - // Unpacked Jar - clientArch = new FileArchive(clientFile); - } else { - // Packed Jar - clientArch = new JarArchive(clientFile); - } - clients.add(new Client(clientArch, this)); - } - - // Create ear ClassLoader (from MANIFEST/Class-Path general entry) - setModuleClassloader(createEARClassLoader()); - - // Create EJB ClassLoader - ejbCL = createEJBClassLoader(); - - loadDescriptors(); - } - - /** - * Load Deployment Descriptor of an Application. - * - * @throws GenBaseException When parsing of application.xml fails - */ - protected void loadDescriptors() throws GenBaseException { - - InputStream is = null; - - try { - is = getApplicationInputStream(); - } catch (IOException e) { - throw new GenBaseException("Cannot get inputstream", e); - } - - if (is == null) { - return; - } - - try { - app = XMLUtils.newDocument(is, "META-INF/application.xml", isDTDsAllowed()); - } catch (SAXException saxe) { - String err = getI18n().getMessage("Application.loadDescriptors.parseError"); - throw new GenBaseException(err, saxe); - } catch (ParserConfigurationException pce) { - String err = getI18n().getMessage("Application.loadDescriptors.prepare"); - throw new GenBaseException(err, pce); - } catch (IOException ioe) { - String err = getI18n().getMessage("Application.loadDescriptors.parseError"); - throw new GenBaseException(err, ioe); - } - - - descriptors.put("META-INF/application.xml", app); - } - - /** - * Initialize the Archive. - * @throws GenBaseException When initialization fails. - */ - @Override - public void initialize() throws GenBaseException { - - // init ejbjars - for (Iterator i = ejbjars.iterator(); i.hasNext();) { - EjbJar ejb = (EjbJar) i.next(); - ejb.initialize(); - } - - // init webapps - for (Iterator i = webapps.iterator(); i.hasNext();) { - WebApp web = (WebApp) i.next(); - web.initialize(); - } - - // init clients - for (Iterator i = clients.iterator(); i.hasNext();) { - Client client = (Client) i.next(); - client.initialize(); - } - - } - - /** - * Returns the name of the Archive. Overrides J2EEArchive.getName(); - * - * @see org.ow2.jonas.generators.genbase.archive.J2EEArchive#getName() - * - * @return the name of the Archive. - */ - @Override - public String getName() { - return appFilename; - } - - /** - * Construct a ClassLoader for EJBs inside an application. - * - * @return the Ejb-Jar ClassLoader - * - * @throws GenBaseException When URLClassLoader cannot be created. - */ - private URLClassLoader createEJBClassLoader() throws GenBaseException { - - URL[] urls = new URL[pathFiles.size() + ejbjars.size()]; - int index = 0; - for (Iterator i = pathFiles.iterator(); i.hasNext(); index++) { - File f = (File) i.next(); - try { - urls[index] = f.toURL(); - } catch (IOException ioe) { - String err = "Cannot convert " + f + " to URL."; - throw new GenBaseException(err, ioe); - } - } - - for (Iterator i = ejbjars.iterator(); i.hasNext(); index++) { - try { - urls[index] = ((EjbJar) i.next()).getRootFile().toURL(); - } catch (IOException ioe) { - String err = "Cannot transform as a URL : " + ioe.getMessage(); - throw new GenBaseException(err, ioe); - } - } - - try { - return new EjbJarClassLoader(urls, getModuleClassloader()); - } catch (IOException ioe) { - String err = "Cannot create EjbJarClassLoader"; - throw new GenBaseException(err, ioe); - } - - } - - /** - * Construct a ClassLoader for the application. - * - * @return the Application ClassLoader - * - * @throws GenBaseException When URLClassLoader cannot be created. - */ - private URLClassLoader createEARClassLoader() throws GenBaseException { - - // find parent ClassLoader - ClassLoader parent = Thread.currentThread().getContextClassLoader(); - - // get Manifest Attributes if any - String classpath = getManifest().getMainAttributes().getValue(Attributes.Name.CLASS_PATH); - URL[] urls = new URL[0]; - if (classpath != null) { - // Lookup specified files. - String[] paths = classpath.split(" "); - urls = new URL[paths.length]; - for (int i = 0; i < paths.length; i++) { - try { - URL path = new File(getRootFile(), paths[i]).toURL(); - urls[i] = path; - } catch (IOException ioe) { - String err = "Cannot transform '" + paths[i] + "' as a URL"; - throw new GenBaseException(err, ioe); - } - } - } - - return new URLClassLoader(urls, parent); - } - - /** - * Search the given Archive for ClassPath Manifest entry and add the entries - * in the EAR classpath. - * - * @param a the Archive to explore - * - * @throws GenBaseException When a path cannot be added in the EAR classpath. - */ - private void addClassPathEntry(final Archive a) throws GenBaseException { - // get Manifest Attributes if any - String classpath = a.getManifest().getMainAttributes().getValue(Attributes.Name.CLASS_PATH); - - if (classpath != null) { - // Lookup specified files. - String[] paths = classpath.split(" "); - for (int i = 0; i < paths.length; i++) { - try { - File path = new File(a.getRootFile().getParentFile(), paths[i]).getCanonicalFile(); - if (!pathFiles.contains(path)) { - pathFiles.add(path); - } - } catch (IOException ioe) { - String err = "Cannot add in EAR classpath :" + paths[i]; - throw new GenBaseException(err, ioe); - } - } - - } - - } - - /** - * Returns the Document of the application.xml file. - * - * @return the Document of the application.xml file. - */ - public Document getApplicationDoc() { - return app; - } - - /** - * Returns the InputStream of the application.xml file. - * - * @return the InputStream of the application.xml file. - * - * @throws IOException When InputStream of application.xml cannot be - * returned - */ - public InputStream getApplicationInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("META-INF/application.xml"); - } else { - is = getInputStream("META-INF" + File.separator + "application.xml"); - } - - return is; - } - - /** - * Add a new EjbJar in the Application. - * - * @param ejbjar the added EjbJar - */ - public void addEjbJar(final EjbJar ejbjar) { - ejbjars.add(ejbjar); - // add module in application.xml - XMLUtils.addEjb(app, ejbjar); - } - - /** - * Add a new Client in the Application. - * - * @param client the added Client - */ - public void addClient(final Client client) { - clients.add(client); - // add module in application.xml - XMLUtils.addClient(app, client); - } - - /** - * Add a new WebApp in the Application. - * - * @param webapp the added webapp - * @param context context of the webapp - */ - public void addWebApp(final WebApp webapp, final String context) { - if (!XMLUtils.isWebModuleAlreadyDeclared(app, webapp.getName())) { - // the web module is not already declared - webapps.add(webapp); - // add module in application.xml - XMLUtils.addWebApp(app, webapp, context); - } - // use latest file - addFile(webapp.getRootFile(), webapp.getName()); - } - - /** - * Returns the Iterator of EjbJar contained in this Application. - * - * @return the Iterator of EjbJar contained in this Application. - */ - public Iterator getEjbJars() { - return ejbjars.iterator(); - } - - /** - * Returns the Iterator of WebApp contained in this Application. - * - * @return the Iterator of WebApp contained in this Application. - */ - public Iterator getWebApps() { - return webapps.iterator(); - } - - /** - * Returns the Iterator of WebApp contained in this Application. - * - * @return the Iterator of WebApp contained in this Application. - */ - public Iterator getClients() { - return clients.iterator(); - } - - /** - * Returns the ClassLoader of this ear archive. - * - * @return the ClassLoader of this ear archive. - */ - public URLClassLoader getEARClassLoader() { - return commonCL; - } - - /** - * Returns the ClassLoader of the ejbs within this archive. - * - * @return the ClassLoader of the ejbs within this archive. - */ - public URLClassLoader getEJBClassLoader() { - return ejbCL; - } - - /** - * Returns a Map of name to Document for each modified Descriptor of the - * archive. - * - * @return a Map of name to Document - */ - @Override - public Map getDescriptors() { - return descriptors; - } - - /** - * Returns true if filename must be omitted in the archive. - * - * @param name filename to be tested - * - * @return true if filename must be omitted. - */ - @Override - public boolean omit(final String name) { - return (name.equals("META-INF/application.xml") || name.equals("META-INF\\application.xml")); - } - - /** - * @param clients The clients to set. - */ - public void setClients(final List clients) { - this.clients = clients; - } - - /** - * @param ejbjars The ejbjars to set. - */ - public void setEjbjars(final List ejbjars) { - this.ejbjars = ejbjars; - } - - /** - * @param webapps The webapps to set. - */ - public void setWebapps(final List webapps) { - this.webapps = webapps; - } - - /** - * @return Returns the app. - */ - public Document getApp() { - return app; - } - - /** - * Close this archive - */ - @Override - public void close() { - super.close(); - // Remove ear deployment desc - earDD = null; - // reset fields - descriptors = null; - app = null; - ejbCL = null; - commonCL = null; - pathFiles = null; - - // reset - for (Iterator i = getEjbJars(); i.hasNext();) { - EjbJar ejbjar = (EjbJar) i.next(); - ejbjar.close(); - } - - // fill webapp list - for (Iterator i = getWebApps(); i.hasNext();) { - WebApp webapp = (WebApp) i.next(); - webapp.close(); - } - - // fill client list - for (Iterator i = getClients(); i.hasNext();) { - Client client = (Client) i.next(); - client.close(); - } - - // reset internal lists - clients = null; - webapps = null; - ejbjars = null; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Archive.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Archive.java deleted file mode 100644 index 47106f198e..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Archive.java +++ /dev/null @@ -1,133 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.jar.Manifest; - -/** - * An Archive is a Wrapper around a Jar file (ear, war, jar) or - * around a directory structured lik a Jar file (unpacked jar file for example). - * - * @author Guillaume Sauthier - */ -public interface Archive { - - /** - * add the content of the given directory into the root of the archive. - * - * @param directory directory to add - */ - void addDirectory(File directory); - - /** - * add the content of the given directory into the given directory of the - * archive. - * - * @param dirName archive directory name. - * @param directory directory to add. - */ - void addDirectoryIn(String dirName, File directory); - - /** - * add a lonely file into the root directory of the archive. - * - * @param file the file to be added. - */ - void addFile(File file); - - /** - * add a file into the root directory of the archive with a specified name. - * - * @param file the file to be added. - * @param name filename - */ - void addFile(File file, String name); - - /** - * add a lonely file into the given directory of the archive. - * - * @param dirName archive directory name. - * @param file the file to be added. - */ - void addFileIn(String dirName, File file); - - /** - * Returns the File corresponding to the root of the archive. - * - * @return the File corresponding to the root of the archive. - */ - File getRootFile(); - - /** - * Returns the Manifest of the Archive. - * - * @return the Manifest of the Archive. - */ - Manifest getManifest(); - - /** - * Returns an InputStream corresponding to the given filename. - * - * @param filename file name source of the InputStream - * - * @return the InputStream corresponding to the given filename. - * - * @throws IOException When InputStream cannot be retrieved for filename. - */ - InputStream getInputStream(String filename) throws IOException; - - /** - * Returns a List of all files contained in this archive. Original files in - * jar, added Files are all included as String in this Enumeration. - * - * @return a List of all files contained in this archive. - */ - List getContainedFiles(); - - /** - * Returns true if archive is packed or false if archive is unpacked. - * - * @return true if archive is packed or false if archive is unpacked. - */ - boolean isPacked(); - - /** - * Returns the name of the Archive. - * - * @return the name of the Archive. - */ - String getName(); - - /** - * Close this archive - * @throws IOException if close fail - */ - void close() throws IOException; -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Client.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Client.java deleted file mode 100644 index 0c58075f34..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Client.java +++ /dev/null @@ -1,336 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Vector; -import java.util.jar.Attributes; - -import javax.xml.parsers.ParserConfigurationException; - - - -import org.objectweb.util.monolog.api.BasicLevel; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.client.ClientContainerDeploymentDesc; -import org.ow2.jonas.deployment.client.lib.ClientDeploymentDescManager; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.lib.loader.ClientClassLoader; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -/** - * Client represnets a J2EE Client Archive. - * - * @author Guillaume Sauthier - */ -public class Client extends J2EEArchive implements EjbRefModule, WsClient { - - /** Container application (can be null) */ - private Application app = null; - - /** Client Deployment Desc */ - private ClientContainerDeploymentDesc clientDD = null; - - /** service-ref list */ - private List sRefs; - - /** - * ejb-ref list - */ - private List ejbRefs; - - /** jonas client descriptors */ - private Map descriptors; - - /** - * jonas-client.xml - */ - private Document jclientDoc; - - /** - * Create a new Client not contained in Application - * - * @param archive the archive file - * - * @throws GenBaseException When Init fails. - */ - public Client(Archive archive) throws GenBaseException { - super(archive); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in Client"); - } - init(); - } - - /** - * Create a new Client contained in Application - * - * @param archive the archive file - * @param app the container Application - * - * @throws GenBaseException When Init fails - */ - public Client(Archive archive, Application app) throws GenBaseException { - super(archive); - setApplication(app); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in Client"); - } - init(); - } - - /** - * Initialize the Client module. - * - * @throws GenBaseException When client classloader cannot be created or when - * client deployment desc cannot be parsed. - */ - private void init() throws GenBaseException { - loadDescriptors(); - } - - /** - * Load Deployment Descriptor of a Client. - * - * @throws GenBaseException when jonas-client.xml cannot be parsed - */ - private void loadDescriptors() throws GenBaseException { - - descriptors = new Hashtable(); - InputStream jcis = null; - try { - jcis = getJonasClientInputStream(); - if (jcis != null) { - jclientDoc = XMLUtils.newDocument(jcis, "META-INF/jonas-client.xml", isDTDsAllowed()); - descriptors.put("META-INF/jonas-client.xml", jclientDoc); - } - } catch (SAXException saxe) { - String err = getI18n().getMessage("Client.loadDescriptors.parseError"); - throw new GenBaseException(err, saxe); - } catch (ParserConfigurationException pce) { - String err = getI18n().getMessage("Client.loadDescriptors.prepare"); - throw new GenBaseException(err, pce); - } catch (IOException ioe) { - String err = getI18n().getMessage("Client.loadDescriptors.parseError"); - throw new GenBaseException(err, ioe); - } - } - - /** - * Set the container application. - * - * @param app the container application. - */ - public void setApplication(Application app) { - this.app = app; - } - - /** - * Returns the container application (can be null). - * - * @return the container application (can be null). - */ - public Application getApplication() { - return app; - } - - /** - * Returns the list of service-ref elements contained by a module. - * - * @return the list of service-ref elements contained by a module. - */ - public List getServiceRefDescs() { - return sRefs; - } - - /** - * add *.class from directory in the archive. - * - * @param classes directory with classes. - */ - public void addClasses(File classes) { - addDirectory(classes); - } - - /** - * Returns a Map of name to Document for each modified Descriptor of the - * archive. - * - * @return a Map of name to Document - */ - public Map getDescriptors() { - return descriptors; - } - - /** - * Returns true if filename must be omitted in the archive. - * - * @param name filename to be tested - * - * @return true if filename must be omitted. - */ - public boolean omit(String name) { - return (name.equals("META-INF/jonas-client.xml") || name.equals("META-INF\\jonas-client.xml")); - } - - /** - * Returns the Document of the jonas-client.xml file. - * - * @return the Document of the jonas-client.xml file. - */ - public Document getJonasClientDoc() { - return jclientDoc; - } - - /** - * Returns the InputStream of the jonas-client.xml file. - * - * @return the InputStream of the jonas-client.xml file. - * - * @throws IOException When InputStream of jonas-client.xml cannot be - * returned. - */ - public InputStream getJonasClientInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("META-INF/jonas-client.xml"); - } else { - is = getInputStream("META-INF" + File.separator + "jonas-client.xml"); - } - - return is; - } - - /** - * Initialize the Archive. - * @throws GenBaseException When initialization fails. - */ - public void initialize() throws GenBaseException { - // if client in application, clientClassLoader includes ejbClassLoader too - - try { - if (app == null) { - // simple client case - setModuleClassloader(new ClientClassLoader(getArchive().getRootFile().toURL(), Thread.currentThread() - .getContextClassLoader())); - } else { - // embedded client case - setModuleClassloader(createClientClassLoaderWithinApplication(getApplication().getEJBClassLoader())); - } - } catch (IOException ioe) { - String err = getI18n().getMessage("Client.init.loader", getArchive().getRootFile()); - throw new GenBaseException(err, ioe); - } - - try { - clientDD = ClientDeploymentDescManager.getInstance(getRootFile().getAbsolutePath(), getModuleClassloader()); - } catch (DeploymentDescException dde) { - throw new GenBaseException(dde); - } - - // we want a List of service-ref - sRefs = new Vector(); - IServiceRefDesc[] refs = clientDD.getServiceRefDesc(); - for (int i = 0; i < refs.length; i++) { - sRefs.add(refs[i]); - } - - // List of ejb-refs - ejbRefs = new Vector(); - IEJBRefDesc[] refDesc = clientDD.getEjbRefDesc(); - - for (int i = 0; i < refDesc.length; i++) { - ejbRefs.add(refDesc[i]); - } - - } - - private ClientClassLoader createClientClassLoaderWithinApplication(ClassLoader parent) throws GenBaseException { - - // get Manifest Attributes if any - String classpath = getManifest().getMainAttributes().getValue(Attributes.Name.CLASS_PATH); - // Minimal array siez: 1 item, the client jar file itself - URL[] urls = new URL[1]; - if (classpath != null) { - // Lookup specified files. - String[] paths = classpath.split(" "); - urls = new URL[paths.length + 1]; - for (int i = 0; i < paths.length; i++) { - try { - URL path = new File(app.getRootFile(), paths[i]).toURL(); - urls[i] = path; - } catch (IOException ioe) { - String err = "Cannot transform '" + paths[i] + "' as a URL"; - throw new GenBaseException(err, ioe); - } - } - } - - - ClientClassLoader ccl = null; - try { - urls[urls.length - 1] = getArchive().getRootFile().toURL(); - ccl = new ClientClassLoader(urls, parent); - } catch (IOException e) { - String err = "Cannot create Client ClassLoader for " + getArchive().getName(); - throw new GenBaseException(err, e); - } - - return ccl; - } - - /** - * Returns the list of ejb-ref elements contained by a module. - * @return the list of ejb-ref elements contained by a module. - */ - public List getEjbRefDescs() { - return ejbRefs; - } - - /** - * Close this archive - */ - public void close() { - super.close(); - ejbRefs = null; - clientDD = null; - app = null; - descriptors = null; - jclientDoc = null; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyApplication.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyApplication.java deleted file mode 100644 index 765f3def51..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyApplication.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Vector; -import java.util.jar.Attributes; -import java.util.jar.Manifest; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.util.file.FileUtils; -import org.ow2.util.file.FileUtilsException; - -/** - * DummyApplication is a wrapper for auto generated application archive. - * - * @author Guillaume Sauthier - */ -public class DummyApplication extends Application { - - /** application filename */ - private String name; - - /** - * Creates a new Application archive. - * - * @param name the file containing the application archive. - * - * @throws GenBaseException When Init fails - */ - public DummyApplication(final String name) throws GenBaseException { - super(createFileArchive(), null); - this.name = name; - init(); - } - - /** - * Create a new FileArchive - * - * @return a new Archive - * - * @throws GenBaseException When Archive creation fails. - */ - private static Archive createFileArchive() throws GenBaseException { - TempRepository tr = TempRepository.getInstance(); - - try { - File tmp = tr.createDir(); - File meta = new File(tmp, "META-INF"); - meta.mkdirs(); - - File manifest = new File(meta, "MANIFEST.MF"); - - Manifest mf = new Manifest(); - mf.getMainAttributes().putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0"); - - OutputStream os = new FileOutputStream(manifest); - mf.write(os); - os.flush(); - os.close(); - - // Provide the basis for application.xml - File application = new File(meta, "application.xml"); - InputStream is = DummyApplication.class.getResourceAsStream("application.xml"); - if (is == null) { - throw new GenBaseException("Cannot load 'application.xml' template."); - } - FileUtils.dump(is, application); - - // Close stream - is.close(); - - return new FileArchive(tmp); - } catch (IOException ioe) { - throw new GenBaseException(ioe); - } catch (FileUtilsException fue) { - throw new GenBaseException(fue); - } - } - - /** - * Initialize the DummyApplication. Creates modules lists. Overriddes - * Application.init() behavior - * - * @throws GenBaseException When Descriptor cannot be parsed. - */ - protected void init() throws GenBaseException { - // remove dummy modules - setEjbjars(new Vector()); - setWebapps(new Vector()); - setClients(new Vector()); - - loadDescriptors(); - - XMLUtils.cleanDummyApplication(getApp()); - - } - - /** - * @return Returns the DummyApplication filename. - */ - public String getName() { - return name; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyWebApp.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyWebApp.java deleted file mode 100644 index a7b3c2e60d..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/DummyWebApp.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.jar.Attributes; -import java.util.jar.Manifest; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.util.file.FileUtils; -import org.ow2.util.file.FileUtilsException; - -/** - * DummyWebApp is a wrapper for auto generated webapp archive. - * - * @author Guillaume Sauthier - */ -public class DummyWebApp extends WebApp { - - /** webapp name */ - private String name; - - /** - * Creates a new DummyWebApp archive. - * - * @param app the file containing the webapp archive. - * @param name webapp filename - * - * @throws GenBaseException when archive creation fails. - */ - public DummyWebApp(Application app, String name) throws GenBaseException { - super(createFileArchive(), app); - this.name = name; - } - - /** - * Create a new FileArchive - * - * @return a new Archive - * - * @throws GenBaseException When Archive creation fails. - */ - private static Archive createFileArchive() throws GenBaseException { - TempRepository tr = TempRepository.getInstance(); - - try { - File tmp = tr.createDir(); - File meta = new File(tmp, "META-INF"); - meta.mkdirs(); - - File web = new File(tmp, "WEB-INF"); - web.mkdirs(); - - File manifest = new File(meta, "MANIFEST.MF"); - - Manifest mf = new Manifest(); - mf.getMainAttributes().putValue(Attributes.Name.MANIFEST_VERSION.toString(), "1.0"); - - OutputStream os = new FileOutputStream(manifest); - mf.write(os); - os.flush(); - os.close(); - - // Provide the basis for web.xml - File webXml = new File(web, "web.xml"); - InputStream wis = DummyWebApp.class.getResourceAsStream("web.xml"); - if (wis == null) { - throw new GenBaseException("Cannot load 'web.xml' template."); - } - FileUtils.dump(wis, webXml); - - // Close stream - wis.close(); - - //Load context.xml, used by Tomcat to determine security realm to use (if any) - // Provide the basis for context.xml - File context = new File(meta, "context.xml"); - InputStream cis = DummyWebApp.class.getResourceAsStream("context.xml"); - if (cis == null) { - throw new GenBaseException("Cannot load 'context.xml' template."); - } - FileUtils.dump(cis, context); - // Close stream - cis.close(); - - //Load web-jetty.xml, used by Jetty to determine security realm to use (if any) - // Provide the basis for web-jetty.xml - File jetty = new File(web, "web-jetty.xml"); - InputStream jis = DummyWebApp.class.getResourceAsStream("web-jetty.xml"); - if (jis == null) { - throw new GenBaseException("Cannot load 'web-jetty.xml' template."); - } - FileUtils.dump(jis, jetty); - // Close stream - jis.close(); - - - return new FileArchive(tmp); - } catch (IOException ioe) { - throw new GenBaseException(ioe); - } catch (FileUtilsException fue) { - throw new GenBaseException(fue); - } - } - - /** - * @return Returns the DummyApplication filename. - */ - public String getName() { - return name; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Ejb.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Ejb.java deleted file mode 100644 index eb96ffa5a6..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/Ejb.java +++ /dev/null @@ -1,139 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.util.List; -import java.util.Vector; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.w3c.dom.Element; - - - - -/** - * Ejb represent a Bean in an EjbJar. - * @author Guillaume Sauthier - */ -public class Ejb implements EjbRefModule, WsClient { - - /** - * service-ref list - */ - private List sRefs; - - /** - * ejb-ref list - */ - private List ejbRefs; - - /** - * bean name - */ - private String name; - - /** - * jonas- element (session, entity, message) - */ - private Element jbean; - - /** - * Creates a new Ejb from a BeanDesc - * @param bd the BeanDesc - * @param bean jonas specific bean Element - * (jonas-session/jonas-entity/jonas-message-driven) - */ - public Ejb(BeanDesc bd, Element bean) { - // get name - name = bd.getEjbName(); - - // store jonas informations - jbean = bean; - - // we want a List of service-ref - sRefs = new Vector(); - - IServiceRefDesc[] refs = bd.getServiceRefDesc(); - - for (int i = 0; i < refs.length; i++) { - sRefs.add(refs[i]); - } - - // List of ejb-refs - ejbRefs = new Vector(); - IEJBRefDesc[] refDesc = bd.getEjbRefDesc(); - - for (int i = 0; i < refDesc.length; i++) { - ejbRefs.add(refDesc[i]); - } - } - - /** - * Returns the list of service-ref elements contained by a module. - * @return the list of service-ref elements contained by a module. - */ - public List getServiceRefDescs() { - return sRefs; - } - - - /** - * Returns the list of ejb-ref elements contained by a module. - * @return the list of ejb-ref elements contained by a module. - */ - public List getEjbRefDescs() { - return ejbRefs; - } - - /** - * Returns the bean name. - * @return the bean name. - */ - public String getName() { - return name; - } - - /** - * Returns the bean element. - * @return the bean element. - */ - public Element getJonasBeanElement() { - return jbean; - } - - /** - * Close this archive - */ - public void close() { - sRefs = null; - ejbRefs = null; - name = null; - jbean = null; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbJar.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbJar.java deleted file mode 100644 index dceb203729..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbJar.java +++ /dev/null @@ -1,397 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.xml.parsers.ParserConfigurationException; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.DeploymentDesc; -import org.ow2.jonas.deployment.ejb.lib.EjbDeploymentDescManager; -import org.ow2.jonas.deployment.ws.WSDeploymentDesc; -import org.ow2.jonas.deployment.ws.lib.WSDeploymentDescManager; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.lib.loader.EjbJarClassLoader; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.SAXException; - - - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * EjbJar represents an EjbJar J2EE Archive. - * - * @author Guillaume Sauthier - */ -public class EjbJar extends J2EEArchive implements WsEndpoint { - - /** Application containing the ejbjar */ - private Application app; - - /** WebServices deployment descriptor */ - private WSDeploymentDesc wsDD = null; - - /** EjbJar deployment descriptor */ - private DeploymentDesc ejbDD = null; - - /** inner EJBs List */ - private List ejbs; - - /** descriptors list */ - private Map descriptors; - - /** jonas-ejb-jar document */ - private Document jEjbJar; - - /** jonas-webservices document */ - private Document jWebservices = null; - - /** - * Create a new EjbJar not contained in Application - * - * @param archive - * the archive file - * - * @throws GenBaseException - * When init fails - */ - public EjbJar(Archive archive) throws GenBaseException { - super(archive); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in EjbJar"); - } - init(); - } - - /** - * Create a new EjbJar contained in Application - * - * @param archive - * the archive file - * @param app - * container application - * - * @throws GenBaseException - * When init fails - */ - public EjbJar(Archive archive, Application app) throws GenBaseException { - super(archive); - setApplication(app); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in EjbJar"); - } - init(); - } - - /** - * Initialize the EjbJar module. - * - * @throws GenBaseException - * When ejb classlaoder cannot be created or when Descriptor - * cannot be loaded. - */ - private void init() throws GenBaseException { - loadDescriptors(); - } - - - /** - * Initialize the Archive. - * @throws GenBaseException When initialization fails. - */ - public void initialize() throws GenBaseException { - - try { - if (app == null) { - // simple ejb case - setModuleClassloader(new EjbJarClassLoader(new URL[] {getArchive() - .getRootFile().toURL()}, Thread.currentThread() - .getContextClassLoader())); - } else { - // embedded ejb case - setModuleClassloader(app.getEJBClassLoader()); - } - } catch (IOException ioe) { - String err = getI18n().getMessage("EjbJar.init.loader", getArchive() - .getRootFile()); - throw new GenBaseException(err, ioe); - } - - try { - ejbDD = EjbDeploymentDescManager.getDeploymentDesc(getRootFile() - .getAbsolutePath(), getModuleClassloader()); - } catch (DeploymentDescException dde) { - throw new GenBaseException(dde); - } - - try { - wsDD = WSDeploymentDescManager.getDeploymentDesc(getRootFile() - .getAbsolutePath(), getModuleClassloader()); - } catch (DeploymentDescException dde) { - throw new GenBaseException(dde); - } - - // create inner EJBs - ejbs = new Vector(); - - BeanDesc[] bd = ejbDD.getBeanDesc(); - - for (int i = 0; i < bd.length; i++) { - Element jElement = null; - if (jEjbJar != null) { - jElement = XMLUtils.getBeanElement(jEjbJar.getDocumentElement(), bd[i].getEjbName()); - } - ejbs.add(new Ejb(bd[i], jElement)); - } - - } - - - /** - * Load Deployment Descriptor of an EjbJar. - * - * @throws GenBaseException - * When parsing fails - */ - private void loadDescriptors() throws GenBaseException { - InputStream jonasEJBXMLIS = null; - InputStream isJws = null; - try { - - jonasEJBXMLIS = getJonasEjbJarInputStream(); - if (jonasEJBXMLIS != null) { - jEjbJar = XMLUtils.newDocument(jonasEJBXMLIS, "META-INF/jonas-ejb-jar.xml", isDTDsAllowed()); - } - - isJws = getJonasWebservicesInputStream(); - if (isJws != null) { - jWebservices = XMLUtils.newDocument(isJws, - "META-INF/jonas-webservices.xml", isDTDsAllowed()); - } - - } catch (SAXException saxe) { - String err = getI18n().getMessage("EjbJar.loadDescriptors.parseError"); - throw new GenBaseException(err, saxe); - } catch (ParserConfigurationException pce) { - String err = getI18n().getMessage("EjbJar.loadDescriptors.prepare"); - throw new GenBaseException(err, pce); - } catch (IOException ioe) { - String err = getI18n().getMessage("EjbJar.loadDescriptors.parseError"); - throw new GenBaseException(err, ioe); - } - - descriptors = new Hashtable(); - if (jEjbJar != null) { - descriptors.put("META-INF/jonas-ejb-jar.xml", jEjbJar); - } - } - - /** - * Returns the List of Ejb contained in this EjbJar. - * - * @return the List of Ejb contained in this EjbJar. - */ - public List getEjbs() { - return ejbs; - } - - /** - * Returns the list of webservice-description elements contained by a - * module. - * - * @return the list of webservice-description elements contained by a - * module. - */ - public List getServiceDescs() { - if (wsDD != null) { - return wsDD.getServiceDescs(); - } else { - return new Vector(); - } - } - - /** - * Add *.class from directory in the archive. - * - * @param classes - * directory containing classes files. - */ - public void addClasses(File classes) { - addDirectory(classes); - } - - /** - * @return Returns the desired war filename (jonas-webservices/war) - */ - public String getWarName() { - if (wsDD != null) { - return wsDD.getWarFile(); - } else { - return null; - } - } - - /** - * @return Returns the desired context-root (jonas-webservices/context-root) - */ - public String getContextRoot() { - // compute context root name from ejbjar name - String archiveName = this.getArchive().getName(); - String root = null; - if (archiveName.toLowerCase().endsWith(".jar")) { - root = archiveName.toLowerCase().substring(0, archiveName.length() - ".jar".length()); - } else { - root = archiveName; - } - if (wsDD != null) { - String croot = wsDD.getContextRoot(); - if (croot != null) { - root = croot; - } - } - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Computed context root : " + root); - } - return root; - } - - /** - * Set the container application of this EjbJar - * - * @param app - * container application - */ - public void setApplication(Application app) { - this.app = app; - } - - /** - * Return the container application of this EjbJar - * - * @return the container application of this EjbJar - */ - public Application getApplication() { - return app; - } - - /** - * Returns a Map of name to Document for each modified Descriptor of the - * archive. - * - * @return a Map of name to Document - */ - public Map getDescriptors() { - return descriptors; - } - - /** - * Returns true if filename must be omitted in the archive. - * - * @param name - * filename to be tested - * - * @return true if filename must be omitted. - */ - public boolean omit(String name) { - return (name.equals("META-INF/jonas-ejb-jar.xml") - || name.equals("META-INF\\jonas-ejb-jar.xml")); - } - - /** - * Returns the Document of the jonas-ejb-jar.xml file. - * - * @return the Document of the jonas-ejb-jar.xml file. - */ - public Document getJonasEjbJarDoc() { - return jEjbJar; - } - - /** - * Return the Document of the the jonas-webservices.xml - * - * @return the Document of the jonas-webservices.xml file - */ - public Document getJonasWebservicesDoc() { - return jWebservices; - } - - /** - * Returns the InputStream of the jonas-ejb-jar.xml file. - * - * @return the InputStream of the jonas-ejb-jar.xml file. - * - * @throws IOException if stream is invalid - */ - public InputStream getJonasEjbJarInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("META-INF/jonas-ejb-jar.xml"); - } else { - is = getInputStream("META-INF" + File.separator - + "jonas-ejb-jar.xml"); - } - - // may be null (optional entry) - return is; - } - - /** - * Returns the InputStream of the jonas-webservices.xml file. - * - * @return the InputStream of the jonas-webservices.xml file. - * @throws IOException When InputStream of jonas-webservices.xml cannot be returned - */ - public InputStream getJonasWebservicesInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("META-INF/jonas-webservices.xml"); - } else { - is = getInputStream("META-INF" + File.separator - + "jonas-webservices.xml"); - } - return is; - } - - - - - -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbRefModule.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbRefModule.java deleted file mode 100644 index c70876d9c4..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/EjbRefModule.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genbase.archive; - -import java.util.List; - -/** - * Represents an element which has ejb-ref (client, ejb, webapp) - * @author Florent Benoit - */ -public interface EjbRefModule { - - /** - * Returns the list of ejb-ref elements contained by a module. - * @return the list of ejb-ref elements contained by a module. - */ - List getEjbRefDescs(); -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/FileArchive.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/FileArchive.java deleted file mode 100644 index c072ec15b3..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/FileArchive.java +++ /dev/null @@ -1,147 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Vector; -import java.util.jar.Manifest; - -import org.ow2.jonas.generators.genbase.GenBaseException; - - - -/** - * A FileArchive is a wrapper for directory structured as a jar. - * - * @author Guillaume Sauthier - */ -public class FileArchive extends AbsArchive { - - /** - * Creates a new FileArchive object. - * - * @param archive directory structured as a jar - * - * @throws GenBaseException When manifest cannot be loaded - */ - public FileArchive(File archive) throws GenBaseException { - super(archive); - - try { - File mf = new File(archive, "META-INF" + File.separator + "MANIFEST.MF"); - - if (mf.exists()) { - InputStream is = new FileInputStream(mf); - setManifest(new Manifest(is)); - is.close(); - } else { - setManifest(new Manifest()); - } - } catch (Exception e) { - String err = getI18n().getMessage("FileArchive.constr.manifest", getRootFile()); - throw new GenBaseException(err, e); - } - } - - /** - * Returns an InputStream corresponding to the given filename. - * - * @param filename file name source of the InputStream - * - * @return the InputStream corresponding to the given filename. - * - * @throws IOException When InputStream corersponding to the given filename - * cannot be found. - */ - public InputStream getInputStream(String filename) throws IOException { - File file = (File) getFiles().get(filename); - - if (file == null) { - // filename not found in added files - // try root search - file = new File(getRootFile(), filename); - - if (!file.exists()) { - return null; - } - } - - // file exists (in added files or in original archive) - return new FileInputStream(file); - } - - /** - * Returns a List of all files contained in this archive. Original files in - * jar, added Files are all included as String in this Enumeration. - * - * @return a List of all files contained in this archive. - */ - public List getContainedFiles() { - List list = new Vector(getFiles().keySet()); - - // add files of the original archive - traverse("", getRootFile(), list); - - return list; - } - - /** - * Add all files contained in the given directory into a list. - * - * @param dirName current directory name - * @param base directory where file are listed - * @param map list of filename - */ - private static void traverse(String dirName, File base, List map) { - File[] childs = base.listFiles(); - - // directory exists ? - if (childs != null) { - for (int i = 0; i < childs.length; i++) { - if (childs[i].isFile()) { - // File - map.add(dirName + childs[i].getName()); - } else { - // Directory - traverse(dirName + childs[i].getName() + File.separator, childs[i], map); - } - } - } - } - - /** - * Returns true if archive is packed or false if archive is unpacked. - * - * @return true if archive is packed or false if archive is unpacked. - */ - public boolean isPacked() { - return false; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/J2EEArchive.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/J2EEArchive.java deleted file mode 100644 index cabacc05b4..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/J2EEArchive.java +++ /dev/null @@ -1,272 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- -*/ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Map; -import java.util.jar.Manifest; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.generator.GeneratorFactories; -import org.ow2.jonas.generators.genbase.generator.GeneratorFactory; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; - - - -import org.objectweb.util.monolog.api.Logger; - - -/** - * Base Class for all J2EE modules (application, ejbjar, client, webapp). - * - * @author Guillaume Sauthier - * @see org.ow2.jonas.generators.genbase.archive.Archive - */ -public abstract class J2EEArchive implements Archive { - /** i18n */ - private static I18n i18n = I18n.getInstance(J2EEArchive.class); - - /** logger */ - private static Logger logger = Log.getLogger(Log.JONAS_GENBASE_PREFIX); - - /** encapsulated archive */ - private Archive archive; - - /** J2EE Archive inner ClassLoader */ - private ClassLoader moduleClassloader = null; - - /** - * Creates a new J2EEArchive object. - * - * @param archive Archive containing files - */ - public J2EEArchive(Archive archive) { - this.archive = archive; - } - - /** - * add the content of the given directory into the root of the archive. - * - * @param directory directory to add - */ - public void addDirectory(File directory) { - archive.addDirectory(directory); - } - - /** - * add the content of the given directory into the given directory of the - * archive. - * - * @param dirName archive directory name. - * @param directory directory to add. - */ - public void addDirectoryIn(String dirName, File directory) { - archive.addDirectoryIn(dirName, directory); - } - - /** - * add a lonely file into the root directory of the archive. - * - * @param file the file to be added. - */ - public void addFile(File file) { - archive.addFile(file); - } - - /** - * add a file into the root directory of the archive with a specified name. - * - * @param file the file to be added. - * @param name filename - */ - public void addFile(File file, String name) { - archive.addFile(file, name); - } - - /** - * add a lonely file into the given directory of the archive. - * - * @param dirName archive directory name. - * @param file the file to be added. - */ - public void addFileIn(String dirName, File file) { - archive.addFileIn(dirName, file); - } - - /** - * Returns the File corresponding to the root of the archive. - * - * @return the File corresponding to the root of the archive. - */ - public File getRootFile() { - return archive.getRootFile(); - } - - /** - * Returns the Manifest of the Archive. - * - * @return the Manifest of the Archive. - */ - public Manifest getManifest() { - return archive.getManifest(); - } - - /** - * Returns an InputStream corresponding to the given filename. - * - * @param filename file name source of the InputStream - * - * @return the InputStream corresponding to the given filename. - * - * @throws IOException When Cannot get InputStream from filename - */ - public InputStream getInputStream(String filename) - throws IOException { - return archive.getInputStream(filename); - } - - /** - * Returns a List of all files contained in this archive. Original files in - * jar, added Files are all included as String in this Enumeration. - * - * @return a List of all files contained in this archive. - */ - public List getContainedFiles() { - return archive.getContainedFiles(); - } - - /** - * Returns true if archive is packed or false if archive is unpacked. - * - * @return true if archive is packed or false if archive is unpacked. - */ - public boolean isPacked() { - return archive.isPacked(); - } - - /** - * Returns the name of the Archive. - * - * @return the name of the Archive. - */ - public String getName() { - return archive.getName(); - } - - /** - * Returns a Map of name to Document for each modified Descriptor of the - * archive. - * - * @return a Map of name to Document - */ - public abstract Map getDescriptors(); - - /** - * Returns true if filename must be omitted in the archive. - * - * @param name filename to be tested - * - * @return true if filename must be omitted. - */ - public abstract boolean omit(String name); - - /** - * @return Returns the i18n. - */ - public static I18n getI18n() { - return i18n; - } - /** - * @return Returns the logger. - */ - public static Logger getLogger() { - return logger; - } - /** - * @return Returns the archive. - */ - public Archive getArchive() { - return archive; - } - /** - * @param archive The archive to set. - */ - public void setArchive(Archive archive) { - this.archive = archive; - } - - /** - * Initialize the Archive. - * @throws GenBaseException When initialization fails. - */ - public abstract void initialize() throws GenBaseException; - - /** - * @return Returns the module inner ClassLoader - */ - public ClassLoader getModuleClassloader() { - return moduleClassloader; - } - - /** - * @param moduleClassloader The moduleClassloader to set. - */ - public void setModuleClassloader(ClassLoader moduleClassloader) { - this.moduleClassloader = moduleClassloader; - } - - /** - * @return true if the use of DTDs is allowed or if we have to use only web services - */ - protected boolean isDTDsAllowed() { - GeneratorFactory gf = GeneratorFactories.getCurrentFactory(); - if (gf == null) { - throw new IllegalStateException(i18n.getMessage("J2EEArchive.isDTDsAllowed.noFactory")); - } - Config config = gf.getConfiguration(); - if (config == null) { - throw new IllegalStateException(i18n.getMessage("J2EEArchive.isDTDsAllowed.noConfig")); - } - return config.isDTDsAllowed(); - } - - /** - * Close this archive - */ - public void close() { - try { - this.archive.close(); - } catch (IOException ioe) { - throw new RuntimeException("Cannot close file '" + archive + "'", ioe); - } - archive = null; - } -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/JarArchive.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/JarArchive.java deleted file mode 100644 index 3aeadcfbc8..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/JarArchive.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.List; -import java.util.Vector; -import java.util.jar.JarFile; -import java.util.zip.ZipEntry; - -import org.ow2.jonas.generators.genbase.GenBaseException; - - - -/** - * A JarArchive is a wrapper for jar file. - * - * @author Guillaume Sauthier - */ -public class JarArchive extends AbsArchive { - - /** encapsulated Jar File */ - private JarFile jar; - - /** - * Creates a new JarArchive object. - * - * @param jar the File corresponding to a JarFile - * - * @throws GenBaseException When Manifest cannot be found - */ - public JarArchive(File jar) throws GenBaseException { - super(jar); - - try { - this.jar = new JarFile(jar); - setManifest(this.jar.getManifest()); - } catch (IOException ioe) { - String err = getI18n().getMessage("JarArchive.constr.jar", jar); - throw new GenBaseException(err, ioe); - } - } - - /** - * Returns an InputStream corresponding to the given filename. - * - * @param filename file name source of the InputStream - * - * @return the InputStream corresponding to the given filename. - * - * @throws IOException when InputStream of the filename cannot be found in - * the archive - */ - public InputStream getInputStream(String filename) throws IOException { - // try get the file from the map - File file = (File) getFiles().get(filename); - - if (file == null) { - // filename not found in added files - // try jar search - ZipEntry ze = jar.getEntry(filename); - - // Entry found ? - if (ze == null) { - return null; - } else { - return jar.getInputStream(ze); - } - } else { - // file exists (in added files) - return new FileInputStream(file); - } - } - - /** - * Returns a List of all files contained in this archive. Original files in - * jar, added Files are all included as String in this Enumeration. - * - * @return a List of all files contained in this archive. - */ - public List getContainedFiles() { - List list = new Vector(getFiles().keySet()); - - // add files of the original archive - for (Enumeration e = jar.entries(); e.hasMoreElements();) { - ZipEntry ze = (ZipEntry) e.nextElement(); - list.add(ze.getName()); - } - - return list; - } - - /** - * Returns true if archive is packed or false if archive is unpacked. - * - * @return true if archive is packed or false if archive is unpacked. - */ - public boolean isPacked() { - return true; - } - - /** - * Close this archive - */ - public void close() { - super.close(); - try { - jar.close(); - } catch (IOException ioe) { - throw new RuntimeException("Cannot close file '" + jar + "'", ioe); - } - jar = null; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WebApp.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WebApp.java deleted file mode 100644 index c0bb7b5b15..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WebApp.java +++ /dev/null @@ -1,644 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:WebApp.java 10528 2007-06-05 08:26:23Z sauthieg $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Vector; -import java.util.jar.JarFile; - -import javax.xml.parsers.ParserConfigurationException; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.web.WebContainerDeploymentDesc; -import org.ow2.jonas.deployment.web.lib.WebDeploymentDescManager; -import org.ow2.jonas.deployment.ws.WSDeploymentDesc; -import org.ow2.jonas.deployment.ws.lib.WSDeploymentDescManager; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.lib.loader.WebappClassLoader; -import org.ow2.util.file.FileUtils; -import org.ow2.util.file.FileUtilsException; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -/** - * A WebApp is a wrapper class around a Web Archive. - * - * @author Guillaume Sauthier - */ -public class WebApp extends J2EEArchive implements EjbRefModule, WsClient, WsEndpoint { - - /** Application containing the webapp */ - private Application app = null; - - /** webapp archive filename */ - private String webFilename; - - /** Web deployment descriptor */ - private WebContainerDeploymentDesc webDD; - - /** WebServices deployment descriptor */ - private WSDeploymentDesc wsDD = null; - - /** service-ref list */ - private List sRefs; - - /** web-app */ - private Document webApp = null; - - /** jonas-web-app */ - private Document jonasWebApp = null; - - /** webservices */ - private Document webservices = null; - - /** jonas-webservices */ - private Document jonasWebservices = null; - - /** context */ - private Document context = null; - - /** webjetty */ - private Document webjetty = null; - - /** web descriptors */ - private Map descriptors; - - /** - * ejb-ref list - */ - private List ejbRefs; - - /** - * Create an alone WebApp (not in an ear). - * - * @param archive file archive - * - * @throws GenBaseException When Init fails - */ - public WebApp(Archive archive) throws GenBaseException { - super(archive); - webFilename = archive.getName(); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in WebApp"); - } - init(); - } - - /** - * Create an embded WebApp. - * - * @param archive Web Archive - * @param app container application - * - * @throws GenBaseException When init fails - */ - public WebApp(Archive archive, Application app) throws GenBaseException { - super(archive); - webFilename = archive.getName(); - setApplication(app); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Wrapping '" + archive.getName() + "' in WebApp"); - } - init(); - } - - /** - * Initialize the WebApp module. - * - * @throws GenBaseException When classloader cannot be created or when - * decriptor loading fails. - */ - private void init() throws GenBaseException { - // load Deployment Descs - loadDescriptors(); - } - - /** - * Load Deployment Descriptor of a WebApp. - * - * @throws GenBaseException When descriptor cannot be parsed - */ - private void loadDescriptors() throws GenBaseException { - try { - - // Optional - InputStream webIs = getWebInputStream(); - if (webIs != null) { - webApp = XMLUtils.newDocument(webIs, "WEB-INF/web.xml", isDTDsAllowed()); - } - - // jonas-web.xml (optionnal) - InputStream is = getJonasWebInputStream(); - - if (is != null) { - jonasWebApp = XMLUtils.newDocument(is, "WEB-INF/jonas-web.xml", isDTDsAllowed()); - } - - // webservices.xml (optionnal) - InputStream isWS = getWebservicesInputStream(); - - if (isWS != null) { - webservices = XMLUtils.newDocument(isWS, "WEB-INF/webservices.xml", isDTDsAllowed()); - } - - // jonas-webservices.xml (optionnal) - InputStream isJWS = getJonasWebservicesInputStream(); - - if (isJWS != null) { - jonasWebservices = XMLUtils.newDocument(isJWS, "WEB-INF/jonas-webservices.xml", isDTDsAllowed()); - } - - // context.xml (optional) - InputStream isContext = getContextInputStream(); - if (isContext != null) { - context = XMLUtils.newDocument(isContext, "META-INF/context.xml", isDTDsAllowed(), false); - } - - //web-jetty.xml (optional) - InputStream isWebJetty = getWebJettyInputStream(); - if (isWebJetty != null) { - // Jetty needs web-jetty.xml to have a dtd - webjetty = XMLUtils.newDocument(isWebJetty, "WEB-INF/web-jetty.xml", true, true); - } - - } catch (SAXException saxe) { - String err = getI18n().getMessage("WebApp.loadDescriptors.parseError"); - throw new GenBaseException(err, saxe); - } catch (ParserConfigurationException pce) { - String err = getI18n().getMessage("WebApp.loadDescriptors.prepare"); - throw new GenBaseException(err, pce); - } catch (IOException ioe) { - String err = getI18n().getMessage("WebApp.loadDescriptors.parseError"); - throw new GenBaseException(err, ioe); - } - - descriptors = new Hashtable(); - descriptors.put("WEB-INF/web.xml", webApp); - - if (jonasWebApp != null) { - descriptors.put("WEB-INF/jonas-web.xml", jonasWebApp); - } - - if (webservices != null) { - descriptors.put("WEB-INF/webservices.xml", webservices); - } - - if (jonasWebservices != null) { - descriptors.put("WEB-INF/jonas-webservices.xml", jonasWebservices); - } - - if (context != null) { - descriptors.put("META-INF/context.xml", context); - } - - if (webjetty != null) { - descriptors.put("WEB-INF/web-jetty.xml", webjetty); - } - } - - /** - * Returns the name of the Archive. Overrides J2EEArchive.getName(); - * - * @see org.ow2.jonas.generators.genbase.archive.J2EEArchive#getName() - * - * @return the name of the Archive. - */ - public String getName() { - return webFilename; - } - - /** - * Set the container application. - * - * @param app the container application. - */ - public void setApplication(Application app) { - this.app = app; - } - - /** - * Returns the container application (can be null). - * - * @return the container application (can be null). - */ - public Application getApplication() { - return app; - } - - /** - * Returns the list of service-ref elements contained by a module. - * - * @return the list of service-ref elements contained by a module. - */ - public List getServiceRefDescs() { - return sRefs; - } - - /** - * Returns the list of webservice-description elements contained by a - * module. - * - * @return the list of webservice-description elements contained by a - * module. - */ - public List getServiceDescs() { - if (wsDD != null) { - return wsDD.getServiceDescs(); - } else { - return new Vector(); - } - } - - /** - * Add Archive classes. - * - * @param classes root directory containing classes. - */ - public void addClasses(File classes) { - addDirectoryIn("WEB-INF/classes", classes); - } - - /** - * Returns the Document of the web.xml file. - * - * @return the Document of the web.xml file. - */ - public Document getWebAppDoc() { - return webApp; - } - - /** - * Returns the Document of the jonas-web.xml file. - * - * @return the Document of the jonas-web.xml file. - */ - public Document getJonasWebAppDoc() { - return jonasWebApp; - } - - /** - * Returns the Document of the webservices.xml file. - * - * @return the Document of the webservices.xml file. - */ - public Document getWebservicesDoc() { - return webservices; - } - - /** - * Returns the Document of the jonas-webservices.xml file. - * - * @return the Document of the jonas-webservices.xml file. - */ - public Document getJonasWebservicesDoc() { - return jonasWebservices; - } - - /** - * Returns a new Document of the context.xml file - * - * @return the Document of the context.xml file. - * @throws GenBaseException if context.xml Document cannot be produced. - */ - public Document newContextDoc() throws GenBaseException { - - // Do not validate context.xml as there is no associated DTD or XML Schema - context = loadXMLDescriptorAsResource("context.xml", "META-INF/context.xml", false); - - return context; - } - - /** - * Returns a new Document of the web-jetty.xml file - * - * @return the document of the web-jetty.xml file - * @throws GenBaseException if context.xml Document cannot be produced. - */ - public Document newWebJettyDoc() throws GenBaseException { - - webjetty = loadXMLDescriptorAsResource("web-jetty.xml", "WEB-INF/web-jetty.xml"); - - return webjetty; - } - - /** - * Load and validate an XML {@link Document} as a resource. - * @param resource resource's name (used to load from the classloader) - * @param name name of the resource in the final web-app - * @return Returns an XML {@link Document} representing the given resource. - * @throws GenBaseException If unable to load the specified resource from the classloader. - */ - private Document loadXMLDescriptorAsResource(final String resource, final String name) throws GenBaseException { - - return loadXMLDescriptorAsResource(resource, name, true); - } - - /** - * Load and validate (if required) an XML {@link Document} as a resource. - * @param resource resource's name (used to load from the classloader) - * @param name name of the resource in the final web-app - * @param validate Indicate if the {@link Document} should be validated. - * @return Returns an XML {@link Document} representing the given resource. - * @throws GenBaseException If unable to load the specified resource from the classloader. - */ - private Document loadXMLDescriptorAsResource(final String resource, - final String name, - final boolean validate) throws GenBaseException { - Document doc = null; - try { - doc = XMLUtils.newDocument(this.getClass().getResourceAsStream(resource), name, validate); - } catch (Exception e) { - throw new GenBaseException("Cannot load '" + name + "'", e); - } - - // save the descriptor in the descriptor Map - descriptors.put(name, doc); - - return doc; - } - - /** - * Returns the Document of the context.xml file - * - * @return the Document of the context.xml file. - */ - public Document getContextDoc() { - return context; - } - - /** - * Returns the Document of the web-=jetty.xml file - * - * @return the document of the web-jetty.xml file - */ - public Document getWebJettyDoc() { - return webjetty; - } - - /** - * Returns the InputStream of the web.xml file. - * - * @return the InputStream of the web.xml file. - * - * @throws IOException When InputStream cannot be returned. - */ - private InputStream getWebInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("WEB-INF/web.xml"); - } else { - is = getInputStream("WEB-INF" + File.separator + "web.xml"); - } - - return is; - } - - /** - * Returns the InputStream of the jonas-web.xml file. - * - * @return the InputStream of the jonas-web.xml file. - * - * @throws IOException When InputStream cannot be returned. - */ - private InputStream getJonasWebInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("WEB-INF/jonas-web.xml"); - } else { - is = getInputStream("WEB-INF" + File.separator + "jonas-web.xml"); - } - - return is; - } - - /** - * Returns the InputStream of the webservices.xml file. - * - * @return the InputStream of the webservices.xml file. - * - * @throws IOException When InputStream cannot be returned. - */ - private InputStream getWebservicesInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("WEB-INF/webservices.xml"); - } else { - is = getInputStream("WEB-INF" + File.separator + "webservices.xml"); - } - - return is; - } - - /** - * Returns the InputStream of the jonas-webservices.xml file. - * - * @return the InputStream of the jonas-webservices.xml file. - * - * @throws IOException When InputStream cannot be returned. - */ - private InputStream getJonasWebservicesInputStream() throws IOException { - InputStream is = null; - - if (isPacked()) { - is = getInputStream("WEB-INF/jonas-webservices.xml"); - } else { - is = getInputStream("WEB-INF" + File.separator + "jonas-webservices.xml"); - } - - return is; - } - - /** - * Returns the InputStream of the context.xml file. - * - * @return the InputStream of the context.xml file. - * @throws IOException When InputStream cannot be returned - */ - private InputStream getContextInputStream() throws IOException { - InputStream is = null; - if (isPacked()) { - is = getInputStream("META-INF/context.xml"); - } else { - is = getInputStream("META-INF" + File.separator + "context.xml"); - } - - return is; - } - - /** - * Returns the InputStream of the web-jetty.xml file - * - * @return the InputStream of the web-jetty.xml file - * @throws IOException When InputStream cannot be returned - */ - private InputStream getWebJettyInputStream() throws IOException { - InputStream is = null; - if (isPacked()) { - is = getInputStream("WEB-INF/web-jetty.xml"); - } else { - is = getInputStream("WEB-INF" + File.separator + "web-jetty.xml"); - } - - return is; - } - - /** - * Returns a Map of name to Document for each modified Descriptor of the - * archive. - * - * @return a Map of name to Document - */ - public Map getDescriptors() { - return descriptors; - } - - /** - * Returns true if filename must be omitted in the archive. - * - * @param name filename to be tested - * - * @return true if filename must be omitted. - */ - public boolean omit(String name) { - return (name.equals("WEB-INF/web.xml") || name.equals("WEB-INF\\web.xml") - || name.equals("WEB-INF/jonas-web.xml") || name.equals("WEB-INF\\jonas-web.xml") - || name.equals("WEB-INF/webservices.xml") || name.equals("WEB-INF\\webservices.xml") - || name.equals("WEB-INF/jonas-webservices.xml") || name.equals("WEB-INF\\jonas-webservices.xml") - || name.equals("META-INF/context.xml") || name.equals("META-INF\\context.xml") - || name.equals("WEB-INF/web-jetty.xml") || name.equals("WEB-INF\\web-jetty.xml")); - } - - /** - * Initialize the Archive. - * @throws GenBaseException When initialization fails. - */ - public void initialize() throws GenBaseException { - File webappUnpackDir = getRootFile(); - try { - - if (getArchive().isPacked()) { - JarFile jf = new JarFile(getRootFile()); - TempRepository tr = TempRepository.getInstance(); - webappUnpackDir = tr.createDir(); - FileUtils.unpack(jf, webappUnpackDir); - jf.close(); - setArchive(new FileArchive(webappUnpackDir)); - } - - if (app == null) { - // simple webapp case - setModuleClassloader(new WebappClassLoader(webappUnpackDir.toURL(), Thread.currentThread() - .getContextClassLoader())); - } else { - // embedded webapp case - setModuleClassloader(new WebappClassLoader(webappUnpackDir.toURL(), app.getEJBClassLoader())); - } - } catch (IOException ioe) { - String err = getI18n().getMessage("WebApp.init.loader", getArchive().getRootFile()); - throw new GenBaseException(err, ioe); - } catch (FileUtilsException fue) { - String err = getI18n().getMessage("WebApp.init.loader", getArchive().getRootFile()); - throw new GenBaseException(err, fue); - } - - try { - webDD = WebDeploymentDescManager.getDeploymentDesc(webappUnpackDir.getAbsolutePath(), getModuleClassloader()); - } catch (DeploymentDescException dde) { - throw new GenBaseException(dde); - } - - try { - wsDD = WSDeploymentDescManager.getDeploymentDesc(webappUnpackDir.getAbsolutePath(), getModuleClassloader()); - } catch (DeploymentDescException dde) { - throw new GenBaseException(dde); - } - - // we want a List of service-ref - sRefs = new Vector(); - - IServiceRefDesc[] refs = webDD.getServiceRefDesc(); - - for (int i = 0; i < refs.length; i++) { - sRefs.add(refs[i]); - } - - // List of ejb-refs - ejbRefs = new Vector(); - IEJBRefDesc[] refDesc = webDD.getEjbRefDesc(); - - for (int i = 0; i < refDesc.length; i++) { - ejbRefs.add(refDesc[i]); - } - - } - - /** - * @return Returns the context-root to use for this group of Services. - */ - public String getContextRoot() { - return this.wsDD.getContextRoot(); - } - - /** - * Returns the list of ejb-ref elements contained by a module. - * @return the list of ejb-ref elements contained by a module. - */ - public List getEjbRefDescs() { - return ejbRefs; - } - - /** - * Close this archive - */ - public void close() { - sRefs = null; - ejbRefs = null; - webDD = null; - wsDD = null; - webApp = null; - app = null; - descriptors = null; - jonasWebApp = null; - webFilename = null; - webservices = null; - jonasWebservices = null; - context = null; - webjetty = null; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsClient.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsClient.java deleted file mode 100644 index 1cb9defeae..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsClient.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.util.List; - -/** - * represent an element client of webservice (webapp, ejb, client) - * - * @author Guillaume Sauthier - */ -public interface WsClient { - - /** - * Returns the list of service-ref elements contained by a module. - * - * @return the list of service-ref elements contained by a module. - */ - List getServiceRefDescs(); -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsEndpoint.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsEndpoint.java deleted file mode 100644 index d20552d730..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/archive/WsEndpoint.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.archive; - -import java.util.List; - -/** - * represent an element containing webservices.xml file (webapp, ejbjar) - * - * @author Guillaume Sauthier - */ -public interface WsEndpoint { - - /** - * Returns the list of webservice-description elements contained by a - * module. - * - * @return the list of webservice-description elements contained by a - * module. - */ - List getServiceDescs(); - - /** - * @return Returns the context-root to use for this group of Services. - */ - String getContextRoot(); -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/AbsGenerator.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/AbsGenerator.java deleted file mode 100644 index c373362a0d..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/AbsGenerator.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.generator; - -import java.io.File; -import java.io.FileFilter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.file.FileUtils; -import org.ow2.util.url.URLUtils; - -/** - * Generators provide a structure to be extended for specific generation - * mechanisms. - * @author Guillaume Sauthier - */ -public abstract class AbsGenerator { - - /** - * i18n - */ - private static I18n i18n = I18n.getInstance(AbsGenerator.class); - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_GENBASE_PREFIX); - - /** - * Configuration to be used - */ - private Config config; - - /** - * compiled classes directory - */ - private File classes; - - /** - * generated files directory - */ - private File sources; - - /** - * Creates a new Generator with the given Config. - * @param config internal configuration object. - * @throws GenBaseException When sources and target temporary directory - * cannot be created - */ - public AbsGenerator(final Config config) throws GenBaseException { - this.config = config; - - // creates temporary directories - TempRepository tr = TempRepository.getInstance(); - - try { - sources = tr.createDir(); - classes = tr.createDir(); - } catch (IOException ioe) { - String err = i18n.getMessage("AbsGenerator.constr.ioe"); - logger.log(BasicLevel.ERROR, err); - throw new GenBaseException(err, ioe); - } - } - - /** - * Generate files. - * @throws GenBaseException When generation fails. - */ - public abstract void generate() throws GenBaseException; - - /** - * Compile generated java files into classes directory. - * @throws GenBaseException When compilation fails - */ - public abstract void compile() throws GenBaseException; - - /** - * Recursively walk a directory tree and return a List of all files found. - * @param rootSrc root directory - * @param src base directory - * @return the list containing all found files - */ - protected List getJavaSources(final File rootSrc, final File src) { - List result = new ArrayList(); - - // add each java sources contained in the directory - File[] files = src.listFiles(new FileFilter() { - public boolean accept(File file) { - return file.isFile() && file.getName().endsWith(".java"); - } - }); - - for (int i = 0; i < files.length; i++) { - result.add(files[i].getPath().substring(rootSrc.getPath().length() + 1)); - } - - // reapply on subdirectories - files = src.listFiles(new FileFilter() { - public boolean accept(final File file) { - return file.isDirectory(); - } - }); - - for (int i = 0; i < files.length; i++) { - List deeperList = getJavaSources(rootSrc, files[i]); - result.addAll(deeperList); - } - - return result; - } - - /** - * Add generated files into an Archive - * @param archive the archive destination of generated files. - * @throws GenBaseException When files cannot be added in the given Archive. - */ - public abstract void addFiles(Archive archive) throws GenBaseException; - - /** - * @return the config. - */ - public Config getConfig() { - return config; - } - - /** - * @return the logger. - */ - public static Logger getLogger() { - return logger; - } - - /** - * @return the classes. - */ - public File getClasses() { - return classes; - } - - /** - * @return the sources. - */ - public File getSources() { - return sources; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/Config.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/Config.java deleted file mode 100644 index 85a877bf6d..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/Config.java +++ /dev/null @@ -1,423 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genbase.generator; - -import java.io.File; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.List; - -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; -import org.ow2.jonas.lib.util.Env; - -/** - * Configuration object storing generation params. - */ -public class Config { - - /** - * packed mode. - */ - public static final int PACKED = 0; - - /** - * unpacked mode. - */ - public static final int UNPACKED = 1; - - /** - * Java executable name. - */ - private String nameJava = "java"; - - /** - * Javac executable name. - */ - private String nameJavac = "javac"; - - /** - * Rmic executable name. - */ - private String nameRmic = "rmic"; - - /** - * Javac options. - */ - private List javacOpts = new ArrayList(); - - /** - * Bin directory for JDK. - */ - private String javaHomeBin = null; - - /** - * no config needed . - */ - private boolean noConfig = false; - - /** - * verbose mode. - */ - private boolean verbose = false; - - /** - * debug mode . - */ - private boolean debug = false; - - /** - * classpath. - */ - private String classpath = "."; - - /** - * output directory. - */ - private File out = new File("."); - - /** - * keep alrady generated files. - */ - private boolean keepGenerated = false; - - /** - * validating parser ? - */ - private boolean parseWithValidation = true; - - /** - * configuration error. - */ - private boolean error = false; - - /** - * file input name. - */ - private String inputname; - - /** help requested ? */ - private boolean help = false; - - /** - * Save mode (PACKED/UNPACKED). - */ - private int saveMode = PACKED; - - /** - * DTDs use is allowed. - */ - private boolean dtdsAllowed = false; - - /** - * Creates a new Config. Automatically setup javaHomeBin property. And - * create classpath from classloader. - */ - public Config() { - // Setup java_home/bin directory - setJavaHomeBin(System.getProperty("java.home", "")); - - if (!("".equals(getJavaHomeBin()))) { - if (Env.isOsMacOsX()) { - setJavaHomeBin(getJavaHomeBin() + File.separator + "bin" + File.separator); - } else { - // JRE Directory ! - setJavaHomeBin(getJavaHomeBin() + File.separator + ".." + File.separator + "bin" + File.separator); - } - } - - // classpath - URLClassLoader ucl = (URLClassLoader) (Thread.currentThread().getContextClassLoader()); - - // Try to detect the mode - if (ucl instanceof JClassLoader) { - setClasspath(((JClassLoader) ucl).getClassPath()); - } else { - setClasspath(extractURLs(ucl)); - } - } - - /** - * @param ucl the ClassLoader to search in - * @return Returns the classpath representation of that ClassLoader - */ - private String extractURLs(final URLClassLoader ucl) { - URL[] urls = ucl.getURLs(); - // for each URL - StringBuffer sb = new StringBuffer(); - boolean first = true; - for (int i = 0; i < urls.length; i++) { - String file = urls[i].getFile(); - if (!"".equals(file)) { - if (first) { - sb.append(file); - first = false; - } else { - sb.append(File.pathSeparator + file); - } - } - } - return sb.toString(); - } - - /** - * @param nameJavac Set javac command name to use - */ - public void setNameJavac(final String nameJavac) { - this.nameJavac = nameJavac; - } - - /** - * @return Returns the javac command name to use - */ - public String getNameJavac() { - return nameJavac; - } - - /** - * @param javacOpts Set javac Opts - */ - public void setJavacOpts(final List javacOpts) { - this.javacOpts = javacOpts; - } - - /** - * @return Returns the Javac Opts to use - */ - public List getJavacOpts() { - return javacOpts; - } - - /** - * @param javaHomeBin JAVA_HOME/bin directory - */ - public void setJavaHomeBin(final String javaHomeBin) { - this.javaHomeBin = javaHomeBin; - } - - /** - * @return Returns the JAVA_HOME/bin directory - */ - public String getJavaHomeBin() { - return javaHomeBin; - } - - /** - * @param noConfig Generate Configuration ? - */ - public void setNoConfig(final boolean noConfig) { - this.noConfig = noConfig; - } - - /** - * @return Returns noConfig option - */ - public boolean isNoConfig() { - return noConfig; - } - - /** - * @param verbose Verbose ? - */ - public void setVerbose(final boolean verbose) { - this.verbose = verbose; - } - - /** - * @return Returns verbose option - */ - public boolean isVerbose() { - return verbose; - } - - /** - * @param debug Debug ? - */ - public void setDebug(final boolean debug) { - this.debug = debug; - } - - /** - * @return Returns debug option - */ - public boolean isDebug() { - return debug; - } - - /** - * @param classpath Classpath to use with java commands - */ - public void setClasspath(final String classpath) { - this.classpath = classpath; - } - - /** - * @return Retruns Classpath - */ - public String getClasspath() { - return classpath; - } - - /** - * @param out Output directory - */ - public void setOut(final File out) { - this.out = out; - } - - /** - * @return Returns Ouput directory - */ - public File getOut() { - return out; - } - - /** - * @param keepGenerated Kepp Generated files ? - */ - public void setKeepGenerated(final boolean keepGenerated) { - this.keepGenerated = keepGenerated; - } - - /** - * @return Returns keepGenerated option - */ - public boolean isKeepGenerated() { - return keepGenerated; - } - - /** - * @param parseWithValidation Parse XML desc with validation ? - */ - public void setParseWithValidation(final boolean parseWithValidation) { - this.parseWithValidation = parseWithValidation; - } - - /** - * @return Returns validation - */ - public boolean isParseWithValidation() { - return parseWithValidation; - } - - /** - * @param error Error Mode ? - */ - public void setError(final boolean error) { - this.error = error; - } - - /** - * @return Returns true if there is Configuration errors - */ - public boolean isError() { - return error; - } - - /** - * @param inputname File inputname - */ - public void setInputname(final String inputname) { - this.inputname = inputname; - } - - /** - * @return Returns file input name - */ - public String getInputname() { - return inputname; - } - - /** - * @param help Help Mode ? - */ - public void setHelp(final boolean help) { - this.help = help; - } - - /** - * @return Returns Help option. - */ - public boolean isHelp() { - return help; - } - - /** - * Set Packed Mode for storing. - */ - public void setSavePacked() { - this.saveMode = PACKED; - } - - /** - * Set UnPacked Mode for storing. - */ - public void setSaveUnpacked() { - this.saveMode = UNPACKED; - } - - /** - * @return Returns Save mode - */ - public int getSaveMode() { - return saveMode; - } - - /** - * @return Returns the nameRmic. - */ - public String getNameRmic() { - return nameRmic; - } - - /** - * @param nameRmic The nameRmic to set. - */ - public void setNameRmic(final String nameRmic) { - this.nameRmic = nameRmic; - } - - /** - * @return the java command - */ - public String getNameJava() { - return nameJava; - } - - /** - * @return true if the use of DTDs is allowed. - */ - public boolean isDTDsAllowed() { - return dtdsAllowed; - } - - /** - * Use of DTDs. - * @param dTDsAllowed The dtdsAllowed to set. - */ - public void setDTDsAllowed(final boolean dTDsAllowed) { - this.dtdsAllowed = dTDsAllowed; - } -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactories.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactories.java deleted file mode 100644 index 41ab7fff5b..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactories.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genbase.generator; - -/** - * Allow to get/set current factory - * @author Florent Benoit - */ -public class GeneratorFactories { - - /** - * Current generator factory - */ - private static GeneratorFactory currentFactory = null; - - /** - * Utility class, no constructor - */ - private GeneratorFactories() { - - } - - /** - * @return the currentFactory. - */ - public static GeneratorFactory getCurrentFactory() { - return currentFactory; - } - - /** - * Set the current factory - * @param currentFactory The factory to set. - */ - public static void setCurrentFactory(GeneratorFactory currentFactory) { - GeneratorFactories.currentFactory = currentFactory; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactory.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactory.java deleted file mode 100644 index f98064de20..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/generator/GeneratorFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genbase.generator; - - -/** - * All factories have to implement getter/setter on configuration object - * @author Florent Benoit - */ -public interface GeneratorFactory { - - /** - * Set the Configuration to use with newly created Generator. - * @param config the Configuration to use with newly created Generator. - */ - void setConfiguration(Config config); - - /** - * Get the Configuration to use with newly created Generator. - * @return the Configuration to use with newly created Generator - */ - Config getConfiguration(); -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsApplicationModifier.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsApplicationModifier.java deleted file mode 100644 index b440a9d183..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsApplicationModifier.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Modify a given Application. - * @author Guillaume Sauthier - * @author Florent Benoit - */ -public abstract class AbsApplicationModifier extends ArchiveModifier { - - /** - * ejbjar modifiers - */ - private List ejbModifiers = null; - - /** - * web modifiers - */ - private List webModifiers = null; - - /** - * client modifiers - */ - private List cltModifiers = null; - - /** - * Wrapped application - */ - private Application app = null; - - /** - * Configuration used to save - */ - private Config config = null; - - /** - * Creates a new ApplicationModifier. - * @param archive the Application J2EE archive - * @param config the configuration object - */ - public AbsApplicationModifier(Application archive, Config config) { - super(archive); - this.config = config; - app = archive; - initVectors(); - init(); - } - - /** - * Init the vectors of modifiers - */ - private void initVectors() { - // create lists - ejbModifiers = new Vector(); - webModifiers = new Vector(); - cltModifiers = new Vector(); - } - - /** - * initialize modifier - */ - protected abstract void init(); - - /** - * Modify the current archive and return a modified archive. - * @return a modified archive. - * @throws GenBaseException When modifications fails - */ - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing Application " + app.getName()); - - /** - * Modify inner modules - */ - for (Iterator i = webModifiers.iterator(); i.hasNext();) { - ArchiveModifier wm = (ArchiveModifier) i.next(); - Archive a = wm.modify(); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Modifying WebApp '" + a.getName() + "'"); - } - app.addFile(a.getRootFile()); - } - - for (Iterator i = cltModifiers.iterator(); i.hasNext();) { - ArchiveModifier cm = (ArchiveModifier) i.next(); - Archive a = cm.modify(); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Modifying Client '" + a.getName() + "'"); - } - app.addFile(a.getRootFile()); - } - - for (Iterator i = ejbModifiers.iterator(); i.hasNext();) { - ArchiveModifier em = (ArchiveModifier) i.next(); - Archive a = em.modify(); - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Modifying EjbJar '" + a.getName() + "'"); - } - app.addFile(a.getRootFile()); - } - - return save(config, "apps" + File.separator + app.getName()); - - } - - /** - * @return the cltModifiers. - */ - protected List getCltModifiers() { - return cltModifiers; - } - - /** - * @return the ejbModifiers. - */ - protected List getEjbModifiers() { - return ejbModifiers; - } - - /** - * @return the webModifiers. - */ - protected List getWebModifiers() { - return webModifiers; - } - /** - * @return the application element. - */ - protected Application getApplication() { - return app; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsModifierFactory.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsModifierFactory.java deleted file mode 100644 index 0017eb319d..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/AbsModifierFactory.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2007 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genbase.modifier; - - - -/** - * Used to create the right ArchiveModifier from a given filename (ear, jar, - * war, ...). - * - * @author Guillaume Sauthier - * @author Florent Benoit (make common class for client stubs and WsGen) - */ -public abstract class AbsModifierFactory { - - /** - * Application Archive mode. - */ - public static final int APPLICATION = 0; - - /** - * EjbJar Archive mode. - */ - public static final int EJBJAR = 1; - - /** - * WebApp Archive mode. - */ - public static final int WEBAPP = 2; - - /** - * ApplicationClient Archive mode. - */ - public static final int CLIENT = 3; - - /** - * Utility class (no default public constructor). - */ - protected AbsModifierFactory() { - - } - -} diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/ArchiveModifier.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/ArchiveModifier.java deleted file mode 100644 index 22d5958040..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/modifier/ArchiveModifier.java +++ /dev/null @@ -1,132 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.modifier; - -import java.io.File; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.FileArchive; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.JarArchive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.utils.ArchiveStorer; -import org.ow2.jonas.generators.genbase.utils.DirStorer; -import org.ow2.jonas.generators.genbase.utils.JarStorer; -import org.ow2.jonas.lib.util.Log; - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Modify a J2EEArchive - * @author Guillaume Sauthier - */ -public abstract class ArchiveModifier { - - /** - * J2EEArchive to be modified - */ - private J2EEArchive archive; - - /** logger */ - private static Logger logger = Log.getLogger(Log.JONAS_GENBASE_PREFIX); - - /** - * Creates a new ArchiveModifier object. - * @param archive rchive to be modified - */ - public ArchiveModifier(J2EEArchive archive) { - this.archive = archive; - } - - /** - * Modify the current archive and return a modified archive. - * @return a modified archive. - * @throws GenBaseException When Archive modification fails - */ - public abstract Archive modify() throws GenBaseException; - - /** - * Save the curernt archive usin given configuration and given out filename. - * @param config configuration to use - * @param outname filename - * @param archive archive to be saved - * @return the save Archive - * @throws GenBaseException is save fails. - */ - protected static Archive save(Config config, String outname, J2EEArchive archive) throws GenBaseException { - ArchiveStorer storer = null; - File endfile = new File(config.getOut(), outname); - Archive out = null; - - if (config.getSaveMode() == Config.PACKED) { - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Saving '" + endfile + "' in packed form..."); - } - storer = new JarStorer(archive, endfile); - storer.store(); - out = new JarArchive(endfile); - } else { - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Saving '" + endfile + "' in unpacked form..."); - } - storer = new DirStorer(archive, endfile); - storer.store(); - out = new FileArchive(endfile); - } - - return out; - - } - - /** - * Save the current archive using given configuration and given out filename. - * @param config configuration to use - * @param outname filename - * @return the save Archive - * @throws GenBaseException is save fails. - */ - protected Archive save(Config config, String outname) throws GenBaseException { - return save(config, outname, archive); - } - - /** - * @return the logger. - */ - public static Logger getLogger() { - return logger; - } - - /** - * @return returns the J2EE Archive which wil be modified. - */ - public J2EEArchive getArchive() { - return this.archive; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/ArchiveStorer.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/ArchiveStorer.java deleted file mode 100644 index f2fa578b5e..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/ArchiveStorer.java +++ /dev/null @@ -1,198 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.utils; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; -import org.ow2.jonas.lib.util.XMLSerializer; -import org.w3c.dom.Document; - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Store an Archive in compressed or uncompressed format - * - * @author Guillaume Sauthier - */ -public abstract class ArchiveStorer { - - /** Buffer Size */ - public static final int MAX_BUFFER_SIZE = 1024; - - /** i18n */ - private static I18n i18n = I18n.getInstance(ArchiveStorer.class); - - /** logger */ - private static Logger logger = Log.getLogger(Log.JONAS_GENBASE_PREFIX); - - /** - * base J2EEArchive to be saved - */ - private J2EEArchive archive; - - /** - * already saved filenames - */ - private List already; - - /** output filename */ - private String out = ""; - - /** - * Creates a new ArchiveStorer object. - * - * @param archive archive to be saved - */ - public ArchiveStorer(J2EEArchive archive) { - this.archive = archive; - already = new Vector(); - // we must use Manifestof the J2EEArchive - already.add(convertName("META-INF/MANIFEST.MF")); - } - - /** - * Fill an OutputStream with content from an InputStream - * - * @param is InputStream - * @param os OutputStream - * - * @throws IOException When filling fails - */ - protected static void fill(InputStream is, OutputStream os) throws IOException { - byte[] buffer = new byte[MAX_BUFFER_SIZE]; - int read; - - while ((read = is.read(buffer, 0, MAX_BUFFER_SIZE)) != -1) { - os.write(buffer, 0, read); - } - os.flush(); - } - - /** - * add a file in saved archive - * - * @param name file name - * - * @throws IOException When save fails - */ - protected abstract void addFile(String name) throws IOException; - - /** - * convert a filename from unix to windows filename and reverse - * - * @param name name to be converted - * - * @return converted filename - */ - protected abstract String convertName(String name); - - /** - * Returns an OutputStream from the given name - * - * @param name the filename we want to open/create - * - * @return an OutputStream from the given name - * - * @throws IOException When OS cannot be created - */ - protected abstract OutputStream getOutputStream(String name) throws IOException; - - /** - * Store the content of the contained archive. - * - * @throws GenBaseException When cannot add all files - */ - public void store() throws GenBaseException { - - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Writing '" + out + "' ..."); - } - - for (Iterator i = archive.getContainedFiles().iterator(); i.hasNext();) { - String name = (String) i.next(); - - try { - if (!archive.omit(convertName(name)) && !already.contains(convertName(name))) { - - addFile(name); - already.add(convertName(name)); - } - } catch (IOException ioe) { - String err = i18n.getMessage("ArchiveStorer.store.addFile", name); - throw new GenBaseException(err, ioe); - } - } - - // add Descriptors - Map descs = archive.getDescriptors(); - - for (Iterator i = descs.keySet().iterator(); i.hasNext();) { - String name = (String) i.next(); - - try { - XMLSerializer ser = new XMLSerializer((Document) descs.get(name)); - OutputStream os = getOutputStream(name); - ser.serialize(os); - os.flush(); - } catch (IOException ioe) { - String err = i18n.getMessage("ArchiveStorer.store.serialize", name); - throw new GenBaseException(err, ioe); - } - } - } - /** - * @return Returns the i18n. - */ - public static I18n getI18n() { - return i18n; - } - - /** - * @return Returns the archive. - */ - public J2EEArchive getArchive() { - return archive; - } - - /** - * @param out The out to set. - */ - public void setOut(String out) { - this.out = out; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/DirStorer.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/DirStorer.java deleted file mode 100644 index 37a15d51fc..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/DirStorer.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.utils; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; - - -/** - * Store a J2EEArchive in an unpacked form. - * - * @author Guillaume Sauthier - */ -public class DirStorer extends ArchiveStorer { - - /** - * directory name containing unpacked archive. - */ - private File base; - - /** - * Creates a new DirStorer object. - * - * @param archive archive to be stored - * @param dir output directory - * - * @throws GenBaseException if cannot create output directory - */ - public DirStorer(J2EEArchive archive, File dir) throws GenBaseException { - super(archive); - - setOut(dir.getAbsolutePath()); - - // assure base exists - if (!dir.exists()) { - if (!dir.mkdirs()) { - String err = getI18n().getMessage("DirStorer.constr.create", dir); - throw new GenBaseException(err); - } - } - - base = dir; - } - - /** - * Convert a filename to a local filesystem filename. - * - * @param name name to be converted - * - * @return converted filename - */ - protected String convertName(String name) { - return name.replace('/', File.separatorChar); - } - - /** - * add a given file in the filesystem. - * - * @param name filename - * - * @throws IOException When fill fails. - */ - protected void addFile(String name) throws IOException { - OutputStream fos = getOutputStream(name); - InputStream is = getArchive().getInputStream(name); - fill(is, fos); - is.close(); - fos.close(); - } - - /** - * returns the OuputStream corresponding to the given filename. - * - * @param name filename to create - * - * @return An OutputStream - * - * @throws IOException When file creation fails. - */ - protected OutputStream getOutputStream(String name) throws IOException { - File out = new File(base, convertName(name)); - File parent = out.getParentFile(); - - if (!parent.exists()) { - if (!parent.mkdirs()) { - String err = getI18n().getMessage("DirStorer.getOutputStream.create", out); - throw new IOException(err); - } - } - - OutputStream os = new FileOutputStream(out); - - return os; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/JarStorer.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/JarStorer.java deleted file mode 100644 index 62e71d6066..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/JarStorer.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.utils; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.jar.JarOutputStream; -import java.util.zip.ZipEntry; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; - - -/** - * Store a J2EEArchive in a Jar file. - * - * @author Guillaume Sauthier - */ -public class JarStorer extends ArchiveStorer { - - /** - * Jar file filled as OutputStream - */ - private JarOutputStream jos; - - /** - * Creates a new JarStorer object. - * - * @param archive archive to be stored - * @param jar outout jar file - * - * @throws GenBaseException When cannot create output jar - */ - public JarStorer(J2EEArchive archive, File jar) throws GenBaseException { - super(archive); - - setOut(jar.getAbsolutePath()); - - try { - if (!jar.getParentFile().exists()) { - if (!jar.getParentFile().mkdirs()) { - String err = getI18n().getMessage("JarStorer.constr.create", jar.getParentFile()); - throw new GenBaseException(err); - } - } - - jos = new JarOutputStream(new FileOutputStream(jar), archive.getManifest()); - } catch (IOException ioe) { - String err = getI18n().getMessage("JarStorer.constr.ioe", jar); - throw new GenBaseException(err, ioe); - } - } - - /** - * Convert a name from any format in Jar filename format - * - * @param name filename to be converted - * - * @return converted filename - */ - protected String convertName(String name) { - return name.replace('\\', '/'); - } - - /** - * Add a file in Jar - * - * @param name file name to be added - * - * @throws IOException when filling fails. - */ - protected void addFile(String name) throws IOException { - ZipEntry ze = new ZipEntry(convertName(name)); - jos.putNextEntry(ze); - - InputStream is = getArchive().getInputStream(name); - fill(is, jos); - is.close(); - } - - /** - * Store the archive and close the streams. - * - * @throws GenBaseException When Output Jar cannot be closed - */ - public void store() throws GenBaseException { - super.store(); - - try { - jos.flush(); - jos.close(); - } catch (IOException ioe) { - String err = getI18n().getMessage("JarStorer.store.close"); - throw new GenBaseException(err, ioe); - } - } - - /** - * returns the OuputStream corresponding to the given filename. - * - * @param name filename to create - * - * @return An OutputStream - * - * @throws IOException When file creation fails. - */ - protected OutputStream getOutputStream(String name) throws IOException { - ZipEntry ze = new ZipEntry(convertName(name)); - jos.putNextEntry(ze); - - return jos; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/TempRepository.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/TempRepository.java deleted file mode 100644 index 734a11808e..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/TempRepository.java +++ /dev/null @@ -1,165 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.utils; - -import java.io.File; -import java.io.IOException; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -/** - * A TempRepository object is tye main container for temporary - * directories. When an object of WsGen or ClientStubGen wants to use a temporary directory, it - * ask TempRepository instance to create a new one. It is usefull when multiples - * tempo directories are created. Deletion is much more simpler. The - * TempRepository is a Singleton. - * - * @author Guillaume Sauthier - */ -public class TempRepository { - - /** the TempRepository instance */ - private static TempRepository instance = null; - - /** list of temporary directories */ - private List directories; - - /** - * Create a new empty TempRepository. - */ - private TempRepository() { - directories = new Vector(); - } - - /** - * Return the only instance of TempRepository. - * - * @return the only instance of TempRepository. - */ - public static TempRepository getInstance() { - if (instance == null) { - instance = new TempRepository(); - } - - return instance; - } - - /** - * Add a temporary File in the repository (file or directory). - * - * @param file the temporary file or directory to add. - */ - public void addDir(File file) { - directories.add(file); - } - - /** - * Delete all the files contained in the repository. Returns true when - * deletion is successfull, false otherwise. - * - * @return true when deletion is successfull, false otherwise. - */ - public boolean deleteAll() { - boolean result = true; - - for (Iterator i = directories.iterator(); i.hasNext();) { - File dir = (File) i.next(); - i.remove(); - - // delete only if file exists - if (dir.exists()) { - result &= delete(dir); - } - } - - return result; - } - - /** - * Delete a file or directory recursively - * - * @param f file or directory to be deleted - * - * @return true if deletion ok, false otherweise. - */ - private boolean delete(File f) { - if (f.isFile()) { - return f.delete(); - } else { - File[] childs = f.listFiles(); - if (childs == null) { - // no childs - return f.delete(); - } else { - // childs - boolean result = true; - for (int i = 0; i < childs.length; i++) { - result &= delete(childs[i]); - } - return result && f.delete(); - } - } - } - - /** - * Return an empty temporary directory and automatically add it into the - * repository. - * - * @return an empty temporary directory. - * - * @throws IOException when creation fails. - */ - public File createDir() throws IOException { - return createDir(null); - } - - /** - * Return an empty temporary directory and automatically add it into the - * repository. - * - * @return an empty temporary directory. - * - * @throws IOException when creation fails. - */ - public File createDir(final String extension) throws IOException { - // create file - File tmp = File.createTempFile("genbase", extension); - - if (!tmp.delete()) { - throw new IOException("Cannot delete temporary file"); - } - - // create directory - if (!tmp.mkdir()) { - throw new IOException("Cannot create temporary directory"); - } - - // add in repo - addDir(tmp); - - return tmp; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/XMLUtils.java b/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/XMLUtils.java deleted file mode 100644 index 938b46ba7f..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/java/org/ow2/jonas/generators/genbase/utils/XMLUtils.java +++ /dev/null @@ -1,568 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genbase.utils; - -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.ow2.jonas.deployment.client.JonasAppClientDTDs; -import org.ow2.jonas.deployment.client.JonasAppClientSchemas; -import org.ow2.jonas.deployment.common.lib.JEntityResolver; -import org.ow2.jonas.deployment.ear.EarDTDs; -import org.ow2.jonas.deployment.ear.EarSchemas; -import org.ow2.jonas.deployment.ejb.JonasEjbjarDTDs; -import org.ow2.jonas.deployment.ejb.JonasEjbjarSchemas; -import org.ow2.jonas.deployment.web.JonasWebAppDTDs; -import org.ow2.jonas.deployment.web.JonasWebAppSchemas; -import org.ow2.jonas.deployment.web.WebAppDTDs; -import org.ow2.jonas.deployment.web.WebAppSchemas; -import org.ow2.jonas.deployment.ws.JonasWsSchemas; -import org.ow2.jonas.deployment.ws.WsSchemas; -import org.ow2.jonas.generators.genbase.NoJ2EEWebservicesException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; -import org.xml.sax.SAXException; - - - - - - - -/** - * XML Utils Class. Holds methods for easier DOM parsing, XML modifications, ... - * @author Guillaume Sauthier - */ -public class XMLUtils { - - /** DOM factory */ - private static DocumentBuilderFactory factory = null; - - /** - * J2EE namespace - */ - private static final String J2EE_NS = "http://java.sun.com/xml/ns/j2ee"; - - /** - * JONAS namespace - */ - private static final String JONAS_NS = "http://www.objectweb.org/jonas/ns"; - - /** - * XML NS namespace - */ - private static final String XMLNS_NS = "http://www.w3.org/2000/xmlns/"; - - /** - * XML Schema instance namespace - */ - private static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance"; - - /** - * jonas-session tag name - */ - private static final String SESSION_BEAN = "jonas-session"; - - /** - * jonas-entity tag name - */ - private static final String ENTITY_BEAN = "jonas-entity"; - - /** - * jonas-message-driven tag name - */ - private static final String MESSAGE_BEAN = "jonas-message-driven"; - - /** - * ejb-name tag name - */ - private static final String EJB_NAME = "ejb-name"; - - /** - * servlet tag name - */ - private static final String SERVLET = "servlet"; - - /** - * servlet-name tag name - */ - private static final String SERVLET_NAME = "servlet-name"; - - /** - * jonas-service-ref tag name - */ - private static final String JONAS_SERVICE_REF = "jonas-service-ref"; - - /** - * service-ref-name tag name - */ - private static final String SR_NAME = "service-ref-name"; - - /** - * Empty private constructor for Utility Class - */ - private XMLUtils() { - } - - /** - * Returns a new DocumentBuilderFactory. - * @param validating set the parser validating or not - * @return a new DocumentBuilderFactory. - */ - private static DocumentBuilderFactory newFactory(boolean validating) { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setValidating(validating); - setFactoryValidation (factory, validating); - - return factory; - } - - /** - * Sets the validation for the factory - * - * @param factory the factory - * @param validating to turn on or off validation - */ - private static void setFactoryValidation (DocumentBuilderFactory factory, boolean validating) { - factory.setValidating(validating); - // ignore white space can only be set if parser is validating - factory.setIgnoringElementContentWhitespace(validating); - factory.setAttribute("http://apache.org/xml/features/validation/schema", new Boolean(validating)); - } - - - /** - * Creates a new Document from a given InputStream. Validate the file. - * - * @param is the InputStream to be parsed - * @param name filename - * @param isDTDsAllowed if false, throw exception on DTD Doctype - * - * @return the Document instance. - * - * @throws ParserConfigurationException ParserConfigurationException - * @throws SAXException SAXException - * @throws IOException IOException - * @throws NoJ2EEWebservicesException NoJ2EEWebservicesException - */ - public static Document newDocument(InputStream is, String name, boolean isDTDsAllowed) throws ParserConfigurationException, SAXException, IOException, NoJ2EEWebservicesException { - - return newDocument (is, name, isDTDsAllowed, true); - } - - /** - * Creates a new Document from a given InputStream. - * - * @param is the InputStream to be parsed - * @param name filename - * @param isDTDsAllowed if false, throw exception on DTD Doctype - * @param validate if the file is to be validated - * - * @return the Document instance. - * - * @throws ParserConfigurationException ParserConfigurationException - * @throws SAXException SAXException - * @throws IOException IOException - * @throws NoJ2EEWebservicesException NoJ2EEWebservicesException - */ - public static Document newDocument(InputStream is, String name, boolean isDTDsAllowed, boolean validate) - throws NoJ2EEWebservicesException, ParserConfigurationException, SAXException, IOException { - - if (factory == null) { - factory = newFactory(validate); - } - - if (factory.isValidating() != validate) { - setFactoryValidation(factory, validate); - } - - DocumentBuilder builder = factory.newDocumentBuilder(); - - // add entity resolver - if (factory.isValidating()) { - JEntityResolver jer = new JEntityResolver(); - // add Schemas - jer.addSchemas(new WebAppSchemas()); - jer.addSchemas(new JonasWebAppSchemas()); - jer.addSchemas(new JonasEjbjarSchemas()); - jer.addSchemas(new JonasAppClientSchemas()); - jer.addSchemas(new EarSchemas()); - jer.addSchemas(new WsSchemas()); - jer.addSchemas(new JonasWsSchemas()); - - // add DTDs - jer.addDtds(new WebAppDTDs()); - jer.addDtds(new JonasWebAppDTDs()); - jer.addDtds(new JonasEjbjarDTDs()); - jer.addDtds(new JonasAppClientDTDs()); - jer.addDtds(new EarDTDs()); - - builder.setEntityResolver(jer); - } - Document doc = builder.parse(is); - // close InputStream when finished parsing - is.close(); - if (doc.getDoctype() != null && !isDTDsAllowed) { - // DTD case - // -> Throw Exception - throw new NoJ2EEWebservicesException(name + " use a DTD. Only XML Schema are accepted for J2EE 1.4 webservices"); - } - return doc; - } - - - /** - * Returns the session/entity/ - * message-driven XML Element with given name. - * @param base jonas-ejb-jar Element. - * @param bName the bean name to be found. - * @return the session/entity/ - * message-driven XML Element. - */ - public static Element getBeanElement(Element base, String bName) { - Element found = null; - - // try Session Bean - NodeList sessions = base.getElementsByTagNameNS(JONAS_NS, SESSION_BEAN); - - for (int i = 0; (i < sessions.getLength()) && (found == null); i++) { - Element session = (Element) sessions.item(i); - NodeList names = session.getElementsByTagNameNS(JONAS_NS, EJB_NAME); - - // ejb-name mandatory and unique - Element name = (Element) names.item(0); - - if (name.getFirstChild().getNodeValue().equals(bName)) { - found = session; - } - } - - // try Entity Bean - NodeList entities = base.getElementsByTagNameNS(JONAS_NS, ENTITY_BEAN); - - for (int i = 0; (i < entities.getLength()) && (found == null); i++) { - Element entity = (Element) entities.item(i); - NodeList names = entity.getElementsByTagNameNS(JONAS_NS, EJB_NAME); - - // ejb-name mandatory and unique - Element name = (Element) names.item(0); - - if (name.getFirstChild().getNodeValue().equals(bName)) { - found = entity; - } - } - - // try Message Driven Bean - NodeList messages = base.getElementsByTagNameNS(JONAS_NS, MESSAGE_BEAN); - - for (int i = 0; (i < messages.getLength()) && (found == null); i++) { - Element message = (Element) messages.item(i); - NodeList names = message.getElementsByTagNameNS(JONAS_NS, EJB_NAME); - - // ejb-name mandatory and unique - Element name = (Element) names.item(0); - - if (name.getFirstChild().getNodeValue().equals(bName)) { - found = message; - } - } - - return found; - } - - /** - * Returns the matching servlet XML Element with given name. - * @param base web-app Element. - * @param sName the servlet name to be found. - * @return the matching servlet XML Element. - */ - public static Element getServletElement(Element base, String sName) { - Element found = null; - - // Search servlet List - NodeList servlets = base.getElementsByTagNameNS(J2EE_NS, SERVLET); - - for (int i = 0; (i < servlets.getLength()) && (found == null); i++) { - Element servlet = (Element) servlets.item(i); - NodeList names = servlet.getElementsByTagNameNS(J2EE_NS, SERVLET_NAME); - - // servlet-name mandatory and unique - Element name = (Element) names.item(0); - - if (name.getFirstChild().getNodeValue().equals(sName)) { - found = servlet; - } - } - - return found; - } - - /** - * Returns the jonas-service-ref XML Element with given name. - * @param base web-app/ bean Element containing - * jonas-service-ref Element(s). - * @param srName the service-ref name to be found. - * @return the jonas-service-ref XML Element. - */ - public static Element getJonasServiceRef(Element base, String srName) { - Element found = null; - - // Search jonas-service-ref list - if (base != null) { - NodeList jsrs = base.getElementsByTagNameNS(JONAS_NS, JONAS_SERVICE_REF); - - for (int i = 0; (i < jsrs.getLength()) && (found == null); i++) { - Element jsr = (Element) jsrs.item(i); - - NodeList names = jsr.getElementsByTagNameNS(JONAS_NS, SR_NAME); - - // service-ref-name mandatory and unique - Element name = (Element) names.item(0); - - if (name != null) { - // found jonas:service-ref-name - if (name.getFirstChild().getNodeValue().equals(srName)) { - found = jsr; - } - } - } - } - - return found; - } - - /** - * default application.xml contains a fake ejb module needed to be parsed - * without error but not needed for a normal application. Than we remove it. - * @param doc application.xml document - */ - public static void cleanDummyApplication(Document doc) { - Element root = doc.getDocumentElement(); - NodeList nl = root.getElementsByTagNameNS(J2EE_NS, "module"); - root.removeChild(nl.item(0)); - } - - /** - * Add an ejb module in an application Document - * @param app application.xml Document - * @param ejbjar EJBJar archive - */ - public static void addEjb(Document app, Archive ejbjar) { - Element module = app.createElementNS(J2EE_NS, "module"); - Element ejb = app.createElementNS(J2EE_NS, "ejb"); - Text ejbText = app.createTextNode(ejbjar.getRootFile().getName()); - ejb.appendChild(ejbText); - module.appendChild(ejb); - - insertModule(app, module); - } - - /** - * Add a client module in an application Document - * @param app application.xml Document - * @param client Client archive - */ - public static void addClient(Document app, Archive client) { - Element module = app.createElementNS(J2EE_NS, "module"); - Element clt = app.createElementNS(J2EE_NS, "java"); - Text cltText = app.createTextNode(client.getRootFile().getName()); - clt.appendChild(cltText); - module.appendChild(clt); - - insertModule(app, module); - } - - /** - * Add an web module in an application Document - * @param app application.xml Document - * @param webapp WebApp archive - * @param ctx context-root - */ - public static void addWebApp(Document app, Archive webapp, String ctx) { - Element module = app.createElementNS(J2EE_NS, "module"); - Element web = app.createElementNS(J2EE_NS, "web"); - Element webUri = app.createElementNS(J2EE_NS, "web-uri"); - Element context = app.createElementNS(J2EE_NS, "context-root"); - - Text webText = app.createTextNode(webapp.getName()); - Text ctxText = app.createTextNode(ctx); - webUri.appendChild(webText); - context.appendChild(ctxText); - - web.appendChild(webUri); - web.appendChild(context); - - module.appendChild(web); - - insertModule(app, module); - } - - /** - * Insert a module in application Document - * @param app application.xml Document - * @param module module Element - */ - private static void insertModule(Document app, Element module) { - Element application = app.getDocumentElement(); - Element first = findFirstSecurityRole(application); - application.insertBefore(module, first); - } - - /** - * return the first found security-role Element (or null if not found) - * @param app application.xml Document - * @return the first found security-role Element (or null if not found) - */ - private static Element findFirstSecurityRole(Element app) { - NodeList nl = app.getElementsByTagNameNS(J2EE_NS, "security-role"); - - if (nl.getLength() == 0) { - return null; - } else { - return (Element) nl.item(0); - } - } - - /** - * Creates a new XML Document for an empty jonas-client.xml. - * @return Returns a new XML Document for an empty jonas-client.xml. - */ - public static Document newJonasClient() { - - Document root = createDocument(); - - // jonas-client - Element jonasClient = root.createElementNS(JONAS_NS, "jonas-client"); - - // Automatically retrieve latest schema name - String schema = JonasAppClientSchemas.getLastSchema(); - addNamespaces(jonasClient, schema); - root.appendChild(jonasClient); - - return root; - } - - /** - * @return Returns an empty jonas-web-app Document - */ - public static Document newJonasWeb() { - - Document root = createDocument(); - - // jonas-web-app - Element jonasWebApp = root.createElementNS(JONAS_NS, "jonas-web-app"); - - // Automatically retrieve latest schema name - int index = JonasWebAppSchemas.JONAS_WEBAPP_SCHEMAS.length - 1; - String schema = JonasWebAppSchemas.JONAS_WEBAPP_SCHEMAS[index]; - addNamespaces(jonasWebApp, schema); - root.appendChild(jonasWebApp); - - return root; - } - - /** - * @return Returns an empty Document. - */ - private static Document createDocument() { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder builder; - try { - builder = factory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - throw new RuntimeException(e); - } - return builder.newDocument(); - } - - /** - * Add common namespaces to the given element and add schemaLocation - * @param e the Element to be updated - * @param schema the schema location value - */ - private static void addNamespaces(Element e, String schema) { - Document root = e.getOwnerDocument(); - // create xmlns="http://www.w3.org/XML/1998/namespace" - Attr xmlns = root.createAttributeNS(XMLNS_NS, "xmlns"); - xmlns.setValue(JONAS_NS); - - // create xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - Attr xsi = root.createAttributeNS(XMLNS_NS, "xmlns:xsi"); - xsi.setValue(XSI_NS); - - // create xsi:schemaLocation="http://www.objectweb.org/jonas/ns - // http://www.objectweb.org/jonas/ns/" - Attr schemaLocation = root.createAttributeNS(XSI_NS, "xsi:schemaLocation"); - schemaLocation.setValue(JONAS_NS + " " + JONAS_NS + "/" + schema); - - e.setAttributeNodeNS(xmlns); - e.setAttributeNodeNS(xsi); - e.setAttributeNodeNS(schemaLocation); - - } - - /** - * Check if the web module name is already declared in the application.xml Document - * @param app the application.xml Doc - * @param name web application name - * @return Returns true if the module is already declared, false otherwise. - */ - public static boolean isWebModuleAlreadyDeclared(Document app, String name) { - // Corresponding Xpath expression : //j2ee:module/j2ee:web/j2ee:web-uri == name - - Element found = null; - NodeList modules = app.getElementsByTagNameNS(J2EE_NS, "module"); - for (int i = 0; (i < modules.getLength()) && (found == null); i++) { - - // we check each module to see if it is a web module - Element module = (Element) modules.item(i); - NodeList webModules = module.getElementsByTagNameNS(J2EE_NS, "web"); - for (int j = 0; (j < webModules.getLength()) && (found == null); j++) { - - // We should only have 0..1 web module in a j2ee:module - Element webModule = (Element) webModules.item(j); - NodeList weburiModules = webModule.getElementsByTagNameNS(J2EE_NS, "web-uri"); - // web-uri is mandatory and is the first element under j2ee:web - Element webUri = (Element) weburiModules.item(0); - if (webUri.getFirstChild().getNodeValue().equals(name)) { - found = webUri; - } - } - } - // "true" if element was found - return (found != null); - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/META-INF/jonas-generators-base.bnd b/jonas/modules/generators/jonas-genbase/src/main/resources/META-INF/jonas-generators-base.bnd deleted file mode 100644 index 37f358cd97..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/META-INF/jonas-generators-base.bnd +++ /dev/null @@ -1,24 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.generators.genbase.* diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/I18n.properties b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/I18n.properties deleted file mode 100644 index 932c7397ba..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/I18n.properties +++ /dev/null @@ -1,27 +0,0 @@ -# $Id$ - -Application.init.unpackException Cannot unpack archive ''{0}'' -Application.init.earDDExc Cannot load application Descriptor from ''{0}'' - -FileArchive.constr.manifest Error in Manifest from ''{0}'' - -J2EEArchive.isDTDsAllowed.noFactory No current generator factory. The setCurrentFactory should be called -J2EEArchive.isDTDsAllowed.noConfig No configuration found in the current generator factory - -JarArchive.constr.jar Cannot construct a JarFile from ''{0}'' - -WebApp.loadDescriptors.prepare Cannot setup an appropriate XML Parser -WebApp.loadDescriptors.parseError Parse error in web/jonas-web Descriptor -WebApp.init.loader Cannot create WebApp ClassLoader for ''{0}'' - -Client.loadDescriptors.prepare Cannot setup an appropriate XML Parser -Client.loadDescriptors.parseError Parse error in jonas-client Descriptor -Client.init.loader Cannot create Client ClassLoader for ''{0}'' - -EjbJar.loadDescriptors.prepare Cannot setup an appropriate XML Parser -EjbJar.loadDescriptors.parseError Parse error in jonas-ejb-jar Descriptor -EjbJar.init.loader Cannot create EjbJar ClassLoader for ''{0}'' - -Application.loadDescriptors.prepare Cannot setup an appropriate XML Parser -Application.loadDescriptors.parseError Parse error in application Descriptor -Application.init.loader Cannot create Application ClassLoader for ''{0}'' diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/application.xml b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/application.xml deleted file mode 100644 index 158be67cdb..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/application.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - generated ear - - fake - - diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/context.xml b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/context.xml deleted file mode 100644 index dd1d6b33bb..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/context.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/jonas-web.xml b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/jonas-web.xml deleted file mode 100644 index f318331ef7..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/jonas-web.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web-jetty.xml b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web-jetty.xml deleted file mode 100644 index 154ddef5f9..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web-jetty.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web.xml b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web.xml deleted file mode 100644 index a434390ce3..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/archive/web.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - WebApp Dispatching SOAP Requests to SSBs - - - - wsdl - text/xml - - - - - xsd - text/xml - - - - index.html - index.jsp - - - \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/generator/I18n.properties b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/generator/I18n.properties deleted file mode 100644 index 8de0a2e8ad..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/generator/I18n.properties +++ /dev/null @@ -1,3 +0,0 @@ -# $Id$ - -AbsGenerator.constr.ioe Cannot create temporary directories diff --git a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/utils/I18n.properties b/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/utils/I18n.properties deleted file mode 100644 index 0ee347d27e..0000000000 --- a/jonas/modules/generators/jonas-genbase/src/main/resources/org/ow2/jonas/generators/genbase/utils/I18n.properties +++ /dev/null @@ -1,11 +0,0 @@ -# $Id$ - -ArchiveStorer.store.addFile Cannot add file ''{0}'' in archive -ArchiveStorer.store.serialize Cannot serialize XML Descriptor ''{0}'' - -DirStorer.constr.create Cannot create directory ''{0}'' -DirStorer.getOutputStream.create Cannot create parent directories ''{0}'' - -JarStorer.constr.ioe Cannot create file ''{0}'' -JarStorer.store.close Cannot close jar output stream -JarrStorer.constr.create Cannot create directory ''{0}'' diff --git a/jonas/modules/generators/jonas-genclientstub/pom.xml b/jonas/modules/generators/jonas-genclientstub/pom.xml deleted file mode 100644 index b1e9a939e4..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - org.ow2.jonas - jonas-generators - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-generators-clientstubs - bundle - JOnAS :: Generators :: Client Stubs - - - - org.ow2.jonas - jonas-commons - ${project.version} - - - org.ow2.jonas - jonas-deployment - ${project.version} - - - org.ow2.jonas - jonas-generators-base - ${project.version} - - - org.ow2.fastrmic - fastrmic - - - org.ow2.carol - carol - - - org.ow2.bundles - ow2-util-ee-deploy-impl - - - \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGen.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGen.java deleted file mode 100644 index 55b682832e..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGen.java +++ /dev/null @@ -1,276 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004-2008 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub; - -import java.io.File; -import java.util.StringTokenizer; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.generators.genbase.NoJ2EEWebservicesException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.generator.GeneratorFactories; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.jonas.generators.genclientstub.generator.GeneratorFactory; -import org.ow2.jonas.generators.genclientstub.modifier.ModifierFactory; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; - -/** - * Main class of the client stub generator Class. Some code come from WsGen - * classes (Guillaume Sauthier) - * @author Florent Benoit - */ -public class ClientStubGen { - - /** - * logger. - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.generators.genclientstub"); - - /** - * Set to false if input file cannot be processed (DTDs). - */ - private boolean inputModified = true; - - /** - * Private Constructor for Utility class. - */ - public ClientStubGen() { - } - - /** - * Main method. - * @param args Commend line args - * @throws Exception When the execute method fails - */ - public static void main(final String[] args) throws Exception { - ClientStubGen stubGen = new ClientStubGen(); - stubGen.execute(args); - } - - /** - * Method used by main method and by external class to retrieve the name of - * the modified or created file by ClientStubGen. - * @param args command line arguments - * @return the name of the modified or built - * @throws Exception When a failure occurs - */ - public String execute(final String[] args) throws Exception { - // store configuration properties - Config config = parseInput(args); - - if (config.isHelp() || config.isError() || config.getInputname() == null) { - // display usage message - usage(); - return null; - } - - return execute(config, null); - } - - /** - * Method used by main method and by external class to retrieve the name of - * the modified or created file by ClientStubGen. - * @param config the given config - * @param deployable the deployable to analyze - * @return the name of the modified or built - * @throws Exception When a failure occurs - */ - public String execute(final Config config, final IDeployable deployable) throws Exception { - GeneratorFactory gf = GeneratorFactory.getInstance(); - - // For this client generator, the use of DTDs is allowed - config.setDTDsAllowed(true); - - // setup configuration - gf.setConfiguration(config); - GeneratorFactories.setCurrentFactory(gf); - Archive modifiedArchive = null; - ArchiveModifier am = null; - // get the ArchiveModifier - try { - //TODO : get DTD only exception - am = ModifierFactory.getModifier(config.getInputname(), true, deployable); - - logger.log(BasicLevel.INFO, "Client stub generation for '" + config.getInputname() + "'"); - - // modify the given archive - modifiedArchive = am.modify(); - - // Get path - String path = modifiedArchive.getRootFile().getCanonicalPath(); - - return path; - } catch (NoJ2EEWebservicesException e) { - logger.log(BasicLevel.WARN, config.getInputname() + "Error while generating stubs : '" + e.getMessage() - + "'"); - inputModified = false; - return config.getInputname(); - } finally { - // close archive - if (am != null && am.getArchive() != null) { - am.getArchive().close(); - } - - modifiedArchive = null; - am = null; - - // delete all the temporary files created - TempRepository.getInstance().deleteAll(); - - System.gc(); - } - - } - - /** - * Parse Command Line input and returns a Config object. - * @param args Command Lines params - * @return a Config object - */ - private static Config parseInput(final String[] args) { - Config config = new Config(); - - // Get args - for (int argn = 0; argn < args.length; argn++) { - String arg = args[argn]; - - if (arg.equals("-help") || arg.equals("-?")) { - config.setHelp(true); - - continue; - } - - if (arg.equals("-verbose")) { - config.setVerbose(true); - - continue; - } - - if (arg.equals("-debug")) { - config.setDebug(true); - config.setVerbose(true); - - continue; - } - - if (arg.equals("-keepgenerated")) { - config.setKeepGenerated(true); - - continue; - } - - if (arg.equals("-noconfig")) { - config.setNoConfig(true); - - continue; - } - - if (arg.equals("-novalidation")) { - config.setParseWithValidation(false); - - continue; - } - - if (arg.equals("-javac")) { - config.setNameJavac(args[++argn]); - - continue; - } - - if (arg.equals("-javacopts")) { - argn++; - - if (argn < args.length) { - StringTokenizer st = new StringTokenizer(args[argn]); - - while (st.hasMoreTokens()) { - config.getJavacOpts().add(st.nextToken()); - } - } else { - config.setError(true); - } - - continue; - } - - if (arg.equals("-d")) { - argn++; - - if (argn < args.length) { - config.setOut(new File(args[argn])); - } else { - config.setError(true); - } - - continue; - } - - if (args[argn] != null) { - config.setInputname(args[argn]); - } else { - config.setError(true); - } - } - - return config; - - } - - /** - * Display the usage. - */ - public static void usage() { - StringBuffer msg = new StringBuffer(); - msg.append("Usage: java org.ow2.jonas.generators.genclientstub.ClientStubgen -help \n"); - msg.append(" to print this help message \n"); - msg.append(" or java org.ow2.jonas.generators.genclientstub.ClientStubgen \n"); - msg.append("Options include: \n"); - msg.append(" -d specify where to place the generated files \n"); - msg.append(" -novalidation parse the XML deployment descriptors without \n"); - msg.append(" validation \n"); - msg.append(" -javac specify the java compiler to use \n"); - msg.append(" -javacopts specify the options to pass to the java compiler \n"); - msg.append(" -keepgenerated do not delete intermediate generated files \n"); - msg.append(" -noconfig do not generate configuration files (require \n"); - msg.append(" user provided files) \n"); - msg.append(" -verbose \n"); - msg.append(" -debug \n"); - msg.append(" \n"); - msg.append(" Input_File the ejb-jar, war or ear filename\n"); - System.out.println(msg.toString()); - } - - /** - * @return the inputModified flag - */ - public boolean isInputModified() { - return inputModified; - } -} diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGenException.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGenException.java deleted file mode 100644 index 5a43b64b2a..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/ClientStubGenException.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub; - -import org.ow2.jonas.generators.genbase.GenBaseException; - -/** - * This class represents the exception that can be throwned by the ClientStubGen tool. - * @author Florent Benoit - */ -public class ClientStubGenException extends GenBaseException { - - /** - * Constructs a ClientStubGenException with no specified detail message. - */ - public ClientStubGenException() { - super(); - } - - /** - * Constructs an ClientStubGenException with the specified detail message. - * @param msg Error message - */ - public ClientStubGenException(String msg) { - super(msg); - } - - /** - * Constructs an ClientStubGenException with the specified detail message. - * @param inner Cause Exception to wrap - */ - public ClientStubGenException(Exception inner) { - super(inner); - } - - /** - * Constructs an ClientStubGenException with the specified detail message. - * @param msg Error message - * @param inner Cause Exception to wrap - */ - public ClientStubGenException(String msg, Exception inner) { - super(msg, inner); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/Generator.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/Generator.java deleted file mode 100644 index a61baa8f66..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/Generator.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub.generator; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.carol.util.configuration.ConfigurationRepository; -import org.ow2.fastrmic.RMIC; -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.AbsGenerator; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genclientstub.ClientStubGenException; -import org.ow2.jonas.lib.bootstrap.JProp; -import org.ow2.jonas.lib.loader.AbsModuleClassLoader; -import org.ow2.jonas.lib.util.Cmd; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; - -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; - -/** - * Generator used to generate Stubs for clients. - * @author Florent Benoit - */ -public class Generator extends AbsGenerator { - - /** - * logger. - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.generators.genclientstub"); - /** - * i18n. - */ - private static I18n i18n = I18n.getInstance(Generator.class); - - /** - * EjbRef used for this generator. - */ - private IEJBRefDesc ejbRef = null; - - /** - * Class used if no ejbRef is given. - */ - private String intfStubClassName = null; - - /** - * Archive used by the modifier. - */ - private Archive archive = null; - - /** - * Creates a new Generator with the given Config. - * @param config internal configuration object. - * @param ejbRef reference to the ejb on which we want create the stub - * @param intfStubClassName name of the interface - * @param archive given ejbjar, webapp, ... - * @throws GenBaseException When sources and target temporary directory - * cannot be created - */ - public Generator(Config config, IEJBRefDesc ejbRef, String intfStubClassName, Archive archive) throws GenBaseException { - super(config); - this.ejbRef = ejbRef; - this.intfStubClassName = intfStubClassName; - this.archive = archive; - } - - /** - * Generate stub files. - * @throws ClientStubGenException When generation fails. - */ - public void generate() throws ClientStubGenException { - - try { - //URL[] urls = null; - String archiveClasspath = null; - - J2EEArchive arch = (J2EEArchive) this.archive; - AbsModuleClassLoader loader = (AbsModuleClassLoader) arch.getModuleClassloader(); - - archiveClasspath = loader.getClasspath(); - - // itf class - String itfClass = null; - if (ejbRef != null) { - itfClass = ejbRef.getHome(); - } else { - itfClass = intfStubClassName; - } - - // TODO Now try to load the class and check if stub is here - - // Add to the rmic Classpath all the lib and classes of the archive - String classpath = getConfig().getClasspath() + File.pathSeparator + archiveClasspath; - - // Add client.jar to the classpath - String jRoot = JProp.getJonasRoot(); - if (jRoot != null) { - classpath = jRoot + File.separator + "lib" + File.separator + "client.jar" + File.pathSeparator + classpath; - } - - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Using classpath '" + classpath + "'."); - } - - - // Get current protocol - String rmiName = ConfigurationRepository.getCurrentConfiguration().getProtocol().getName(); - - if (rmiName.equalsIgnoreCase("iiop") && itfClass != null) { - Cmd iiopCmd = new Cmd(getConfig().getJavaHomeBin() + getConfig().getNameRmic()); - iiopCmd.addArgument("-classpath"); - iiopCmd.addArgument(classpath); - iiopCmd.addArgument("-iiop"); - iiopCmd.addArgument("-poa"); - iiopCmd.addArgument("-always"); - iiopCmd.addArgument("-keepgenerated"); - iiopCmd.addArgument("-g"); - - iiopCmd.addArgument("-d"); - iiopCmd.addArgument(getClasses().getCanonicalPath()); - iiopCmd.addArguments(getConfig().getJavacOpts()); - - // add itf class as arg name - iiopCmd.addArgument(itfClass); - - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Running '" + iiopCmd.toString() + "'"); - } - if (iiopCmd.run()) { - getLogger().log(BasicLevel.INFO, - "Client stubs for classname '" + itfClass + "' successfully generated for protocol 'iiop'."); - } else { - String err = i18n.getMessage("Generator.generate.error"); - getLogger().log(BasicLevel.ERROR, err); - throw new ClientStubGenException(err); - } - - } else if (itfClass != null && (("jrmp".equalsIgnoreCase(rmiName) || "irmi".equalsIgnoreCase(rmiName)))) { - Cmd jrmpCmd = new Cmd(getConfig().getJavaHomeBin() + getConfig().getNameRmic()); - jrmpCmd.addArgument("-classpath"); - jrmpCmd.addArgument(classpath); - jrmpCmd.addArgument("-keepgenerated"); - jrmpCmd.addArgument("-g"); - jrmpCmd.addArgument("-d"); - jrmpCmd.addArgument(getClasses().getCanonicalPath()); - jrmpCmd.addArguments(getConfig().getJavacOpts()); - - // add itf class as arg name - jrmpCmd.addArgument(itfClass); - - ArrayList args = new ArrayList(); - boolean skip = true; - for (Iterator it = jrmpCmd.getCommandLine(); it.hasNext();) { - Object o = it.next(); - if (skip) { - skip = false; - continue; - } - args.add(o); - } - - // Build the stub using Fast RMIC - String[] a = (String[]) args.toArray(new String[] {}); - RMIC rmic = new RMIC(a); - - if (rmic.run()) { - getLogger().log(BasicLevel.INFO, - "Client stubs for classname '" + itfClass + "' successfully generated for protocol '" + rmiName + "'."); - } else { - String err = i18n.getMessage("Generator.generate.error"); - getLogger().log(BasicLevel.ERROR, err); - throw new ClientStubGenException(err, rmic.getException()); - } - - } - - - - } catch (Exception e) { - String err = i18n.getMessage("Generator.generate.error"); - getLogger().log(BasicLevel.ERROR, err); - throw new ClientStubGenException(err, e); - } - - } - - /** - * Compile generated java files into classes directory. Do nothing in case - * of clientstub generator as all classes are generated - * @throws ClientStubGenException When compilation fails - */ - public void compile() throws ClientStubGenException { - } - - /** - * Add generated files into an Archive - * @param archive the archive destination of generated files. - * @throws ClientStubGenException When files cannot be added in the given - * Archive. - */ - public void addFiles(Archive archive) throws ClientStubGenException { - if (archive instanceof WebApp) { - archive.addDirectoryIn("WEB-INF/classes/", getClasses()); - } else if (archive instanceof EjbJar) { - archive.addDirectory(getClasses()); - } else if (archive instanceof Client) { - archive.addDirectory(getClasses()); - } - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/GeneratorFactory.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/GeneratorFactory.java deleted file mode 100644 index 6ca3d48bf3..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/generator/GeneratorFactory.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub.generator; - -import org.ow2.jonas.generators.genbase.generator.Config; - -/** - * A GeneratorFactory has to be extended by specific generation - * mecanism. - * @author Florent Benoit - */ -public class GeneratorFactory implements org.ow2.jonas.generators.genbase.generator.GeneratorFactory { - - /** GeneratorFactory unique instance */ - private static GeneratorFactory instance = null; - - /** Configuration to set on instanciated Generator */ - private Config configuration; - - /** - * Utility class, no constructor - */ - private GeneratorFactory() { - - } - - /** - * Returns the unique GeneratorFactory instance. - * @return the unique GeneratorFactory instance. - */ - public static GeneratorFactory getInstance() { - if (instance == null) { - instance = newInstance(); - } - - return instance; - } - - /** - * Create a new generatorFactory instance - * @return a new generatorFactory instance. - - */ - private static GeneratorFactory newInstance() { - return new GeneratorFactory(); - } - - /** - * Set the Configuration to use with newly created Generator. - * @param config the Configuration to use with newly created Generator. - */ - public void setConfiguration(Config config) { - this.configuration = config; - } - - /** - * Get the Configuration to use with newly created Generator. - * @return the Configuration to use with newly created Generator - */ - public Config getConfiguration() { - return configuration; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/AbsArchiveModifier.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/AbsArchiveModifier.java deleted file mode 100644 index fb82f93d8b..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/AbsArchiveModifier.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.genclientstub.ClientStubGenException; -import org.ow2.jonas.generators.genclientstub.generator.Generator; - - -/** - * Defines common methods used by all modifier - */ -public abstract class AbsArchiveModifier extends ArchiveModifier { - - /** - * Constructor - * @param archive the j2ee archive - */ - public AbsArchiveModifier(J2EEArchive archive) { - super(archive); - } - - /** - * Modify the current archive and return a modified archive. - * @return a modified archive. - * @throws GenBaseException When Client Generation or storing phase fails. - */ - public abstract Archive modify() throws GenBaseException; - - /** - * Generates stub/tie classes for a given archive with its config - * @param config configuration to use for the generator - * @param archive the file containing the remote class - * @throws ClientStubGenException if the generation fails - */ - protected void generateFoundStubs(Config config, Archive archive) throws ClientStubGenException { - - // List of classes on which generate stubs - List classesStub = new ArrayList(); - try { - List files = archive.getContainedFiles(); - - for (Iterator itFiles = files.iterator(); itFiles.hasNext();) { - String clName = (String) itFiles.next(); - if (clName.endsWith("_Stub.class") || clName.endsWith("_Tie.class")) { - // Extract classname from stub and add entry in the list - if (archive instanceof WebApp) { - if (clName.startsWith("WEB-INF/classes/")) { - classesStub.add(clName.substring("WEB-INF/classes/".length())); - } - } else { - classesStub.add(clName); - } - } - } - - // launch generation for all classes found - for (Iterator itClass = classesStub.iterator(); itClass.hasNext();) { - String clName = (String) itClass.next(); - - // Remove stub name - int removeStubIdx = 0; - if (clName.endsWith("_Stub.class")) { - removeStubIdx = clName.length() - "_Stub.class".length(); - } else if (clName.endsWith("_Tie.class")) { - removeStubIdx = clName.length() - "_Tie.class".length(); - } else { - continue; - } - clName = clName.substring(0, removeStubIdx); - - // Remove the _ from the className - int idx = clName.lastIndexOf('/') + 1; - if (clName.charAt(idx) == '_') { - String pkgName = clName.substring(0, idx); - clName = pkgName + clName.substring(idx + 1, clName.length()); - } - - // Translate / into . (/ is in jar entry, classname should contain .) - clName = clName.replaceAll("/", "."); - - // javax object and existing omg stubs - if (clName.indexOf("javax.") != -1 || clName.indexOf("org.omg.stub") != -1) { - continue; - } - - - // Doesn't take into account Home and Remote - if (clName.indexOf("Home") != -1 || clName.indexOf("Remote") != -1) { - continue; - } - - Generator g = new Generator(config, null, clName, archive); - try { - g.generate(); - g.compile(); - } catch (ClientStubGenException cstge) { - continue; - } - // add files in archive - g.addFiles(archive); - } - } catch (Exception e) { - throw new ClientStubGenException("Cannot find/build stubs from the file " + archive.getRootFile(), e); - } - - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ApplicationModifier.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ApplicationModifier.java deleted file mode 100644 index bff14ad80c..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ApplicationModifier.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.util.Iterator; - -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.AbsApplicationModifier; -import org.ow2.jonas.generators.genclientstub.generator.GeneratorFactory; - - -/** - * Modify a given Application. - * (code from WsGen) - * @author Florent Benoit - */ -public class ApplicationModifier extends AbsApplicationModifier { - - /** - * Creates a new ApplicationModifier. - * - * @param archive the Application J2EE archive - */ - public ApplicationModifier(Application archive) { - super(archive, GeneratorFactory.getInstance().getConfiguration()); - } - - /** - * initialize modifier - */ - protected void init() { - - // fill ejbjar list - for (Iterator i = getApplication().getEjbJars(); i.hasNext();) { - EjbJar ejbjar = (EjbJar) i.next(); - getEjbModifiers().add(new EjbJarModifier(ejbjar)); - } - - // fill webapp list - for (Iterator i = getApplication().getWebApps(); i.hasNext();) { - WebApp webapp = (WebApp) i.next(); - getWebModifiers().add(new WebAppModifier(webapp)); - } - - // fill client list - for (Iterator i = getApplication().getClients(); i.hasNext();) { - Client client = (Client) i.next(); - getCltModifiers().add(new ClientModifier(client)); - } - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ClientModifier.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ClientModifier.java deleted file mode 100644 index ba36fee04b..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ClientModifier.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genclientstub.generator.Generator; -import org.ow2.jonas.generators.genclientstub.generator.GeneratorFactory; - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Modify a given Client. - * - * @author Florent Benoit - */ -public class ClientModifier extends AbsArchiveModifier { - - /** client */ - private Client client; - - /** - * Creates a new ClientModifier object. - * - * @param client Client Archive - */ - public ClientModifier(Client client) { - super(client); - this.client = client; - } - - /** - * Modify the current archive and return a modified archive. - * - * @return a modified archive. - * - * @throws GenBaseException When Client Generation or storing phase fails. - */ - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing Client " + client.getName()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - - - // Found automatically the stubs - generateFoundStubs(gf.getConfiguration(), client); - - - - // Ejb-Ref - List ejbRefs = client.getEjbRefDescs(); - for (Iterator j = ejbRefs.iterator(); j.hasNext();) { - IEJBRefDesc ejbRef = (IEJBRefDesc) j.next(); - - // launch generation - Generator g = new Generator(gf.getConfiguration(), ejbRef, null, client); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(client); - } - - return save(gf.getConfiguration(), "clients" + File.separator + client.getRootFile().getName()); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/EjbJarModifier.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/EjbJarModifier.java deleted file mode 100644 index 14bd67a3f3..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/EjbJarModifier.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Ejb; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genclientstub.ClientStubGenException; -import org.ow2.jonas.generators.genclientstub.generator.Generator; -import org.ow2.jonas.generators.genclientstub.generator.GeneratorFactory; - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Modify a given EjbJar. - * @author Florent Benoit - */ -public class EjbJarModifier extends AbsArchiveModifier { - - /** - * Modified ejbjar - */ - private EjbJar ejbjar = null; - - /** - * Creates a new EjbJarModifier object. - * @param ejbjar EjbJar Archive - */ - public EjbJarModifier(EjbJar ejbjar) { - super(ejbjar); - this.ejbjar = ejbjar; - } - - /** - * modify the current EjbJar. If EjbJar is contained in not an application - * and have webservices endpoints, A DummyApplication is created and - * modification process launched against the newly created application. If - * EjbJar is contained in an application + webservices endpoints, a - * DummyWebApp is created to hold "facade" servlet managing SOAP processing. - * @return an EjbJar or an Application Archive - * @throws GenBaseException When generation or storing fails - * @throws ClientStubGenException When generation or storing fails - */ - public Archive modify() throws GenBaseException, ClientStubGenException { - - getLogger().log(BasicLevel.INFO, "Processing EjbJar " + ejbjar.getName()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - - // Found automatically the stubs - generateFoundStubs(gf.getConfiguration(), ejbjar); - - // Ejb-Ref - List ejbs = ejbjar.getEjbs(); - for (Iterator i = ejbs.iterator(); i.hasNext();) { - Ejb ejb = (Ejb) i.next(); - List ejbRefs = ejb.getEjbRefDescs(); - for (Iterator j = ejbRefs.iterator(); j.hasNext();) { - IEJBRefDesc ejbRef = (IEJBRefDesc) j.next(); - - // launch generation - Generator g = new Generator(gf.getConfiguration(), ejbRef, null, ejbjar); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(ejbjar); - } - } - - return save(gf.getConfiguration(), "ejbjars" + File.separator + ejbjar.getRootFile().getName()); - - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ModifierFactory.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ModifierFactory.java deleted file mode 100644 index b0e71b7bc7..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/ModifierFactory.java +++ /dev/null @@ -1,191 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.io.File; -import java.io.IOException; -import java.util.jar.JarFile; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.FileArchive; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.JarArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.AbsModifierFactory; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.genclientstub.ClientStubGenException; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.util.archive.api.IArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.ee.deploy.api.deployable.CARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EJBDeployable; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.ow2.util.ee.deploy.api.deployable.WARDeployable; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelper; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelperException; - -/** - * Used to create the right ArchiveModifier from a given filename (ear, jar, - * war, ... - * @author Guillaume Sauthier - */ -public class ModifierFactory extends AbsModifierFactory { - - /** - * I18n. - */ - private static I18n i18n = I18n.getInstance(ModifierFactory.class); - - /** - * Empty Constructor for utility class. - */ - private ModifierFactory() { - super(); - } - - /** - * Returns an ArchiveModifier according to archive type - * (application, ejbjar, webapp or client). - * @param filename input filename. - * @return an ArchiveModifier. - * @exception GenBaseException when archive creation fails. - */ - public static ArchiveModifier getModifier(final String filename) throws GenBaseException { - return getModifier(filename, true, null); - } - - /** - * Returns an ArchiveModifier according to archive type - * (application, ejbjar, webapp or client). - * @param filename input filename. - * @param init Initialize the archive. - * @param deployable the current deployable (can be null) - * @return an ArchiveModifier. - * @exception GenBaseException when archive creation fails. - */ - public static ArchiveModifier getModifier(final String filename, final boolean init, final IDeployable deployable) throws GenBaseException { - Archive archive = null; - J2EEArchive j2eeArchive = null; - ArchiveModifier modifier = null; - int mode; - IDeployable localDeployable = null; - - File file = new File(filename); - - if (file.exists()) { - if (file.isFile()) { - // should be a jar file - // test jar file - JarFile jarfile; - - try { - jarfile = new JarFile(file); - } catch (IOException ioe) { - // not a jar file - String err = i18n.getMessage("ModifierFactory.getModifier.notjar", filename); - throw new ClientStubGenException(err); - } - - // Create the inner Archive - archive = new JarArchive(file); - } else { - // directory unpacked - // Create the inner Archive - archive = new FileArchive(file); - } - - try { - if (deployable == null) { - // Build Archive - IArchive fileArchive = ArchiveManager.getInstance().getArchive(file); - localDeployable = DeployableHelper.getDeployable(fileArchive); - } else { - localDeployable = deployable; - } - } catch (DeployableHelperException e) { - throw new ClientStubGenException("Cannot get a deployable for the archive '" + archive + "'", e); - } - - // now we are sure that filename is a correct jar - if (localDeployable instanceof EARDeployable) { - // Application J2EE Archive - j2eeArchive = new Application(archive, localDeployable); - mode = APPLICATION; - } else if (localDeployable instanceof EJBDeployable) { - // EjbJar J2EE Archive - j2eeArchive = new EjbJar(archive); - mode = EJBJAR; - - } else if (localDeployable instanceof WARDeployable) { - // WebApp J2EE Archive - j2eeArchive = new WebApp(archive); - mode = WEBAPP; - - } else if (localDeployable instanceof CARDeployable) { - // Client J2EE Archive - j2eeArchive = new Client(archive); - mode = CLIENT; - - } else { - // unsupported archive type - String err = i18n.getMessage("ModifierFactory.getModifier.unsupported", filename); - throw new ClientStubGenException(err); - } - } else { - String err = i18n.getMessage("ModifierFactory.getModifier.notfound", filename); - throw new ClientStubGenException(err); - } - - // init the archive - if (init) { - j2eeArchive.initialize(); - } - - // create the modifier - switch (mode) { - case APPLICATION: - modifier = new ApplicationModifier((Application) j2eeArchive); - break; - case EJBJAR: - modifier = new EjbJarModifier((EjbJar) j2eeArchive); - break; - case WEBAPP: - modifier = new WebAppModifier((WebApp) j2eeArchive); - break; - case CLIENT: - modifier = new ClientModifier((Client) j2eeArchive); - break; - default: - // cannot happen - } - - return modifier; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/WebAppModifier.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/WebAppModifier.java deleted file mode 100644 index 67e3040233..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/modifier/WebAppModifier.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genclientstub.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genclientstub.generator.Generator; -import org.ow2.jonas.generators.genclientstub.generator.GeneratorFactory; - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Modify a given WebApp. - * - * @author Guillaume Sauthier - */ -public class WebAppModifier extends AbsArchiveModifier { - - /** webapp */ - private WebApp web; - - /** - * Creates a new WebAppModifier - * - * @param webapp - * the WebApp J2EE archive - */ - public WebAppModifier(WebApp webapp) { - super(webapp); - web = webapp; - } - - /** - * Modify the current archive and return a modified archive. - * - * @return a modified archive. - * - * @throws GenBaseException - * When modification fails - */ - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing WebApp " + web.getName()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - - // Found automatically the stubs - generateFoundStubs(gf.getConfiguration(), web); - - // Ejb-Ref - List ejbRefs = web.getEjbRefDescs(); - for (Iterator j = ejbRefs.iterator(); j.hasNext();) { - IEJBRefDesc ejbRef = (IEJBRefDesc) j.next(); - - // launch generation - Generator g = new Generator(gf.getConfiguration(), ejbRef, null, web); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(web); - } - - return save(gf.getConfiguration(), "webapps" + File.separator - + web.getName()); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/wrapper/ClientGenStubWrapper.java b/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/wrapper/ClientGenStubWrapper.java deleted file mode 100644 index 4c17b6eca3..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/java/org/ow2/jonas/generators/genclientstub/wrapper/ClientGenStubWrapper.java +++ /dev/null @@ -1,156 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genclientstub.wrapper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.ow2.jonas.lib.bootstrap.LoaderManager; - - -/** - * ClientGenStub wrapper Used to launch ClientGenStub in DeployFile of JSR 88 - * @author Florent Benoit - */ -public class ClientGenStubWrapper { - - /** - * ClientGenStub fully qualified classname - */ - private static final String GENSTUB_CLASSNAME = "org.ow2.jonas.generators.genclientstub.ClientStubGen"; - - /** - * Number of arguments of execute method - */ - private static final int ARGS_NUMBER = 3; - - /** - * Method execute of ClientGenStub - */ - private static Method executeMethod = null; - - /** - * The archive was changed or not ? - */ - private static Method isInputModifiedMethod = null; - - /** - * ClientGenStub class - */ - private Object clientGenStub = null; - - /** - * Empty constructor. - */ - public ClientGenStubWrapper() { - }; - - /** - * Wrapper around ClientstubGen.execute(String[]) method - * @param fileName name of the file - * @return name of the modified/built file - * @throws Exception If ClientstubGen fails or if Reflection errors occurs - */ - public String callClientGenStubExecute(final String fileName) throws Exception { - LoaderManager lm = LoaderManager.getInstance(); - ClassLoader old = null; - - try { - ClassLoader ext = lm.getExternalLoader(); - old = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(ext); - if (executeMethod == null) { - Class clazz = ext.loadClass(GENSTUB_CLASSNAME); - executeMethod = clazz.getDeclaredMethod("execute", new Class[] {String[].class}); - } - - if (clientGenStub == null) { - Class clazz = ext.loadClass(GENSTUB_CLASSNAME); - clientGenStub = clazz.newInstance(); - } - - String[] args = new String[ARGS_NUMBER]; - args[0] = "-d"; - args[1] = System.getProperty("java.io.tmpdir"); - args[2] = fileName; - - return (String) executeMethod.invoke(clientGenStub, new Object[] {args}); - } catch (InvocationTargetException e) { - if (e.getTargetException() instanceof Error) { - throw (Error) e.getTargetException(); - } else { - throw new Exception("Exception when executing ClientstubGen.execute(String[])", e.getTargetException()); - } - } catch (Exception e) { - throw new Exception("Problems when invoking method ClientstubGen.execute(String[])", e); - } finally { - if (old != null) { - Thread.currentThread().setContextClassLoader(old); - } - } - } - - /** - * Wrapper around ClientGenStubGen.isModified() method - * @return true/false - * @throws Exception If ClientStub fails or if Reflection errors occurs - */ - public boolean callClientGenStubIsInputModifed() throws Exception { - LoaderManager lm = LoaderManager.getInstance(); - ClassLoader old = null; - - try { - ClassLoader ext = lm.getExternalLoader(); - old = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(ext); - - if (isInputModifiedMethod == null) { - Class clazz = ext.loadClass(GENSTUB_CLASSNAME); - isInputModifiedMethod = clazz.getDeclaredMethod("isInputModified", new Class[] {}); - } - - if (clientGenStub == null) { - Class clazz = ext.loadClass(GENSTUB_CLASSNAME); - clientGenStub = clazz.newInstance(); - } - - return ((Boolean) isInputModifiedMethod.invoke(clientGenStub, (Object[]) null)).booleanValue(); - } catch (InvocationTargetException e) { - if (e.getTargetException() instanceof Error) { - throw (Error) e.getTargetException(); - } else { - throw new Exception("Exception when executing clientGenStub.isInputModified()", e.getTargetException()); - } - } catch (Exception e) { - throw new Exception("Problems when invoking method clientGenStub.isInputModified()", e); - } finally { - if (old != null) { - Thread.currentThread().setContextClassLoader(old); - } - } - } -} - diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/resources/META-INF/jonas-generators-clientstubs.bnd b/jonas/modules/generators/jonas-genclientstub/src/main/resources/META-INF/jonas-generators-clientstubs.bnd deleted file mode 100644 index f25e81b567..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/resources/META-INF/jonas-generators-clientstubs.bnd +++ /dev/null @@ -1,36 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.generators.genclientstub.* - -DynamicImport-Package org.ow2.jonas.lib.ejb21.*, \ - org.objectweb.jorm.naming.*, \ - org.objectweb.perseus.persistence.api, \ - org.ow2.jonas.lib.ejb21.ha,\ - javax.* - - -# Add dependencies -Embed-Dependency asm;inline=true, \ - asm-attrs;inline=true, \ - fastrmic;inline=true \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/generator/I18n.properties b/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/generator/I18n.properties deleted file mode 100644 index dca304869f..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/generator/I18n.properties +++ /dev/null @@ -1,3 +0,0 @@ -# $Id$ - -Generator.generate.error=Error when running rmic for Client stub generation diff --git a/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/modifier/I18n.properties b/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/modifier/I18n.properties deleted file mode 100644 index 58bcd33df5..0000000000 --- a/jonas/modules/generators/jonas-genclientstub/src/main/resources/org/ow2/jonas/generators/genclientstub/modifier/I18n.properties +++ /dev/null @@ -1,5 +0,0 @@ -# $Id$ - -ModifierFactory.getModifier.notfound file not found ''{0}'' -ModifierFactory.getModifier.notjar ''{0}'' is not a jar file -ModifierFactory.getModifier.unsupported ''{0}'' is not a supported jar archive (should be EjbJar, WebApp, Client or Application) diff --git a/jonas/modules/generators/jonas-genic/pom.xml b/jonas/modules/generators/jonas-genic/pom.xml deleted file mode 100644 index 786a2343f6..0000000000 --- a/jonas/modules/generators/jonas-genic/pom.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - org.ow2.jonas - jonas-generators - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-genic - bundle - JOnAS :: Generators :: GenIC (EJB 2.1) - - - - org.ow2.jonas - jonas-ejb-container - ${project.version} - - - org.ow2.jonas - jonas-version - ${project.version} - - - org.objectweb.monolog - monolog-api - ${monolog.version} - - - org.objectweb.monolog - monolog-wrapper-velocity - ${monolog.version} - - - org.ow2.jonas - jonas-services-api - ${project.version} - - - org.ow2.jonas - jonas-deployment - ${project.version} - - - org.ow2.jonas - jonas-ejb2.1-ha - ${project.version} - - - org.objectweb.jorm - jorm-compiler - 2.9.3 - - - org.objectweb.jorm - jorm-core - ${jorm.version} - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - provided - - - velocity - velocity-dep - 1.4 - - - asm - asm - 1.5.3 - runtime - - - asm - asm-attrs - 1.5.3 - runtime - - - org.ow2.fastrmic - fastrmic - runtime - - - org.ow2.carol - carol - ${carol.version} - - - org.ow2.jonas - eclipse-compiler - ${project.version} - - - diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/BeanSources.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/BeanSources.java deleted file mode 100644 index 777b6ddb0c..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/BeanSources.java +++ /dev/null @@ -1,470 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; - -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.EntityCmp2Desc; -import org.ow2.jonas.deployment.ejb.EntityDesc; -import org.ow2.jonas.deployment.ejb.EntityJdbcCmp1Desc; -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; -import org.ow2.jonas.lib.ejb21.jorm.RdbMappingBuilder; -import org.ow2.jonas.lib.util.BeanNaming; -import org.ow2.jonas.lib.util.Log; - -import org.apache.velocity.app.VelocityEngine; - -import org.objectweb.jorm.compiler.api.JormCompilerParameter; -import org.objectweb.jorm.compiler.lib.JormCompiler; -import org.objectweb.jorm.metainfo.api.Manager; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * This class allows to generate the sources of: the class that implements the - * Enterprise bean's remote interface, the class that implements the Enterprise - * bean's home interface, the class that implements the Enterprise bean's local - * interface, the class that implements the Enterprise bean's localhome - * interface, the class of the Entity Handle in case of entity, and the extended - * class of the Bean for persistence in case of entity with CMP, of a given - * Enterprise Java Bean. - * @author Helene Joanin : Initial developer - * @author Philippe Durieux - * @author Sebastien Chassande - */ -public class BeanSources { - - /** - * java file suffix - */ - private static final String JAVA_SUFFIX = ".java"; - - /** - * EJBObject (Remote). May be null if no Remote interface. - */ - private String wrpRemoteFileName = null; - - /** - * EJBLocalObject (Local). May be null if no Local interface. - */ - private String wrpLocalFileName = null; - - /** - * Home. May be null if no Home interface. - */ - private String wrpHomeFileName = null; - - /** - * Home cluster file name. May be null if no Home interface. - */ - private String wrpHomeClusterFileName = null; - - /** - * Remote cluster file name. May be null if no Remote interface. - */ - private String wrpRemoteClusterFileName = null; - - /** - * LocalHome. May be null if no LocalHome interface. - */ - private String wrpLocalHomeFileName = null; - - /** - * Handle (for Entity only) - */ - private String wrpHandleFileName = null; - - /** - * Bean (for CMP Entity only) - */ - private String wrpBeanFileName = null; - - /** - * Service Endpoint filename - */ - private String wrpServiceEndpointFileName = null; - - /** - * Service Endpoint Home filename - */ - private String wrpSEHomeFileName = null; - - /** - * Interface for Cmp2 Entity coherence - */ - private String itfCohCmp2Entity = null; - - /** - * Source objects used to generate classes - */ - private ArrayList sources; - - /** - * Java sources that are not Remote - */ - private ArrayList noRemoteJava; - - /** - * directory where to place the generated files - */ - private String outdir = null; - - /** - * bean descriptor - */ - private BeanDesc dd = null; - - /** - * JORM compiler - */ - private JormCompiler jormCompiler; - - /** - * Jorm Manager - */ - private Manager manager = null; - - /** - * logger - */ - private Logger logger = null; - - private GenICParameters gp; - - private VelocityEngine ve; - - - /** - * BeanSources Constructor for bean that is not a entity with CMP2 - * @param beanDesc deployment descriptor of the bean - * @param gp @param gp GenIC parameters - * @param ve the Velocity engine - */ - public BeanSources(BeanDesc beanDesc, GenICParameters gp, VelocityEngine ve) { - logger = Log.getLogger(Log.JONAS_GENIC_PREFIX); - dd = beanDesc; - this.gp = gp; - outdir = gp.getOutputDirectory(); - this.ve = ve; - sources = new ArrayList(); - noRemoteJava = new ArrayList(); - } - - - /** - * BeanSources initialization. - * @param jc - * @param mgr - * @exception GenICException In error case - */ - public void init(JormCompiler jc, Manager mgr) throws GenICException { - jormCompiler = jc; - manager = mgr; - - // generated Home - if (dd.getHomeClass() != null) { - if (outdir.length() > 0) { - wrpHomeFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullWrpHomeName()); - } else { - wrpHomeFileName = dd.getWrpHomeName(); - } - - wrpHomeFileName = wrpHomeFileName.concat(JAVA_SUFFIX); - sources.add(new Source(dd, wrpHomeFileName, Source.HOME, ve, manager)); - - // generated Handle for Remote Entity bean - if (dd instanceof EntityDesc) { - if (outdir.length() > 0) { - wrpHandleFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullWrpHandleName()); - } else { - wrpHandleFileName = dd.getWrpHandleName(); - } - wrpHandleFileName = wrpHandleFileName.concat(JAVA_SUFFIX); - noRemoteJava.add(wrpHandleFileName); - sources.add(new Source(dd, wrpHandleFileName, Source.ENTITY_HANDLE, ve, manager)); - } - } - - // generated EJBObject (Remote) - if (dd.getRemoteClass() != null) { - if (outdir.length() > 0) { - wrpRemoteFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullWrpRemoteName()); - } else { - wrpRemoteFileName = dd.getWrpRemoteName(); - } - - wrpRemoteFileName = wrpRemoteFileName.concat(JAVA_SUFFIX); - sources.add(new Source(dd, wrpRemoteFileName, Source.REMOTE, ve, manager)); - } - - // generated LocalHome - if (dd.getLocalHomeClass() != null) { - if (outdir.length() > 0) { - wrpLocalHomeFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullWrpLocalHomeName()); - } else { - wrpLocalHomeFileName = dd.getWrpLocalHomeName(); - } - wrpLocalHomeFileName = wrpLocalHomeFileName.concat(JAVA_SUFFIX); - noRemoteJava.add(wrpLocalHomeFileName); - sources.add(new Source(dd, wrpLocalHomeFileName, Source.LOCAL_HOME, ve, manager)); - } - - // generated EJBLocalObject (Local) - if (dd.getLocalClass() != null) { - if (outdir.length() > 0) { - wrpLocalFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullWrpLocalName()); - } else { - wrpLocalFileName = dd.getWrpLocalName(); - } - wrpLocalFileName = wrpLocalFileName.concat(JAVA_SUFFIX); - noRemoteJava.add(wrpLocalFileName); - sources.add(new Source(dd, wrpLocalFileName, Source.LOCAL, ve, manager)); - } - - // generated ServiceEndpoint and SEHome - if (dd instanceof SessionStatelessDesc) { - SessionStatelessDesc ssd = (SessionStatelessDesc) dd; - if (ssd.getServiceEndpointClass() != null) { - // ServiceEndpoint - if (outdir.length() > 0) { - wrpServiceEndpointFileName = outdir + File.separatorChar - + BeanNaming.getPath(ssd.getFullWrpServiceEndpointName()); - } else { - wrpServiceEndpointFileName = ssd.getWrpServiceEndpointName(); - } - wrpServiceEndpointFileName = wrpServiceEndpointFileName.concat(JAVA_SUFFIX); - //noRemoteJava.add(wrpServiceEndpointFileName); // Accessed locally only - sources.add(new Source(dd, wrpServiceEndpointFileName, Source.SERVICE_ENDPOINT, ve, manager)); - // ServiceEndpointHome - if (outdir.length() > 0) { - wrpSEHomeFileName = outdir + File.separatorChar + BeanNaming.getPath(ssd.getFullWrpSEHomeName()); - } else { - wrpSEHomeFileName = ssd.getWrpSEHomeName(); - } - wrpSEHomeFileName = wrpSEHomeFileName.concat(JAVA_SUFFIX); - noRemoteJava.add(wrpSEHomeFileName); // Accessed locally only - sources.add(new Source(dd, wrpSEHomeFileName, Source.SERVICE_ENDPOINT_HOME, ve, manager)); - } - } - - // generated derived bean class for Entity Bean CMP - if (dd instanceof EntityJdbcCmp1Desc) { - if (outdir.length() > 0) { - wrpBeanFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullDerivedBeanName()); - } else { - wrpBeanFileName = dd.getDerivedBeanName(); - } - wrpBeanFileName = wrpBeanFileName.concat(JAVA_SUFFIX); - noRemoteJava.add(wrpBeanFileName); - sources.add(new Source(dd, wrpBeanFileName, Source.ENTITY_CMP_JDBC, ve, manager)); - } - if (dd instanceof EntityCmp2Desc) { - EntityCmp2Desc ecd = (EntityCmp2Desc) dd; - if (outdir.length() > 0) { - wrpBeanFileName = outdir + File.separatorChar + BeanNaming.getPath(dd.getFullDerivedBeanName()) - + JAVA_SUFFIX; - if (ecd.needJormCoherenceHelper()) { - itfCohCmp2Entity = outdir + File.separatorChar - + BeanNaming.getPath(ecd.getJormCoherenceHelperFQItfName()) + JAVA_SUFFIX; - } - } else { - wrpBeanFileName = BeanNaming.getPath(dd.getDerivedBeanName()) + JAVA_SUFFIX; - if (ecd.needJormCoherenceHelper()) { - itfCohCmp2Entity = BeanNaming.getPath(ecd.getJormCoherenceHelperItfName()) + JAVA_SUFFIX; - } - } - if (ecd.needJormCoherenceHelper()) { - sources.add(new Source(dd, itfCohCmp2Entity, Source.ITF_COH_CMP2_ENTITY, ve, manager)); - noRemoteJava.add(itfCohCmp2Entity); - } - noRemoteJava.add(wrpBeanFileName); - sources.add(new Source(dd, wrpBeanFileName, Source.ENTITY_CMP_JDBC, ve, manager)); - } - } - - /** - * Generates the java sources - * @throws GenICException in error case - */ - public void generate() throws GenICException { - // Generates the java sources - for (Iterator it = sources.iterator(); it.hasNext();) { - Source src = (Source) it.next(); - src.generate(); - } - } - - public void jormCompile(ArrayList jormList) throws GenICException { - - // In case of Cmp2, call jorm compiler. - if (dd instanceof EntityCmp2Desc) { - EntityCmp2Desc ecd = (EntityCmp2Desc) dd; - - // Build and fill a JormCompilerParameter dedicated to the bean - JormCompilerParameter cp = jormCompiler.getCompilerParameter(); - cp.setProjectName(RdbMappingBuilder.getProjectName()); - cp.setKeepSrc(true); - cp.setOutput(outdir); - cp.setClassMappingInheritance("org.ow2.jonas.lib.ejb21.jorm.RdbFactory"); - cp.setStateGenerated(true); - cp.setStateInheritance(ecd.getEjbClass().getName()); - switch (ecd.getLockPolicy()) { - case EntityDesc.LOCK_CONTAINER_READ_UNCOMMITTED: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchCRU"); - break; - case EntityDesc.LOCK_CONTAINER_SERIALIZED: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchCS"); - break; - case EntityDesc.LOCK_CONTAINER_SERIALIZED_TRANSACTED: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchCST"); - break; - case EntityDesc.LOCK_CONTAINER_READ_COMMITTED: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchCRC"); - break; - case EntityDesc.LOCK_DATABASE: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchDB"); - break; - case EntityDesc.LOCK_READ_ONLY: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchRO"); - break; - case EntityDesc.LOCK_CONTAINER_READ_WRITE: - cp.setBindingInheritance("org.ow2.jonas.lib.ejb21.JEntitySwitchCRW"); - break; - default: - throw new GenICException("Cannot find JEntitySwitch: Unknown lock policy"); - } - - // Run the Jorm Compiler - Collection jormflist = null; - try { - jormflist = jormCompiler.generateFiles(jormList); - } catch (Exception e) { - throw new GenICException("Problem during jorm generation", e); - } - // Save the list of Jorm generated files - for (Iterator i = jormflist.iterator(); i.hasNext();) { - String file = (String) i.next(); - logger.log(BasicLevel.DEBUG, "Jorm generated file: " + file); - noRemoteJava.add(file); - } - } - } - - /** - * @return Return the bean's name - */ - public String getEjbName() { - return dd.getEjbName(); - } - - /** - * @return Return the file name of the generated source for the Home (null - * if none) - */ - public String getWrpHomeFileName() { - return wrpHomeFileName; - } - - /** - * @return Return the file name of the cluster configuration for the Home - * (null if none) - */ - public String getWrpHomeClusterFileName() { - return wrpHomeClusterFileName; - } - - /** - * @return Return the file name of the cluster configuration for the Remote - * (null if none) - */ - public String getWrpRemoteClusterFileName() { - return wrpRemoteClusterFileName; - } - - - /** - * @return Return the file name of the generated source for the Remote (null - * if none) - */ - public String getWrpRemoteFileName() { - return wrpRemoteFileName; - } - - /** - * @return Return the class name of the generated source for the Remote - * (package included) - */ - public String getWrpRemoteClassName() { - return dd.getFullWrpRemoteName(); - } - - /** - * @return Return the file name of the generated source for the - * ServiceEndpoint (null if none) - */ - public String getWrpServiceEndpointFileName() { - return wrpServiceEndpointFileName; - } - - /** - * @return Return the file name of the generated source for the - * ServiceEndpointHome (null if none) - */ - public String getWrpSEHomeFileName() { - return wrpSEHomeFileName; - } - - /** - * @return Return the class name of the generated source for the - * ServiceEndpoint (package included) - */ - public String getWrpServiceEndpointClassName() { - if (dd instanceof SessionStatelessDesc) { - return ((SessionStatelessDesc) dd).getFullWrpServiceEndpointName(); - } - return null; - } - - /** - * @return Return the class name of the generated source for the Home - * (package included) - */ - public String getWrpHomeClassName() { - return dd.getFullWrpHomeName(); - } - - /** - * @return Returns the list of the sources that are not Remote - */ - public Collection getNoRemoteJavas() { - return noRemoteJava; - } -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenIC.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenIC.java deleted file mode 100644 index f18f7fe77f..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenIC.java +++ /dev/null @@ -1,1254 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; -import java.util.jar.Attributes; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.jar.JarOutputStream; -import java.util.jar.Manifest; - -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; -import org.objectweb.jorm.compiler.api.JormCompilerConfigurator; -import org.objectweb.jorm.compiler.lib.JormCompiler; -import org.objectweb.jorm.metainfo.api.Manager; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.Version; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.DeploymentDesc; -import org.ow2.jonas.deployment.ejb.DeploymentDescEjb2; -import org.ow2.jonas.deployment.ejb.EntityCmp2Desc; -import org.ow2.jonas.deployment.ejb.MessageDrivenDesc; -import org.ow2.jonas.deployment.ejb.lib.EjbDeploymentDescManager; -import org.ow2.jonas.eclipse.compiler.CompilationContext; -import org.ow2.jonas.eclipse.compiler.CompilerError; -import org.ow2.jonas.eclipse.compiler.JOnASCompiler; -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; -import org.ow2.jonas.lib.ejb21.Protocols; -import org.ow2.jonas.lib.ejb21.jorm.CMP2Bean; -import org.ow2.jonas.lib.ejb21.jorm.RdbMappingBuilder; -import org.ow2.jonas.lib.util.BeanNaming; -import org.ow2.jonas.lib.util.Cmd; -import org.ow2.jonas.lib.util.Env; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.file.FileUtils; -import org.ow2.util.file.FileUtilsException; - -/** - * This class allows to generate: - *
      - *
    • the classes that implements the Enterprise bean's remote interface, - *
    • the classes that implements the Enterprise bean's home interface, - *
    • the classes that implements the Handles of the Entity beans, - *
    • the classes that implements the persistence of the Entity beans with - * CMP, - *
    - * of all the Enterprise Java Beans defined in the given Deployment Descriptor. - * - * @author Helene Joanin : Initial developer - * @author Christophe Ney (Lutris Technologies) : Fix to handle arguments containing white spaces. - * @author Guillaume Riviere : Fix the addClassesInJar() method (on David, the Stub/Skel classes names are different). - * @author Dean Jennings : Remove System Exit (called now from server) - * @author Sami Lehtinen : use of java.util.jar api instead of jar command - */ -public class GenIC { - - /** - * Logger. - */ - public static Logger logger = Log.getLogger(Log.JONAS_GENIC_PREFIX); - - /** - * java.home property value (ended with '/'). - */ - private static String javaHomeBin = null; - - /** - * Is the command is verbose ? - */ - private boolean verbose = false; - - /** - * Name of the directory where to place the generated file. - */ - private String outputdir = null; - - /** - * Canonical name of the directory where to place the generated file. - */ - private String canonicalOutputdir = null; - - /** - * Are some container classes generated ? - */ - private boolean generatedIC; - - /** - * Path names of the generated files to delete. - */ - private ArrayList filesToDelete = null; - - /** - * Path names of the java generated sources (remote). - */ - private ArrayList remoteJavas = null; - - /** - * Path names of the java generated sources (no remote). - */ - private ArrayList noRemoteJavas = null; - - /** - * Names of the remote classes (package name included). - */ - private ArrayList remoteClasses = null; - - /** - * GenIC Parameters. - */ - private GenICParameters gp = null; - - /** - * Buffer size. - */ - private static final int BUFFER_SIZE = 4096; - - /** META dir. */ - private static final String META_DIR = "META-INF"; - - /** The path to the MANIFEST file. */ - private static final String MANIFEST_PATH = META_DIR + File.separator + "MANIFEST.MF"; - - /** - * GenIC allows to generate the container classes for JOnAS for the given - * Enterprise Java Beans. - *

    - * Usage: java org.ow2.jonas.generators.genic.GenIC -help
    - * to print this help message - *

    - * or java org.ow2.jonas.generators.genic.GenIC <Options><Input_File>
    - * to generate the container classes for the given EJBs. - *

    - * Options include: - *

      - *
    • -d <output_dir>specify where to place the generated files
    • - *
    • -noaddinjar do not add the generated classes in the given ejb-jar - * file
    • - *
    • -classpath <path> define the classpath to be used to compile classes
    • - *
    • -nocompil do not compile the generated source files via the java and - * rmi compilers
    • - *
    • -novalidation parse the XML deployment descriptors without - * validation
    • - *
    • -javac <opt>specify the name of the java compiler to use
    • - *
    • -javacopts <opt>specify the options to pass to the java compiler - *
    • - *
    • -rmicopts <opt>specify the options to pass to the rmi compiler
    • - *
    • -protocols list of protocol, separated by comma
    • - *
    • -keepgenerated do not delete intermediate generated source files - *
    • - *
    • -verbose
    • - *
    • -invokecmd invoke, in some case, directly the method of the java - * class corresponding to the command
    • - *
    - *

    - * Input_File file name of the standard deployment descriptor (.xml ended), - * or file name of the EJB-jar (.jar ended). - * @param args arguments for GenIC - */ - public static void main(final String[] args) { - boolean error = false; - - // don't use the fastrmic compiler by default - //boolean nofastrmic = false; - - String protocolNames = Protocols.RMI_JRMP; // Default to jrmp - - // Holder for GenIC params - GenICParameters gp = new GenICParameters(); - - // Get args - for (int argn = 0; argn < args.length; argn++) { - String arg = args[argn]; - if (arg.equals("-help") || arg.equals("-?")) { - gp.setHelp(true); - continue; - } - if (arg.equals("-verbose")) { - gp.setVerbose(true); - continue; - } - if (arg.equals("-debug")) { - // deprecated - continue; - } - if (arg.equals("-mappernames")) { - argn++; - // deprecated - logger.log(BasicLevel.LEVEL_WARN, "The -mappernames option is ignored (deprecated)"); - } - if (arg.equals("-protocols")) { - argn++; - if (argn < args.length) { - protocolNames = args[argn]; - continue; - } else { - error = true; - } - } - if (arg.equals("-keepgenerated")) { - gp.setKeepGenerated(true); - gp.getRmicOptions().add(args[argn]); - continue; - } - if (arg.equals("-nocompil")) { - gp.setCompil(false); - gp.setKeepGenerated(true); - continue; - } - if (arg.equals("-noaddinjar")) { - gp.setAddInJar(false); - continue; - } - if (arg.equals("-novalidation")) { - gp.setParseWithValidation(false); - continue; - } - if (arg.equals("-classpath")) { - gp.setClasspathParam(args[++argn]); - continue; - } - if (arg.equals("-javac")) { - argn++; - if (argn < args.length) { - gp.setJavacName(args[argn]); - } else { - error = true; - } - continue; - } - if (arg.equals("-javacopts")) { - argn++; - if (argn < args.length) { - StringTokenizer st = new StringTokenizer(args[argn]); - while (st.hasMoreTokens()) { - gp.getJavacOptions().add(st.nextToken()); - } - } else { - error = true; - } - continue; - } - if (arg.equals("-rmicopts")) { - argn++; - if (argn < args.length) { - StringTokenizer st = new StringTokenizer(args[argn]); - while (st.hasMoreTokens()) { - gp.getRmicOptions().add(st.nextToken()); - } - } else { - error = true; - } - continue; - } - if (arg.equals("-d")) { - argn++; - if (argn < args.length) { - gp.setOutputDirectory(args[argn]); - } else { - error = true; - } - continue; - } - if (arg.equals("-invokecmd")) { - gp.setInvokeCmd(true); - continue; - } - if (arg.equals("-fastrmic")) { - argn++; - // deprecated - logger.log(BasicLevel.WARN, "The -fastrmic option is ignored as it is the default value. Use -nofastrmic to disable it."); - continue; - } - - if (arg.equals("-nofastrmic")) { - argn++; - gp.setFastRmicEnabled(false); - continue; - } - - gp.setInputFilename(args[argn]); - } - - // Usage ? - if (gp.isHelp()) { - usage(); - return; - } - - // Check args - if (error || (gp.getInputFilename() == null)) { - usage(); - throw new RuntimeException(); - } - // The -d option is deprecated since JOnAS 3.0.7 when the file input is an ejb-jar - // Instead, the output directory must be a temporary directory to make easier - // the ejb-jar updated. - if ((gp.getOutputDirectory() != null) && gp.isAddInJar() && gp.getInputFilename().endsWith(".jar")) { - logger.log(BasicLevel.WARN, "The -d '" + gp.getOutputDirectory() + "' option is ignored" + " (deprecated with an ejb-jar as input file)"); - } - - if (gp.getOutputDirectory() == null) { - gp.setOutputDirectory(""); - } - - // Build the array of protocols name - gp.setProtocols(new Protocols(protocolNames, true)); - - if (gp.getProtocols().isSupported(Protocols.RMI_IIOP)) { - // Disable fastrmic when iiop is found - gp.setFastRmicEnabled(false); - - String classpathParam = gp.getClasspathParam(); - - // Add client.jar file to classpath - String jonasRoot = System.getProperty("jonas.root"); - File clientFile = new File(jonasRoot, "lib" + File.separator + "client.jar"); - - if (clientFile.exists()) { - try { - classpathParam += File.pathSeparator + clientFile.toURL().getPath(); - gp.setClasspathParam(classpathParam); - } catch (MalformedURLException e) { - logger.log(BasicLevel.WARN, "Cannot add client.jar to GenIC classpath."); - } - } - } - - // In case of ejb-jar file, the dirOutputName must be initialized with a - // tempo. directory. - if (gp.getInputFilename().endsWith(".jar") && gp.isAddInJar()) { - try { - gp.setOutputDirectory(GenIC.createTempDir()); - } catch (IOException ioe) { - GenIC.fatalError(ioe); - } - } - - // Init the classpath used for javac, rmic - String classpath = ""; - ClassLoader threadContextClassLoader = Thread.currentThread().getContextClassLoader(); - if (threadContextClassLoader instanceof JClassLoader) { - classpath = ((JClassLoader) threadContextClassLoader).getClassPath(); - } - - if (gp.getInputFilename().endsWith(".jar")) { - // Move the input file to avoid jar locking - File in = new File(gp.getInputFilename()); - - // Only copy the jar file when it's a regular file - if (in.isFile()) { - File out = new File(gp.getWorkingFilename()); - - if (out.exists() && !out.delete()) { - String deleteError = "Cannot delete existant working copy '" + out + "'"; - fatalError(deleteError, new IOException(deleteError)); - } - - try { - FileUtils.copyFile(in, out); - } catch (FileUtilsException e) { - fatalError("Cannot copy input File from '" + gp.getInputFilename() - + "' to '" + gp.getWorkingFilename() + "'", - new IOException(gp.getInputFilename())); - } - - classpath = out.getPath() + File.pathSeparator + classpath; - } - } - if (!"".equals(gp.getOutputDirectory())) { - classpath = gp.getOutputDirectory() + File.pathSeparator + classpath; - } - // add -classpath value - if (gp.getClasspathParam() != null) { - classpath = gp.getClasspathParam() + File.pathSeparator + classpath; - } - // use the new classpath - gp.setClasspathParam(classpath); - - // Set the parsing mode (with or without validation) - if (!gp.isParseWithValidation()) { - EjbDeploymentDescManager.setParsingWithValidation(false); - } - - - // Add into META_INF/MANIFEST jonas information for auto-generation functionality - if (gp.getInputFilename().endsWith(".jar") && gp.isAddInJar()) { - // Update attributes if not up-to-date - Map attributes = new HashMap(); - attributes.put("Genic-Jonas-Version", Version.getNumber()); - attributes.put("Genic-Jonas-protocols", gp.getProtocols().list()); - try { - String filename = null; - if (new File(gp.getInputFilename()).isFile()) { - filename = gp.getWorkingFilename(); - } else { - // directory - filename = gp.getInputFilename(); - } - - FileUtils.updateAttributesInManifest(filename, attributes); - } catch (FileUtilsException e) { - GenIC.fatalError(e); - } - } else if (gp.getOutputDirectory() != null && !gp.isAddInJar()) { - // case of GenIC called by ant task - // noaddinjar = true && -d specified we must add manifest into the directory output - Manifest mf = new Manifest(); - Attributes attributes = mf.getMainAttributes(); - attributes.putValue("Genic-Jonas-Version", Version.getNumber()); - attributes.putValue("Genic-Jonas-protocols", gp.getProtocols().list()); - try { - createManifest(gp.getOutputDirectory(), mf); - } catch (GenICException e) { - GenIC.fatalError(e); - } - } - - // Generates the classes for the set of the beans - ClassLoader loader = null; - try { - DeploymentDesc ejbJarDD = null; - if (gp.getInputFilename().endsWith(".jar")) { - // ejb-jar file/directory - File input = new File(gp.getInputFilename()); - String filename = null; - if (input.isFile()) { - filename = gp.getWorkingFilename(); - } else { - // directory - filename = gp.getInputFilename(); - } - URL[] url = new URL[1]; - url[0] = new File(filename).toURI().toURL(); - JClassLoader cl = new JClassLoader("GenIC-" + gp.getOriginalFilename(), url, threadContextClassLoader); - if (gp.getClasspathParam() != null) { - // add -classpath value inside ClassLoader - addClasspath(cl, gp.getClasspathParam()); - } - ejbJarDD = EjbDeploymentDescManager.getDeploymentDesc(filename, cl); - loader = cl; - cl = null; - } else { - // xml file - ejbJarDD = EjbDeploymentDescManager.getDeploymentDesc( - gp.getOriginalFilename(), - BeanNaming.getJonasXmlName(gp.getOriginalFilename()), - BeanNaming.getParentName(gp.getOriginalFilename())); - } - - GenIC gwc = new GenIC(ejbJarDD, gp); - - - if (gp.isCompil()) { - gwc.compilClasses(classpath, loader); - - // Reset the beans deployment descriptors to unload the beans - // classes - // (loaded from the ejb-jar when creating the - // jonas_ejb.deployment.api.BeanDesc), - // to be able to update the ejb-jar file on Windows. - // See Bug #270 - ejbJarDD = null; - loader = null; - - // Garbage Collect - System.gc(); - - if (gp.getInputFilename().endsWith(".jar") && gp.isAddInJar()) { - gwc.addClassesInJar(); - } - if (!gp.isKeepGenerated()) { - gwc.clean(); - } - } - - } catch (MalformedURLException e) { - GenIC.fatalError("Invalid ejb-jar file name : ", e); - } catch (GenICException e) { - GenIC.fatalError(e); - } catch (DeploymentDescException e) { - GenIC.fatalError("Cannot read the Deployment Descriptors from " + gp.getInputFilename() + ": ", e); - } - // End - } - - /** - * Create Manifest file with name/value. - * @param dirOutputName : output file - * @param manifest : The manifest file to write - * @throws GenICException if manifest is not created. - */ - private static void createManifest(final String dirOutputName, final Manifest manifest) throws GenICException { - - // Ensure that there is the MANIFEST_VERSION - Attributes mainAttributes = manifest.getMainAttributes(); - mainAttributes.putValue("Manifest-Version" , "1.0"); - - File fileOutput = new File(dirOutputName, META_DIR); - - if (!fileOutput.exists()) { - fileOutput.mkdirs(); - } - if (!fileOutput.exists()) { - throw new GenICException("Cannot create META-INF directory into temp dir : " + dirOutputName + "/META-INF"); - } - - fileOutput = new File(dirOutputName, MANIFEST_PATH); - if (!fileOutput.exists()) { - try { - fileOutput.createNewFile(); - } catch (IOException e) { - throw new GenICException("Cannot create '" + fileOutput + "' file", e); - } - } - if (!fileOutput.exists()) { - throw new GenICException("Cannot create manifest.mf file into " + dirOutputName + File.separator + "META-INF"); - } - OutputStream os = null; - try { - os = new FileOutputStream(fileOutput); - manifest.write(os); - } catch (FileNotFoundException e) { - throw new GenICException("Cannot write manifest.mf file", e); - } catch (IOException e) { - throw new GenICException("Cannot write manifest.mf file", e); - } finally { - if (os != null) { - try { - os.close(); - } catch (IOException e) { - logger.log(BasicLevel.WARN, "Cannot close the outputstream", e); - } - } - } - } - - /** - * Add To the given ClassLoader the given classpath. - * @param cl ClassLoader to be updated - * @param classpath the classpath to add inside the ClassLoader - * @throws GenICException When classpath contains invalid URL - */ - private static void addClasspath(final JClassLoader cl, - final String classpath) throws GenICException { - String[] elems = classpath.split(File.pathSeparator); - for (int i = 0; i < elems.length; i++) { - try { - cl.addURL(new File(elems[i]).toURL()); - } catch (MalformedURLException e) { - throw new GenICException("Cannot create URL from '" + elems[i] + "'", e); - } - } - } - - /** - * GenIC Constructor: generates the container classes sources of each beans. - * @param ejbJarDesc deployment descriptors of the beans - * @param gp GenIC parameters - * @throws GenICException In error case - */ - public GenIC(final DeploymentDesc ejbJarDesc, - final GenICParameters gp) throws GenICException { - - // JORM Meta Information - RdbMappingBuilder rdbMapping = null; - - // A BeanSources for each bean - ArrayList beanList = new ArrayList(); - this.gp = gp; - - verbose = gp.isVerbose(); - - if (javaHomeBin == null) { - javaHomeBin = System.getProperty("java.home", ""); - if (!("".equals(javaHomeBin))) { - if (Env.isOsMacOsX()) { - javaHomeBin = javaHomeBin + File.separator + "bin" + File.separator; - } else { - javaHomeBin = javaHomeBin + File.separator + ".." + File.separator + "bin" + File.separator; - } - } - } - outputdir = gp.getOutputDirectory(); - try { - canonicalOutputdir = new File(outputdir).getCanonicalFile().getPath(); - } catch (IOException e) { - throw new GenICException("Cannot get cannonical name of the output directory", e); - } - filesToDelete = new ArrayList(); - remoteJavas = new ArrayList(); - noRemoteJavas = new ArrayList(); - remoteClasses = new ArrayList(); - BeanDesc[] beansDD = ejbJarDesc.getBeanDesc(); - JormCompiler jormCompiler = null; - Manager mgr = null; - VelocityEngine ve = allocateVelocityEngine(); - // Display the bean's names - StringBuffer message = new StringBuffer(); - message.append("GenIC for JOnAS " + Version.getNumber() + ": "); - String sep = ""; - for (int i = 0; i < beansDD.length; i++) { - - if ((beansDD[i] instanceof MessageDrivenDesc)) { - //Nothing to generate in case of MessageDriven Bean - continue; - } - if (beansDD[i] instanceof EntityCmp2Desc) { - if (jormCompiler == null) { - // Load the jorm meta information of the class - // when we encounter the first CMP2 bean. - try { - DeploymentDescEjb2 dd2 = (DeploymentDescEjb2) ejbJarDesc; - - rdbMapping = new RdbMappingBuilder(dd2); - mgr = rdbMapping.getJormMIManager(); - jormCompiler = allocateJormCompiler(mgr); - } catch (DeploymentDescException e) { - throw new GenICException("Impossible to load jorm meta information", e); - } - } - } - BeanSources bs = new BeanSources(beansDD[i], gp, ve); - bs.init(jormCompiler, mgr); - beanList.add(bs); - //compute message - message.append(sep); - sep = ", "; - message.append("'"); - message.append(bs.getEjbName()); - message.append("'"); - } - generatedIC = !beanList.isEmpty(); - if (generatedIC) { - message.append(" generation ..."); - } else { - message.append("No generation to do (only message driven beans)"); - } - logger.log(BasicLevel.INFO, message.toString()); - - // Generates the sources of the container classes of the beans - // and Init the lists of the remote/non-remote java sources and the - // remote classes - for (Iterator it = beanList.iterator(); it.hasNext();) { - BeanSources ics = (BeanSources) it.next(); - // Generate sources for all beans - ics.generate(); - // Call Jorm Generator for CMP2 beans - if (rdbMapping != null) { - CMP2Bean cmp2 = rdbMapping.getCmp2Bean(ics.getEjbName()); - if (cmp2 != null) { - ics.jormCompile(cmp2.getJormList()); - } - } - String cchfn = ics.getWrpHomeClusterFileName(); - if (cchfn != null) { - filesToDelete.add(cchfn); - } - String ccrfn = ics.getWrpRemoteClusterFileName(); - if (ccrfn != null) { - filesToDelete.add(ccrfn); - } - logger.log(BasicLevel.INFO, "Sources classes successfully generated" + " for '" + ics.getEjbName() + "'"); - noRemoteJavas.addAll(ics.getNoRemoteJavas()); - if (ics.getWrpHomeFileName() != null) { - remoteJavas.add(ics.getWrpHomeFileName()); - remoteClasses.add(ics.getWrpHomeClassName()); - } - if (ics.getWrpRemoteFileName() != null) { - remoteJavas.add(ics.getWrpRemoteFileName()); - remoteClasses.add(ics.getWrpRemoteClassName()); - } - if (ics.getWrpServiceEndpointFileName() != null) { - remoteJavas.add(ics.getWrpServiceEndpointFileName()); - remoteClasses.add(ics.getWrpServiceEndpointClassName()); - } - } - jormCompiler = null; - rdbMapping = null; - - } - - /** - * Allocate and configure a JORM compiler. - * @param miManager the JORM Meta-Information manager - * @return a JORM compiler - */ - private JormCompiler allocateJormCompiler(final Manager miManager) { - // Allocate and configure a Jorm Compiler - JormCompiler jormCompiler = new JormCompiler(); - JormCompilerConfigurator jcc = jormCompiler.getCompilerConfigurator(); - Properties prop = new Properties(); - prop.put("jorm.generator", "org.objectweb.jorm.generator.lib.JormGenerator"); - prop.put("jorm.mimanager", "org.objectweb.jorm.metainfo.lib.JormManager"); - prop.put("jorm.writer", "org.objectweb.jorm.mi2xml.lib.BasicDomWriter"); - prop.put("jorm.mapper.list", "rdb"); - prop.put("jorm.mapper.mifactory.rdb", "org.objectweb.jorm.mapper.rdb.metainfo.RdbMappingFactory"); - prop.put("jorm.mapper.mopfactory.rdb", "org.objectweb.jorm.mapper.rdb.generator.RdbMOPFactory"); - prop.put("jorm.mapper.gcmapping.rdb", "org.objectweb.jorm.mapper.rdb.genclass.RdbGenClassMapping"); - prop.put("jorm.mapper.schmgr.rdb", "org.objectweb.jorm.mapper.rdb.lib.RdbPMappingStructuresManager"); - prop.put("jorm.mapper.writer.rdb", "org.objectweb.jorm.mapper.rdb.mi2xml.RdbDomtreeBuilder"); - prop.put("use.context.classloader", "true"); - prop.put("jorm.mapper.submappers.rdb", "generic"); - jcc.configure(prop); - jcc.setLoggerFactory(Log.getLoggerFactory()); - jormCompiler.setMIManager(miManager); - return jormCompiler; - } - - /** - * Allocate and configure a Velocity Engine. - * @return the Velocity Engine - * @throws GenICException in error case - */ - private VelocityEngine allocateVelocityEngine() throws GenICException { - - VelocityEngine ve = new VelocityEngine(); - String packageName = this.getClass().getPackage().getName(); - packageName = packageName.replace('.', '/'); - ve.setProperty(RuntimeConstants.VM_LIBRARY, packageName + "/GenICMacros.vm"); - ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "class"); - ve.setProperty("class.resource.loader.class", ClasspathResourceLoader.class.getName()); - - Logger vLogger = Log.getLogger(Log.JONAS_GENIC_VELOCITY_PREFIX); - // Connect the velocity log system to monolog - ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, new VelocityMonologLogger(vLogger)); - - try { - ve.init(); - } catch (Exception e) { - throw new GenICException("Cannot initialize the Velocity engine", e); - } - return ve; - } - - /** - * Compiles the java sources generated by the constructor I.e. : - *

      - *
    • compile the classes via javac, - *
    • create the stubs and skeletons for the protocols supported(RMI/JRMP, - * RMI/IIOP) via rmic - *
    - * @param classpath classpath value - * @param loader ClassLoader used for compilation of interposition classes - * @exception GenICException In error case - */ - public void compilClasses(final String classpath, - final ClassLoader loader) throws GenICException { - - Cmd jrmpCmd; - Cmd iiopCmd; - - String cmdRmic; - - if (!generatedIC) { - return; - } - - /* - * Init the command names - */ - cmdRmic = javaHomeBin + "rmic"; - - /* - * Compile the generated sources - */ - List sources = new ArrayList(); - for (Iterator it = remoteJavas.iterator(); it.hasNext();) { - String srcName = (String) it.next(); - if (srcName.contains(outputdir)) { - sources.add(srcName.substring(outputdir.length() + 1)); - } else { - sources.add(srcName.substring(canonicalOutputdir.length() + 1)); - } - filesToDelete.add(srcName); - } - for (Iterator it = noRemoteJavas.iterator(); it.hasNext();) { - String srcName = (String) it.next(); - if (srcName.contains(outputdir)) { - sources.add(srcName.substring(outputdir.length() + 1)); - } else { - sources.add(srcName.substring(canonicalOutputdir.length() + 1)); - } - filesToDelete.add(srcName); - } - - File out = new File(outputdir); - - // Init the compilation context - CompilationContext context = new CompilationContext(); - context.setContextualClassLoader(loader); - context.setOutputDirectory(out); - context.setSourceDirectory(out); - context.setSources(sources); - - // Compile - JOnASCompiler compiler = new JOnASCompiler(context); - - logger.log(BasicLevel.INFO, "Compiling Interposition classes ..."); - List errors = compiler.compile(); - if (errors.isEmpty()) { - logger.log(BasicLevel.INFO, "Sources classes successfully compiled with Eclipse compiler."); - } else { - for (CompilerError error : errors) { - logger.log(BasicLevel.ERROR, error.toString()); - } - throw new GenICException("Failed when compiling the generated classes"); - } - - if (remoteJavas.size() == 0) { - return; - } - - /* - * Generate the stub and skeletons of the home and remote implementations - */ - - if (!new File(cmdRmic).exists()) { - // Maybe this is on windows - if (!new File(cmdRmic + ".exe").exists()) { - logger.log(BasicLevel.INFO, "No rmic command was found at '" + cmdRmic - + "'. Check that you are using a JDK and not a JRE."); - } - } - jrmpCmd = new Cmd(cmdRmic, gp.isInvokeCmd()); - jrmpCmd.addArgument("-classpath"); - jrmpCmd.addArgument(classpath); - //jrmpCmd.addArgument("-verbose"); - - iiopCmd = new Cmd(cmdRmic, gp.isInvokeCmd()); - iiopCmd.addArgument("-classpath"); - iiopCmd.addArgument(classpath); - iiopCmd.addArgument("-iiop"); - iiopCmd.addArgument("-poa"); - iiopCmd.addArgument("-always"); - - if (!"".equals(outputdir)) { - jrmpCmd.addArgument("-d"); - jrmpCmd.addArgument(outputdir); - iiopCmd.addArgument("-d"); - iiopCmd.addArgument(outputdir); - } - - jrmpCmd.addArguments(gp.getRmicOptions()); - iiopCmd.addArguments(gp.getRmicOptions()); - - for (Iterator it = remoteClasses.iterator(); it.hasNext();) { - String className = (String) it.next(); - jrmpCmd.addArgument(className); - iiopCmd.addArgument(className); - } - - // Use fast rmic, if there are failures, fallback to rmic - if (gp.getProtocols().isSupported(Protocols.RMI_JRMP) && gp.isFastRmicEnabled()) { - ArrayList args = new ArrayList(); - boolean skip = true; - for (Iterator it = jrmpCmd.getCommandLine(); it.hasNext();) { - Object o = it.next(); - if (skip) { - skip = false; - continue; - } - args.add(o); - } - - String[] a = (String[]) args.toArray(new String[] {}); - Method m = null; - try { - Class c = Class.forName("org.ow2.fastrmic.RMIC"); - m = c.getMethod("main", new Class[] {String[].class}); - } catch (ClassNotFoundException cnfe) { - logger.log(BasicLevel.ERROR, - "continuing after class not found ", cnfe); - gp.setFastRmicEnabled(false); - } catch (NoSuchMethodException nsme) { - logger.log(BasicLevel.ERROR, - "continuing after no such method ", nsme); - gp.setFastRmicEnabled(false); - } - - if (m != null) { - logger.log(BasicLevel.INFO, "Running fastrmic"); - try { - m.invoke(null, new Object[] {a}); - // Call to the GC for bug (#303750) - // fastRMIC load classes of the jar, then there is a lock on the file until the GC is called. - System.gc(); - } catch (IllegalAccessException iae) { - logger.log(BasicLevel.ERROR, "continuing after illegal access", iae); - gp.setFastRmicEnabled(false); - } catch (InvocationTargetException ite) { - throw new GenICException("error in fastrmic", ite); - } - logger.log(BasicLevel.INFO, "Stubs and Skels successfully generated with fastrmic for rmi/jrmp"); - } - } - - if (gp.getProtocols().isSupported(Protocols.RMI_JRMP) && !gp.isFastRmicEnabled()) { - logger.log(BasicLevel.INFO, "Running '" + jrmpCmd.toString() + "'"); - if (jrmpCmd.run()) { - logger.log(BasicLevel.INFO, "Stubs and Skels successfully generated for rmi/jrmp"); - } else { - throw new GenICException("Failed when generating the Stubs and Skels with rmic jrmp"); - } - } - - if (gp.getProtocols().isSupported(Protocols.RMI_IIOP)) { - logger.log(BasicLevel.INFO, "Running '" + iiopCmd.toString() + "'"); - if (iiopCmd.run()) { - logger.log(BasicLevel.INFO, "Stubs and Skels successfully generated for rmi/iiop"); - } else { - throw new GenICException("Failed when generating the Stubs and Skels with rmic iiop"); - } - - } - } - - /** - * Add the generated classes in the given ejb-jar file. - * @throws GenICException if the classes cannot be added in the jar file - */ - public void addClassesInJar() throws GenICException { - - if (!generatedIC) { - // Place back the working copy - File wc = new File(gp.getWorkingFilename()); - File original = new File(gp.getOriginalFilename()); - wc.renameTo(original); - return; - } - - filesToDelete.add(outputdir); - - ArrayList lf = new ArrayList(); - getFilesList(outputdir, lf, !gp.isKeepGenerated()); - - updateJar(lf); - - } - - /** - * Convert a name from any format in Jar filename format. - * @param name filename to be converted - * @return converted filename - */ - protected String convertName(final String name) { - return name.replace('\\', '/'); - } - - /** - * Add some classes in an existing jar file via the java.util.jar api. - * @param lfn list of filenames to add - * @throws GenICException if the classes cannot be added - */ - private void updateJar(final List lfn) - throws GenICException { - - File target = new File(gp.getOriginalFilename()); - - int is = outputdir.length() + 1; - - if (target.isFile()) { - // The original file is a jar, so we need to update a jar - File workingCopy = null; - JarFile wcJarArchive = null; - JarOutputStream finalJarArchive = null; - - // Directly create the final jar as we already have moved - // the original file into a temporary working copy - - try { - workingCopy = new File(gp.getWorkingFilename()); - - // open existing jar file - wcJarArchive = new JarFile(workingCopy); - - // create final jar - finalJarArchive = new JarOutputStream(new FileOutputStream(target)); - - byte[] buffer = new byte[BUFFER_SIZE]; - int read = 0; - - // Add all generated files to the final jar - FileInputStream file = null; - Iterator iterFiles = lfn.iterator(); - while (iterFiles.hasNext()) { - try { - String fileName = (String) iterFiles.next(); - - file = new FileInputStream(fileName); - JarEntry entry = new JarEntry(convertName(fileName.substring(is))); - finalJarArchive.putNextEntry(entry); - // contents - while ((read = file.read(buffer)) != -1) { - finalJarArchive.write(buffer, 0, read); - } - } finally { - file.close(); - } - } - - // Add the rest of files (except if already included) - Enumeration ents = wcJarArchive.entries(); - while (ents.hasMoreElements()) { - JarEntry entry = (JarEntry) ents.nextElement(); - // add only if there is no newer version already included - // In Windows we must replace / by \ for a correct path - if (!lfn.contains(outputdir + File.separator + entry.getName().replace('/', File.separatorChar))) { - InputStream enStream = wcJarArchive.getInputStream(entry); - // If the initial compression level is not the same as the - // target's, the compressed size will change. Therefore, - // ignore initial compressed size. - entry.setCompressedSize(-1); - finalJarArchive.putNextEntry(entry); - // contents - while ((read = enStream.read(buffer)) != -1) { - finalJarArchive.write(buffer, 0, read); - } - enStream.close(); - enStream = null; - } - } - - } catch (Exception e) { - throw new GenICException("Failed when adding the generated classes " - + "in the given ejb-jar file '" + gp.getOriginalFilename(), e); - } finally { - // close jar archives - try { - wcJarArchive.close(); - } catch (IOException ioe) { - logger.log(BasicLevel.WARN, "Failed to close jar archive file '" + wcJarArchive.getName() + "': " - + ioe.getMessage()); - } - wcJarArchive = null; - try { - finalJarArchive.close(); - } catch (IOException ioe) { - logger.log(BasicLevel.WARN, "Failed to close temporary jar archive file '" + wcJarArchive.getName() + "': " - + ioe.getMessage()); - } - finalJarArchive = null; - } - - // Remove the working copy - if (!workingCopy.delete()) { - logger.log(BasicLevel.WARN, "Failed to delete working copy jar archive file '" + workingCopy + "'"); - } - } else { - // the original is a directory, so we simply place the generated - // classes at the appropriate place. - - Iterator iterFiles = lfn.iterator(); - try { - while (iterFiles.hasNext()) { - String fileName = (String) iterFiles.next(); - // Remove the generation directory name of the filename - String partialFileName = fileName.substring(is); - - // Construct any missing parent directory - File targetFile = new File(target, partialFileName); - File parent = targetFile.getParentFile(); - if (!parent.exists()) { - parent.mkdirs(); - } - - FileUtils.copyFile(new File(fileName), targetFile); - } - } catch (FileUtilsException e) { - throw new GenICException("Cannot update original directory '" + target - + "' with generated classes", e); - } - - } - - } - - /** - * Clean the intermediate generated files. - */ - public void clean() { - logger.log(BasicLevel.DEBUG, "Deleting " + filesToDelete.toString()); - for (Iterator it = filesToDelete.iterator(); it.hasNext();) { - String name = (String) it.next(); - File f = new File(name); - delete(f); - } - } - - /** - * Delete a file or directory recursively. - * @param f file or directory to be deleted - * @return true if deletion ok, false otherwise. - */ - private boolean delete(final File f) { - if (f.isFile()) { - return f.delete(); - } else { - File[] childs = f.listFiles(); - if (childs == null) { - // no childs - return f.delete(); - } else { - // childs - boolean result = true; - for (int i = 0; i < childs.length; i++) { - result &= delete(childs[i]); - } - return result && f.delete(); - } - } - } - - /** - * Display the usage. - */ - static void usage() { - StringBuffer msg = new StringBuffer(); - msg.append("Usage: java org.ow2.jonas.generators.genic.GenIC -help \n"); - msg.append(" to print this help message \n"); - msg.append(" or java org.ow2.jonas.generators.genic.GenIC \n"); - msg.append(" to generate the container-specific classes for given EJB(s). \n"); - msg.append(" \n"); - msg.append("Options include: \n"); - msg.append(" -d specify where to place the generated files \n"); - msg.append(" -noaddinjar do not add the generated classes in the given \n"); - msg.append(" ejb-jar file \n"); - msg.append(" -nocompil do not compile the generated source files via \n"); - msg.append(" the java and rmi compilers \n"); - msg.append(" -novalidation parse the XML deployment descriptors without \n"); - msg.append(" validation \n"); - msg.append(" -classpath define the classpath to be used to compile classes \n"); - msg.append(" -javac specify the java compiler to use \n"); - msg.append(" -javacopts specify the options to pass to the java compiler \n"); - msg.append(" -rmicopts specify the options to pass to the rmi compiler \n"); - msg.append(" -protocols list of protocol, separated by comma \n"); - msg.append(" (default is jrmp) \n"); - msg.append(" -invokecmd invoke, in some case, directly the method of the java class\n"); - msg.append(" corresponding to the command \n"); - msg.append(" -keepgenerated do not delete intermediate generated source files \n"); - msg.append(" -verbose \n"); - msg.append(" -debug deprecated (use the JOnAS trace properties file)\n"); - msg.append(" \n"); - msg.append(" Input_File standard deployment descriptor file's name or \n"); - msg.append(" ejb-jar file's name \n"); - logger.log(BasicLevel.ERROR, msg.toString()); - } - - /** - * Display the specified error message and exits with an EXIT_FAILURE - * status. - * @param msg the error message to display - * @param e the exception raised - */ - static void fatalError(final String msg, final Exception e) { - logger.log(BasicLevel.ERROR, "GenIC fatal error: " + msg + e.getMessage()); - throw new RuntimeException(msg, e); - } - - /** - * Display the specified error message and exits with an EXIT_FAILURE - * status. - * @param e the error to display - */ - static void fatalError(final Exception e) { - logger.log(BasicLevel.ERROR, "GenIC fatal error: " + e.getMessage()); - throw new RuntimeException(e.getMessage(), e); - } - - /** - * Create a cleaned temporary directory. - * @return the temp directory file name - * @throws IOException if a temp directory cannot be created. - */ - static String createTempDir() throws IOException { - File tmpDir = File.createTempFile("genic", null, null); - tmpDir.delete(); - if (!tmpDir.mkdir()) { - throw new IOException("Cannot create the temporary directory '" + tmpDir + "'."); - } - return tmpDir.getAbsolutePath(); - } - - /** - * Get the list file names recursively of the given directory. - * @param dir the directory used to list files - * @param list list to store filenames - * @param onlyClass stores only class or not ? - */ - static void getFilesList(final String dir, - final ArrayList list, - final boolean onlyClass) { - File df = new File(dir); - if (df.exists() && df.isDirectory()) { - File[] ls = df.listFiles(); - for (int i = 0; i < ls.length; i++) { - File f = ls[i]; - String fn = f.getAbsolutePath(); - if (f.isDirectory()) { - getFilesList(fn, list, onlyClass); - } else { - if (!onlyClass || fn.endsWith(".class")) { - if (!fn.endsWith(".save")) { - list.add(fn); - } - } - } - } - } - } -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICException.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICException.java deleted file mode 100644 index 457e24c049..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICException.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genic; - -/** - * This class represents the exception that can be throwned by the GenIC tool. - * - * @author Helene Joanin : Initial developer - */ -public class GenICException extends Exception { - - protected Exception inner = null; - - /** - * Constructs an GenICException with no specified detail message. - */ - public GenICException() { - super(); - } - - /** - * Constructs an GenICException with the specified detail message. - */ - public GenICException(String msg) { - super(msg); - } - - public GenICException(String msg, Exception inner) { - super(msg); - this.inner = inner; - - } - - public String toString() { - String s = GenICException.class.getName() + ": " + super.getMessage(); - if (inner == null) { - return (s); - } else { - return (s + " (" + inner.toString() + ")"); - } - } - - public String getMessage() { - String s = super.getMessage(); - if (inner == null) { - return (s); - } else { - return (s + " (" + inner.getMessage() + ")"); - } - } - - public void printStackTrace() { - System.out.println(getMessage()); - if (inner != null) { - inner.printStackTrace(); - } - } - public void printStackTrace(java.io.PrintStream s) { - s.println(getMessage()); - if (inner != null) { - inner.printStackTrace(s); - } - } - public void printStackTrace(java.io.PrintWriter s) { - s.println(getMessage()); - if (inner != null) { - inner.printStackTrace(s); - } - } -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICParameters.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICParameters.java deleted file mode 100644 index 5a44bfa888..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/GenICParameters.java +++ /dev/null @@ -1,350 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import java.io.File; -import java.util.ArrayList; - -import org.ow2.jonas.lib.ejb21.Protocols; - - -/** - * GenIC Parameters holder. - * - * @author Guillaume Sauthier - */ -public class GenICParameters { - - /** - * Supported protocol list. - */ - private Protocols protocols = null; - - /** - * directory where files will be generated. - */ - private String outputDirectory = null; - - /** - * is verbose mode ? - */ - private boolean verbose = false; - - /** - * do not delete intermediate generated source files. - */ - private boolean keepGenerated = false; - - /** - * compile the generated source files via the java and - * rmi compilers. - */ - private boolean compil = true; - - /** - * display the help message. - */ - private boolean help = false; - - /** - * add the generated classes in the given ejb-jar - * file. - */ - private boolean addInJar = true; - - /** - * parse the XML deployment descriptors with - * validation. - */ - private boolean parseWithValidation = true; - - /** - * invoke, in some case, directly the method of the java - * class corresponding to the command. - */ - private boolean invokeCmd = false; - - /** - * use fastRMIC compiler. - */ - private boolean fastRmicEnabled = true; - - /** - * file name of the standard deployment descriptor (.xml ended), - * or file name of the EJB-jar (.jar ended). - */ - private String inputFilename = null; - - /** - * name of the java compiler to use. - */ - private String javacName = null; - - /** - * options to pass to the java compiler. - */ - private ArrayList javacOptions = new ArrayList(); - - /** - * options to pass to the rmi compiler. - */ - private ArrayList rmicOptions = new ArrayList(); - - /** - * define the classpath to be used to compile classes. - */ - private String classpathParam = null; - - /** - * Generated working copy file. - */ - private String workingFilename = null; - - /** - * @return Returns the outputDirectory. - */ - public String getOutputDirectory() { - return outputDirectory; - } - - /** - * @param outputDirectory The outputDirectory to set. - */ - public void setOutputDirectory(final String outputDirectory) { - this.outputDirectory = outputDirectory; - } - - /** - * @return Returns the protocols. - */ - public Protocols getProtocols() { - return protocols; - } - - /** - * @param protocols The protocols to set. - */ - public void setProtocols(final Protocols protocols) { - this.protocols = protocols; - } - - /** - * @return Returns the verbose. - */ - public boolean isVerbose() { - return verbose; - } - - /** - * @param verbose The verbose to set. - */ - public void setVerbose(final boolean verbose) { - this.verbose = verbose; - } - - /** - * @return Returns the addInJar. - */ - public boolean isAddInJar() { - return addInJar; - } - - /** - * @param addInJar The addInJar to set. - */ - public void setAddInJar(final boolean addInJar) { - this.addInJar = addInJar; - } - - /** - * @return Returns the classpathParam. - */ - public String getClasspathParam() { - return classpathParam; - } - - /** - * @param classpathParam The classpathParam to set. - */ - public void setClasspathParam(final String classpathParam) { - this.classpathParam = classpathParam; - } - - /** - * @return Returns the compil. - */ - public boolean isCompil() { - return compil; - } - - /** - * @param compil The compil to set. - */ - public void setCompil(final boolean compil) { - this.compil = compil; - } - - /** - * @return Returns the fastRmicEnabled. - */ - public boolean isFastRmicEnabled() { - return fastRmicEnabled; - } - - /** - * @param fastRmicEnabled The fastRmicEnabled to set. - */ - public void setFastRmicEnabled(final boolean fastRmicEnabled) { - this.fastRmicEnabled = fastRmicEnabled; - } - - /** - * @return Returns the help. - */ - public boolean isHelp() { - return help; - } - - /** - * @param help The help to set. - */ - public void setHelp(final boolean help) { - this.help = help; - } - - /** - * @return Returns the inputFilename. - */ - public String getInputFilename() { - return inputFilename; - } - - /** - * @param inputFilename The inputFilename to set. - */ - public void setInputFilename(final String inputFilename) { - this.inputFilename = inputFilename; - } - - /** - * @return Returns the original (unchanged) inputFilename. - */ - public String getOriginalFilename() { - return inputFilename; - } - - /** - * @return Returns the working copy inputFilename. - */ - public String getWorkingFilename() { - - // Only do that once - if (workingFilename == null) { - - // prepend an almost unique prefix to the original filename - File input = new File(inputFilename); - String filename = input.getName(); - File parent = input.getParentFile(); - - File out = new File(parent, "GenICWorkingCopyJar-" + filename); - - workingFilename = out.getPath(); - } - return workingFilename; - } - - /** - * @return Returns the invokeCmd. - */ - public boolean isInvokeCmd() { - return invokeCmd; - } - - /** - * @param invokeCmd The invokeCmd to set. - */ - public void setInvokeCmd(final boolean invokeCmd) { - this.invokeCmd = invokeCmd; - } - - /** - * @return Returns the javacName. - */ - public String getJavacName() { - return javacName; - } - - /** - * @param javacName The javacName to set. - */ - public void setJavacName(final String javacName) { - this.javacName = javacName; - } - - /** - * @return Returns the keepGenerated. - */ - public boolean isKeepGenerated() { - return keepGenerated; - } - - /** - * @param keepGenerated The keepGenerated to set. - */ - public void setKeepGenerated(final boolean keepGenerated) { - this.keepGenerated = keepGenerated; - } - - /** - * @return Returns the parseWithValidation. - */ - public boolean isParseWithValidation() { - return parseWithValidation; - } - - /** - * @param parseWithValidation The parseWithValidation to set. - */ - public void setParseWithValidation(final boolean parseWithValidation) { - this.parseWithValidation = parseWithValidation; - } - - /** - * @return Returns the javacOptions. - */ - public ArrayList getJavacOptions() { - return javacOptions; - } - - /** - * @return Returns the rmicOptions. - */ - public ArrayList getRmicOptions() { - return rmicOptions; - } - - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/Source.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/Source.java deleted file mode 100644 index 40fab1b4ab..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/Source.java +++ /dev/null @@ -1,276 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.EntityDesc; -import org.ow2.jonas.deployment.ejb.EntityJdbcCmp1Desc; -import org.ow2.jonas.deployment.ejb.EntityJdbcCmp2Desc; -import org.ow2.jonas.deployment.ejb.SessionStatefulDesc; -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; -import org.ow2.jonas.lib.util.Log; - -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; - -import org.objectweb.jorm.metainfo.api.Manager; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * This class allows to generate the source of : the class that implements the - * Enterprise bean's remote interface, the class that implements the Enterprise - * bean's home interface, the class that implements the Enterprise bean's local - * interface, the class that implements the Enterprise bean's localhome - * interface, the class of the Entity Handle in case of entity, or the extended - * class of the Bean for persistence in case of entity with CMP, via a Velocity - * template of the given Enterprise Java Bean. - * @author Helene Joanin : Initial developer - */ -class Source { - - /** - * home source - */ - static final int HOME = 0; - /** - * local home source - */ - static final int LOCAL_HOME = 1; - /** - * remote source - */ - static final int REMOTE = 2; - /** - * local source - */ - static final int LOCAL = 3; - /** - * entity handle source - */ - static final int ENTITY_HANDLE = 4; - /** - * CMP1 or CMP2 entity bean source - */ - static final int ENTITY_CMP_JDBC = 5; - /** - * interface coherence source for CMP2 entity - */ - static final int ITF_COH_CMP2_ENTITY = 7; - - /** - * service endpoint source - */ - static final int SERVICE_ENDPOINT = 9; - - /** - * service endpoint home source - */ - static final int SERVICE_ENDPOINT_HOME = 10; - - /** - * Bean Deployment Description - */ - private BeanDesc dd = null; - - /** - * Name of the generated source file - */ - private String srcFileName = null; - - /** - * Generated source file type - */ - private int srcType; - - /** - * Velocity engine - */ - private VelocityEngine vEngine = null; - - /** - * Velocity context - */ - private VelocityContext vctx = null; - - /** - * logger - */ - private Logger logger = null; - - /** - * Source Constructor - * @param beanDesc deployment descriptor of the bean - * @param fileName name of the source file to generate - * @param type source's type (HOME, LOCAL_HOME, REMOTE, ...) - * @param ve Velocity engine to use - * @exception GenICException In error case - */ - Source(BeanDesc beanDesc, String fileName, int type, VelocityEngine ve, Manager mgr) throws GenICException { - dd = beanDesc; - srcFileName = fileName; - srcType = type; - vctx = VContextFactory.create(dd, srcType, mgr); - vEngine = ve; - logger = Log.getLogger(Log.JONAS_GENIC_PREFIX); - // Trace of the Velocity Context - Logger vLogger = Log.getLogger(Log.JONAS_GENIC_VELOCITY_PREFIX); - if (vLogger.getCurrentIntLevel() == BasicLevel.DEBUG) { - vLogger.log(BasicLevel.DEBUG, "Source(..,fileName=" + fileName + ", type = " + type + ", ..)"); - vLogger.log(BasicLevel.DEBUG, "VELOCITY CONTEXT = \n(" + VContextFactory.toString(vctx) + "\n)"); - } - } - - /** - * Generates the java source - * @throws GenICException in error case - */ - void generate() throws GenICException { - - String tmplName = null; - Template tmpl = null; - FileWriter fwriter = null; - - switch (srcType) { - case HOME: - if (dd instanceof EntityDesc) { - tmplName = "JEntityHome.vm"; - } else if (dd instanceof SessionStatefulDesc) { - tmplName = "JStatefulHome.vm"; - } else if (dd instanceof SessionStatelessDesc) { - tmplName = "JStatelessHome.vm"; - } - break; - case LOCAL_HOME: - if (dd instanceof EntityDesc) { - tmplName = "JEntityLocalHome.vm"; - } else if (dd instanceof SessionStatefulDesc) { - tmplName = "JStatefulLocalHome.vm"; - } else if (dd instanceof SessionStatelessDesc) { - tmplName = "JStatelessLocalHome.vm"; - } - break; - case REMOTE: - if (dd instanceof EntityDesc) { - tmplName = "JEntityRemote.vm"; - } else if (dd instanceof SessionStatefulDesc) { - tmplName = "JStatefulRemote.vm"; - } else if (dd instanceof SessionStatelessDesc) { - tmplName = "JStatelessRemote.vm"; - } - break; - case LOCAL: - if (dd instanceof EntityDesc) { - tmplName = "JEntityLocal.vm"; - } else if (dd instanceof SessionStatefulDesc) { - tmplName = "JStatefulLocal.vm"; - } else if (dd instanceof SessionStatelessDesc) { - tmplName = "JStatelessLocal.vm"; - } - break; - case SERVICE_ENDPOINT: - if (dd instanceof SessionStatelessDesc) { - tmplName = "JServiceEndpoint.vm"; - } - break; - case SERVICE_ENDPOINT_HOME: - if (dd instanceof SessionStatelessDesc) { - tmplName = "JServiceEndpointHome.vm"; - } - break; - case ENTITY_HANDLE: - if (dd instanceof EntityDesc) { - tmplName = "JEntityHandle.vm"; - } - break; - case ENTITY_CMP_JDBC: - if (dd instanceof EntityJdbcCmp1Desc) { - tmplName = "JEntityCmpJdbc.vm"; - } - if (dd instanceof EntityJdbcCmp2Desc) { - tmplName = "JEntityCmp2.vm"; - } - break; - case ITF_COH_CMP2_ENTITY: - if (dd instanceof EntityJdbcCmp2Desc) { - tmplName = "JEntityCmp2CoherenceItf.vm"; - } - break; - default: - break; - } - if (tmplName == null) { - throw new GenICException("No template for '" + srcFileName + " !!!'"); - } - - String name = null; - try { - // must add the package name - name = this.getClass().getPackage().getName().replace('.', '/') + "/" + tmplName; - tmpl = vEngine.getTemplate(name); - } catch (Exception e) { - throw new GenICException("Cannot get " + name, e); - } - - try { - // Create before the parent directory - File fs = new File(srcFileName); - File fdir = fs.getParentFile(); - if (fdir != null) { - if (!fdir.exists()) { - if (!fdir.mkdirs()) { - throw new IOException("Cannot create the directory '" + fdir.getPath() + "'"); - } - } - } - fwriter = new FileWriter(srcFileName); - } catch (IOException e) { - e.printStackTrace(); - throw new GenICException("Cannot create the '" + srcFileName + "' source file", e); - } - logger.log(BasicLevel.DEBUG, "Generate the file " + srcFileName); - try { - tmpl.merge(vctx, fwriter); - } catch (Exception e) { - throw new GenICException("Cannot generate the '" + srcFileName + "' source from the '" + tmplName - + "' template", e); - } - - try { - fwriter.flush(); - fwriter.close(); - } catch (IOException e) { - throw new GenICException("Cannot close the '" + srcFileName + "' source file", e); - } - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VContextFactory.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VContextFactory.java deleted file mode 100644 index 9c977f8800..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VContextFactory.java +++ /dev/null @@ -1,633 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Date; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Vector; - -import org.ow2.jonas.Version; -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.EjbRelationshipRoleDesc; -import org.ow2.jonas.deployment.ejb.EntityCmp1Desc; -import org.ow2.jonas.deployment.ejb.EntityCmp2Desc; -import org.ow2.jonas.deployment.ejb.EntityDesc; -import org.ow2.jonas.deployment.ejb.FieldDesc; -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; -import org.ow2.jonas.lib.ejb21.JavaType; -import org.ow2.jonas.lib.util.BeanNaming; - -import org.apache.velocity.VelocityContext; - - - - -import org.objectweb.jorm.metainfo.api.Manager; - - -/** - * This class allows to create the Velocity Context used to build the generated - * sources with the Velocity templates. - * - * @author: Helene Joanin (Bull) : Initial developer - */ - -public class VContextFactory { - - /** - * Creates the Velocity Context used to build the generated sources with the Velocity templates. - * There are different types of Velocity Context : - * HOME, LOCAL_HOME, REMOTE, LOCAL, ENTITY_HANDLE, ENTITY_CMP_JDBC, ... - * @see Source.java for type definitions. - * @param dd The bean Deployment Descriptor - * @param srcType the type of Velocity Context - * @return Return the Velocity Context associated to the gievn bean for the given source to generate - * @throws GenICException in error case - */ - public static VelocityContext create(BeanDesc dd, int srcType, Manager mgr) throws GenICException { - - String value = null; - VelocityContext vc = new VelocityContext(); - - vc.put("dd", dd); - vc.put("EntityCMP2", (dd instanceof EntityCmp2Desc ? Boolean.TRUE : Boolean.FALSE)); - - vc.put("jVersion", Version.getNumber()); - - if (dd.getHomeClass() != null) { - value = dd.getHomeClass().getName(); - vc.put("home", value); - } - - if (dd.getLocalHomeClass() != null) { - value = dd.getLocalHomeClass().getName(); - vc.put("localhome", value); - } - - if (dd.getRemoteClass() != null) { - value = dd.getRemoteClass().getName(); - vc.put("remote", value); - } - - if (dd.getLocalClass() != null) { - value = dd.getLocalClass().getName(); - vc.put("local", value); - } - - if (dd instanceof SessionStatelessDesc) { - SessionStatelessDesc ssd = (SessionStatelessDesc) dd; - if (ssd.getServiceEndpointClass() != null) { - value = ssd.getServiceEndpointClass().getName(); - vc.put("serviceEndpoint", value); - } - if (ssd.getFullWrpServiceEndpointName() != null) { - value = ssd.getFullWrpServiceEndpointName(); - vc.put("service-endpoint_wrp", value); - } - if (ssd.getFullWrpSEHomeName() != null) { - value = ssd.getFullWrpSEHomeName(); - vc.put("service-endpoint-home_wrp", value); - } - } - - if (dd.getFullWrpHomeName() != null) { - value = dd.getFullWrpHomeName(); - vc.put("home_wrp", value); - } - - if (dd.getFullWrpLocalHomeName() != null) { - value = dd.getFullWrpLocalHomeName(); - vc.put("localhome_wrp", value); - } - - if (dd.getFullWrpRemoteName() != null) { - value = dd.getFullWrpRemoteName(); - vc.put("remote_wrp", value); - } - - if (dd.getFullWrpLocalName() != null) { - value = dd.getFullWrpLocalName(); - vc.put("local_wrp", value); - } - - value = dd.getEjbClass().getName(); - vc.put("bean", value); - - value = dd.getFullDerivedBeanName(); - vc.put("bean_wrp", value); // Same as "bean" if not a Entity CMP - - if (dd.getFullWrpHandleName() != null) { - value = dd.getFullWrpHandleName(); - vc.put("handle", value); - } - - vc.put("isClusterReplicated", Boolean.valueOf(dd.isClusterReplicated())); - - if (dd instanceof EntityDesc) { - Class c = ((EntityDesc) dd).getPrimaryKeyClass(); - if (c.equals(Object.class)) { - // Auto key generated so convert into Integer - c = Integer.class; - } - value = c.getName(); - vc.put("pk", value); - vc.put("pkIsUserClass", pkIsUserClass(value)); - if (dd instanceof EntityCmp2Desc) { - if (c.equals(String.class)) { - vc.put("pkEncodeMethod", "encodeString"); - vc.put("pkDecodeMethod", "decodeString((java.lang.String) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Character.class)) { - vc.put("pkEncodeMethod", "encodeOchar"); - vc.put("pkDecodeMethod", "decodeOchar((java.lang.Character) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Byte.class)) { - vc.put("pkEncodeMethod", "encodeObyte"); - vc.put("pkDecodeMethod", "decodeObyte((java.lang.Byte) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Short.class)) { - vc.put("pkEncodeMethod", "encodeOshort"); - vc.put("pkDecodeMethod", "decodeOshort((java.lang.Short) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Integer.class)) { - vc.put("pkEncodeMethod", "encodeOint"); - vc.put("pkDecodeMethod", "decodeOint((java.lang.Integer) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Long.class)) { - vc.put("pkEncodeMethod", "encodeOlong"); - vc.put("pkDecodeMethod", "decodeOlong((java.lang.Long) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Date.class)) { - vc.put("pkEncodeMethod", "encodeDate"); - vc.put("pkDecodeMethod", "decodeDate((java.util.Date) pk)"); - vc.put("pkMappingToMemoryMethod", ""); - } else if (c.equals(Float.class)) { - vc.put("pkEncodeMethod", "encodeString"); - vc.put("pkDecodeMethod", "decodeString((java.lang.String) org.ow2.jonas.lib.ejb21.jorm.FloatPkFieldMapping.toStorage(pk))"); - vc.put("pkMappingToMemoryMethod", "org.ow2.jonas.lib.ejb21.jorm.FloatPkFieldMapping.toMemory"); - } - } - } - - switch (srcType) { - case Source.HOME: - value = BeanNaming.getPackageName(dd.getFullWrpHomeName()); - vc.put("package", value); - value = dd.getWrpHomeName(); - vc.put("class", value); - break; - case Source.LOCAL_HOME: - value = BeanNaming.getPackageName(dd.getFullWrpLocalHomeName()); - vc.put("package", value); - value = dd.getWrpLocalHomeName(); - vc.put("class", value); - break; - case Source.REMOTE: - value = BeanNaming.getPackageName(dd.getFullWrpRemoteName()); - vc.put("package", value); - value = dd.getWrpRemoteName(); - vc.put("class", value); - break; - case Source.LOCAL: - value = BeanNaming.getPackageName(dd.getFullWrpLocalName()); - vc.put("package", value); - value = dd.getWrpLocalName(); - vc.put("class", value); - break; - case Source.SERVICE_ENDPOINT: - SessionStatelessDesc ssd = (SessionStatelessDesc) dd; - value = BeanNaming.getPackageName(ssd.getFullWrpServiceEndpointName()); - vc.put("package", value); - value = ssd.getWrpServiceEndpointName(); - vc.put("class", value); - break; - case Source.SERVICE_ENDPOINT_HOME: - SessionStatelessDesc ssd1 = (SessionStatelessDesc) dd; - value = BeanNaming.getPackageName(ssd1.getFullWrpSEHomeName()); - vc.put("package", value); - value = ssd1.getWrpSEHomeName(); - vc.put("class", value); - break; - case Source.ENTITY_HANDLE: - value = BeanNaming.getPackageName(dd.getFullWrpHandleName()); - vc.put("package", value); - value = dd.getWrpHandleName(); - vc.put("class", value); - break; - case Source.ENTITY_CMP_JDBC: - value = BeanNaming.getPackageName(dd.getFullDerivedBeanName()); - vc.put("package", value); - value = dd.getDerivedBeanName(); - vc.put("class", value); - break; - default: - break; - } - - ArrayList prototypeMethodList = new ArrayList(); - ArrayList vcMethodList = new ArrayList(); - Method [] methods = null; - switch (srcType) { - case Source.HOME: - /* - * Add in the methods list, the Home interface methods, except - * - methods (other than remove) defined in javax.ejb.EJBHome, - * - and overriding methods. - */ - methods = dd.getHomeClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBHome.class) - || "remove".equals(method.getName())) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - break; - case Source.LOCAL_HOME: - /* - * Add in the methods list, the LocalHome interface methods, except - * - methods (other than remove) defined in javax.ejb.EJBLocalHome, - * - and overriding methods. - */ - methods = dd.getLocalHomeClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBLocalHome.class) - || "remove".equals(method.getName())) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - break; - case Source.REMOTE: - /* - * Add in the methods list, the Remote interface methods, except - * - methods (other than remove) defined in javax.ejb.EJBObject, - * - and overriding methods. - */ - methods = dd.getRemoteClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBObject.class) - || "remove".equals(method.getName())) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - break; - case Source.LOCAL: - /* - * Add in the methods list, the Local interface methods, except - * - methods (other than remove) defined in javax.ejb.EJBLocalObject, - * - and overriding methods. - */ - methods = dd.getLocalClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBLocalObject.class) - || "remove".equals(method.getName())) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - break; - case Source.SERVICE_ENDPOINT: - /* - * Add in the methods list, the ServiceEndpoint interface methods - */ - SessionStatelessDesc ssd = (SessionStatelessDesc) dd; - methods = ssd.getServiceEndpointClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = new VcMethod(method, ssd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - break; - case Source.ENTITY_CMP_JDBC: - /* - * Add in the methods list, the Home and LocalHome interfaces methods, except - * - methods defined in javax.ejb.EJBHome and javax.ejb.EJBLocalHome and - * - and overriding methods. - * Same methods may be defined both in the Home interface and in the - * LocalHome interface. Don't add twice this method in the vcMethodList !!! - * - * Futhermore, in case of create() methods, methods added in the vcMethodList - * are the ejbCreate() associated bean's methods. - */ - if (dd.getHomeClass() != null) { - methods = dd.getHomeClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBHome.class)) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = null; - if (method.getName().startsWith("create")) { - Method beanMethod = getBeanMethod(method, dd.getEjbClass()); - vm = new VcMethod(beanMethod, dd.getMethodDesc(method), dd, mgr); - // add the ejbPostCreate method - Method m = getEjbPostCreateMethod(method, dd.getEjbClass()); - VcMethod vm2 = new VcMethod(m, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm2); - } else { - vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - } - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - } - if (dd.getLocalHomeClass() != null) { - methods = dd.getLocalHomeClass().getMethods(); - for (int i = 0; i < methods.length; i++) { - Method method = methods[i]; - if (!method.getDeclaringClass().equals(javax.ejb.EJBLocalHome.class)) { - String pMeth = convertMethod2String(method); - if (!prototypeMethodList.contains(pMeth)) { - VcMethod vm = null; - if (method.getName().startsWith("create")) { - Method beanMethod = getBeanMethod(method, dd.getEjbClass()); - vm = new VcMethod(beanMethod, dd.getMethodDesc(method), dd, mgr); - // add the ejbPostCreate method - Method m = getEjbPostCreateMethod(method, dd.getEjbClass()); - VcMethod vm2 = new VcMethod(m, dd.getMethodDesc(method), dd, mgr); - vcMethodList.add(vm2); - } else { - vm = new VcMethod(method, dd.getMethodDesc(method), dd, mgr); - } - vcMethodList.add(vm); - prototypeMethodList.add(pMeth); - } - } - } - } - - /* - * Add the - * - setEntityContext(javax.ejb.EntityContext), - * - ejbActivate(), - * - ejbLoad(), - * - ejbStore(), - * - ejbRemove() - * bean's methods. - */ - try { - Class[] params = {javax.ejb.EntityContext.class}; - Method beanMethod = dd.getEjbClass().getMethod("setEntityContext", - params); - VcMethod vm = new VcMethod(beanMethod, null, dd, mgr); - vcMethodList.add(vm); - } catch (Exception e) { - throw new Error("setEntityContext(javax.ejb.EntityContext) method not defined in " - + dd.getEjbClass().getName()); - } - try { - Method beanMethod = dd.getEjbClass().getMethod("ejbActivate", new Class[0]); - VcMethod vm = new VcMethod(beanMethod, null, dd, mgr); - vcMethodList.add(vm); - } catch (Exception e) { - throw new Error("ejbActivate() method not defined in " - + dd.getEjbClass().getName()); - } - try { - Method beanMethod = dd.getEjbClass().getMethod("ejbLoad", new Class[0]); - VcMethod vm = new VcMethod(beanMethod, null, dd, mgr); - vcMethodList.add(vm); - } catch (Exception e) { - throw new Error("ejbLoad() method not defined in " - + dd.getEjbClass().getName()); - } - try { - Method beanMethod = dd.getEjbClass().getMethod("ejbStore", new Class[0]); - VcMethod vm = new VcMethod(beanMethod, null, dd, mgr); - vcMethodList.add(vm); - } catch (Exception e) { - throw new Error("ejbStore() method not defined in " - + dd.getEjbClass().getName()); - } - try { - Method beanMethod = dd.getEjbClass().getMethod("ejbRemove", new Class[0]); - VcMethod vm = new VcMethod(beanMethod, null, dd, mgr); - vcMethodList.add(vm); - } catch (Exception e) { - throw new Error("ejbRemove() method not defined in " - + dd.getEjbClass().getName()); - } - - if (dd instanceof EntityCmp2Desc) { - /* - * Add the ejbSelect() methods defined in the bean. - */ - Method[] bMeths = dd.getEjbClass().getMethods(); - for (int i = 0; i < bMeths.length; i++) { - if (bMeths[i].getName().startsWith("ejbSelect")) { - VcMethod vm = new VcMethod(bMeths[i], dd.getMethodDesc(bMeths[i]), dd, mgr); - vcMethodList.add(vm); - } - } - } - break; - default: - break; - } - vc.put("methodList", new Vector(vcMethodList)); - - ArrayList vcFieldList = new ArrayList(); - ArrayList vcFieldPkList = new ArrayList(); - ArrayList vcFieldNoPkList = new ArrayList(); - if (dd instanceof EntityCmp1Desc) { - EntityCmp1Desc edd = (EntityCmp1Desc) dd; - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldDesc fd = (FieldDesc) i.next(); - VcField vcf = new VcField(fd.getName(), fd.getFieldType(), fd, true); - vcFieldList.add(vcf); - if (fd.isPrimaryKey()) { - vcFieldPkList.add(vcf); - } else { - vcFieldNoPkList.add(vcf); - } - } - } else if (dd instanceof EntityCmp2Desc) { - EntityCmp2Desc edd = (EntityCmp2Desc) dd; - // Define the CMP fields - Iterator it = edd.getCmpFieldDescIterator(); - while (it.hasNext()) { - FieldDesc fd = (FieldDesc) it.next(); - VcField vcf = new VcField(fd); - vcFieldList.add(vcf); - if (fd.isPrimaryKey()) { - vcFieldPkList.add(vcf); - } else { - vcFieldNoPkList.add(vcf); - } - } - // Define the CMR fields - Hashtable cmrFields = new Hashtable(); - for (Iterator i = edd.getEjbRelationshipRoleDescIterator(); i.hasNext();) { - EjbRelationshipRoleDesc rsr = (EjbRelationshipRoleDesc) i.next(); - String cmrname = rsr.getCmrFieldName(); - if (!cmrFields.containsKey(cmrname)) { - cmrFields.put(cmrname, new VcCMRField(rsr)); - } - } - vc.put("cmrList", cmrFields.values()); - } - - vc.put("fieldList", new Vector(vcFieldList)); - vc.put("fieldPkList", new Vector(vcFieldPkList)); - vc.put("fieldNoPkList", new Vector(vcFieldNoPkList)); - - return vc; - } - - /** - * Convert a method to a string depending on its name and its parameters list. - * @param meth method to convert - * @return Return a string representation of the given method - */ - private static String convertMethod2String(Method meth) { - String value = new String(meth.getName()); - Class[] params = meth.getParameterTypes(); - value = value + "_" + params.length; - for (int p = 0; p < params.length; p++) { - value = value + "_" + JavaType.getName(params[p]); - } - return (value); - } - - /** - * @param method home.create() method - * @param bean class of the bean - * @return Return the associated bean's method ejbPostCreate matching the create method of the interface - */ - private static Method getEjbPostCreateMethod(Method method, Class bean) { - Method beanMethod; - String beanMethodName = "ejbPost" + BeanNaming.firstToUpperCase(method.getName()); - try { - beanMethod = bean.getMethod(beanMethodName, method.getParameterTypes()); - } catch (Exception e) { - throw new Error("No associated ejbPostCreate method for the interface method " + method.toString()); - } - return beanMethod; - } - - /** - * Return the associated bean's method of the given interface's method, ie - * - ejbRemove(..) for [home|object]remove(..) - * - ejbCreateXxx(..) for home.createXxx(..) - * - ejbFindXxx(..) for home.findXxx(..) - * - ejbHomeXxx(..) for home.xxx(..) - * - xxx(..) for object.xxx(..) - * @param method interface method - * @param bean class of the bean - * @return Return the associated bean's method to the interface method - */ - private static Method getBeanMethod(Method method, Class bean) { - - String methodName = method.getName(); - Method beanMethod; - boolean isMethodHome = - javax.ejb.EJBHome.class.isAssignableFrom(method.getDeclaringClass()) - || javax.ejb.EJBLocalHome.class.isAssignableFrom(method.getDeclaringClass()); - - String beanMethodName = methodName; - if ("remove".equals(methodName)) { - beanMethodName = "ejbRemove"; - } else if (isMethodHome) { - if (methodName.startsWith("create") || methodName.startsWith("find")) { - beanMethodName = "ejb" + BeanNaming.firstToUpperCase(methodName); - } else { - beanMethodName = "ejbHome" + BeanNaming.firstToUpperCase(methodName); - } - } - - try { - beanMethod = bean.getMethod(beanMethodName, method.getParameterTypes()); - } catch (Exception e) { - throw new Error("No associated bean's method for the interface method " + method.toString()); - } - return beanMethod; - } - - /** - * @param classname name of a class - * @return true if the class is a 'user' class, false if it's a java class - */ - public static Boolean pkIsUserClass(String classname) { - if (classname.startsWith("java.")) { - return Boolean.FALSE; - } else { - return Boolean.TRUE; - } - } - - /** - * @param vc VelocityContext to trace - * @return Return a string representation of the given VelocityContext for debug use - */ - public static String toString(VelocityContext vc) { - StringBuffer ret = new StringBuffer(); - Object [] keys = vc.internalGetKeys(); - for (int i = 0; i < keys.length; i++) { - String key = (String) keys[i]; - Object value = vc.internalGet(key); - if (i > 0) { - ret.append("\n"); - } - if (!"dd".equals(key)) { - // Do not trace the BeanDesc (variable named "dd") - ret.append(" key = " + key + "; value = " + value); - } - } - return (ret.toString()); - } - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcCMRField.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcCMRField.java deleted file mode 100644 index e771ca9d34..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcCMRField.java +++ /dev/null @@ -1,293 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.genic; - -import org.ow2.jonas.deployment.ejb.EjbRelationshipRoleDesc; -import org.ow2.jonas.deployment.ejb.EntityCmp2Desc; -import org.ow2.jonas.lib.util.BeanNaming; - - - -/** - * This class is used in the velocity context. - * It represents a CMR field. - * - * @author S.Chassande-Barrioz : Initial developer - * @author Helene Joanin - */ -public class VcCMRField { - - /** - * Name of the cmr field - */ - private String name; - /** - * Name of cmr field with the first letter capitalized - */ - private String uFLName; - /** - * Type's name of the cmr field - */ - private String typeName; - /** - * First relationship-role of the cmr field - */ - private EjbRelationshipRoleDesc rsr; - /** - * Second relationship-role of the cmr field - */ - private EjbRelationshipRoleDesc rsr2; - /** - * Relation's type of the cmr field - */ - private byte relationType = -1; - /** - * Name of the JORM genclass. - * This field has a non null value if the cmr field is a multivalued relation - */ - private String genClassName = null; - /** - * Description of the cmr filed. - */ - private EntityCmp2Desc element = null; - - /** - * It builds a cmr field descriptor usable in velocity context. - * @param rsr The EjbRelationshipRoleDesc where this CMR field is defined - * @throws GenICException if the Deployment Decriptor is not conform - */ - public VcCMRField(EjbRelationshipRoleDesc rsr) throws GenICException { - this.rsr = rsr; - name = rsr.getCmrFieldName(); - uFLName = upperFL(name); - element = rsr.getTargetBean(); - typeName = rsr.getCmrFieldType().getName(); - if (rsr.isTargetMultiple()) { - if (java.util.Collection.class.equals(rsr.getCmrFieldType())) { - // TODO : Even if Collection has been defined as CMRField Type, we use a Set - genClassName = "org.ow2.jonas.lib.ejb21.jorm.Set"; - } else if (java.util.Set.class.equals(rsr.getCmrFieldType())) { - genClassName = "org.ow2.jonas.lib.ejb21.jorm.Set"; - } else { - throw new GenICException("Unauthorized multivalued relation type:" + rsr.getCmrFieldType()); - } - } - rsr2 = rsr.getOppositeRelationshipRole(); - relationType = rsr.getRelationType(); - } - - /** - * @return the name of the cmr field. - */ - public String getName() { - return name; - } - - /** - * @return the type name of the cmr field. - * It is the referenced class if the relation is multiple, - * otherwise the type of the multivalued relation (java.util.Collection or java.util.Set). - */ - public String getTypeName() { - return typeName; - } - - /** - * This is used to generate method names relative to the CMR Field - * @return the name of cmr field with the first letter capitalized. - */ - public String getUFLName() { - return uFLName; - } - - public String jormGetter() { - return "paGet" + getUFLName(); - } - - public String jormSetter() { - return "paSet" + getUFLName(); - } - - /** - * @return the JOnAS meta object where the CMR field is defined - */ - public EjbRelationshipRoleDesc getRsr() { - return rsr; - } - - /** - * @return the name of opposite cmr field with the first letter capitalized. - */ - public String getOppositeUFLCMRName() { - return upperFL(rsr2.getCmrFieldName()); - } - - /** - * CoherenceHelper class is used to manage coherence in relations. - * @return The JOnAS CoherenceHelper class name - */ - public String getHelperClassName() { - return "JOnAS" + rsr.getSourceBeanName() + "CoherenceHelper"; - } - - /** - * CoherenceHelper class is used to manage coherence in relations. - * @return The Fully Qualified JOnAS CoherenceHelper class name - */ - public String getHelperFQClassName() { - String pn = BeanNaming.getPackageName(rsr2.getTargetBean().getFullDerivedBeanName()); - if (pn != null && pn.length() > 0) { - return pn + "." + getHelperClassName(); - } else { - return getHelperClassName(); - } - } - - /** - * CoherenceHelper class is used to manage coherence in relations. - * @return The JOnAS CoherenceHelper class name for opposite bean - */ - public String getOppositeHelperClassName() { - return "JOnAS" + rsr2.getSourceBeanName() + "CoherenceHelper"; - } - - /** - * CoherenceHelper class is used to manage coherence in relations. - * @return The JOnAS CoherenceHelper fully qualified class name for opposite bean - */ - public String getOppositeHelperFQClassName() { - String pn = BeanNaming.getPackageName(rsr.getTargetBean().getFullDerivedBeanName()); - if (pn != null && pn.length() > 0) { - return pn + "." + getOppositeHelperClassName(); - } else { - return getOppositeHelperClassName(); - } - } - - /** - * @return the class name of the gen class which must be used if the cmr is multiple - * and return null otherwise. - * The class which the is returned implements the interface which the name is returned by the 'getTypeName' method. - */ - public String getGenClassName() { - return genClassName; - } - - /** - * @return the description of the field - */ - public EntityCmp2Desc getElement() { - return element; - } - - /** - * It capitalizes the first letter of a word. - * @param word is the input string to capitalize the first letter - * @return a String with first letter capitalized - */ - public String upperFL(String word) { - return Character.toUpperCase(word.charAt(0)) + word.substring(1); - } - - /** - * @return true if the relationship role is one-one unidirectional, false if not. - */ - public boolean isOOu() { - return relationType == EjbRelationshipRoleDesc.OOU; - } - - /** - * @return true if the relationship role is one-one bidirectional, false if not. - */ - public boolean isOOb() { - return relationType == EjbRelationshipRoleDesc.OOB; - } - - /** - * @return true if the relationship role is one-many unidirectional, false if not. - */ - public boolean isOMu() { - return relationType == EjbRelationshipRoleDesc.OMU; - } - - /** - * @return true if the relationship role is many-one unidirectional, false if not. - */ - public boolean isMOu() { - return relationType == EjbRelationshipRoleDesc.MOU; - } - - /** - * @return true if the relationship role is many-one bidirectional, false if not. - */ - public boolean isMOb() { - return relationType == EjbRelationshipRoleDesc.MOB; - } - - /** - * @return true if the relationship role is one-many bidirectional, false if not. - */ - public boolean isOMb() { - return relationType == EjbRelationshipRoleDesc.OMB; - } - - /** - * @return true if the relationship role is many-many unidirectional, false if not. - */ - public boolean isMMu() { - return relationType == EjbRelationshipRoleDesc.MMU; - } - - /** - * @return true if the relationship role is many-many bidirectional, false if not. - */ - public boolean isMMb() { - return relationType == EjbRelationshipRoleDesc.MMB; - } - - /** - * @return a string representation of the VcCMRField object for debug use - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\n Name = " + getName()); - ret.append("\n TypeName = " + getTypeName()); - ret.append("\n UFLName = " + getUFLName()); - ret.append("\n OppositeUFLCMRName = " + getOppositeUFLCMRName()); - ret.append("\n HelperClassName = " + getHelperClassName()); - ret.append("\n HelperFQClassName = " + getHelperFQClassName()); - ret.append("\n OppositeHelperClassName = " + getOppositeHelperClassName()); - ret.append("\n OppositeHelperFQClassName = " + getOppositeHelperFQClassName()); - ret.append("\n GenClassName = " + getGenClassName()); - ret.append("\n isOOu = " + isOOu()); - ret.append("\n isOOb = " + isOOb()); - ret.append("\n isOMu = " + isOMu()); - ret.append("\n isOMb = " + isOMb()); - ret.append("\n isMOb = " + isMOb()); - ret.append("\n isMNu = " + isMMu()); - ret.append("\n isMNb = " + isMMb()); - return (ret.toString()); - } -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcField.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcField.java deleted file mode 100644 index 7922ca7c8b..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcField.java +++ /dev/null @@ -1,340 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genic; - - -import java.lang.reflect.Field; - -import org.ow2.jonas.deployment.ejb.FieldDesc; -import org.ow2.jonas.lib.ejb21.JavaType; -import org.ow2.jonas.lib.ejb21.jorm.JormType; - - - -/** - * This class is the "Velocity context" for a container managed persistence bean's field - * used in the Velocity Template. - * @author Helene Joanin : Initial developer - */ - -public class VcField { - - /** - * Name of the cmp field - */ - private String mName = null; - /** - * Type's name of the cmp field - */ - private String mTypeName = null; - /** - * Is the field composes the primary key - */ - private boolean isPrimaryKey = false; - /** - * Is a cmp field version 1 (or version 2) - */ - private boolean mIsCmp1 = false; - /* - * For Cmp1 only - */ - /** - * String representation of the java default value (ie 0 for int, null for object, ...) - */ - private String mDefaultValue = null; - /** - * SQL type's name of the cmp field - */ - private String mSqlTypeName = null; - /** - * SQL getter method's name - */ - private String mSqlGetMethod = null; - /** - * SQL setter method's name - */ - private String mSqlSetMethod = null; - /** - * Is the type of the cmp field is primitive - */ - private boolean hasNotPrimitiveType = false; - /** - * Is the type of the cmp field is java.math.BigInteger - */ - private boolean hasBigIntegerType = false; - /** - * Is the type of the cmp field is Serializable - */ - private boolean hasSerializableType = false; - /** - * Is the type of the cmp field is a java.lang type except java.lang.String - */ - private boolean hasJavaLangTypeExceptString = false; - /* - * For CMP2 only - */ - /** - * JORM type name of the cmp field - */ - private String jormTypeName = null; - /** - * Is the cmp field must be converted between the memory representation and the storage representation - */ - private boolean mustBeConvert = false; - /** - * Convertion class name - */ - private String convertClassName = null; - - /** - * VcField constructor - * @param mName name of the cmp field - * @param fType type of the cmp field - * @param fd field descriptor of the cmp field - * @param isCmp1 true if it's a cmp version 1 field, false if it's a cmp version 2 field. - */ - public VcField(String mName, Class fType, FieldDesc fd, boolean isCmp1) { - mIsCmp1 = isCmp1; - this.mName = mName; - mTypeName = JavaType.getName(fType); - isPrimaryKey = fd.isPrimaryKey(); - mDefaultValue = JavaType.getDefaultValue(fType); - if (mIsCmp1) { - // CMP 1 - mSqlTypeName = JavaType.getSQLType(fType); - mSqlGetMethod = JavaType.getSQLGetMethod(fType); - mSqlSetMethod = JavaType.getSQLSetMethod(fType); - hasNotPrimitiveType = !fType.isPrimitive(); - hasBigIntegerType = fType.equals(java.math.BigInteger.class); - hasSerializableType = "setSerializable".equals(mSqlSetMethod) - && "getSerializable".equals(mSqlGetMethod); - hasJavaLangTypeExceptString = false; - if (fType.getPackage() != null) { - if ("java.lang".equals(fType.getPackage().getName()) - && !java.lang.String.class.equals(fType)) { - hasJavaLangTypeExceptString = true; - } - } - } else { - // CMP 2 - jormTypeName = JormType.getPType(fType, isPrimaryKey).getJavaName(); - if (fType.equals(java.sql.Date.class)) { - mustBeConvert = true; - convertClassName = "org.ow2.jonas.lib.ejb21.sql.SqlDateFieldMapping"; - } else if (fType.equals(java.sql.Time.class)) { - mustBeConvert = true; - convertClassName = "org.ow2.jonas.lib.ejb21.sql.SqlTimeFieldMapping"; - } else if (fType.equals(java.sql.Timestamp.class)) { - mustBeConvert = true; - convertClassName = "org.ow2.jonas.lib.ejb21.sql.SqlTimestampFieldMapping"; - } else if (isPrimaryKey && fType.equals(Float.class)) { - // JORM does not support Float for the primary key, we must so convert it - mustBeConvert = true; - convertClassName = "org.ow2.jonas.lib.ejb21.jorm.FloatPkFieldMapping"; - } - } - } - - /** - * VcField contructor for cmp field version 1 - * @param field java field descriptor of the cmp field - * @param fd field descriptor of the cmp field - */ - VcField(Field field, FieldDesc fd) { - this(field.getName(), field.getType(), fd, true); - } - - /** - * VcField onstructor for cmp field version 2 - * @param fd field descriptor of the cmp field - */ - VcField(FieldDesc fd) { - this(fd.getName(), fd.getFieldType(), fd, false); - } - - /** - * @return the name of the cmp field - */ - public String getName() { - return mName; - } - - /** - * @return the name, with the first letter capitalized, of the cmp field - */ - public String getNameUpperFirst() { - return Character.toUpperCase(mName.charAt(0)) + mName.substring(1); - } - - public String jormGetter() { - return "paGet" + getNameUpperFirst(); - } - - public String jormSetter() { - return "paSet" + getNameUpperFirst(); - } - - /** - * @return the name of the getter method of the cmp field - */ - public String getGetterName() { - return "get" + Character.toUpperCase(mName.charAt(0)) + mName.substring(1); - } - - /** - * @return the name of the setter method of the cmp field - */ - public String getSetterName() { - return "set" + Character.toUpperCase(mName.charAt(0)) + mName.substring(1); - } - - /** - * @return the type name of the cmp field - */ - public String getTypeName() { - return mTypeName; - } - - /** - * @return true if the cmp field composes the primary key - */ - public boolean isPrimaryKey() { - return isPrimaryKey; - } - - /* - * CMP version 1 only - */ - /** - * @return the string representation of the java default value for the cmp field (ie "0 "for int, "null" for object ...) - */ - public String getDefaultValue() { - return mDefaultValue; - } - - /** - * @return the SQL type name of the cmp field - */ - public String getSqlTypeName() { - return mSqlTypeName; - } - - /** - * @return the SQL getter method name for the cmp field - */ - public String getSqlGetMethod() { - return mSqlGetMethod; - } - - /** - * @return the SQL setter method name for the cmp field - */ - public String getSqlSetMethod() { - return mSqlSetMethod; - } - - /** - * @return true if the type of the cmp field is not a java primitive type - */ - public boolean hasNotPrimitiveType() { - return hasNotPrimitiveType; - } - - /** - * @return true if the type of the cmp field is java.math.BigInteger - */ - public boolean hasBigIntegerType() { - return hasBigIntegerType; - } - - /** - * @return true of the type of the cmp field is Serializable - */ - public boolean hasSerializableType() { - return hasSerializableType; - } - - /** - * @return true if the type of the cmp type is a java.lag type except java.lang.String - */ - public boolean hasJavaLangTypeExceptString() { - return hasJavaLangTypeExceptString; - } - - /* - * CMP version 2 only - */ - /** - * @return the JORM type name of the cmp field - */ - public String getJormTypeName() { - return jormTypeName; - } - - /** - * @return true if a conversion must be dome between the memory representation and the storage representation for the cmp field - */ - public boolean isMustBeConvert() { - return mustBeConvert; - } - - /** - * @return the class name of for the convertion between the memory representation and the storage representation for the cmp field - */ - public String getConvertClassName() { - return convertClassName; - } - - /** - * @return a string representation of the VcField for debug use - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\n Name = " + getName()); - ret.append("\n isPrimaryKey = " + isPrimaryKey()); - ret.append("\n NameUpperFirst = " + getNameUpperFirst()); - ret.append("\n GetterName = " + getGetterName()); - ret.append("\n SetterName = " + getSetterName()); - ret.append("\n TypeName = " + getTypeName()); - ret.append("\n DefaultValue = " + getDefaultValue()); - if (mIsCmp1) { - ret.append("\n SqlTypeName = " + getSqlTypeName()); - ret.append("\n SqlGetMethod = " + getSqlGetMethod()); - ret.append("\n SqlSetMethod = " + getSqlSetMethod()); - ret.append("\n hasNotPrimitiveType = " + hasNotPrimitiveType()); - ret.append("\n hasBigIntegerType = " + hasBigIntegerType()); - ret.append("\n hasSerializableType = " + hasSerializableType()); - ret.append("\n hasJavaLangTypeExceptString = " + hasJavaLangTypeExceptString()); - } else { - ret.append("\n JormTypeName = " + getJormTypeName()); - ret.append("\n MustBeConvert = " + isMustBeConvert()); - ret.append("\n ConvertClassName = " + getConvertClassName()); - } - return (ret.toString()); - } - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcMethod.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcMethod.java deleted file mode 100644 index 339b97d5c4..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcMethod.java +++ /dev/null @@ -1,1155 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genic; - - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.StringTokenizer; -import java.util.Vector; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.deployment.ejb.EntityJdbcCmp1Desc; -import org.ow2.jonas.deployment.ejb.EntityJdbcCmp2Desc; -import org.ow2.jonas.deployment.ejb.FieldJdbcDesc; -import org.ow2.jonas.deployment.ejb.MethodCmp2Desc; -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.deployment.ejb.MethodJdbcCmp1Desc; -import org.ow2.jonas.lib.ejb21.JavaType; -import org.ow2.jonas.lib.ejb21.sql.EjbqlQueryTreeHolder; -import org.ow2.jonas.lib.util.BeanNaming; - - - - -import org.objectweb.jorm.metainfo.api.Manager; -import org.objectweb.jorm.type.api.PType; -import org.objectweb.util.monolog.api.BasicLevel; - - -/** - * This class is the "Velocity context" for a interface method or a bean method used in the Velocity Templates. - * @author Helene Joanin (Bull) : Initial developer - * @author Santiago Gala (sgala@hisitech.com) - 00/09/14 - Parameters can be followed by a number in the WHERE clause - * @author Joe Gittings has proposed to code method signature for security - * in order to avoid same signature for inherited methods. - */ - -public class VcMethod { - - /** - * home.create method - */ - static final byte METHOD_CREATE = 0; - /** - * bean.ebjCreate method - */ - static final byte METHOD_EJB_CREATE = 1; - /** - * bean.ejbPostCreate method - */ - static final byte METHOD_EJB_POST_CREATE = 2; - /** - * EJBObject.remove() method - */ - static final byte METHOD_REMOVE_THIS = 10; - /** - * home.remove(primarykey) method - */ - static final byte METHOD_REMOVE_PK = 11; - /** - * home.remove(handle) method - */ - static final byte METHOD_REMOVE_HANDLE = 12; - /** - * bean.ejbRemove() method - */ - static final byte METHOD_EJB_REMOVE = 13; - /** - * home.findByPrimaryKey(pk) method - */ - static final byte METHOD_FINDER_BY_PK = 20; - /** - * home.findXxx() method - */ - static final byte METHOD_FINDER_ALL = 21; - /** - * home.findXxx() method that returns a simple object - */ - static final byte METHOD_FINDER_SIMPLE = 22; - /** - * home.findXxx() method that returns an Enumeration - */ - static final byte METHOD_FINDER_ENUM = 23; - /** - * home.findXxx() method that returns a Collection - */ - static final byte METHOD_FINDER_COL = 24; - /** - * bean.ejbSelectXxx() method that returns a simple object - */ - static final byte METHOD_EJB_SELECT_SIMPLE = 30; - /** - * bean.ejbSelectXxx() method that returns a Collection - */ - static final byte METHOD_EJB_SELECT_COL = 31; - /** - * bean.ejbSelectXxx() method that returns a Set - */ - static final byte METHOD_EJB_SELECT_SET = 32; - /** - * bean.ejbLoad() method - */ - static final byte METHOD_EJB_LOAD = 40; - /** - * bean.ejbStore() method - */ - static final byte METHOD_EJB_STORE = 41; - /** - * bean.setEntityContext() method - */ - static final byte METHOD_EJB_SET_ENTITY_CONTEXT = 42; - /** - * bean.ejbActivate() method - */ - static final byte METHOD_EJB_ACTIVATE = 43; - - /** - * kind of the method ie home.create() or bean.ejbCreate, or ... - */ - private byte mKind = -1; - - /** - * name of the method - */ - private String mName = null; - - /** - * name of the method with the firt letter capitalized - */ - private String mCapName = null; - - /** - * string representation of the formal parameters of the method (for ex: "int p1, String p2"); - */ - private StringBuffer mFormalParameters = null; - - /** - * string representation of the actual parameters of the method (for ex: "p1, p2") - */ - private StringBuffer mActualParameters = null; - - /** - * Array of objects of the parameters - */ - private StringBuffer mArrayObjectParameters = null; - - /** - * string representation of the exception list - */ - private StringBuffer mExceptionList = null; - - /** - * string representation of the security signature method - */ - private String mSecuritySignature; - - /** - * transactional attribute of the method - */ - private int mTxAttribute = MethodDesc.TX_NULL; - - /** - * name of the return type of the method - */ - private String mReturnType; - - /** - * default return value - */ - private String mDefaultValue; - - /** - * default wrapper type for the return type - */ - private String mWrapperType; - - /** - * java.lang.reflect.Method, just for explicit error message - */ - private Method mMethod = null; - - /** - * index of the method. Each method is identify with an unuique index. - */ - private int methodIndex = -1; - - /** - * BeanDesc of the associated bean to the method - */ - private BeanDesc beanDesc = null; - - private Manager manager = null; - - /* - * For CMP1 only - */ - - /** - * string representation of the SQL statement associated to the method - */ - private String mSqlStmt = null; - - /** - * VcParamWhere list of the finder method - */ - private ArrayList mParamWhereList = null; - - /* - * For CMP2 only - */ - - /** - * true is this is a finder/ejbSelect method that return a remote bean - * (Only used in CMP2 for finder and ejbSelect methods) - */ - - private boolean isEjbqlReturnRemoteBean = false; - /** - * true is this is a finder/ejbSelect method that return a local bean - * (Only used in CMP2 for finder and ejbSelect methods) - */ - - private boolean isEjbqlReturnLocalBean = false; - /** - * Medor Field representation of the result of the finder/ejbSelect method - * (Only used in CMP2 for finder and ejbSelect methods) - */ - - private org.objectweb.medor.api.Field resFieldOfEjbql = null; - /** - * VcParam list of the finder/ejbSelect method - * (Only used in CMP2 for finder and ejbSelect methods) - */ - private ArrayList mParamList = null; - - /** - * Class list of the parameters of the method - */ - private Class[] parameterTypes = null; - /** - * true if the method throws javax.ejb.CreateException - */ - private boolean canThrowCreate = false; - - /** - * VcMethod constructor - * @param method java.lang.reflect.Method method description - * @param methodDesc method description - * @param dd bean description of the associated bean - */ - VcMethod(Method method, MethodDesc methodDesc, BeanDesc dd, Manager mgr) { - - if (methodDesc != null) { - methodIndex = methodDesc.getIndex(); - } - beanDesc = dd; - manager = mgr; - - /* - * The 'method' may be - * - a home interface's method - * - a local home interface's method - * - a remote interface's method - * - a local interface's method - * - a bean's method as - * - a beans's ejbSelect() method, - * setEntityContext(), ejbActivate(), ejbCreate(), ejbLoad(), ejbStore(), ejbRemove(). - * - a beans's ejbSelect() method, - * In the last case, the 'methodDesc' is null in case of - * setEntityContext(), ejbActivate(), ejbLoad() and ejbStore(). - */ - - Class declClass = method.getDeclaringClass(); - Class [] params = method.getParameterTypes(); - parameterTypes = params; - Class [] exceptions = method.getExceptionTypes(); - mMethod = method; - - // Name and CapName - mName = method.getName(); - mCapName = BeanNaming.firstToUpperCase(mName); - - // FormalParameters and ActualParameters - mFormalParameters = new StringBuffer(); - mActualParameters = new StringBuffer(); - mArrayObjectParameters = new StringBuffer(); - String var = null; - for (int p = 1; p <= params.length; p++) { - var = "p" + p; - mFormalParameters.append(JavaType.getName(params[p - 1]) + " " + var); - mActualParameters.append(var); - mArrayObjectParameters.append(JavaType.toStringObject(var, params[p - 1])); - if (p < params.length) { - mFormalParameters.append(", "); - mActualParameters.append(", "); - mArrayObjectParameters.append(", "); - } - } - - // ExceptionList - mExceptionList = new StringBuffer(); - for (int e = 0; e < exceptions.length; e++) { - Class ecl = exceptions[e]; - if (javax.ejb.CreateException.class.isAssignableFrom(ecl)) { - canThrowCreate = true; - } - mExceptionList.append(JavaType.getName(ecl)); - if (e < exceptions.length - 1) { - mExceptionList.append(", "); - } - } - - // SecuritySignature - // No methodDesc for bean's methods as ejbLoad(), ejbStore(), ... - if (methodDesc != null) { - mSecuritySignature = ""; - if (methodDesc.getRoleName().length > 0 || methodDesc.isExcluded()) { - mSecuritySignature = BeanNaming.getSignature(dd.getEjbName(), method); - } - } - - // TxAttribute - // No methodDesc for bean's methods as ejbLoad(), ejbStore(), ... - if (methodDesc != null) { - mTxAttribute = methodDesc.getTxAttribute(); - } - - // ReturnType - mReturnType = JavaType.getName(method.getReturnType()); - if (! mReturnType.equals("void")) { - mDefaultValue = JavaType.getDefaultValue(method.getReturnType()); - mWrapperType = JavaType.getWrapperType(method.getReturnType()); - } - - // isFinderXXX - boolean isFinder = false; - - if (mName.startsWith("find") - && (javax.ejb.EJBHome.class.isAssignableFrom(declClass) - || javax.ejb.EJBLocalHome.class.isAssignableFrom(declClass)) - ) { - isFinder = true; - } - if (isFinder) { - if ("findByPrimaryKey".equals(mName)) { - mKind = METHOD_FINDER_BY_PK; - } else { - if (java.util.Enumeration.class.equals(method.getReturnType())) { - mKind = METHOD_FINDER_ENUM; - } else if (java.util.Collection.class.equals(method.getReturnType())) { - mKind = METHOD_FINDER_COL; - } else { - mKind = METHOD_FINDER_SIMPLE; - } - } - } - - // isCreate - if (mName.startsWith("create") - && (javax.ejb.EJBHome.class.isAssignableFrom(declClass) - || javax.ejb.EJBLocalHome.class.isAssignableFrom(declClass)) - ) { - mKind = METHOD_CREATE; - } - - // isEjbCreate - if (mName.startsWith("ejbCreate") - && javax.ejb.EnterpriseBean.class.isAssignableFrom(declClass)) { - mKind = METHOD_EJB_CREATE; - } - - // isEjbPostCreate - if (mName.startsWith("ejbPostCreate") - && javax.ejb.EnterpriseBean.class.isAssignableFrom(declClass)) { - mKind = METHOD_EJB_POST_CREATE; - } - - // isRemoveXXX - boolean isRemove = "remove".equals(mName); - if (isRemove) { - if (declClass.equals(javax.ejb.EJBObject.class) - || declClass.equals(javax.ejb.EJBLocalObject.class)) { - mKind = METHOD_REMOVE_THIS; - } else if (declClass.equals(javax.ejb.EJBHome.class) - || declClass.equals(javax.ejb.EJBLocalHome.class)) { - if (params[0].equals(javax.ejb.Handle.class)) { - mKind = METHOD_REMOVE_HANDLE; - } else { - mKind = METHOD_REMOVE_PK; - } - } - } - - // isEjbRemove, isEjbLoad, isEjbStore - if (javax.ejb.EnterpriseBean.class.isAssignableFrom(declClass) - && (params.length == 0)) { - if ("ejbRemove".equals(mName)) { - mKind = METHOD_EJB_REMOVE; - } else if ("ejbLoad".equals(mName)) { - mKind = METHOD_EJB_LOAD; - } else if ("ejbStore".equals(mName)) { - mKind = METHOD_EJB_STORE; - } - } - - // isEjbSetEntityContext - if (javax.ejb.EnterpriseBean.class.isAssignableFrom(declClass)) { - if ("setEntityContext".equals(mName) - && (params.length == 1) - && javax.ejb.EntityContext.class.equals(params[0])) { - mKind = METHOD_EJB_SET_ENTITY_CONTEXT; - } - } - - // isEjbActivate - if (javax.ejb.EnterpriseBean.class.isAssignableFrom(declClass)) { - if ("ejbActivate".equals(mName) - && (params.length == 0)) { - mKind = METHOD_EJB_ACTIVATE; - } - } - - if (dd instanceof EntityJdbcCmp1Desc) { - // For Entity CMP 1 - // SqlStmt, and ParamsWhere in case of FinderSimple, FinderEnum or FinderCol. - EntityJdbcCmp1Desc edd = (EntityJdbcCmp1Desc) dd; - StringBuffer lf = new StringBuffer(); - StringBuffer lv = new StringBuffer(); - boolean firstLf = true; - boolean firstLv = true; - if (mKind == METHOD_EJB_CREATE) { - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (firstLv) { - firstLv = false; - } else { - lf.append(", "); - lv.append(", "); - } - lf.append(fd.getJdbcFieldName()); - lv.append("?"); - } - mSqlStmt = - "insert into " + edd.getJdbcTableName() - + " (" + lf + ") values (" + lv + ")"; - } else if (mKind == METHOD_FINDER_BY_PK) { - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (fd.isPrimaryKey()) { - if (firstLv) { - firstLv = false; - } else { - lf.append(", "); - lv.append(" and "); - } - lf.append(fd.getJdbcFieldName()); - lv.append(fd.getJdbcFieldName() + "=?"); - } - } - - mSqlStmt = - "select " + lf + " from " + edd.getJdbcTableName() - + " where " + lv; - } else if ((mKind == METHOD_FINDER_SIMPLE) - || (mKind == METHOD_FINDER_ENUM) - || (mKind == METHOD_FINDER_COL)) { - if (!((MethodJdbcCmp1Desc) methodDesc).hasWhereClause()) { - throw new Error("No WHERE clause defined for the finder method '" - + method.toString() + "'"); - } - ArrayList posParams = new ArrayList(); - String clauseWhere = parseWhere (((MethodJdbcCmp1Desc) methodDesc).getWhereClause(), posParams); - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (fd.isPrimaryKey()) { - if (firstLf) { - firstLf = false; - } else { - lf.append(", "); - } - lf.append(fd.getJdbcFieldName()); - } - } - - mSqlStmt = - "select " + lf + " from " + edd.getJdbcTableName() - + " " + clauseWhere; - mParamWhereList = new ArrayList(); - for (int i = 0; i < posParams.size(); i++) { - int pos = ((Integer) posParams.get(i)).intValue(); - if (pos >= params.length) { - throw new Error("Wrong parameters number between the method definition and the WHERE clause of the method '" + method + "'"); - } - VcParamWhere vpw = new VcParamWhere(params[pos], pos + 1); - mParamWhereList.add(vpw); - } - } else if (mKind == METHOD_EJB_REMOVE) { - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (fd.isPrimaryKey()) { - if (firstLv) { - firstLv = false; - } else { - lv.append(" and "); - } - lv.append(fd.getJdbcFieldName() + "=?"); - } - } - - mSqlStmt = - "delete from " + edd.getJdbcTableName() - + " where " + lv; - } else if (mKind == METHOD_EJB_LOAD) { - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (firstLf) { - firstLf = false; - } else { - lf.append(", "); - } - lf.append(fd.getJdbcFieldName()); - if (fd.isPrimaryKey()) { - if (firstLv) { - firstLv = false; - } else { - lv.append(" and "); - } - lv.append(fd.getJdbcFieldName() + "=?"); - } - } - - mSqlStmt = - "select " + lf + " from " + edd.getJdbcTableName() - + " where " + lv; - } else if (mKind == METHOD_EJB_STORE) { - for (Iterator i = edd.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - if (fd.isPrimaryKey()) { - if (firstLv) { - firstLv = false; - } else { - lv.append(" and "); - } - lv.append(fd.getJdbcFieldName() + "=?"); - } else { - if (firstLf) { - firstLf = false; - } else { - lf.append(", "); - } - lf.append(fd.getJdbcFieldName() + "=?"); - } - } - mSqlStmt = - "update " + edd.getJdbcTableName() - + " set " + lf + " where " + lv; - } - } else if (dd instanceof EntityJdbcCmp2Desc) { - // ejbSelect() methods - boolean isEjbSelect = false; - if (mName.startsWith("ejbSelect") - && javax.ejb.EntityBean.class.isAssignableFrom(declClass)) { - isEjbSelect = true; - } - if (isEjbSelect) { - if (java.util.Collection.class.equals(method.getReturnType())) { - mKind = METHOD_EJB_SELECT_COL; - } else if (java.util.Set.class.equals(method.getReturnType())) { - mKind = METHOD_EJB_SELECT_SET; - } else { - mKind = METHOD_EJB_SELECT_SIMPLE; - } - } - if (isFinder || isEjbSelect) { - mParamList = new ArrayList(); - for (int p = 0; p < params.length; p++) { - mParamList.add(new VcParam(params[p], dd)); - } - if (isEjbSelect) { - try { - resFieldOfEjbql = getResField((MethodCmp2Desc) methodDesc); - if (resFieldOfEjbql.getType().getTypeCode() == PType.TYPECODE_REFERENCE) { - if (((MethodCmp2Desc) methodDesc).isResultTypeMappingRemote()) { - isEjbqlReturnRemoteBean = true; - } else { - isEjbqlReturnLocalBean = true; - } - } - } catch (DeploymentDescException e) { - throw new Error("Error while the EJB-QL parsing of '" + method.toString() - + "': " + e.getMessage()); - } - } else if (!isFinderByPk()) { - // finder method other than findByPrimaryKey: parse the EJBQL query to check the query - try { - getResField((MethodCmp2Desc) methodDesc); - } catch (DeploymentDescException ignore) { - GenIC.logger.log(BasicLevel.WARN, "Warning: Error while the EJB-QL parsing of '" + method.toString() - + "': " + ignore.getMessage()); - } - } - } - - } - - // System.out.print("VcMethod: "+method.toString()); - // System.out.println(toString()); - } - - protected EjbqlQueryTreeHolder queryTreeHolder = null; - - /** - * Check the query, and return the resfield. - */ - private org.objectweb.medor.api.Field getResField(MethodCmp2Desc md) throws DeploymentDescException { - if (queryTreeHolder == null) { - try { - queryTreeHolder = new EjbqlQueryTreeHolder(md, md.getQueryNode(), null, manager); - } catch (Exception e) { - throw new DeploymentDescException("ejbql query does not map to the persistent schema",e); - } - } - return queryTreeHolder.getResField(); - } - - /** - * @return the string representation of the java default value for the cmp field (ie "0 "for int, "null" for object ...) - */ - public String getDefaultValue() { - return mDefaultValue; - } - - /** - * Parses Strings with syntax "WHERE summary like ?" - * where is a decimal integer that indexes (starting by 0) - * the parameters in the findByXXX method for CMP1. - * @param fragment - * @param pos - * @return - * @author: Santiago Gala (sgala@hisitech.com) - */ - private String parseWhere(String fragment, List pos) { - StringTokenizer parseWhere = new StringTokenizer(fragment, "?\n", true); - int numpos = pos.size(); - String newWhere = ""; - String tok; - while (parseWhere.hasMoreTokens()) { - tok = parseWhere.nextToken(); - String numVar = ""; - if (Character.isDigit(tok.charAt(0))) { - for (int i = 0; tok.length() > i && Character.isDigit(tok.charAt(i)); i++) { - numVar += tok.charAt(i); - } - if (numVar.length() > 0) { - newWhere += tok.substring(numVar.length(), tok.length()); - pos.set(numpos - 1, (Object) new Integer(Integer.parseInt(numVar) - 1)); - } - } else { - newWhere += tok; - if (tok.charAt(0) == '?') { - pos.add(new Integer(numpos++)); - } - } - } - return newWhere; - } - - /** - * @return Return the name of the method - */ - public String getName() { - return mName; - } - - /** - * @return Return the name of the method with the first letter capitalized - */ - public String getCapName() { - return mCapName; - } - - /** - * @return Return the string representation of the formal parameters list (ie "int p1, String p2") - */ - public String getFormalParameters() { - return mFormalParameters.toString(); - } - - /** - * @return Return the string representation of the actual parameters list (ie "p1, p2") - */ - public String getActualParameters() { - return mActualParameters.toString(); - } - - /** - * @return Return the string representation of the exception list of the method - */ - public String getExceptionList() { - return mExceptionList.toString(); - } - - /** - * @return Return true if the method throws the javax.ejb.createException exception - */ - public boolean canThrowCreate() { - return canThrowCreate; - } - - /** - * @return Return the string representation of the security signature of the method - */ - public String getSecuritySignature() { - if (mSecuritySignature == null) { - throw new Error("VcMethod.getSecuritySignature() not available for the method '" - + mMethod.toString() + "'"); - } - return mSecuritySignature; - } - - /** - * @return Return the transactional attribute associated to the method - */ - public int getTxAttribute() { - if (mTxAttribute == MethodDesc.TX_NULL) { - throw new Error("VcMethod.getTxAttribute() not available for the method '" - + mMethod.toString() + "'"); - } - return mTxAttribute; - } - - /** - * @return Return the name of the return type of the method - */ - public String getReturnType() { - return mReturnType; - } - - /** - * @return the string representation of the wrapper type for the field - */ - public String getWrapperType() { - return mWrapperType; - } - - - /** - * @return Return false because we are not able to know if a finder method is a FinderAll method !! - */ - public boolean isFinderAll() { - // How to known a finder is a finderAll !? - return false; - } - - /** - * @return Return true if the method is the findByPrimaryKey() method - */ - public boolean isFinderByPk() { - return (mKind == METHOD_FINDER_BY_PK); - } - - /** - * @return Return true if the method is a finder method that returns a unique object - */ - public boolean isFinderSimple() { - return (mKind == METHOD_FINDER_SIMPLE); - } - - /** - * @return Return true if the method is a finder method that returns a Enumeration - */ - public boolean isFinderEnum() { - return (mKind == METHOD_FINDER_ENUM); - } - - /** - * @return Return true if the method is a finder method that returns a Collection - */ - public boolean isFinderCol() { - return (mKind == METHOD_FINDER_COL); - } - - /** - * @return Return true if the method is an ejbSelect method that returns a unique object - */ - public boolean isEjbSelectSimple() { - return (mKind == METHOD_EJB_SELECT_SIMPLE); - } - - /** - * @return Return true if the method is an ejbSelect method that returns a Set - */ - public boolean isEjbSelectSet() { - return (mKind == METHOD_EJB_SELECT_SET); - } - - /** - * @return Return true if the method is an ejbSelect method that returns a Collection - */ - public boolean isEjbSelectCol() { - return (mKind == METHOD_EJB_SELECT_COL); - } - - /** - * @return Return true if the method is a finder/select method that return a remote bean - */ - public boolean isEjbqlReturnRemoteBean() { - return isEjbqlReturnRemoteBean; - } - - /** - * @return Return true if the method is a finder/select method that return a local bean - */ - public boolean isEjbqlReturnLocalBean() { - return isEjbqlReturnLocalBean; - } - - /** - * @return Return true if the method is home.create() - */ - public boolean isCreate() { - return (mKind == METHOD_CREATE); - } - - /** - * @return Return true if the method is bean.ejbCreate() - */ - public boolean isEjbCreate() { - return (mKind == METHOD_EJB_CREATE); - } - - /** - * @return Return true if the method is bean.ejbPostCreate() - */ - public boolean isEjbPostCreate() { - return (mKind == METHOD_EJB_POST_CREATE); - } - - /** - * @return Return true if the method is EJBObject.remove() method - */ - public boolean isRemoveThis() { - return (mKind == METHOD_REMOVE_THIS); - } - - /** - * @return Return true if the method is home.remove(primarykey) - */ - public boolean isRemovePk() { - return (mKind == METHOD_REMOVE_PK); - } - - /** - * @return Return true if the method is home.remove(handle); - */ - public boolean isRemoveHandle() { - return (mKind == METHOD_REMOVE_HANDLE); - } - - /** - * @return Return true if the method is bean.ejbRemove() - */ - public boolean isEjbRemove() { - return (mKind == METHOD_EJB_REMOVE); - } - - /** - * @return Return true if the method is bean.ejbLoad() - */ - public boolean isEjbLoad() { - return (mKind == METHOD_EJB_LOAD); - } - - /** - * @return Return true if the method is bean.ejbStore() - */ - public boolean isEjbStore() { - return (mKind == METHOD_EJB_STORE); - } - - /** - * @return Return true if the method is bean.setEntityContext() - */ - public boolean isEjbSetEntityContext() { - return (mKind == METHOD_EJB_SET_ENTITY_CONTEXT); - } - - /** - * @return Return true if the method is bean.ejbActivate() - */ - public boolean isEjbActivate() { - return (mKind == METHOD_EJB_ACTIVATE); - } - - /** - * Only for CMP1 finder methods - * @return Return the string representation of the SQL statement associated to the method - */ - public String getSqlStmt() { - if (mSqlStmt == null) { - throw new Error("VcMethod.getSqlStmt() not available for the method '" - + mMethod.toString() + "'"); - } - return mSqlStmt; - } - - - /** - * @return Return the Class array of the parameters of the method - */ - public Class[] getParameterTypes() { - return parameterTypes; - } - - /** - * @return Return the number of the parameters of the method - */ - public int getParametersNumber() { - return parameterTypes.length; - } - - - /** - * Only for CMP1 finder methods - * @return Return the VcParamWhere list of the method - */ - public Vector getParamWhereList() { - if (mParamWhereList == null) { - throw new Error("VcMethod.getParamWhereList() not available for the method '" - + mMethod.toString() + "'"); - } - return (new Vector(mParamWhereList)); - } - - - /** - * @return Return the VcParam list of the method - */ - public Vector getParamList() { - if (mParamList == null) { - throw new Error("VcMethod.getParamList() not available for the method '" - + mMethod.toString() + "'"); - } - return (new Vector(mParamList)); - } - - - /** - * @return Return the index of the method. This is a unique index for each method of a bean. - */ - public int getMethodIndex() { - return methodIndex; - } - - /** - * Only for CMP2 finder/select methods - * @return Return the Medor field of tuple result of an Finder/Select method - */ - public org.objectweb.medor.api.Field getResFieldOfEjbql() { - return resFieldOfEjbql; - } - - /** - * Only for CMP2 finder/select methods - * @return Return the Medor get method name of the tuple result of an ejbSelect method - */ - public String getTupleGetter() { - PType type = resFieldOfEjbql.getType(); - switch(type.getTypeCode()) { - case PType.TYPECODE_BOOLEAN: - return "getBoolean"; - case PType.TYPECODE_BYTE: - return "getByte"; - case PType.TYPECODE_CHAR: - return "getChar"; - case PType.TYPECODE_DATE: - return "getDate"; - case PType.TYPECODE_DOUBLE: - return "getDouble"; - case PType.TYPECODE_FLOAT: - return "getFloat"; - case PType.TYPECODE_INT: - return "getInt"; - case PType.TYPECODE_LONG: - return "getLong"; - case PType.TYPECODE_SERIALIZED: - return "getObject"; - case PType.TYPECODE_SHORT: - return "getShort"; - case PType.TYPECODE_STRING: - return "getString"; - case PType.TYPECODE_BIGDECIMAL: - case PType.TYPECODE_REFERENCE: - case PType.TYPECODE_BYTEARRAY: - case PType.TYPECODE_CHARARRAY: - case PType.TYPECODE_OBJBOOLEAN: - case PType.TYPECODE_OBJBYTE: - case PType.TYPECODE_OBJCHAR: - case PType.TYPECODE_OBJDOUBLE: - case PType.TYPECODE_OBJFLOAT: - case PType.TYPECODE_OBJINT: - case PType.TYPECODE_OBJLONG: - case PType.TYPECODE_OBJSHORT: - default: - return "getObject"; - } - } - - /** - * Only for CMP2 finder/select methods - * @return Return true is the return type of the Medor getter method of the tuple result of an ejbSelect method is a primitive type - */ - public boolean isTupleGetterPrimitive() { - PType type = resFieldOfEjbql.getType(); - switch(type.getTypeCode()) { - case PType.TYPECODE_BOOLEAN: - case PType.TYPECODE_BYTE: - case PType.TYPECODE_CHAR: - case PType.TYPECODE_DOUBLE: - case PType.TYPECODE_FLOAT: - case PType.TYPECODE_INT: - case PType.TYPECODE_LONG: - case PType.TYPECODE_SHORT: - return true; - default: - return false; - } - } - - /** - * Only for CMP2 finder/select methos - * @return Return the associated class of the Medor getter method of the tuple result of an ejbSelect method when it's a primtive type - */ - public String getTupleGetterObjectClass() { - PType type = resFieldOfEjbql.getType(); - switch(type.getTypeCode()) { - case PType.TYPECODE_BOOLEAN: - return "Boolean"; - case PType.TYPECODE_BYTE: - return "Byte"; - case PType.TYPECODE_CHAR: - return "Char"; - case PType.TYPECODE_DOUBLE: - return "Double"; - case PType.TYPECODE_FLOAT: - return "Float"; - case PType.TYPECODE_INT: - return "Integer"; - case PType.TYPECODE_LONG: - return "Long"; - case PType.TYPECODE_SHORT: - return "Short"; - default: - return "Object"; - } - } - - /** - * Split a dot separated path into tokens - * @param path input path to split - * @return Return the string array of the splited token - */ - String[] splitPath(String path) { - StringTokenizer st = new StringTokenizer(path, "."); - String[] ret = new String[st.countTokens()]; - for (int i = 0; i < ret.length; i++) { - ret[i] = st.nextToken(); - } - return ret; - } - - /** - * Gets an empty array if no parameters and return an array of objects of the parameters if any - * @return array of objects - */ - public String getArrayObjectParameters() { - if (mArrayObjectParameters.length() == 0) { - return "new Object[0]"; - } else { - return "new Object[] {" + mArrayObjectParameters.toString() + "}"; - } - } - - - /** - * @return Return a string representation of the VcMethod object for debug use - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\n Name = " + getName()); - ret.append("\n CapName = " + getCapName()); - ret.append("\n FormalParameters = " + getFormalParameters()); - ret.append("\n ActualParameters = " + getActualParameters()); - ret.append("\n ExceptionList = " + getExceptionList()); - if (mSecuritySignature != null) { - ret.append("\n SecuritySignature = " + getSecuritySignature()); - } - if (mTxAttribute != MethodDesc.TX_NULL) { - ret.append("\n TxAttribute = " + getTxAttribute()); - } - ret.append("\n ReturnType = " + getReturnType()); - ret.append("\n isFinderByPk = " + isFinderByPk()); - ret.append("\n isFinderSimple = " + isFinderSimple()); - ret.append("\n isFinderEnum = " + isFinderEnum()); - ret.append("\n isFinderCol = " + isFinderCol()); - ret.append("\n isCreate = " + isCreate()); - ret.append("\n isEjbCreate = " + isEjbCreate()); - ret.append("\n isRemoveThis = " + isRemoveThis()); - ret.append("\n isRemovePk = " + isRemovePk()); - ret.append("\n isRemoveHandle = " + isRemoveHandle()); - ret.append("\n isEjbRemove = " + isEjbRemove()); - ret.append("\n isEjbLoad = " + isEjbLoad()); - ret.append("\n isEjbStore = " + isEjbStore()); - ret.append("\n isEjbSetEntityContext = " + isEjbSetEntityContext()); - ret.append("\n isEjbActivate = " + isEjbActivate()); - ret.append("\n isEjbSelectSimple = " + isEjbSelectSimple()); - ret.append("\n isEjbSelectSet = " + isEjbSelectSet()); - ret.append("\n isEjbSelectCol = " + isEjbSelectCol()); - if (mSqlStmt != null) { - ret.append("\n SqlStmt = " + getSqlStmt()); - } - if (mParamWhereList != null) { - ret.append("\n ParamWhereList = " + getParamWhereList()); - } - return (ret.toString()); - } - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParam.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParam.java deleted file mode 100644 index 024f3d86ac..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParam.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genic; - -import org.ow2.jonas.deployment.ejb.BeanDesc; -import org.ow2.jonas.lib.ejb21.JavaType; -import org.ow2.jonas.lib.ejb21.jorm.JormType; - - -/** - * This class is the "Velocity context" for a parameter of a finder/select method for CMP2 only, - * used in the Velocity Templates. - * @author Helene Joanin : Initial developer - */ -public class VcParam { - - /** - * Type's name of the parameter - */ - private String mTypeName = null; - - /** - * JORM type's name of the parameter - */ - private String mJormTypeName = null; - - /** - * true if the parameter is a local bean - */ - private boolean mIsEjbLocal = false; - /** - * In case the parameter is a local bean, name of this local bean - */ - private String mEjbName = null; - - /** - * VcParam Constructor - * @param type parameter class - * @param dd bean descriptor - */ - VcParam(Class type, BeanDesc dd) { - mTypeName = JavaType.getName(type); - mJormTypeName = JormType.getPTypeDef(type, false); - mIsEjbLocal = javax.ejb.EJBLocalObject.class.isAssignableFrom(type); - if (mIsEjbLocal) { - BeanDesc bdp = dd.getDeploymentDesc().getBeanDescWithLocalInterface(mTypeName); - if (bdp == null) { - throw new Error("VcParam: Cannot get the BeanDesc associated to the interface local '" + mTypeName + "'"); - } - mEjbName = bdp.getEjbName(); - } - } - - /** - * @return Returns the type's name of the parameter - */ - public String getTypeName() { - return mTypeName; - } - - /** - * @return Returns the JORM type's name of the parameter - */ - public String getJormType() { - return mJormTypeName; - } - - /** - * @return Returns true if the parameter is a local bean - */ - public boolean isEjbLocal() { - return mIsEjbLocal; - } - - /** - * @return If the parameter is a local bean, returns the name of this local bean - */ - public String getEjbName() { - if (!isEjbLocal()) { - throw new Error("VcParam.getEjbName(): No BeanDesc associated to the param '" - + mTypeName + "'"); - } - return mEjbName; - } - -} - diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParamWhere.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParamWhere.java deleted file mode 100644 index 13aeb77c0e..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VcParamWhere.java +++ /dev/null @@ -1,180 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.generators.genic; - -import org.ow2.jonas.lib.ejb21.JavaType; - -/** - * This class is the "Velocity context" for a parameter of a where clause of finder method for CMP1 only, - * used in the Velocity Templates. - * @author Helene Joanin : Initial developer - */ -public class VcParamWhere { - - /** - * name of the parameter (ie "p1") - */ - private String mName; - - /** - * type's name of the parameter - */ - private String mTypeName; - - /** - * SQL type's name of the parameter - */ - private String mSqlTypeName; - - /** - * SQL setter method name for this parameter - */ - private String mSqlSetMethod; - - /** - * true if the parameter hasn't a java primitive type - */ - private boolean hasNotPrimitiveType; - - /** - * true if the parameter has the java.math.BigInteger type - */ - private boolean hasBigIntegerType; - - /** - * true if the parameter has a Serializable type - */ - private boolean hasSerializableType; - - /** - * true if the parameter has a java.lang.* type except java.lang.string - */ - private boolean hasJavaLangTypeExceptString; - - /** - * VcParamWhere Constructor - * @param type parameter's type - * @param position parameter's position in the where clause - */ - VcParamWhere(Class type, int position) { - - mName = new String("p" + position); - mTypeName = JavaType.getName(type); - mSqlTypeName = JavaType.getSQLType(type); - mSqlSetMethod = JavaType.getSQLSetMethod(type); - if (mSqlSetMethod == null) { - throw new Error("Cannot container persistence manage the type '" - + type.getName() + "'"); - } - hasNotPrimitiveType = !type.isPrimitive(); - hasBigIntegerType = type.equals(java.math.BigInteger.class); - hasSerializableType = "setSerializable".equals(mSqlSetMethod); - hasJavaLangTypeExceptString = false; - if (type.getPackage() != null) { - if ("java.lang".equals(type.getPackage().getName()) - && !java.lang.String.class.equals(type)) { - hasJavaLangTypeExceptString = true; - } - } - - // System.out.print("VcParamWhere: "+type.toString()); - // System.out.println(toString()); - } - - /** - * @return Returns the name of the parameter (ie "p1") - */ - public String getName() { - return mName; - } - - /** - * @return Returns the type's name of the parameter - */ - public String getTypeName() { - return mTypeName; - } - - /** - * @return Returns the SQL type's name of the parameter - */ - public String getSqlTypeName() { - return mSqlTypeName; - } - - /** - * @return Returns the SQL setter method associated to the parameter - */ - public String getSqlSetMethod() { - return mSqlSetMethod; - } - - /** - * @return Returns true if the parameter's type is not a java primitive type - */ - public boolean hasNotPrimitiveType() { - return hasNotPrimitiveType; - } - - /** - * @return Returns true if the parameter's type is java.math.BigInteger - */ - public boolean hasBigIntegerType() { - return hasBigIntegerType; - } - - /** - * @return Returns true if the parameter's type is Serializable - */ - public boolean hasSerializableType() { - return hasSerializableType; - } - - /** - * @return true if the parameter's type is a java.lang.* type except java.lang.string - */ - public boolean hasJavaLangTypeExceptString() { - return hasJavaLangTypeExceptString; - } - - /** - * @return Returns a string representation of the VcParamWhere object to debug use - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\n Name = " + getName()); - ret.append("\n TypeName = " + getTypeName()); - ret.append("\n SqlTypeName = " + getSqlTypeName()); - ret.append("\n SqlSetMethod = " + getSqlSetMethod()); - ret.append("\n hasNotPrimitiveType = " + hasNotPrimitiveType()); - ret.append("\n hasBigIntegerType = " + hasBigIntegerType()); - ret.append("\n hasSerializableType = " + hasSerializableType()); - ret.append("\n hasJavaLangTypeExceptString = " + hasJavaLangTypeExceptString()); - return (ret.toString()); - } - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VelocityMonologLogger.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VelocityMonologLogger.java deleted file mode 100644 index e2f5a229d0..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/VelocityMonologLogger.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic; - -import org.apache.velocity.runtime.RuntimeServices; -import org.apache.velocity.runtime.log.LogSystem; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Wrap the velocity logger into a Monolog logger. - * @author Florent Benoit - */ -public class VelocityMonologLogger implements LogSystem { - - /** - * Monolog logger. - */ - private Logger monologLogger = null; - - /** - * Constructor. - * @param monologLogger the given monolog logger. - */ - public VelocityMonologLogger(final Logger monologLogger) { - this.monologLogger = monologLogger; - } - - /** - * Do nothing. - * @param services velocity services - * @throws Exception if there are errors. - */ - public void init(final RuntimeServices services) throws Exception { - } - - /** - * Logs the given message at the specified level. - * @param level the given level of log - * @param message the given message - */ - public void logVelocityMessage(final int level, final String message) { - switch (level) { - case LogSystem.WARN_ID: - monologLogger.log(BasicLevel.WARN, message); - break; - case LogSystem.ERROR_ID: - monologLogger.log(BasicLevel.ERROR, message); - break; - case LogSystem.INFO_ID: - monologLogger.log(BasicLevel.INFO, message); - break; - case LogSystem.DEBUG_ID: - monologLogger.log(BasicLevel.DEBUG, message); - break; - default: - // log in debug by default - monologLogger.log(BasicLevel.DEBUG, message); - } - - } - -} diff --git a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/wrapper/GenicServiceWrapper.java b/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/wrapper/GenicServiceWrapper.java deleted file mode 100644 index f3b4b0bd15..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/java/org/ow2/jonas/generators/genic/wrapper/GenicServiceWrapper.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.genic.wrapper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.ow2.jonas.lib.bootstrap.LoaderManager; -import org.ow2.jonas.service.ServiceException; - - -/** - * GenIC wrapper - * - * @author Camilleri Jerome : Initial developer - */ -public class GenicServiceWrapper { - - - /** - * GenIC fully qualified classname - */ - private static final String GENIC_CLASSNAME = "org.ow2.jonas.generators.genic.GenIC"; - - /** - * Private empty constructor for utility class - */ - private GenicServiceWrapper() { }; - - /** - * Wrapper around GenIC.main(String[]) method - * @param args GenIC args - * @throws ServiceException If GenIC fails or if Reflection errors occurs - */ - public static void callGenic(final String[] args) throws ServiceException { - LoaderManager lm = LoaderManager.getInstance(); - ClassLoader old = null; - - try { - ClassLoader ext = lm.getExternalLoader(); - if (ext == null) { - throw new ServiceException("cannot get tools classloader"); - } - old = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(ext); - - Class manager = ext.loadClass(GENIC_CLASSNAME); - Method m = manager.getDeclaredMethod("main", new Class[] {String[].class}); - m.invoke(null, new Object[] {args}); - } catch (InvocationTargetException e) { - if (e.getTargetException() instanceof Error) { - throw (Error) e.getTargetException(); - } else if (e.getTargetException() instanceof ServiceException) { - throw (ServiceException) e.getTargetException(); - } else { - throw new ServiceException("Problems when invoking main method from GenIC", e.getTargetException()); - } - } catch (Exception e) { - throw new ServiceException("Problems when invoking main method from GenIC" , e); - } finally { - if (old != null) { - Thread.currentThread().setContextClassLoader(old); - } - } - } -} - diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/META-INF/jonas-genic.bnd b/jonas/modules/generators/jonas-genic/src/main/resources/META-INF/jonas-genic.bnd deleted file mode 100644 index 27958e826b..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/META-INF/jonas-genic.bnd +++ /dev/null @@ -1,53 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.generators.genic.* - -# ant, avalon, log4j, bcel imported by velocity but not used -Import-Package !org.apache.tools.ant.*,\ - !org.apache.avalon.framework.logger,\ - !org.apache.bcel.*,\ - !org.apache.log4j.*,\ - !org.jdom.*,\ - !com.werken.*,\ - !junit.*,\ - !org.objectweb.jorm.mapper.fos.*,\ - !org.apache.xerces.dom,\ - !org.apache.xml.*,\ - * - -DynamicImport-Package org.objectweb.jorm.naming.*, \ - org.objectweb.perseus.persistence.api, \ - org.ow2.jonas.lib.ejb21.ha,\ - javax.* - --exportcontents org.objectweb.jorm.generator.*, \ - org.objectweb.jorm.mapper.rdb.*, \ - org.apache.velocity.runtime.log - -# asm needed by jorm-compiler -Embed-Dependency velocity-dep;inline=true, \ - jorm-compiler;inline=true, \ - asm;inline=true, \ - asm-attrs;inline=true, \ - fastrmic;inline=true diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/GenICMacros.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/GenICMacros.vm deleted file mode 100644 index dfd637eaff..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/GenICMacros.vm +++ /dev/null @@ -1,86 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Benoit PELLETIER. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -## Macros library for GenIC - -############################################################################### -## -## macros 'beforeThrowRemoteException' and 'afterThrowRemoteException" aim to -## add a try catch block in order to perform some post exception process like mapping -## to protocol depending exception -## - -#macro( beforeThrowRemoteException ) -// Velocity: beforeThrowRemoteException: $Id$ -try { -#end## - -#macro( afterThrowRemoteException ) - // Velocity: afterThrowRemoteException: $Id$ -} catch ( RemoteException e) { - - // check if rmi exception mapping is needed - if yes the method rethrows it - RmiUtility.rethrowRmiException(e) ; - // if not, throws the exception just as it is - throw e ; -} -#end - -#macro( timerVariablesDeclaration) - long requestStartTime ; - long businessStartTime = -1; - long businessStopTime; - long requestStopTime; -#end - -#macro( getRequestStartTime) - requestStartTime = new Date().getTime(); -#end - -#macro( getRequestStopTime) - requestStopTime = new Date().getTime(); -#end - -#macro( getBusinessStartTime) - businessStartTime = new Date().getTime(); -#end - -#macro( getBusinessStopTime) - businessStopTime = new Date().getTime(); -#end - -#macro( updateEJBMonitoringData) - if (bf instanceof JSessionFactory) { - JSessionFactory jsf = (JSessionFactory) bf; - if (jsf.getMonitoringEnabled()) { - MonitoringEvent monitoringEvent = new MonitoringEvent(System.identityHashCode(jsf), jsf.getEJBName(), - jsf.getContainer().getFileName(), "$package.$class.$M.getName()($M.getFormalParameters())", - businessStartTime, businessStopTime, requestStartTime, requestStopTime); - jsf.getDispatcher().dispatch(monitoringEvent); - } - } -#end diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2.vm deleted file mode 100644 index ff118e1955..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2.vm +++ /dev/null @@ -1,1564 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// -// This class is the bean specific part of the container managed persistence with JDBC. -// Generated by JOnAS's GenIC tool via Velocity. -// DO NOT EDIT THIS FILE. - -#set( $IsAutomaticPk = $dd.isAutomaticPk() ) -#set( $IsUndefinedPK = $dd.isUndefinedPK() ) -package $package; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; - -import javax.ejb.CreateException; -import javax.ejb.DuplicateKeyException; -import javax.ejb.EJBException; -import javax.ejb.EJBHome; -import javax.ejb.EJBObject; -import javax.ejb.EntityContext; -import javax.ejb.FinderException; -import javax.ejb.ObjectNotFoundException; -import javax.ejb.NoSuchObjectLocalException; -import javax.ejb.RemoveException; - -import org.objectweb.util.monolog.api.BasicLevel; - -import org.objectweb.jorm.api.PAccessor; -import org.objectweb.jorm.api.PBinding; -import org.objectweb.jorm.api.PClassMapping; -import org.objectweb.jorm.api.PException; -import org.objectweb.jorm.api.PExceptionExistingDSI; -import org.objectweb.jorm.api.PExceptionIO; -import org.objectweb.jorm.naming.api.PExceptionNaming; -import org.objectweb.jorm.naming.api.PBinder; -import org.objectweb.jorm.naming.api.PExceptionExistingName; -import org.objectweb.jorm.naming.api.PName; -import org.objectweb.jorm.naming.api.PNameCoder; -import org.objectweb.jorm.naming.api.PNameGetter; -import org.objectweb.jorm.naming.api.PNamingContext; -import org.objectweb.jorm.type.api.PType; -import org.objectweb.jorm.type.api.PTypeSpace; - -import org.ow2.jonas.lib.ejb21.jorm.Coder; -import org.ow2.jonas.lib.ejb21.jorm.GenClassElement; -import org.ow2.jonas.lib.ejb21.jorm.GenClassListener; -import org.ow2.jonas.lib.ejb21.jorm.MedorFactory; -import org.ow2.jonas.lib.ejb21.jorm.PObject; -import org.ow2.jonas.lib.ejb21.jorm.PObjectHome; -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntitySwitch; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.MarshallTool; -import org.ow2.jonas.lib.ejb21.JavaType; -import org.ow2.jonas.lib.ejb21.ExceptionHelper; - -import org.objectweb.medor.api.MedorException; -import org.objectweb.medor.api.TupleStructure; -import org.objectweb.medor.expression.api.ParameterOperand; -import org.objectweb.medor.expression.lib.BasicParameterOperand; -import org.objectweb.medor.tuple.api.Tuple; -import org.objectweb.medor.tuple.api.TupleCollection; -import org.objectweb.medor.type.lib.PTypeSpaceMedor; - -public class $class extends ${dd.getJormStateClassName()} implements PAccessor, - ${dd.getJormAccessorClassName()} -#if($pkIsUserClass) - ,${dd.getJormPNameGetterClassName()} -#end -{ - -################################### -############## Fields ############# -################################### -#foreach ($F in $fieldList) -// private ${F.getTypeName()} ${F.getName()}; - -#end -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - private ${F.getGenClassName()} ${F.getName()} = null; - private boolean ${F.getName()}loaded = false; -#* *##else - private ${F.getTypeName()} ${F.getName()} = null; -#* *##end -// private PName ${F.getName()}PName = null; - -#end - protected JEntityContext ejbContext = null; - private MedorFactory factory = null; - private boolean setPkAllowed = false; - private boolean selectForUpdate = false; - - public PNameGetter encode(String field, PName pname) - throws PExceptionNaming { - PNameCoder coder = factory.getPNameCoder(field); - if (pname == null) { - pname = coder.getNull(); - } - PNameGetter result = (PNameGetter) coder.encodeAbstract(pname); - return result; - } - - public PName decode(String field, PNameGetter png, Object ctx) - throws PExceptionNaming { - PNameCoder coder = factory.getPNameCoder(field); - if (png == null) { - return coder.getNull(); - } else { - return coder.decodeAbstract(png, ctx); - } - } - -######################################################################## -############ Accessors (EJB 2.0 & Jorm) for the CMP fields ############# -######################################################################## -#foreach ($F in $fieldList) - //-------------------------------------------------------------// - //------------------- Field ${F.getName()} - //-------------------------------------------------------------// - // EJB 2.0 Getter - public ${F.getTypeName()} ${F.getGetterName()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, "return " + ${F.jormGetter()}()); -#* *##if (!$F.isMustBeConvert()) - return (${F.getTypeName()}) ${F.jormGetter()}(); -#* *##else - return (${F.getTypeName()}) ${F.getConvertClassName()}.toMemory(${F.jormGetter()}()); -#* *##end - } - - // EJB 2.0 Setter - public void ${F.getSetterName()}(${F.getTypeName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG,"param=" + val); -#* *##if ($F.isPrimaryKey()) -#set( $pkField = ${F.jormSetter()} ) - if (!setPkAllowed) { - throw new IllegalStateException("Must not reset a primary key value(${F.jormGetter()}() field)"); - } -#* *##end - ejbContext.setDirty(true); -#* *##if (!$F.isMustBeConvert()) - this.${F.jormSetter()}((${F.getJormTypeName()}) val); -#* *##else - this.${F.jormSetter()}((${F.getJormTypeName()}) ${F.getConvertClassName()}.toStorage(val)); -#* *##end - } - - /* - // Jorm Getter - public ${F.getJormTypeName()} paGet${F.getNameUpperFirst()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, "return " + ${F.jormGetter()}()); -#* *##if (!$F.isMustBeConvert()) - return (${F.getJormTypeName()}) ${F.jormGetter()}(); -#* *##else - return (${F.getJormTypeName()}) ${F.getConvertClassName()}.toStorage(${F.jormGetter()}()); -#* *##end - } - - // Jorm Setter - public void paSet${F.getNameUpperFirst()}(${F.getJormTypeName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG, "param=" + val + " / current=" + ${F.jormGetter()}()); -#* *##if (!$F.isMustBeConvert()) - this.${F.jormSetter()}((${F.getTypeName()}) val); -#* *##else - this.${F.jormSetter()}((${F.getTypeName()}) ${F.getConvertClassName()}.toMemory(val)); -#* *##end - } - */ - -#end ##foreach -######################################################################## -############ Accessors (EJB 2.0 & Jorm) for the CMR fields ############# -######################################################################## -#foreach ($F in $cmrList) - //-------------------------------------------------------------// - //------------------- Field ${F.getName()} - //-------------------------------------------------------------// - - private void update${F.getName()}() { -#* *##if ($F.getRsr().isTargetMultiple()) - try { - Object conn = factory.getConnection(null); - ${F.jormSetter()}(((PNamingContext) factory.getPNameCoder("${F.getName()}")) - .export(conn, ${F.getName()}.gcGetPBinding(), - ((PBinding) ejbContext.getEntitySwitch()).getPName())); - } catch (PException e) { - throw new RuntimeException("Impossible to fetch a PName of the '${F.getName()}' field", e); - } -#* *##else - if (${F.getName()} != null) { - ${F.jormSetter()}(((PObject) ${F.getName()}).getPName()); - } else { - ${F.jormSetter()}(factory.getPNameCoder("${F.getName()}").getNull()); - } -#* *##end - } - -#* *##if (!$F.getRsr().isTargetMultiple()) - private void loadCMR${F.getUFLName()}() { - if (${F.getName()} == null) { - //TraceEjb.interp.log(BasicLevel.DEBUG,"load reference" + ${F.jormGetter()}()); - try { - ${F.getName()} = (${F.getTypeName()}) getPObject(${F.jormGetter()}(), true); - } catch (PException pe) { - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to load the reference", pe); - throw new EJBException("Impossible to load the reference", pe); - } - } - } - - private void clear${F.getUFLName()}() throws RemoveException { - loadCMR${F.getUFLName()}(); - if (${F.getName()} != null) { -#* *##if ($F.getRsr().mustCascade()) -#* *##else - ((${F.getOppositeHelperFQClassName()}) ${F.getName()}).jonasSet${F.getOppositeUFLCMRName()}(null); -#* *##end - } - ejbContext.setDirty(true); - // ${F.jormSetter()}(null); - ${F.getName()} = null; - update${F.getName()}(); - } - -#* *##else - private void loadGC${F.getUFLName()}() { - if (! ${F.getName()}loaded) { - try { - ${F.getName()}.read(${F.jormGetter()}(), null, jonasGetCurrentTransaction()); - ${F.getName()}loaded = true; - } catch (PException pe) { - Exception e = getInnerException(pe); - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to load the CMR field", e); - throw new EJBException("Impossible to load the CMR field", e); - } - } - } -#* *##end - - // ------------------------ E J B G E T T E R ---------------------- // - //-----------------------------------------------------------------------// - public ${F.getTypeName()} get${F.getUFLName()}() { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "bean pname:" + ((JEntitySwitch) ejbContext.getEntitySwitch()).getPrimaryKey()); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}=" + ${F.getName()}); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}PName=" + ${F.jormGetter()}()); - //if (${F.jormGetter()}() != null) { - // TraceEjb.interp.log(BasicLevel.DEBUG, "${F.getName()}PName.isNull(): " + ${F.jormGetter()}().isNull()); - //} -#* *##if (!$F.getRsr().isTargetMultiple()) - loadCMR${F.getUFLName()}(); -#* *##else - loadGC${F.getUFLName()}(); -#* *##end - //TraceEjb.coherence.log(BasicLevel.DEBUG, "return " + ${F.getName()}); - return ${F.getName()}; - } - - // ------------------------ E J B S E T T E R ---------------------- // - //-----------------------------------------------------------------------// - public void set${F.getUFLName()}(${F.getTypeName()} val) { -## -## -#* *##if ($F.getRsr().isTargetMultiple())## MULTIVALUED ###################### - if (val == null) { - throw new IllegalArgumentException("Assign a null value to a multivalued relationship"); - } - loadGC${F.getUFLName()}(); - if (val != ${F.getName()}) { - ejbContext.setDirty(true); - // clear the current gen class - ${F.getName()}.clear(); - - // iterate over the parameter to add each element into the - // current gen class - for(Iterator it = val.iterator(); it.hasNext();) { - ${F.getName()}.add(it.next()); - } - } -## -## -#* *##elseif ($F.isOOb())## ONE - ONE bidrectional############################ - // Load the reference for the coherence management - loadCMR${F.getUFLName()}(); - if (val != null) { - // Remove the relation of the bean which references the parameter - // if there is a relation - ${F.getHelperClassName()} element; - try { - element = ((${F.getOppositeHelperFQClassName()}) val).jonasGet${F.getOppositeUFLCMRName()}(); - } catch (NoSuchObjectLocalException e) { - throw new IllegalArgumentException(e.getMessage()); - } - if (element != null) { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "Remove the relation of the bean which references the parameter" + element); - try { - element.jonasSet${F.getUFLName()}(null); - } catch (Exception e) { - throw new EJBException("impossible to remove the relation of the bean which references the parameter", e); - } - } - - // link the parameter to the current bean (reverse relation coherence) - //TraceEjb.coherence.log(BasicLevel.DEBUG, "link the parameter to the current bean"); - ${F.getHelperClassName()} current = (${F.getHelperClassName()}) -#* *##if ($dd.getLocalClass()) - ejbContext.get2EJBLocalObject(); -#* *##else - ejbContext.getEJBObject(); -#* *##end - if (current == null) { - current = (${F.getHelperClassName()}) ejbContext.getEJBObject(); - } - ((${F.getOppositeHelperFQClassName()}) val).jonasSet${F.getOppositeUFLCMRName()}(current); - } - - // remove the relation of the current referenced bean to this - if (${F.getName()} != null) { - ((${F.getOppositeHelperFQClassName()}) ${F.getName()}).jonasSet${F.getOppositeUFLCMRName()}(null); - } - if (val == null || !val.equals(${F.getName()})) { - ejbContext.setDirty(true); - // ${F.jormSetter()}(null); - ${F.getName()} = val; - update${F.getName()}(); - } -## -## -#* *##elseif ($F.isMOb())## MANY - ONE bidrectional########################## - loadCMR${F.getUFLName()}(); - if (val == null || !val.equals(${F.getName()})) { - ${F.getHelperClassName()} current; - try { - current = (${F.getHelperClassName()}) -#* *##if ($dd.getLocalClass()) - ejbContext.get2EJBLocalObject(); -#* *##else - ejbContext.getEJBObject(); -#* *##end - if (${F.getName()} != null) { - ((${F.getOppositeHelperFQClassName()}) ${F.getName()}).jonasRemove${F.getOppositeUFLCMRName()}(current); - } - if (val != null) { - ((${F.getOppositeHelperFQClassName()}) val).jonasAdd${F.getOppositeUFLCMRName()}(current); - } - } catch (NoSuchObjectLocalException e) { - throw new IllegalArgumentException(e.getMessage()); - } - ejbContext.setDirty(true); - // ${F.jormSetter()}(null); - ${F.getName()} = val; - update${F.getName()}(); - } -## -## -#* *##else#################################################################### - throw new EJBException("Error in generated Setter method"); -#* *##end - //TraceEjb.coherence.log(BasicLevel.DEBUG, "end: ${F.getName()}=" + ${F.getName()}); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "end: ${F.getName()}PName=" + ${F.jormGetter()}()); - } -## - - // ------------------- J O R M A C C E S S O R S ------------------- // - //-----------------------------------------------------------------------// - - private PName ${F.jormGetter()}() { - try { - return super.${F.jormGetter()}((java.lang.Object) null); - } catch (PException e) { - throw new RuntimeException(e); - } - } - - private void ${F.jormSetter()}(PName pname) { - try { - super.${F.jormSetter()}(pname, (java.lang.Object) null); - } catch (PException e) { - throw new RuntimeException(e); - } - } - - // Jorm Getter - public PName paGet${F.getUFLName()}(java.lang.Object conn) - throws PExceptionIO { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}PName=" + ${F.jormGetter()}()); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}=" + ${F.getName()}); -#* *##if ($F.getRsr().isTargetMultiple()) - if (${F.jormGetter()}() == null) { - try { - ${F.jormSetter()}(((PNamingContext) factory.getPNameCoder("${F.getName()}")) - .export(conn, ${F.getName()}.gcGetPBinding(), - ((PBinding) ejbContext.getEntitySwitch()).getPName())); - } catch (PExceptionIO e) { - throw e; - } catch (PException e) { - throw new PExceptionIO(e, "Impossible to fetch a PName of the '${F.getName()}' field"); - } - } -#* *##else - if (${F.jormGetter()}() == null) { - if (${F.getName()} != null) { - ${F.jormSetter()}(((PObject) ${F.getName()}).getPName()); - } else { - ${F.jormSetter()}(factory.getPNameCoder("${F.getName()}").getNull()); - } - } -#* *##end - //TraceEjb.coherence.log(BasicLevel.DEBUG,"return " + ${F.jormGetter()}()); - return ${F.jormGetter()}(); - } - - // Jorm Setter - public void paSet${F.getUFLName()}(PName o, java.lang.Object conn) - throws PExceptionIO { - //TraceEjb.coherence.log(BasicLevel.DEBUG,""); -#* *##if (!$F.getRsr().isTargetMultiple()) - this.${F.getName()} = null; -#* *##end - ${F.jormSetter()}(o); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}PName: " + ${F.jormGetter()}()); - //if (${F.jormGetter()}() != null) - // TraceEjb.coherence.log(BasicLevel.DEBUG, "${F.getName()}PName.isNull(): " + ${F.jormGetter()}().isNull()); - } - - - // IMPLEMENTATION OF THE ${F.getHelperFQClassName()} INTERFACE // - //-------------------------------------------------------------// -#* *##if ($F.getRsr().isTargetMultiple())################################# - public ${F.getTypeName()} jonasGet${F.getUFLName()}() { - //TraceEjb.coherence.log(BasicLevel.DEBUG,"return " + ${F.getName()}); - loadGC${F.getUFLName()}(); - return ${F.getName()}; - } - - public void jonasSet${F.getUFLName()}(${F.getTypeName()} val) { - //TraceEjb.coherence.log(BasicLevel.DEBUG,""); - if (val == null) { - throw new IllegalArgumentException("Assign a null value to a relationship"); - } - loadGC${F.getUFLName()}(); - if (val != ${F.getName()}) { - ejbContext.setDirty(true); - // clear the current gen class - ${F.getName()}.clear(); - - // iterate over the parameter to add each element into the - // current gen class - for (Iterator it = val.iterator(); it.hasNext(); ) { - ${F.getName()}.add(it.next(), false); - } - } - //TraceEjb.coherence.log(BasicLevel.DEBUG, "END"); - } - - public void jonasAdd${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.coherence.log(BasicLevel.DEBUG, ""); - loadGC${F.getUFLName()}(); - // In case of a MANY-MANY relation both gen class are mapped over the - // the same hosting structure (rdb table). Then the coherence must be - // done in memory in both sides, and in the support once time by the - // master gen class. - ${F.getName()}.add(bean, false); - } - - public void jonasRemove${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.coherence.log(BasicLevel.DEBUG,""); - loadGC${F.getUFLName()}(); - // In case of a MANY-MANY relation both gen class are mapped over the - // the same hosting structure (rdb table). Then the coherence must be - // done in memory in both sides, and in the support once time by the - // master gen class. - ${F.getName()}.remove(bean, false); - } - - public void jonasElemWritten${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //${F.getName()}.doNotWrite((PObject) bean); - } - -#* *##else## MONO VALUED FIELD############################################# - public ${F.getOppositeHelperFQClassName()} jonasGet${F.getUFLName()}() { - loadCMR${F.getUFLName()}(); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "return " + ${F.getName()}); - return (${F.getOppositeHelperFQClassName()}) ${F.getName()}; - } - - public void jonasSet${F.getUFLName()}(${F.getOppositeHelperFQClassName()} val) { - //TraceEjb.coherence.log(BasicLevel.DEBUG,""); - if (val == null || !val.equals(${F.getName()})) { - ejbContext.setDirty(true); - // ${F.jormSetter()}(null); - ${F.getName()} = (${F.getTypeName()}) val; - update${F.getName()}(); - } - } -#* *##end## - - -#end##foreach - -#foreach ($M in $methodList) - -############################################### -############## ejbActivate ################ -############################################### -#if ($M.isEjbActivate()) - /* - * ejbActivate() method - */ - public void ejbActivate() -#* *##if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#* *##end - { - setPkAllowed = false; - super.ejbActivate(); - } - -############################################### -############## setEntityContext ################ -############################################### -#elseif ($M.isEjbSetEntityContext()) - /* - * setEntityContext(javax.ejb.EntityContext) method - */ - public void setEntityContext(javax.ejb.EntityContext p1) -#* *##if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#* *##end - { - setPkAllowed = false; - ejbContext = (JEntityContext) p1; - if (factory == null) { - factory = (MedorFactory) ejbContext.getEntityFactory(); - PClassMapping gcm = null; - selectForUpdate = factory.getSelectForUpdate(); -#* *##foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - //initialize the multivalued relation ${F.getName()} - ${F.getName()} = new ${F.getGenClassName()}(); - gcm = factory.getGenClassMapping("${F.getName()}"); - ${F.getName()}.setPClassMapping(gcm); - ${F.getName()}.setEntityContext(ejbContext); - ${F.getName()}.setListener(new ${F.getName()}Of${dd.getEjbName()}Listener(this)); - try { - ${F.getName()}.setPBinding(gcm.createPBinding()); - } catch (PException e) { - TraceEjb.interp.log(BasicLevel.ERROR, - "Impossible to create a PBinding for the relation ${F.getName()}", e); - throw new EJBException("Impossible to create a PBinding for the relation ${F.getName()}", e); - } -#* *##end -#* *##end - } - super.setEntityContext(p1); - } - -######################################### -############## EjbCreate ################ -######################################### -#elseif ($M.isEjbPostCreate()) - /* - * ejbPostCreate(.....) method - */ - public void $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, "differed writing at create"); - super.$M.getName()($M.getActualParameters()); - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - Object conn = null; - try { - conn = factory.getConnection(null); - ejbContext.setDirty(false); - pb.write(conn, this); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, - "Failed to create bean: ", getInnerException(e)); - throw new EJBException("Failed to create bean: " + getInnerException(e).getMessage()); - } finally { - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } - -#elseif ($M.isEjbCreate()) - /* - * ejbCreate(.....) method - */ - public PName _$M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG,""); - // Container-managed fields must be set to the Java language default values -#foreach ($F in $fieldList) - this.${F.jormSetter()}($F.getDefaultValue()); -#end -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - ${F.getName()}.reset(); - ${F.jormSetter()}(null); -#* *##else - jonasSet${F.getUFLName()}(null); -#* *##end -#end - setPkAllowed = true; - super.${M.getName()}(${M.getActualParameters()}); - -#if ( $IsAutomaticPk || $IsUndefinedPK ) // If Pk is auto-incremented, we must set the value of the pk - // Only type Integer is valid - this.$pkField(new Integer(factory.calculateAutomaticPk())); -#end - setPkAllowed = false; - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - //TraceEjb.interp.log(BasicLevel.DEBUG, "pb=" + pb); - Object conn = null; - try { - conn = factory.getConnection(null); -#if($pkIsUserClass) - pb.export(conn, this); -#else - pb.export(conn, JavaType.toObject(get${fieldPkList.elementAt(0).getNameUpperFirst()}())); -#end - //TraceEjb.interp.log(BasicLevel.DEBUG, "PName=" + pb.getPName()); - // The write operation has been differed in the postCreate, to resolve the - // issue when a legacy database has "not null" foreign keys. - return pb.getPName(); - } catch (PExceptionExistingDSI pe) { - throw new DuplicateKeyException(pe.getMessage()); - } catch (PExceptionExistingName pe) { - throw new DuplicateKeyException(pe.getMessage()); - } catch (PExceptionNaming pe) { - throw new CreateException("The pk fields has not been initialized the ejbCreate method of the bean ${dd.getEjbName()}"); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, - "Failed to create bean: ", getInnerException(e)); - throw new CreateException("Failed to create bean: " + getInnerException(e).getMessage()); - } finally { - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } - -########################################## -############## FinderByPk ################ -########################################## -#elseif ($M.isFinderByPk()) - /* - * ejbFindByPrimaryKey(...) method - */ - public PName ejbFindByPrimaryKey($pk pk) - throws FinderException { - // Translate the pk into a PName - Coder c = (Coder) ejbContext.getEntityFactory().getLocalHome(); - if (c == null) { - c = (Coder) ejbContext.getEntityFactory().getHome(); - } - PName pn = null; - try { - pn = c.decode(pk); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, - "Failed to decode the primary key:" + pk, e); - throw new FinderException("Failed to decode the primary key:" + pk); - } - return ejbFindByPrimaryKey(pn); - } - - /* - * ejbFindByPrimaryKey(...) method - */ - public PName ejbFindByPrimaryKey(PName pn) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, pn); - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - //TraceEjb.interp.log(BasicLevel.DEBUG, "pb=" + pb); - //TraceEjb.interp.log(BasicLevel.DEBUG, "pb.getStatus()=" + pb.getStatus()); - Object conn = null; - try { - conn = factory.getConnection(null); - pb.bind(pn); - if (!pb.exist(conn)) { - // TraceEjb.interp.log(BasicLevel.DEBUG, - // "Object not found in database (ejbFindByPrimaryKey(" - // + pn + "))"); - pb.unbind(); - throw new ObjectNotFoundException("Object not found in database (ejbFindByPrimaryKey(" + pn + "))"); - } - return pn; - } catch (ObjectNotFoundException oe) { - throw oe; - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, - "Failed to find bean from database in ejb$M.getCapName()" + pn, - getInnerException(e)); - throw new FinderException("Failed to find bean from database in ejb$M.getCapName()"); - } finally { - //TraceEjb.interp.log(BasicLevel.DEBUG, "pb.getStatus()=" + pb.getStatus()); - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } - -######################################### -############## EjbRemove ################ -######################################### -#elseif ($M.isEjbRemove()) - - private boolean ejbRemoveCalled = false; - - /* - * ejbRemove() method - * This implementation unexports the bean, and remove the data on the - * support. - */ - public void ejbRemove() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - if (ejbRemoveCalled) { - // In case of cascade delete loops. - return; - } - ejbRemoveCalled = true; - try { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - super.ejbRemove(); - -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().mustCascade()) -#* *##if ($F.getRsr().isTargetMultiple()) - loadGC${F.getUFLName()}(); - for (Iterator it = ${F.getName()}.iterator(); it.hasNext();) { - javax.ejb.EJBLocalObject el = (javax.ejb.EJBLocalObject) it.next(); - el.remove(); - } -#* *##else - loadCMR${F.getUFLName()}(); - if (${F.getName()} != null) { - ${F.getName()}.remove(); - } -#* *##end -#* *##end -#end - -#foreach ($F in $cmrList) -#* *##if ($F.isMMb()) ## MANY - MANY bidirectional - loadGC${F.getUFLName()}(); // needed for coherence of remove. - ${F.getName()}.clear(); // MM -#* *##elseif ($F.isOMb()) ## ONE - MANY bidirectional - loadGC${F.getUFLName()}(); // needed for coherence of remove. - ${F.getName()}.gcClear(true); // OM -#* *##elseif ($F.isMOb()) ## MANY - ONE bidirectional - set${F.getUFLName()}(null); // MO -#* *##else - clear${F.getUFLName()}(); // OO -#* *##end -#end - } finally { - ejbRemoveCalled = false; // in case of rollback - } - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - Object conn = null; - try { - conn = factory.getConnection(null); - PName pn = (PName) ((JEntitySwitch) pb).getPrimaryKey(); - - //TraceEjb.interp.log(BasicLevel.DEBUG, "Remove the bean " + pn); - pb.bind((PName) ((JEntitySwitch) pb).getPrimaryKey()); - pb.unexport(conn); - pb.write(conn, this); - //pb.unbind(); - -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - //TraceEjb.interp.log(BasicLevel.DEBUG, "Remove the multivalued CMR ${F.getName()}"); - if (${F.jormGetter()}() == null) { - ${F.jormSetter()}(((PNamingContext) factory.getPNameCoder("${F.getName()}")) - .export(conn, ${F.getName()}.gcGetPBinding(), pn)); - } - pb = ${F.getName()}.gcGetPBinding(); - pb.bind(${F.jormGetter()}()); - pb.unexport(conn); - ${F.getName()}.write(${F.jormGetter()}(), conn); - //pb.unbind(); -#* *##end -#end - ejbContext.setDirty(false); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to remove", getInnerException(e)); -#if ( $M.getExceptionList().indexOf("RemoveException") != -1 ) - throw new RemoveException(e.getMessage()); -#else - throw new EJBException(e.getMessage()); -#end - } finally { - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } - -####################################### -############## EjbLoad ################ -####################################### -#elseif ($M.isEjbLoad()) - /* - * ejbLoad() method - */ - public void ejbLoad() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - Object conn = null; - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - try { - conn = factory.getConnection(null); - pb.bind((PName) ((JEntitySwitch) pb).getPrimaryKey()); - pb.read(conn, this, jonasGetCurrentTransaction(), selectForUpdate); -## -## Be careful the relations must be load after the bean, because the PNames of -## the gen class are assigned by the paSetXXX methods. -## -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - // lazy loading of the multivalued relations ${F.getName()} - ${F.getName()}loaded = false; -#* *##end -#end - ejbContext.setDirty(false); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Jorm could not load bean instance"); - throw new EJBException(getInnerException(e)); - } finally { - //TraceEjb.interp.log(BasicLevel.DEBUG, "pb.getStatus()=" + pb.getStatus()); - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - super.ejbLoad(); - } - -######################################## -############## EjbStore ################ -######################################## -#elseif ($M.isEjbStore()) - /* - * ejbStore() method - */ - public void ejbStore() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - // bean method must be called in any case (spec EJB) - super.ejbStore(); - if (ejbContext.isDirty() -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - || ${F.getName()}.gcIsModified() -#* *##end -#end - ) { - // The bean or a gen class has been modified - // ==> The first allocates a connection which will be shared to - // store the modified objects - Object conn = null; - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - try { - PName pn = null; - if (ejbContext.isDirty()) { - //TraceEjb.interp.log(BasicLevel.DEBUG, "Store the bean"); - conn = factory.getConnection(null); - // The bean has been modified - PBinding pb = (PBinding) ejbContext.getEntitySwitch(); - pn = (PName) ((JEntitySwitch) pb).getPrimaryKey(); - pb.bind(pn); - // try a fix for #306186 : Don't set dirty when - // write raised an exception. - ejbContext.setDirty(false); - pb.write(conn, this); - } -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) - if (${F.getName()}.gcIsModified()) { - if (${F.jormGetter()}()==null) { - if (pn == null) - pn = (PName) ejbContext.getEntitySwitch().getPrimaryKey(); - try { - ${F.jormSetter()}(((PNamingContext) factory.getPNameCoder("${F.getName()}")) - .export(conn, ${F.getName()}.gcGetPBinding(), pn)); - } catch (PExceptionIO e) { - throw e; - } catch (PException e) { - throw new PExceptionIO(e, "Impossible to fetch a PName of the '${F.getName()}' field"); - } - } - //TraceEjb.interp.log(BasicLevel.DEBUG, "Store the gen class ${F.getName()}"); - if (conn == null) - conn = factory.getConnection(null); - // store the multivalued relations ${F.getName()} - // because it has been modified - ${F.getName()}.write(${F.jormGetter()}(), conn); - } -#* *##end -#end - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to store", getInnerException(e)); - throw new EJBException(e); - } finally { - try { - if (conn != null) - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } - } - -############################################ -############## FinderSimple ################ -############################################ -#elseif ($M.isFinderSimple()) - /* - * ejbFindXXX(...) method returning only 1 PK - */ - public PName ejb$M.getCapName()($M.getFormalParameters()) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - TupleCollection tc = null; - Object conn = null; - try { - ParameterOperand[] params = new BasicParameterOperand[${M.getParametersNumber()}]; -#* *##set($pc = 1)## The parameter counter starts always to 1 -#* *##set($idx = 0)## the array index starts to 0 -#* *##foreach($t in $M.getParamList()) -#* *##if (${t.isEjbLocal()}) - // EJBLocalObject param case - if (p$pc == null) { - PClassMapping pcm = (PClassMapping) factory.getContainer().getBeanFactory("${t.getEjbName()}"); - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - pcm.getPBinder().getNull()); - } else { - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - ((PObject) p$pc).getPName()); - } -#* *##else - params[$idx] = new BasicParameterOperand(${t.getJormType()}, "?$pc", p$pc); -#* *##end -#* *##set($idx = $idx + 1) -#* *##set($pc = $pc + 1) -#* *##end - - conn = factory.getConnection(null); - - tc = factory.evaluate(conn, ${M.getMethodIndex()}, params); - - //Build the result - if (tc.isEmpty()) { - // TraceEjb.interp.log(BasicLevel.DEBUG, - // "The bean was not found in the support"); - throw new ObjectNotFoundException("The bean was not found in the support"); - } else { - PName pn = (PName) tc.getTuple().getObject(tc.getMetaData().getSize()); - //TraceEjb.interp.log(BasicLevel.DEBUG, "pn: " + pn); - if (!tc.isLast()) { - throw new FinderException("There is more than one object in response to the ${M.getCapName()} single-object finder"); - } else { - return pn; - } - } - } catch (PException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the finder method ${M.getCapName()}", getInnerException(e)); - throw new FinderException("An error occured during the evaluation of the ${M.getCapName()} request:" - + e.getMessage()); - } catch (MedorException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the finder method ${M.getCapName()}", getInnerException(e)); - throw new FinderException("An error occured during the evaluation of the ${M.getCapName()} request:" - + e.getMessage()); - } finally { - if (tc != null) { - try { - tc.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the TupleCollection in the finder method ${M.getCapName()}", - ignore); - } - } - if (conn != null) { - try { - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to close a connection", e); - } - } - } - //look in the interposition objects (local or remote) the return type !!! - } - - -#elseif ($M.isFinderEnum() || $M.isFinderCol()) -########################################## -############## isFinderAll ############### -########################################## -#**##if ($M.isFinderAll()) - public $M.getReturnType() ejb$M.getCapName()($M.getFormalParameters()) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - Object conn = null; - try { - conn = factory.getConnection(null); - ArrayList beans = new ArrayList(); - for (Iterator it = factory.getPNameIterator(conn); it.hasNext(); ) { - beans.add(it.next()); - } -#* *##if ($M.isFinderEnum()) ## the result is an Enumeration - return java.util.Collections.enumeration(beans); -#* *##else ## the result is a collection - return beans; -#* *##end - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to find all objects", getInnerException(e)); - throw new FinderException("Impossible to find all objects" + e); - } finally { - try { - if (conn != null) { - factory.releaseConnection(conn); - } - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Impossible to release connection", e); - } - } - } -########################################## -####### FinderEnum or FinderColl########## -########################################## -#**##else - /* - * ejbFindXXX(...) method returning a java.util.Enumeration or a java.util.Collection - */ - public $M.getReturnType() ejb$M.getCapName()($M.getFormalParameters()) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - TupleCollection tc = null; - Object conn = null; - try { - ParameterOperand[] params = new BasicParameterOperand[${M.getParametersNumber()}]; -#* *##set($pc = 1)## The parameter counter starts always to 1 -#* *##set($idx = 0)## the array index starts to 0 -#* *##foreach($t in $M.getParamList()) -#* *##if (${t.isEjbLocal()}) - // EJBLocalObject param case - if (p$pc == null) { - PClassMapping pcm = (PClassMapping) factory.getContainer().getBeanFactory("${t.getEjbName()}"); - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - pcm.getPBinder().getNull()); - } else { - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - ((PObject) p$pc).getPName()); - } -#* *##else - params[$idx] = new BasicParameterOperand(${t.getJormType()}, "?$pc", p$pc); -#* *##end -#* *##set($idx = $idx + 1) -#* *##set($pc = $pc + 1) -#* *##end - conn = factory.getConnection(null); - tc = factory.evaluate(conn, ${M.getMethodIndex()}, params); - // Build the result - ArrayList result = new ArrayList(); - if (!tc.isEmpty()) { - do { - result.add(tc.getTuple().getObject(tc.getMetaData().getSize())); - } while (tc.next()); - } -#* *##if ($M.isFinderEnum()) - return Collections.enumeration(result); -#* *##else - return result; -#* *##end - } catch (PException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of ${M.getCapName()}", e); - throw new FinderException("An error occured during the evaluation of the ${M.getCapName()} request:" - + e.getMessage()); - } catch (MedorException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of ${M.getCapName()}", e); - throw new FinderException("An error occured during the evaluation of the ${M.getCapName()} request:" - + e.getMessage()); - } finally { - if (tc != null) { - try { - tc.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the TupleCollection in the finder method ${M.getCapName()}", - ignore); - } - } - if (conn != null) { - try { - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to close a connection", e); - } - } - } - } -#**##end - -############################################ -############## ejbSelect Simple|Set|Col #### -############################################ -#elseif ($M.isEjbSelectSimple() || $M.isEjbSelectSet() || $M.isEjbSelectCol()) - /* - * ejbSelectXXX(...) method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - factory.syncForSelect(); -############ ejbSelect returning a remote bean or a local bean ############## -#* *##if ( $M.isEjbqlReturnRemoteBean() || $M.isEjbqlReturnLocalBean() ) -#* *##set( $returnLocalBean = $M.isEjbqlReturnLocalBean() ) - TupleCollection tc = null; - Object conn = null; - try { - // Build the query paramaters list - ParameterOperand[] params = new BasicParameterOperand[${M.getParametersNumber()}]; -#* *##set($pc = 1)## The parameter counter starts always to 1 -#* *##set($idx = 0)## the array index starts at 0 -#* *##foreach($t in $M.getParamList()) -#* *##if (${t.isEjbLocal()}) - // EJBLocalObject param case - if (p$pc == null) { - PClassMapping pcm = (PClassMapping) factory.getContainer().getBeanFactory("${t.getEjbName()}"); - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - pcm.getPBinder().getNull()); - } else { - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - ((PObject) p$pc).getPName()); - } -#* *##else - params[$idx] = new BasicParameterOperand(${t.getJormType()}, "?$pc", p$pc); -#* *##end -#* *##set($idx = $idx + 1) -#* *##set($pc = $pc + 1) -#* *##end ##foreach - conn = factory.getConnection(null); - // Evaluate the query - tc = factory.evaluate(conn, ${M.getMethodIndex()}, params); - //Build the result -#* *##if ($M.isEjbSelectSimple()) - if (tc.isEmpty()) { - // TraceEjb.interp.log(BasicLevel.DEBUG, - // "No value was not found in the support"); - throw new ObjectNotFoundException("No value was not found in the support"); - } else { - PName pn = (PName) tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()); - ${M.getReturnType()} rValue = (${M.getReturnType()}) getPObject(pn, $returnLocalBean); - if (!tc.isLast()) { - throw new FinderException("There is more than one value in response to the ${M.getName()} single-value ejbSelect"); - } else { - return rValue; - } - } -#* *##elseif ($M.isEjbSelectSet()) - HashSet result = new HashSet(); - if (!tc.isEmpty()) { - do { - PName pn = (PName) tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()); - Object po = getPObject(pn, $returnLocalBean); - if (!result.contains(po)) { - result.add(po); - } - } while (tc.next()); - } - return result; -#* *##elseif ($M.isEjbSelectCol()) - ArrayList result = new ArrayList(); - if (!tc.isEmpty()) { - do { - PName pn = (PName) tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()); - result.add(getPObject(pn, $returnLocalBean)); - } while (tc.next()); - } - return result; -#* *##end ##elseif isEjbSelectCol() - } catch (PException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the ejbSelect method ${M.getName()}", e); - throw new FinderException( - "An error occured during the evaluation of the ${M.getName()} request:" - + e.getMessage()); - } catch (MedorException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the ejbSelect method ${M.getName()}", getInnerException(e)); - throw new FinderException( - "An error occured during the evaluation of the ${M.getName()} request:" - + e.getMessage()); - } finally { - if (tc != null) { - try { - tc.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the TupleCollection in the finder method ${M.getName()}", - ignore); - } - } - if (conn != null) { - try { - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to close a connection", e); - } - } - - - } - -############ ejbSelect returning neither a remote bean nor a local bean ############## -#* *##else - TupleCollection tc = null; - Object conn = null; - try { - // Build the query parameters list - ParameterOperand[] params = new BasicParameterOperand[${M.getParametersNumber()}]; -#* *##set($pc = 1)## The parameter counter starts always to 1 -#* *##set($idx = 0)## the array index starts at 0 -#* *##foreach($t in $M.getParamList()) -#* *##if (${t.isEjbLocal()}) - // EJBLocalObject param case - if (p$pc == null) { - PClassMapping pcm = (PClassMapping) factory.getContainer().getBeanFactory("${t.getEjbName()}"); - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - pcm.getPBinder().getNull()); - } else { - params[$idx] = new BasicParameterOperand(PTypeSpaceMedor.PNAME, - "?$pc", - ((PObject) p$pc).getPName()); - } -#* *##else - params[$idx] = new BasicParameterOperand(${t.getJormType()}, "?$pc", p$pc); -#* *##end -#* *##set($idx = $idx + 1) -#* *##set($pc = $pc + 1) -#* *##end ##foreach - // Evaluate the query - conn = factory.getConnection(null); - tc = factory.evaluate(conn, ${M.getMethodIndex()}, params); - //Build the result -#* *##if ($M.isEjbSelectSimple()) - if (tc.isEmpty()) { - //TraceEjb.interp.log(BasicLevel.DEBUG, - // "No value was not found in the support"); - throw new ObjectNotFoundException("No value was not found in the support"); - } else { - ${M.getReturnType()} rValue = (${M.getReturnType()}) tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()); - // tc.next() causes a NPE with postgres - if (!tc.isLast()) { - throw new FinderException("There is more than one value in response to the ${M.getName()} single-value ejbSelect"); - } else { - return rValue; - } - } -#* *##elseif ($M.isEjbSelectSet()) - HashSet result = new HashSet(); - if (!tc.isEmpty()) { - do { - boolean ignoreNull = false; -#* *##if ($M.isTupleGetterPrimitive()) - ignoreNull = tc.getTuple().isDefined(tc.getMetaData().getSize()); - Object o = new $M.getTupleGetterObjectClass()(tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize())); -#* *##else - Object o = tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()); -#* *##end - if (!ignoreNull && !result.contains(o)) { - result.add(o); - } - } while (tc.next()); - } - return result; -#* *##elseif ($M.isEjbSelectCol()) - ArrayList result = new ArrayList(); - if (!tc.isEmpty()) { - do { -#* *##if ($M.isTupleGetterPrimitive()) - // ignore null values - if (tc.getTuple().isDefined(tc.getMetaData().getSize())) { - result.add(new $M.getTupleGetterObjectClass()(tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize()))); - } -#* *##else - result.add(tc.getTuple().${M.getTupleGetter()}(tc.getMetaData().getSize())); -#* *##end - } while (tc.next()); - } - return result; -#* *##end ##elseif isEjbSelectCol() - } catch (PException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the ejbSelect method ${M.getName()}", getInnerException(e)); - throw new FinderException( - "An error occured during the evaluation of the ${M.getName()} request:" - + e.getMessage()); - } catch (MedorException e) { - TraceEjb.logger.log(BasicLevel.ERROR, "Problem during the evaluation of the ejbSelect method ${M.getName()}", getInnerException(e)); - throw new FinderException( - "An error occured during the evaluation of the ${M.getName()} request:" - + e.getMessage()); - } finally { - if (tc != null) { - try { - tc.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the TupleCollection in the finder method ${M.getName()}", - ignore); - } - } - if (conn != null) { - try { - factory.releaseConnection(conn); - } catch (Exception e) { - TraceEjb.logger.log(BasicLevel.ERROR, "impossible to close a connection", e); - } - } - } - -#* *##end ##else elseif isEjbqlReturnRemoteBean() - } - -#end ##elseif -#end ##foreach method - -########################################## -############## getPObject ################ -########################################## - /** - * This method is used to reach a referenced bean with its pname. - */ - private Object getPObject(PName pn, boolean useLocal) throws PException { - //TraceEjb.interp.log(BasicLevel.DEBUG, "Search PObject with the pnane:" + pn); - if (pn == null || pn.isNull()) { - return null; - } - PBinder f = (PBinder) pn.getPNameManager(); - JEntityFactory ef = (JEntityFactory) f.getBinderClassMapping(); - if (useLocal) { - return ((PObjectHome) ef.getLocalHome()).getPObject(pn); - } else { - return ((PObjectHome) ef.getHome()).getPObject(pn); - } - } - - // IMPLEMENTATION OF THE PAccessor INTERFACE // - - public Object getMemoryInstance() { - return this; - } - - private static Exception getInnerException(Exception e) { - boolean last = false; - Exception res = e; - while (!last) { - if (res instanceof PException - && ((PException) res).getNestedException() != null) { - res = ((PException) res).getNestedException(); - - } else if (res instanceof MedorException - && ((MedorException) res).getNestedException() != null) { - res = ((MedorException) res).getNestedException(); - - } else if (res instanceof EJBException - && ((EJBException) res).getCausedByException() != null) { - res = ((EJBException) res).getCausedByException(); - - } else - last = true; - } - return res; - } -#if($pkIsUserClass) - // IMPLEMENTATION OF THE ${dd.getJormPNameGetterClassName()} INTERFACE // -#* *##foreach ($pkf in $fieldPkList) - public ${pkf.getJormTypeName()} pnGet${pkf.getNameUpperFirst()}(Object ctx) { -#* *##if (!$pkf.isMustBeConvert()) - return (${pkf.getJormTypeName()}) ${pkf.jormGetter()}(); -#* *##else - return (${pkf.getJormTypeName()}) ${pkf.getConvertClassName()}.toStorage(${pkf.jormGetter()}()); -#* *##end - } -#* *##end -#end - - private Object jonasGetCurrentTransaction() { - try { - Object tx = factory.getTransactionManager().getTransaction(); - //TraceEjb.logger.log(BasicLevel.DEBUG, "current transaction=" + tx); - //new Exception("Current Transaction=" + tx).printStackTrace(); - return tx; - } catch (javax.transaction.SystemException e) { - TraceEjb.logger.log(BasicLevel.ERROR, - "Cannot get the current transaction to do the read:", e); - //System.out.println("No current Transaction: " + e.getMessage()); - return null; - } - } -} - - -#foreach ($F in $cmrList) -#* *##if ($F.getRsr().isTargetMultiple()) -/** - * Listener on modifications made on ${F.getName()} - */ -class ${F.getName()}Of${dd.getEjbName()}Listener implements GenClassListener { - - private $class bean; - - protected ${F.getName()}Of${dd.getEjbName()}Listener($class bean) { - this.bean = bean; - } - - public void isLegalElement(GenClassElement gce) throws IllegalArgumentException { - try { - Object o = (${F.getOppositeHelperFQClassName()}) gce.value; - } catch (ClassCastException e) { - throw new IllegalArgumentException(e.getMessage()); - } - } - - /** - * An Element has been added - */ - public void gcAdd(GenClassElement gce) { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "gce.value=" + gce.value); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "gce.pname=" + gce.pname); -## -## ONE - MANY bidrectional -## -#* *##if ($F.isOMb()) - ${F.getHelperFQClassName()} localBean = - ((${F.getOppositeHelperFQClassName()}) gce.value) - .jonasGet${F.getOppositeUFLCMRName()}(); - if (localBean != null) { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "remove the old relation with the element (" + localBean + ")"); - localBean.jonasRemove${F.getUFLName()}((${F.getOppositeHelperFQClassName()}) gce.value); - } - //TraceEjb.coherence.log(BasicLevel.DEBUG, "Assign the opposite cmr field(set this)"); - ((${F.getOppositeHelperFQClassName()}) gce.value) - .jonasSet${F.getOppositeUFLCMRName()}((${F.getHelperFQClassName()}) -#* *##if ($dd.getLocalClass()) - bean.ejbContext.get2EJBLocalObject() -#* *##else - bean.ejbContext.getEJBObject() -#* *##end - ); -#* *##end - -## -## MANY - MANY bidrectional -## -#* *##if ($F.isMMb()) - //TraceEjb.coherence.log(BasicLevel.DEBUG, "Assign the opposite cmr field (add this)"); - ((${F.getOppositeHelperFQClassName()}) gce.value) - .jonasAdd${F.getOppositeUFLCMRName()}((${F.getHelperFQClassName()}) -#* *##if ($dd.getLocalClass()) - bean.ejbContext.get2EJBLocalObject() -#* *##else - bean.ejbContext.getEJBObject() -#* *##end - ); -#* *##end - //TraceEjb.coherence.log(BasicLevel.DEBUG, "END"); - } - - /** - * An element has been removed - */ - public void gcRemove(GenClassElement gce, boolean delete) { - //TraceEjb.coherence.log(BasicLevel.DEBUG, "gce.value=" + gce.value); - //TraceEjb.coherence.log(BasicLevel.DEBUG, "gce.pname=" + gce.pname); -## -## ONE - MANY bidrectional -## -#* *##if ($F.isOMb()) - - ((${F.getOppositeHelperFQClassName()}) gce.value).jonasSet${F.getOppositeUFLCMRName()}(null); -#* *##end - -## -## MANY - MANY bidrectional -## -#* *##if ($F.isMMb()) - //TraceEjb.coherence.log(BasicLevel.DEBUG, "Modify the opposite cmr field (remove this)"); - ((${F.getOppositeHelperFQClassName()}) gce.value) - .jonasRemove${F.getOppositeUFLCMRName()}((${F.getHelperFQClassName()}) -#* *##if ($dd.getLocalClass()) - bean.ejbContext.get2EJBLocalObject() -#* *##else - bean.ejbContext.getEJBObject() -#* *##end - ); -#* *##end - //TraceEjb.coherence.log(BasicLevel.DEBUG, "END"); - } -} -#* *##end## relation multivalued -#end## foreach CMR - diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2CoherenceItf.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2CoherenceItf.vm deleted file mode 100644 index 4aad83ff8c..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmp2CoherenceItf.vm +++ /dev/null @@ -1,49 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// Start: $Id$ - -#if ($dd.getJormCoherenceHelperPackageName()) -package ${dd.getJormCoherenceHelperPackageName()}; -#end -public interface ${dd.getJormCoherenceHelperItfName()} { -#* *##foreach ($F in $cmrList) -#* *##if (!$F.isMMu() && !$F.isMOu())## -#* *##if ($F.getRsr().isTargetMultiple()) - ${F.getTypeName()} jonasGet${F.getUFLName()}(); - - void jonasSet${F.getUFLName()}(${F.getTypeName()} val); - - void jonasAdd${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean); - - void jonasRemove${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean); -#* *##else## - ${F.getOppositeHelperFQClassName()} jonasGet${F.getUFLName()}(); - - void jonasSet${F.getUFLName()}(${F.getOppositeHelperFQClassName()} val); -#* *##end## -#* *##end## -#* *##end##foreach -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmpJdbc.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmpJdbc.vm deleted file mode 100644 index 7b2d9658e4..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityCmpJdbc.vm +++ /dev/null @@ -1,622 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Helene Joanin. -## Contributor(s): ______________________________________. -## 01/01/18 Halas, Miroslav Miroslav.Halas@compuware.com -## javax.ejb.ObjectNotFoundException throwing -## 01/10/16 Nico.Hoogervorst@nl.compuware.com -## Support for BigInteger -## 02/08/07 Karg, Markus -## Performance improvement -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// -// This class is the bean specific part of the container managed persistence with JDBC. -// Generated by JOnAS's GenIC tool via Velocity. -// DO NOT EDIT THIS FILE. -// Start: $Id$ - -#set( $hasPkField = $dd.hasPrimaryKeyField() ) -#if ( $hasPkField ) -#set( $pkField = $dd.getPrimaryKeyFieldName() ) -#end -#set( $IsAutomaticPk = $dd.isAutomaticPk() ) -#set( $IsUndefinedPK = $dd.isUndefinedPK() ) - -#* -* The pStmtSetWithAnyField macro allows to generate the pStmt.setXX() method -* of a PreparedStatement for a given field which is be any field. -* This macro is used in ejbCreate() and ejbStore(). -*# -#macro( pStmtSetWithAnyField $field $index ) -#if ( $field.hasNotPrimitiveType() ) - if ( this.$field.getName() == null ) { - pStmt.setNull($index, $field.getSqlTypeName()); - } else { -#end -#if ( $field.hasSerializableType() ) - pStmt.setBytes($index, MarshallTool.toBytes(this.$field.getName())); -#elseif ( $field.hasBigIntegerType() ) - pStmt.setObject($index, new java.math.BigDecimal(this.$field.getName())); -#elseif ( $field.getSqlSetMethod().equals("setObject") ) - pStmt.$field.getSqlSetMethod()($index, this.$field.getName(), $field.getSqlTypeName()); -#else - pStmt.$field.getSqlSetMethod()($index, this.$field.getName()); -#end -#if ( $field.hasNotPrimitiveType() ) - } -#end -#end - -#* -* The pStmtSetWithParam macro allows to generate the pStmt.setXX() method -* of a PreparedStatement for a given parameter. -* This macro is used in ejbFindXXSimple(), ejbFindXXCol() and ejbFindXXEnum(). -*# -#macro( pStmtSetWithParam $param $index ) -#if ( $param.hasNotPrimitiveType() ) - if ( $param.getName() == null ) { - pStmt.setNull($index, $param.getSqlTypeName()); - } else { -#end -#if ( $param.hasSerializableType() ) - pStmt.setBytes($index, MarshallTool.toBytes($param.getName())); -#elseif ( $param.hasBigIntegerType() ) - pStmt.setObject($index, new java.math.BigDecimal($param.getName())); -#elseif ( $param.getSqlSetMethod().equals("setObject") ) - pStmt.$param.getSqlSetMethod()($index, $param.getName(), $param.getSqlTypeName()); -#else - pStmt.$param.getSqlSetMethod()($index, $param.getName()); -#end -#if ( $param.hasNotPrimitiveType() ) - } -#end -#end - -#* -* The pStmtSetWithPkField macro allows to generate the pStmt.setXX() method -* of a PreparedStatement for a given field which is a primary key field. -* This macro is used in ejbFindByPrimaryKey(), ejbRemove() and ejbLoad(). -*# -#macro( pStmtSetWithPkField $field $index ) -#if ( $hasPkField ) -#set( $fName = "pk" ) -#else -#set( $fName = "pk.$field.getName()" ) -#end -#if ( $field.hasSerializableType() ) - pStmt.setBytes($index, MarshallTool.toBytes($fName)); -#elseif ( $field.hasBigIntegerType() ) - pStmt.setObject($index, new java.math.BigDecimal($fName)); -#elseif ( $field.getSqlSetMethod().equals("setObject") ) - pStmt.$field.getSqlSetMethod()($index, $fName, $field.getSqlTypeName()); -#else - pStmt.$field.getSqlSetMethod()($index, $fName); -#end -#end - -#* -* The resultGetWithAnyField macro allows to generate the rs.getXX() method -* of a ResultSet for a given field which is any field. -* This macro is used in ejbLoad(). -*# -#macro( resultGetWithAnyField $field $index ) -#if ( $field.hasSerializableType() ) - this.$field.getName() = ($field.getTypeName()) MarshallTool.fromBytes((byte[])rs.getBytes($index)); -#elseif ( $field.hasBigIntegerType() ) - if ((rs.$field.getSqlGetMethod()($index)==null) || rs.wasNull()) { - this.$field.getName() = null; - } else { - this.$field.getName() = rs.$field.getSqlGetMethod()($index).toBigInteger(); - } -#elseif ( $field.hasJavaLangTypeExceptString() ) - this.$field.getName() = new $field.getTypeName()(rs.$field.getSqlGetMethod()($index)); - if (rs.wasNull()) { - this.$field.getName() = null; - } -#else - this.$field.getName() = rs.$field.getSqlGetMethod()($index); -#end -#end - -#* -* The resultGetWithPkField macro allows to generate the rs.getXX() method -* of a ResultSet for a given field which is a primary key field. -* This macro is used in ejbFindXXSimple(), ejbFindXXCol() and ejbFindXXEnum(). -*# -#macro( resultGetWithPkField $field $index ) -#if ( $hasPkField ) -#set( $fName = "pk" ) -#else -#set( $fName = "pk.$field.getName()" ) -#end -#if ( $field.hasSerializableType() ) - $fName = ($field.getTypeName()) MarshallTool.fromBytes((byte[])rs.getBytes($index)); -#elseif ( $field.hasBigIntegerType() ) - $fName = rs.$field.getSqlGetMethod()($index).toBigInteger(); -#elseif ( $field.hasJavaLangTypeExceptString() ) - $fName = new $field.getTypeName()(rs.$field.getSqlGetMethod()($index)); -#else - $fName = rs.$field.getSqlGetMethod()($index); -#end -#end - -#if ($package.length() != 0) -package $package; -#end - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Types; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.EJBHome; -import javax.ejb.EJBObject; -import javax.ejb.EntityContext; -import javax.ejb.FinderException; -import javax.ejb.ObjectNotFoundException; -import javax.ejb.RemoveException; - -import javax.sql.DataSource; - -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.MarshallTool; -import org.objectweb.util.monolog.api.BasicLevel; - - -public class $class extends $bean { - - private JEntityContext ejbContext = null; - private JEntityFactory ejbFactory = null; - private DataSource datasource = null; - -#if ( $IsUndefinedPK ) - // create new field for auto-generate pk type of java.lang.Object - private java.lang.Integer $pkField = null; -#end - - /* - * isModifiedData() method - */ - private boolean isModifiedData() { -#if ( $dd.hasIsModifiedMethod() ) - boolean b = super.$dd.getIsModifiedMethod().getName()(); -#else - boolean b = true; -#end - //TraceEjb.interp.log(BasicLevel.DEBUG, "--> " + b); - return b; - } - - -#foreach ($M in $methodList) - -#if ($M.isEjbSetEntityContext()) - /* - * setEntityContext(javax.ejb.EntityContext) method - */ - public void setEntityContext(javax.ejb.EntityContext p1) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - this.ejbContext = (JEntityContext)p1; - this.ejbFactory = this.ejbContext.getEntityFactory(); - this.datasource = (DataSource) this.ejbFactory.getDataSource(); - super.setEntityContext(p1); - } - -#elseif ($M.isEjbCreate()) - /* - * ejbCreate(.....) method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) - throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - // Container-managed fields must be set to the Java language default values -#foreach ($F in $fieldList) - this.$F.getName() = $F.getDefaultValue(); -#end - $pk pk; - super.$M.getName()($M.getActualParameters()); -#if ($IsUndefinedPK || $IsAutomaticPk) - // Only type Integer is valid - pk = new Integer(ejbFactory.calculateAutomaticPk()); - this.$pkField = pk; -#else - #if ( $hasPkField ) - // Initialize the pk with the primkey-field - pk = this.$pkField; - #else - // Create the pk and initialise all its fields - pk = new $pk(); - #foreach ($F in $fieldPkList) - pk.$F.getName() = this.$F.getName(); - #end - #end -#end - - Connection conn = null; - PreparedStatement pStmt = null; - try { - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($F in $fieldList) -#pStmtSetWithAnyField( $F $velocityCount ) -#end - pStmt.executeUpdate(); - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to create bean in database", e); - throw new CreateException(e.toString()); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejb$M.getCapName()", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejb$M.getCapName()", - ignore); - } - } - } - - return pk; - - } - -#elseif ($M.isFinderByPk()) - /* - * ejbFindByPrimaryKey(...) method - */ - public $pk ejbFindByPrimaryKey($pk pk) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - Connection conn = null; - PreparedStatement pStmt = null; - try { - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($F in $fieldPkList) -#pStmtSetWithPkField( $F $velocityCount) -#end - ResultSet rs = pStmt.executeQuery(); - if (rs.next() == false) { - //TraceEjb.interp.log(BasicLevel.DEBUG, "object not found in database (ejbFindByPrimaryKey("+pk.toString()+"))"); - throw new ObjectNotFoundException("Object not found in database (ejbFindByPrimaryKey("+pk.toString()+"))"); - } - } catch (ObjectNotFoundException oe) { - throw oe; - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to find bean from database in ejb$M.getCapName()", e); - throw new FinderException("Failed to find bean from database in ejb$M.getCapName()"); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception i) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejb$M.getCapName()", i); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejb$M.getCapName()", ignore); - } - } - } - return pk; - } - -#elseif ($M.isFinderSimple()) - /* - * ejbFindXXX(...) method returning only 1 PK - */ - public $pk ejb$M.getCapName()($M.getFormalParameters()) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#if ( $hasPkField ) - $pk pk; -#else - $pk pk = new $pk(); -#end - Connection conn = null; - PreparedStatement pStmt = null; - try { - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($P in $M.getParamWhereList()) -#pStmtSetWithParam( $P $velocityCount ) -#end - ResultSet rs = pStmt.executeQuery(); - if (rs.next() == false) { - //TraceEjb.interp.log(BasicLevel.DEBUG, "object not found in database"); - throw new ObjectNotFoundException("Object not found in database in ejb$M.getCapName()"); - } -#foreach ($F in $fieldPkList) -#resultGetWithPkField( $F $velocityCount) -#end - if (rs.next()) { - //TraceEjb.interp.log(BasicLevel.DEBUG, "several objects found in database"); - throw new FinderException("There is more than one object in response to the ejb${M.getCapName()} single-object finder"); - } - } catch (ObjectNotFoundException oe) { - throw oe; - } catch (FinderException oe) { - throw oe; - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to find bean from database in ejb$M.getCapName()", e); - throw new FinderException("Failed to find bean from database in ejb$M.getCapName()"); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejb$M.getCapName()", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejb$M.getCapName()", - ignore); - } - } - } - return pk; - } - -#elseif ($M.isFinderEnum() || $M.isFinderCol()) - /* - * ejbFindXXX(...) method returning a java.util.Enumeration or a java.util.Collection - */ - public $M.getReturnType() ejb$M.getCapName()($M.getFormalParameters()) - throws FinderException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - Collection pkC = new ArrayList(); - Connection conn = null; - PreparedStatement pStmt = null; - try { - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($P in $M.getParamWhereList()) -#pStmtSetWithParam( $P $velocityCount ) -#end - ResultSet rs = pStmt.executeQuery(); - while (rs.next()) { -#if ( $hasPkField ) - $pk pk; -#else - $pk pk = new $pk(); -#end -#foreach ($F in $fieldPkList) -#resultGetWithPkField( $F $velocityCount) -#end - pkC.add(pk); - } - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to find beans from database in ejb$M.getCapName()", e); - throw new FinderException("Failed to find beans from database in ejb$M.getCapName()"); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejb$M.getCapName()", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejb$M.getCapName()", - ignore); - } - } - } -#if ($M.isFinderEnum()) - return Collections.enumeration(pkC); -#else - return pkC; -#end - } - -#elseif ($M.isEjbRemove()) - /* - * ejbRemove() method - */ - public void ejbRemove() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - super.ejbRemove(); - Connection conn = null; - PreparedStatement pStmt = null; - try { - $pk pk = ($pk) this.ejbContext.getPrimaryKey(); - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($F in $fieldPkList) -#pStmtSetWithPkField( $F $velocityCount) -#end - pStmt.executeUpdate(); - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to delete bean in database", e); -#if ( $M.getExceptionList().indexOf("RemoveException") != -1 ) - throw new RemoveException(e.getMessage()); -#else - throw new EJBException(e.getMessage()); -#end - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejbRemove", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejbRemove", - ignore); - } - } - } - } - -#elseif ($M.isEjbLoad()) - /* - * ejbLoad() method - */ - public void ejbLoad() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - Connection conn = null; - PreparedStatement pStmt = null; - try { - $pk pk = ($pk) this.ejbContext.getPrimaryKey(); - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($F in $fieldPkList) -#pStmtSetWithPkField( $F $velocityCount) -#end - ResultSet rs = pStmt.executeQuery(); - if (rs.next() == false) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to load bean from database"); - throw new EJBException("Failed to load bean from database"); - } -#foreach ($F in $fieldList) -#resultGetWithAnyField( $F $velocityCount ) -#end - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to load bean from database", e); - throw new EJBException(e); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejbLoad", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejbLoad", - ignore); - } - } - } - super.ejbLoad(); - } - -#elseif ($M.isEjbStore()) - /* - * ejbStore() method - */ - public void ejbStore() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - if (this.isModifiedData()) { - super.ejbStore(); -#if ($fieldNoPkList.size() > 0) - Connection conn = null; - PreparedStatement pStmt = null; - try { - $pk pk = ($pk) this.ejbContext.getPrimaryKey(); - conn = this.datasource.getConnection(); - pStmt = conn.prepareStatement("$M.getSqlStmt()"); -#foreach ($F in $fieldNoPkList) -#pStmtSetWithAnyField( $F $velocityCount) -#end -#foreach ($F in $fieldPkList) -#set( $index = $fieldNoPkList.size() + $velocityCount ) -#pStmtSetWithPkField( $F $index) -#end - pStmt.executeUpdate(); - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to store bean to database", e); - throw new EJBException(e); - } finally { - if (pStmt != null) { - try { - pStmt.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the PreparedStatement in ejbStore", - ignore); - } - } - if (conn != null) { - try { - conn.close(); - } catch (Exception ignore) { - TraceEjb.interp.log(BasicLevel.ERROR,"failed to close the Connection in ejbStore", - ignore); - } - } - } -#end - } - } - -#end -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHandle.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHandle.vm deleted file mode 100644 index 47b626b098..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHandle.vm +++ /dev/null @@ -1,80 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// -// This class is the bean specific part of org.ow2.jonas.lib.ejb21.JEntityHandle. -// Generated by JOnAS's GenIC tool via Velocity. -// DO NOT EDIT THIS FILE. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; -import javax.ejb.HomeHandle; -import javax.rmi.PortableRemoteObject; - -import org.ow2.jonas.lib.ejb21.JEntityHome; -import org.ow2.jonas.lib.ejb21.JEntityHandle; - -import org.ow2.carol.rmi.exception.RmiUtility; - - -public class $class extends JEntityHandle { - - - public $class($remote_wrp ejbobject) { - super(ejbobject); - try { - pk = ($pk)ejbobject.getPrimaryKey(); - } catch (Exception e) { - pk = null; - } - } - - public EJBObject getEJBObject() throws RemoteException { - - #beforeThrowRemoteException() - - $remote ejbobj = null; - try { - $home h = ($home)PortableRemoteObject.narrow(homehandle.getEJBHome(),${home}.class); - ejbobj = h.findByPrimaryKey(($pk)pk); - } catch (Exception e) { - throw new RemoteException("${class}.getEJBObject(): "+e, e); - } - return ejbobj ; - - #afterThrowRemoteException() - - } - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHome.vm deleted file mode 100644 index e4059ea708..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityHome.vm +++ /dev/null @@ -1,787 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2006 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JEntityHome -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.Object; -import java.lang.RuntimeException; -import java.rmi.RemoteException; -import java.rmi.AccessException; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Vector; - -import javax.ejb.EJBException; -import javax.ejb.FinderException; -import javax.ejb.Handle; -import javax.ejb.RemoveException; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.ow2.carol.util.configuration.ConfigurationRepository; - -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.JEntityHandle; -import org.ow2.jonas.lib.ejb21.JEntityHome; -import org.ow2.jonas.lib.ejb21.JEntityRemote; -import org.ow2.jonas.lib.ejb21.JEntitySwitch; -import org.ow2.jonas.lib.ejb21.ha.JRepEntityHome; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.EntityDesc; -import org.ow2.jonas.lib.ejb21.CollectionEnum; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.svc.JHandleIIOP; -import org.objectweb.util.monolog.api.BasicLevel; -#if ($EntityCMP2.booleanValue()) -import org.objectweb.jorm.api.PException; -import org.objectweb.jorm.api.PClassMapping; -import org.objectweb.jorm.naming.api.PName; -import org.ow2.jonas.lib.ejb21.jorm.Coder; -import org.ow2.jonas.lib.ejb21.jorm.PObject; -import org.ow2.jonas.lib.ejb21.jorm.PObjectHome; - -public class $class -#if ($isClusterReplicated) - extends JRepEntityHome -#else - extends JEntityHome -#end - implements Coder, PObjectHome, $home { -#else - -public class $class -#if ($isClusterReplicated) - extends JRepEntityHome -#else - extends JEntityHome -#end - implements $home { - -#end - - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - /** - * Created by JEntityFactory (by newInstance) - */ - public $class(EntityDesc dd, JEntityFactory bf) throws RemoteException { - - super(dd, bf); - - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - bs = ef.getJEntitySwitch(); - bctx = ef.getJContext(bs); - bctx.setEntitySwitch(bs); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - - rctx.bmcalled = true; - #if ($EntityCMP2.booleanValue()) - Object pk = b._ejb$M.getCapName()($M.getActualParameters()); - #else - Object pk = b.ejb$M.getCapName()($M.getActualParameters()); - #end - bctx.setActive(); - boolean pkadded = ef.rebindEJB(rctx.currTx, bctx, pk); - bs.bindICtx(rctx.currTx, bctx); - mapped = true; - bctx.setNewInstance(); - try { - b.ejbPost$M.getCapName()($M.getActualParameters()); - } catch (EJBException e) { - if (pkadded) { - bs.forceDiscardICtx(rctx.currTx); - bctx = null; - } - throw e; - } - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - - return ($remote) bs.getRemote(); - #afterThrowRemoteException() - - } - -#elseif ($M.isFinderCol()) - - /** - * Finder method returning a Collection - */ - public Collection $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - Vector v = new Vector(); - Collection pkl; - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bctx.setFinding(); - rctx.bmcalled = true; - pkl = b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - Iterator pki = pkl.iterator(); - while (pki.hasNext()) { - - Object _pk = pki.next(); - - #if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) _pk; - if ((pn == null) || (pn.isNull())) { - v.addElement(null); - } else - #end - { - bs = ef.getEJB(_pk); - if (!mapped) { - mapped = bs.tryBindICtx(rctx.currTx, bctx, false); - } - v.addElement(bs.getRemote()); - } - } - - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return v; - - #afterThrowRemoteException() - - } - -#elseif ($M.isFinderEnum()) - - /** - * Finder method returning an Enumeration - */ - public Enumeration $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - CollectionEnum v = new CollectionEnum(); - boolean mapped = false; - Enumeration pkl; - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bctx.setFinding(); - rctx.bmcalled = true; - pkl = b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - while (pkl.hasMoreElements()) { - Object _pk = pkl.nextElement(); - - #if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) _pk; - if ((pn == null) || (pn.isNull())) { - v.addElement(null); - } else - #end - { - bs = ef.getEJB(_pk); - if (!mapped) { - mapped = bs.tryBindICtx(rctx.currTx, bctx, false); - } - v.addElement(bs.getRemote()); - } - } - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return v; - - #afterThrowRemoteException() - } - -#elseif ($M.isFinderSimple()) - - /** - * finder method returning only 1 PK - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bs = ef.getJEntitySwitch(); - bctx.setEntitySwitch(bs); - bctx.setFinding(); - rctx.bmcalled = true; - Object pk = b.ejb$M.getCapName()($M.getActualParameters()); - #if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) pk; - if ((pn == null) || (pn.isNull())) { - return null; - } - #end - bctx.setActive(); - JEntitySwitch old = ef.existEJB(pk, bs, false); - if (old != null) { - bs = old; - bctx.setEntitySwitch(bs); - } - mapped = bs.tryBindICtx(rctx.currTx, bctx, true); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - - return ($remote) bs.getRemote(); - - #afterThrowRemoteException() - } - -#elseif ($M.isFinderByPk()) - - /** - * findByPrimaryKey - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bs = ef.getJEntitySwitch(); - bctx.setEntitySwitch(bs); - bctx.setFinding(); - rctx.bmcalled = true; - Object pk = -#if ($EntityCMP2.booleanValue()) - decode($M.getActualParameters()); -#else - $M.getActualParameters(); -#end - JEntitySwitch old = ef.existEJB(pk, bs, true); - if (old != null) { - bs = old; - bctx.setEntitySwitch(bs); - } else { - try { - pk = b.ejb$M.getCapName()(($pk) $M.getActualParameters()); - } catch (FinderException e) { - bs.forceDiscardICtx(rctx.currTx); - throw e; - } - ef.startEJB(pk); - } - bctx.setActive(); - mapped = bs.tryBindICtx(rctx.currTx, bctx, true); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; -#if ($EntityCMP2.booleanValue()) - } catch (org.objectweb.jorm.api.PException e) { - rctx.sysExc = e; - throw new RemoteException("decoding PK failed", e); -#end - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - - return ($remote) bs.getRemote(); - - #afterThrowRemoteException() - } - -#elseif ($M.isRemovePk()) - - /** - * Remove by PK - * @throws RemoveException - */ - public void remove(Object p1) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - ef.dummyFinderException(true); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - - #if ($EntityCMP2.booleanValue()) - Object pk = decode(($pk) p1); - bs = ef.getEJB(pk); - bctx.setEntitySwitch(bs); - b.ejbFindByPrimaryKey((PName)pk); - #else - bs = ef.getEJB(p1); - bctx.setEntitySwitch(bs); - b.ejbFindByPrimaryKey(($pk) p1); - #end - - bctx = bs.getICtx(rctx.currTx, bctx); - // Must set this before setRemove() because exception may - // occur in ejbRemove, and in that case, we must keep the context. - mapped = true; - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - #if ($EntityCMP2.booleanValue()) - } catch (PException e) { - rctx.sysExc = e; - throw new RemoteException("JORM PException thrown", e); - #end - } catch (FinderException e) { - rctx.sysExc = e; - throw new RemoteException(e.toString()); - } finally { - if (!mapped && bctx != null) { - // release context in case of exception. - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - - #afterThrowRemoteException() - - } - -#elseif ($M.isRemoveHandle()) - - /** - * remove by Handle - * @throws RemoveException - */ - public void remove(Handle p1) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - try { - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - Object pk = null; - checkSecurity(ejbInv); - - // Get the PK embedded inside the Handle - String protocol = ConfigurationRepository.getCurrentConfiguration().getProtocol().getName(); - - //TraceEjb.interp.log(BasicLevel.DEBUG, "Current protocol=" + protocol); - #if ($EntityCMP2.booleanValue()) - if (protocol.equals("iiop")) { - pk = decode(($pk) ((JHandleIIOP) p1).getEJBObject().getPrimaryKey()); - } else { - pk = decode(($pk) ((JEntityHandle) p1).getPK()); - } - #else - if (protocol.equals("iiop")) { - pk = ((JHandleIIOP) p1).getEJBObject().getPrimaryKey(); - } else { - pk = ((JEntityHandle) p1).getPK(); - } - #end - - bs = ef.getEJB(pk); - bctx = bs.getICtx(rctx.currTx, bctx); - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException(e.getMessage()); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - #if ($EntityCMP2.booleanValue()) - } catch (PException e) { - rctx.sysExc = e; - throw new RemoteException("JORM PException thrown", e); - #end - } finally { - postInvoke(rctx); - } - - #afterThrowRemoteException() - - } - -#else - - /** - * Home Method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) - - #if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() - #end - { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntityFactory ef = (JEntityFactory) bf; - - #if ($M.getReturnType() != "void") - $M.getReturnType() result; - #end - - JEntityContext bctx = null; - try { - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - - #if ($M.getReturnType() != "void") - result = - #end - b.ejbHome$M.getCapName()($M.getActualParameters()); - - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - if (bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - - #if ($M.getReturnType() != "void") - return result; - #end - - #afterThrowRemoteException() - - } - -#end - -#end - - public JEntityRemote createRemoteObject() throws RemoteException { - - #beforeThrowRemoteException() - - return new $remote_wrp((JEntityFactory)bf); - - #afterThrowRemoteException() - - } - - -#if ($EntityCMP2.booleanValue()) - - /** - * CMP2 methods : - * ============== - * In our case it has been choosen that the container (the generic part) - * manages PName. This is the generated objects which do the translation - * between PName and PK - */ - - // IMPLEMENTATION OF THE Coder INTERFACE // - /** - * This method build a PName with the primary key specifed in parameter. - * To build the pname the PNamingContext associated to the bean is used. - * Futhermore the PKFieldExtractor class is used as a specific PNameGetter - * in case of the PName is composite (several fields). - */ - public PName decode(Object pk) - throws PException, UnsupportedOperationException { - if (pk == null) { - return ((PClassMapping) bf).getPBinder().getNull(); - } - -#**##if($pkIsUserClass.booleanValue()) - return ((PClassMapping) bf).getPBinder().decodeAbstract( - new PkFieldExtractor(($pk) pk), null); -#**##else ## Pk is a java.lang class (String, Long, ...) - return ((PClassMapping) bf).getPBinder().$pkDecodeMethod; -#**##end - - } - - /** - * This method build a primary key with the PName specifed in parameter. - * To build the primary key the PNamingContext associated to the bean is - * used. In case of the PName is composite (several fields), the - * encodeAbstract must return a specific PNameGetter. - */ - public Object encode(PName pn) - throws PException, UnsupportedOperationException { - if (pn==null || pn.isNull()) { - return null; - } - -#**##if($pkIsUserClass.booleanValue()) - $pk pk = new $pk(); - ${dd.getJormPNameGetterClassName()} png = (${dd.getJormPNameGetterClassName()}) - ((PClassMapping) bf).getPBinder().encodeAbstract(pn); -#* *##foreach ($pkf in $fieldPkList) -#* *##if (!$pkf.isMustBeConvert()) - pk.${pkf.getName()} = png.pnGet${pkf.getNameUpperFirst()}(null); -#* *##else - pk.${pkf.getName()} = (${pkf.getTypeName()})${pkf.getConvertClassName()}.toMemory((png.pnGet${pkf.getNameUpperFirst()}(null))); -#* *##end - -#* *##end - return pk; -#**##else ## Pk is a java.lang class (String, Long, ...) - return $pkMappingToMemoryMethod(((PClassMapping) bf).getPBinder().$pkEncodeMethod(pn)); -#**##end - - } - -#**##if($pkIsUserClass.booleanValue()) - /** - * This class is used to decode a primary key into a PName. It is - * specilized to the name structure - */ - private class PkFieldExtractor implements ${dd.getJormPNameGetterClassName()} { - - $pk pk; - public PkFieldExtractor($pk pk) { - this.pk = pk; - } -#* *##foreach ($pkf in $fieldPkList) - public ${pkf.getJormTypeName()} pnGet${pkf.getNameUpperFirst()}(Object ctx) { -#* *##if (!$pkf.isMustBeConvert()) - return pk.${pkf.getName()}; -#* *##else - return (${pkf.getJormTypeName()})${pkf.getConvertClassName()}.toStorage((pk.${pkf.getName()})); -#* *##end - } -#* *##end - } -#**##end - - // IMPLEMENTATION OF THE PObjectHome INTERFACE // - - public PObject getPObject(PName pn) { - return (PObject) ((JEntityFactory) bf).getEJB(pn).getRemote(); - } -#end ##EntityCMP2 - -} -// End: $Id$ - diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocal.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocal.vm deleted file mode 100644 index d4015e8afb..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocal.vm +++ /dev/null @@ -1,315 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JEntityLocal -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.rmi.RemoteException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.JEntityLocal; -import org.ow2.jonas.lib.ejb21.ha.JRepEntityLocal; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.ejb21.JWrapper; -import org.objectweb.util.monolog.api.BasicLevel; -#if ($EntityCMP2.booleanValue()) -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.lib.ejb21.jorm.PObject; -import org.ow2.jonas.lib.ejb21.jorm.Coder; -import org.objectweb.jorm.naming.api.PName; - -public class $class -#if ($isClusterReplicated) - extends JRepEntityLocal -#else - extends JEntityLocal -#end - implements PObject, $local -#* *##if ($dd.needJormCoherenceHelper())## - , ${dd.getJormCoherenceHelperFQItfName()} -#* *##end## - { -#else - -public class $class extends JEntityLocal implements $local { -#end - /** - * Constructor - */ - public $class(JEntityFactory bf) { - super(bf); - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoveException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - JEntityContext bctx = null; - try { - // false -> avoids checking reentrant in cascade delete. - // TODO find a better way to allow this. - bctx = bs.getICtx(rctx.currTx, false); - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { -#if ($isClusterReplicated) - postInvoke(rctx, bctx); -#else - postInvoke(rctx); -#end - } - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#if ($M.getReturnType() != "void") - $M.getReturnType() result; -#end - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntityContext bctx = null; - try { - bctx = bs.getICtx(rctx.currTx, true); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; -#if ($M.getReturnType() != "void") - result = -#end - b.$M.getName()($M.getActualParameters()); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { -#if ($isClusterReplicated) - postInvoke(rctx, bctx); -#else - postInvoke(rctx); -#end - } -#if ($M.getReturnType() != "void") - return result; -#end - } - -#end ##else - -#end ##foreach - - JWrapper jwrapper = null; - public JWrapper getJWrapper() { - if (jwrapper == null) { - String jndiname = bf.getLocalHome().getJndiLocalName(); - Object pk = getPrimaryKey(); - jwrapper = new JWrapper(JWrapper.LOCAL_ENTITY, jndiname, pk); - } - - return jwrapper; - } - -#if ($EntityCMP2.booleanValue()) - /** - * CMP2 methods : - * ============== - * In our case it has been choosen that the container (the generic part) - * manages PName. This is the generated objects which do the translation - */ - - Object pk = null; - - /** - * The getPrimaryKey method is overrided in order to translate the PName - * managed by the container, into a PK. - */ - public Object getPrimaryKey() { - try { - if (pk == null) { - pk = ((Coder) getEJBLocalHome()).encode((PName) super.getPrimaryKey()); - } - return pk; - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR, - "Impossible to translate the PName in Primary key", e); - throw new EJBException( - "Impossible to translate the PName in Primary key", e); - } - } - - // IMPLEMENTATION OF THE PObject INTERFACE // - - public PName getPName() { - return (PName) super.getPrimaryKey(); - } - -############################################################################### -############################################################################### -## -## Iterate over the CMR field in order to add the methods which are used to -## maintain the coherence of relations. There are two macro which avoid to -## duplicate the source code. -## -#macro( beforeRecall ) - RequestCtx rctx = preInvoke(MethodDesc.TX_SUPPORTS); - try { - JEntityContext bctx = bs.getICtx(rctx.currTx, false); - EJBInvocation ejbInv = new EJBInvocation(); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; -#end## - -#macro( afterRecall ) - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - postInvoke(rctx); - } -#end - -#* *##foreach ($F in $cmrList) -#* *##if (!$F.isMMu() && !$F.isMOu())## - // IMPLEMENTATION OF THE ${F.getHelperFQClassName()} INTERFACE // - //-------------------------------------------------------------// -################################################ -#* *##if ($F.getRsr().isTargetMultiple()) - public ${F.getTypeName()} jonasGet${F.getUFLName()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - ${F.getTypeName()} result = null; -#beforeRecall() - result = b.jonasGet${F.getUFLName()}(); -#afterRecall() - return result; - } - - public void jonasSet${F.getUFLName()}(${F.getTypeName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecall() - b.jonasSet${F.getUFLName()}(val); -#afterRecall() - } - - public void jonasAdd${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecall() - b.jonasAdd${F.getUFLName()}(bean); -#afterRecall() - } - - public void jonasRemove${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecall() - b.jonasRemove${F.getUFLName()}(bean); -#afterRecall() - } -## -#* *##else## simple CMR field -## - public ${F.getOppositeHelperFQClassName()} jonasGet${F.getUFLName()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - ${F.getOppositeHelperFQClassName()} result = null; -#beforeRecall() - result = b.jonasGet${F.getUFLName()}(); -#afterRecall() - return result; - } - - public void jonasSet${F.getUFLName()}(${F.getOppositeHelperFQClassName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecall() - b.jonasSet${F.getUFLName()}(val); -#afterRecall() - } -#* *##end## multivalued CMR field - - -#* *##end## -#* *##end## foreach CMR field -#end -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocalHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocalHome.vm deleted file mode 100644 index 88c763580d..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityLocalHome.vm +++ /dev/null @@ -1,659 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2006 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JEntityLocalHome -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.Object; -import java.lang.RuntimeException; -import java.rmi.RemoteException; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Vector; -import javax.ejb.EJBException; -import javax.ejb.FinderException; -import javax.ejb.RemoveException; -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntityLocalHome; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.JEntityLocal; -import org.ow2.jonas.lib.ejb21.JEntitySwitch; -import org.ow2.jonas.lib.ejb21.ha.JRepEntityLocalHome; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.EntityDesc; -import org.ow2.jonas.lib.ejb21.CollectionEnum; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.objectweb.util.monolog.api.BasicLevel; -#if ($EntityCMP2.booleanValue()) -import org.objectweb.jorm.api.PClassMapping; -import org.objectweb.jorm.api.PException; -import org.objectweb.jorm.naming.api.PName; -import org.ow2.jonas.lib.ejb21.jorm.Coder; -import org.ow2.jonas.lib.ejb21.jorm.PObject; -import org.ow2.jonas.lib.ejb21.jorm.PObjectHome; - -public class $class -#if ($isClusterReplicated) - extends JRepEntityLocalHome -#else - extends JEntityLocalHome -#end - implements Coder, PObjectHome, $localhome { -#else - public class $class -#if ($isClusterReplicated) - extends JRepEntityLocalHome -#else - extends JEntityLocalHome -#end - implements $localhome { -#end - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - public $class(EntityDesc dd, JEntityFactory bf) { - super(dd, bf); - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - bs = ef.getJEntitySwitch(); - bctx = ef.getJContext(bs); - bctx.setEntitySwitch(bs); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; -#if ($EntityCMP2.booleanValue()) - Object pk = b._ejb$M.getCapName()($M.getActualParameters()); -#else - Object pk = b.ejb$M.getCapName()($M.getActualParameters()); -#end - bctx.setActive(); - boolean pkadded = ef.rebindEJB(rctx.currTx, bctx, pk); - bs.bindICtx(rctx.currTx, bctx); - mapped = true; - bctx.setNewInstance(); - try { - b.ejbPost$M.getCapName()($M.getActualParameters()); - } catch (EJBException e) { - if (pkadded) { - bs.forceDiscardICtx(rctx.currTx); - bctx = null; - } - throw e; - } - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } -#if ($isClusterReplicated) - if (mapped && bctx != null) { - replicateCreate(bctx); - } -#end - - return ($local) bs.getLocal(); - } - -#elseif ($M.isFinderCol()) - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - Vector v = new Vector(); - boolean mapped = false; - Collection pkl; - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bctx.setFinding(); - rctx.bmcalled = true; - pkl = b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - Iterator pki = pkl.iterator(); - while (pki.hasNext()) { - Object _pk = pki.next(); -#if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) _pk; - if ((pn == null) || (pn.isNull())) { - v.addElement(null); - } else -#end - { - bs = ef.getEJB(_pk); - if (!mapped) { - mapped = bs.tryBindICtx(rctx.currTx, bctx, false); - } - v.addElement(bs.getLocal()); - } - } - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return v; - } - -#elseif ($M.isFinderEnum()) - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - CollectionEnum v = new CollectionEnum(); - boolean mapped = false; - Enumeration pkl; - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bctx.setFinding(); - rctx.bmcalled = true; - pkl = b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - while (pkl.hasMoreElements()) { - Object _pk = pkl.nextElement(); -#if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) _pk; - if ((pn == null) || (pn.isNull())) { - v.addElement(null); - } else -#end - { - bs = ef.getEJB(_pk); - if (!mapped) { - mapped = bs.tryBindICtx(rctx.currTx, bctx, false); - } - v.addElement(bs.getLocal()); - } - } - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return v; - } - -#elseif ($M.isFinderSimple()) - /** - * finder method returning only 1 PK - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - ef.syncForFind(rctx.currTx); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bs = ef.getJEntitySwitch(); - bctx.setEntitySwitch(bs); - bctx.setFinding(); - rctx.bmcalled = true; - Object pk = b.ejb$M.getCapName()($M.getActualParameters()); -#if ($EntityCMP2.booleanValue()) - // Fix bug #300526 - PName pn = (PName) pk; - if ((pn == null) || (pn.isNull())) { - return null; - } -#end - bctx.setActive(); - JEntitySwitch old = ef.existEJB(pk, bs, false); - if (old != null) { - bs = old; - bctx.setEntitySwitch(bs); - } - mapped = bs.tryBindICtx(rctx.currTx, bctx, true); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return ($local) bs.getLocal(); - } - -#elseif ($M.isFinderByPk()) - /** - * findByPrimaryKey - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - bs = ef.getJEntitySwitch(); - bctx.setEntitySwitch(bs); - bctx.setFinding(); - rctx.bmcalled = true; - Object pk = -#if ($EntityCMP2.booleanValue()) - decode($M.getActualParameters()); -#else - $M.getActualParameters(); -#end - JEntitySwitch old = ef.existEJB(pk, bs, true); - if (old != null) { - bs = old; - bctx.setEntitySwitch(bs); - } else { - try { - pk = b.ejb$M.getCapName()(($pk) $M.getActualParameters()); - } catch (FinderException e) { - bs.forceDiscardICtx(rctx.currTx); - throw e; - } - ef.startEJB(pk); - } - bctx.setActive(); - mapped = bs.tryBindICtx(rctx.currTx, bctx, true); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); -#if ($EntityCMP2.booleanValue()) - } catch (org.objectweb.jorm.api.PException e) { - rctx.sysExc = e; - throw new EJBException("decoding PK failed", e); -#end - } finally { - if (! mapped && bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - return ($local) bs.getLocal(); - } - -#elseif ($M.isRemovePk()) - - /** - * Remove by PK - * @throws RemoveException - */ - public void remove(Object p1) throws $M.getExceptionList() { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntitySwitch bs = null; - JEntityFactory ef = (JEntityFactory) bf; - JEntityContext bctx = null; - boolean mapped = false; - try { - ef.dummyFinderException(true); - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); -#if ($EntityCMP2.booleanValue()) - Object pk = decode(($pk) p1); - bs = ef.getEJB(pk); - bctx.setEntitySwitch(bs); - b.ejbFindByPrimaryKey((PName)pk); -#else - bs = ef.getEJB(p1); - bctx.setEntitySwitch(bs); - b.ejbFindByPrimaryKey(($pk) p1); -#end - bctx = bs.getICtx(rctx.currTx, bctx); - // Must set this before setRemove() because exception may - // occur in ejbRemove, and in that case, we must keep the context. - mapped = true; - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); -#if ($EntityCMP2.booleanValue()) - } catch (PException e) { - rctx.sysExc = e; - throw new EJBException("JORM PException thrown", e); -#end - } catch (FinderException e) { - rctx.sysExc = e; - throw new EJBException(e.toString()); - } finally { - if (!mapped && bctx != null) { - // release context in case of exception. - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } - } - -#else - - /** - * Home Method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntityFactory ef = (JEntityFactory) bf; -#if ($M.getReturnType() != "void") - $M.getReturnType() result; -#end - JEntityContext bctx = null; - try { - bctx = ef.getJContext(null); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; -#if ($M.getReturnType() != "void") - result = -#end - b.ejbHome$M.getCapName()($M.getActualParameters()); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - if (bctx != null) { - ef.releaseJContext(bctx); - } - postInvoke(rctx); - } -#if ($M.getReturnType() != "void") - return result; -#end - } - -#end - -#end - - public JEntityLocal createLocalObject() { - return new $local_wrp((JEntityFactory)bf); - } - -#if ($EntityCMP2.booleanValue()) - /** - * CMP2 methods : - * ============== - * In our case it has been choosen that the container (the generic part) - * manages PName. This is the generated objects which do the translation - * between PName and PK - */ - - // IMPLEMENTATION OF THE Coder INTERFACE // - /** - * This method build a PName with the primary key specifed in parameter. - * To build the pname the PNamingContext associated to the bean is used. - * Futhermore the PKFieldExtractor class is used as a specific PNameGetter - * in case of the PName is composite (several fields). - */ - public PName decode(Object pk) - throws PException, UnsupportedOperationException { - if (pk == null) { - return ((PClassMapping) bf).getPBinder().getNull(); - } -#**##if($pkIsUserClass.booleanValue()) - return ((PClassMapping) bf).getPBinder().decodeAbstract( - new PkFieldExtractor(($pk) pk), null); -#**##else ## Pk is a java.lang class (String, Long, ...) - return ((PClassMapping) bf).getPBinder().$pkDecodeMethod; -#**##end - } - - /** - * This method build a primary key with the PName specifed in parameter. - * To build the primary key the PNamingContext associated to the bean is - * used. In case of the PName is composite (several fields), the - * encodeAbstract must return a specific PNameGetter. - */ - public Object encode(PName pn) - throws PException, UnsupportedOperationException { - if (pn==null || pn.isNull()) { - return null; - } -#**##if($pkIsUserClass.booleanValue()) - $pk pk = new $pk(); - ${dd.getJormPNameGetterClassName()} png = (${dd.getJormPNameGetterClassName()}) - ((PClassMapping) bf).getPBinder().encodeAbstract(pn); -#* *##foreach ($pkf in $fieldPkList) -#* *##if (!$pkf.isMustBeConvert()) - pk.${pkf.getName()} = png.pnGet${pkf.getNameUpperFirst()}(null); -#* *##else - pk.${pkf.getName()} = (${pkf.getTypeName()})${pkf.getConvertClassName()}.toMemory((png.pnGet${pkf.getNameUpperFirst()}(null))); -#* *##end -#* *##end - return pk; -#**##else ## Pk is a java.lang class (String, Long, ...) - return $pkMappingToMemoryMethod(((PClassMapping) bf).getPBinder().$pkEncodeMethod(pn)); -#**##end - } - -#**##if($pkIsUserClass.booleanValue()) - /** - * This class is used to decode a primary key into a PName. It is - * specilized to the name structure - */ - private class PkFieldExtractor implements ${dd.getJormPNameGetterClassName()} { - $pk pk; - public PkFieldExtractor($pk pk) { - this.pk = pk; - } -#* *##foreach ($pkf in $fieldPkList) - public ${pkf.getJormTypeName()} pnGet${pkf.getNameUpperFirst()}(Object ctx) { -#* *##if (!$pkf.isMustBeConvert()) - return pk.${pkf.getName()}; -#* *##else - return (${pkf.getJormTypeName()})${pkf.getConvertClassName()}.toStorage((pk.${pkf.getName()})); -#* *##end - } -#* *##end -} -#**##end - - // IMPLEMENTATION OF THE PObjectHome INTERFACE // - - public PObject getPObject(PName pn) { - return (PObject) ((JEntityFactory) bf).getEJB(pn).getLocal(); - } -#end ##EntityCMP2 - } -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityRemote.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityRemote.vm deleted file mode 100644 index 8fd45be6f9..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JEntityRemote.vm +++ /dev/null @@ -1,400 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JEntityRemote -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.rmi.RemoteException; -import java.rmi.AccessException; - -import javax.ejb.Handle; -import javax.ejb.RemoveException; -import javax.ejb.EJBException; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.ow2.carol.util.configuration.ConfigurationRepository; - -import org.ow2.jonas.lib.ejb21.JEntityContext; -import org.ow2.jonas.lib.ejb21.JEntityFactory; -import org.ow2.jonas.lib.ejb21.JEntityRemote; -import org.ow2.jonas.lib.ejb21.ha.JRepEntityRemote; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.svc.JHandleIIOP; -import org.objectweb.util.monolog.api.BasicLevel; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -#if ($EntityCMP2.booleanValue()) -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.lib.ejb21.jorm.PObject; -import org.ow2.jonas.lib.ejb21.jorm.Coder; -import org.objectweb.jorm.naming.api.PName; - - - -public class $class -#if ($isClusterReplicated) - extends JRepEntityRemote -#else - extends JEntityRemote -#end - implements PObject, $remote -#* *##if ($dd.needJormCoherenceHelper())## - , ${dd.getJormCoherenceHelperFQItfName()} -#* *##end## - { -#else - -public class $class -#if ($isClusterReplicated) - extends JRepEntityRemote -#else - extends JEntityRemote -#end - implements $remote { -#end - - /** - * Constructor - */ - public $class(JEntityFactory bf) throws RemoteException { - - super(bf); - } - - /** - * EJBObject interface : getHandle. - * If Handle not build yet, create a ne one before. - */ - public Handle getHandle() { - String protocol = ConfigurationRepository.getCurrentConfiguration().getProtocol().getName(); - //TraceEjb.interp.log(BasicLevel.DEBUG, "Current protocol = " + protocol); - - if (protocol.equals("iiop")) { - return new JHandleIIOP(this); - } else { - return new $handle(this); - } - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoteException, RemoveException { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - if (hasResponse()) { - cmilogger.log(BasicLevel.DEBUG, "Response found"); - // Obtain the response associated with the request - // and delete the request because the method is going to return - Object response = getResponse(); - return; - } else { - cmilogger.log(BasicLevel.DEBUG, "Response not found"); - } -/* **********************END OF REPLICATION CODE************************ */ -#end - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - JEntityContext bctx = null; - try { - bctx = bs.getICtx(rctx.currTx, true); - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // There is no response to the client (void parameter needed by HA) - postInvoke(rctx, bctx, null); -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - } - - #afterThrowRemoteException() - - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - #if ($M.getReturnType() != "void") - $M.getReturnType() result = $M.getDefaultValue(); - #end - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - if (hasResponse()) { - cmilogger.log(BasicLevel.DEBUG, "Response found"); - // Obtain the response associated with the request - // and delete the request because the method is going to return - Object response = getResponse(); - #if ($M.getReturnType() == "void") - cmilogger.log(BasicLevel.DEBUG, "\tResponse void"); - return; - #else - cmilogger.log(BasicLevel.DEBUG, "\tResponse not void"); - #if ($M.getWrapperType() != "") - return ($M.getReturnType()) (($M.getWrapperType())response).$M.getReturnType()Value(); - #else - return ($M.getReturnType()) response; - #end - #end - } else { - cmilogger.log(BasicLevel.DEBUG, "Response not found"); - } -/* **********************END OF REPLICATION CODE************************ */ -#end - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - JEntityContext bctx = null; - try { - bctx = bs.getICtx(rctx.currTx, true); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - #if ($M.getReturnType() != "void") - result = - #end - b.$M.getName()($M.getActualParameters()); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // If exists, pass the return type to postInvoke (Needed by HA) - #if ($M.getReturnType() != "void") - #if ($M.getWrapperType() != "") - postInvoke(rctx, bctx, new $M.getWrapperType()(result)); - #else - postInvoke(rctx, bctx, result); - #end - #else - postInvoke(rctx, bctx, null); - #end -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - } - #if ($M.getReturnType() != "void") - return result; - #end - - #afterThrowRemoteException() - } - -#end - -#end - -#if ($EntityCMP2.booleanValue()) - /** - * CMP2 methods : - * ============== - * In our case it has been choosen that the container (the generic part) - * manages PName. This is the generated objects which do the translation - */ - - /** - * The getPrimaryKey method is overrided in order to translate the PName - * managed by the container, into a PK. - */ - public Object getPrimaryKey() { - try { - return ((Coder) getEJBHome()) - .encode((PName) super.getPrimaryKey()); - } catch (Exception e) { - TraceEjb.interp.log(BasicLevel.ERROR, - "Impossible to translate the PName in Primary key", e); - throw new EJBException( - "Impossible to translate the PName in Primary key", e); - } - } - - // IMPLEMENTATION OF THE PObject INTERFACE // - - public PName getPName() { - return (PName) super.getPrimaryKey(); - } - // Management of the CMR coherence // - //---------------------------------// -############################################################################### -############################################################################### -## -## Iterate over the CMR field in order to add the methods which are used to -## maintain the coherence of relations. There are two macro which avoid to -## duplicate the source code. -## -#macro( beforeRecallr ) - RequestCtx rctx = null; - try { - rctx = preInvoke(MethodDesc.TX_SUPPORTS); - } catch (RemoteException e) { - throw new EJBException("Remote Exception raised:", e); - } - try { - JEntityContext bctx = bs.getICtx(rctx.currTx, false); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - rctx.bmcalled = true; -#end## -#macro( afterRecallr ) - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - try { - postInvoke(rctx); - } catch (RemoteException e) { - throw new EJBException("Remote Exception raised:", e); - } - } -#end -#* *##foreach ($F in $cmrList) -#* *##if (!$F.isMMu() && !$F.isMOu())## - // Methods to manage the coherence of the ${F.getName()} CMR field // - //------------------------------------------------------------// -################################################ -#* *##if ($F.getRsr().isTargetMultiple()) - public ${F.getTypeName()} jonasGet${F.getUFLName()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - ${F.getTypeName()} result = null; -#beforeRecallr() - result = b.jonasGet${F.getUFLName()}(); -#afterRecallr() - return result; - } - - public void jonasSet${F.getUFLName()}(${F.getTypeName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecallr() - b.jonasSet${F.getUFLName()}(val); -#afterRecallr() - } - - public void jonasAdd${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecallr() - b.jonasAdd${F.getUFLName()}(bean); -#afterRecallr() - } - - public void jonasRemove${F.getUFLName()}(${F.getOppositeHelperFQClassName()} bean) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecallr() - b.jonasRemove${F.getUFLName()}(bean); -#afterRecallr() - } - -## -#* *##else## simple CMR field -## - public ${F.getOppositeHelperFQClassName()} jonasGet${F.getUFLName()}() { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - ${F.getOppositeHelperFQClassName()} result = null; -#beforeRecallr() - result = b.jonasGet${F.getUFLName()}(); -#afterRecallr() - return result; - } - - public void jonasSet${F.getUFLName()}(${F.getOppositeHelperFQClassName()} val) { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#beforeRecallr() - b.jonasSet${F.getUFLName()}(val); -#afterRecallr() - } -#* *##end## multivalued CMR field - - -#* *##end## -#* *##end## foreach CMR field -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpoint.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpoint.vm deleted file mode 100644 index 7ab70c78e7..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpoint.vm +++ /dev/null @@ -1,126 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Guillaume Sauthier -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JServiceEndpoint -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.rmi.RemoteException; - -import javax.ejb.EJBException; -import javax.ejb.RemoveException; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JStatelessFactory; -import org.ow2.jonas.lib.ejb21.JServiceEndpoint; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; - -import org.objectweb.util.monolog.api.BasicLevel; - -public class $class extends JServiceEndpoint implements $serviceEndpoint { - - /** - * Constructor - */ - public $class(JStatelessFactory sf) throws RemoteException { - super(sf); - } - -#foreach ($M in $methodList) - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) - #if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() - #end - - { - - //logger.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - #if ($M.getReturnType() != "void") - $M.getReturnType() result; - #end - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke($M.getTxAttribute()); - try { - rctx.ejbContext = bs.getICtx(rctx.currTx); - $bean_wrp b = ($bean_wrp) rctx.ejbContext.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - - #if ($M.getReturnType() != "void") - result = - #end - b.$M.getName()($M.getActualParameters()); - - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - postInvoke(rctx); - } - - #if ($M.getReturnType() != "void") - return result; - #end - - #afterThrowRemoteException() - - } - -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpointHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpointHome.vm deleted file mode 100644 index c9c0ce27f4..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JServiceEndpointHome.vm +++ /dev/null @@ -1,58 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JServiceEndpointHome -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.rmi.RemoteException; - -import javax.ejb.EJBException; -import javax.ejb.RemoveException; - -import org.ow2.jonas.lib.ejb21.JStatelessFactory; -import org.ow2.jonas.lib.ejb21.JServiceEndpoint; -import org.ow2.jonas.lib.ejb21.JServiceEndpointHome; - -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; - -import org.objectweb.util.monolog.api.BasicLevel; - -public class $class extends JServiceEndpointHome { - - /** - * Constructor - */ - public $class(SessionStatelessDesc sd, JStatelessFactory sf) { - super(sd, sf); - } - - public JServiceEndpoint createServiceEndpointObject() throws RemoteException { - return new $service-endpoint_wrp((JStatelessFactory)bf); - } -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulHome.vm deleted file mode 100644 index 0c51d3c00b..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulHome.vm +++ /dev/null @@ -1,183 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## Copyright (C) 2006 Distributed Systems Lab. -## Universidad Politenica de Madrid (Spain) -## Contact: http://lsd.ls.fi.upm.es/lsd -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): -## Francisco Perez-Sorrosal (fpsorrosal@no-spam@fi.upm.es) -## Alberto Paz-Jimenez (apaz@no-spam@fi.upm.es) -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionHome for Stateful Sessions -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.rmi.RemoteException; -import java.rmi.Remote; - -import javax.ejb.Handle; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; - -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.JFactory; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionHome; -import org.ow2.jonas.lib.ejb21.JSessionRemote; -import org.ow2.jonas.lib.ejb21.JStatefulContext; -import org.ow2.jonas.lib.ejb21.JStatefulFactory; -import org.ow2.jonas.lib.ejb21.JStatefulSwitch; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.deployment.ejb.SessionDesc; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.objectweb.util.monolog.api.BasicLevel; - -public class $class extends JSessionHome implements $home { - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - /** - * Created by JSessionFactory (by newInstance) - */ - public $class(SessionDesc dd, JSessionFactory bf) throws RemoteException { - - super(dd, bf); - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - JStatefulSwitch bs = null; - JSessionFactory sf = (JSessionFactory) bf; - try { - bs = (JStatefulSwitch) sf.createEJB(); - JSessionContext bctx = sf.getJContext(bs); - rctx.ejbContext = bctx; - bs.bindICtx(rctx.currTx, (JStatefulContext) bctx); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - bs.saveOpenResources(); - } catch (javax.ejb.AccessLocalException e) { - throw new RemoteException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - postInvoke(rctx); - } - - return ($remote) bs.getRemote(); - #afterThrowRemoteException() - - } - -#elseif ($M.isRemoveHandle()) - - /** - * Remove by Handle - */ - public void remove(Handle p1) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - checkSecurity(ejbInv); - javax.ejb.EJBObject ejbobj = null; - try { - ejbobj = p1.getEJBObject(); - rctx.bmcalled = true; - ejbobj.remove(); - } catch (javax.ejb.AccessLocalException e) { - throw new RemoteException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - postInvoke(rctx); - } - - #afterThrowRemoteException() - } - -#end - -#end - - public JSessionRemote createRemoteObject() throws RemoteException { - - #beforeThrowRemoteException() - - return new $remote_wrp((JStatefulFactory)bf); - - #afterThrowRemoteException() - - } -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocal.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocal.vm deleted file mode 100644 index bd743ef1d9..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocal.vm +++ /dev/null @@ -1,192 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2008 Bull S.A. -## Contact: jonas-team@objectweb.org -## Copyright (C) 2006 Distributed Systems Lab. -## Universidad Politecnica de Madrid (Spain) -## Contact: http://lsd.ls.fi.upm.es/lsd -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux. -## Contributor(s): -## Francisco Perez-Sorrosal (fpsorrosal@no-spam@fi.upm.es) -## Alberto Paz-Jimenez (apaz@no-spam@fi.upm.es) -## S. Ali Tokmen, Malek Chahine: EJB statistics -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionLocal -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.util.Date; -import java.rmi.RemoteException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionLocal; -import org.ow2.jonas.lib.ejb21.ha.JRepStatefulLocal; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.ejb21.MonitoringEvent; -import org.objectweb.util.monolog.api.BasicLevel; - - -#if ($isClusterReplicated) -public class $class extends JRepStatefulLocal implements $local { -#else -public class $class extends JSessionLocal implements $local { -#end - - /** - * Constructor - */ - public $class(JSessionFactory bf) { - super(bf); - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoveException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - - try { - JSessionContext bctx = bs.getICtx(rctx.currTx); - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean: "+e); - - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised: ", e); - } finally { -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // There is no response to the client (void parameter needed by HA) - postInvoke(rctx, true); -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - - - } - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - #timerVariablesDeclaration() - #getRequestStartTime() - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#if ($M.getReturnType() != "void") - $M.getReturnType() result; -#end - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // Inject the state if found on HA tables - injectState(); -/* **********************END OF REPLICATION CODE************************ */ -#end - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - try { - JSessionContext bctx = bs.getICtx(rctx.currTx); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - #getBusinessStartTime() - -#if ($M.getReturnType() != "void") - result = -#end - b.$M.getName()($M.getActualParameters()); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - #getBusinessStopTime() -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - postInvoke(rctx, false); -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - #getRequestStopTime() - #updateEJBMonitoringData() - } -#if ($M.getReturnType() != "void") - return result; -#end - } - -#end - -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocalHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocalHome.vm deleted file mode 100644 index e583361df2..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulLocalHome.vm +++ /dev/null @@ -1,136 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A.S. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionLocalHome for Stateful Sessions -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.rmi.RemoteException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.JFactory; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionLocalHome; -import org.ow2.jonas.lib.ejb21.ha.JRepStatefulLocalHome; -import org.ow2.jonas.lib.ejb21.JSessionLocal; -import org.ow2.jonas.lib.ejb21.JStatefulContext; -import org.ow2.jonas.lib.ejb21.JStatefulFactory; -import org.ow2.jonas.lib.ejb21.JStatefulSwitch; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.deployment.ejb.SessionDesc; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -import org.objectweb.util.monolog.api.BasicLevel; - -#if ($isClusterReplicated) -public class $class extends JRepStatefulLocalHome implements $localhome { -#else -public class $class extends JSessionLocalHome implements $localhome { -#end - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - /** - * Created by JSessionFactory (by newInstance) - */ - public $class(SessionDesc dd, JSessionFactory bf) { - super(dd, bf); - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method - */ - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - JStatefulSwitch bs = null; - JSessionFactory sf = (JSessionFactory) bf; - try { - bs = (JStatefulSwitch) sf.createEJB(); - JSessionContext bctx = sf.getJContext(bs); - rctx.ejbContext = bctx; - bs.bindICtx(rctx.currTx, (JStatefulContext) bctx); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - b.ejb$M.getCapName()($M.getActualParameters()); - bctx.setActive(); - bs.saveOpenResources(); - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - postInvoke(rctx); - } -#if ($isClusterReplicated) - replicateCreate(bs); -#end - return ($local) bs.getLocal(); - } - -#end - -#end - - public JSessionLocal createLocalObject() { - return new $local_wrp((JStatefulFactory)bf); - } -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulRemote.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulRemote.vm deleted file mode 100644 index b909da9c63..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatefulRemote.vm +++ /dev/null @@ -1,236 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## Copyright (C) 2006 Distributed Systems Lab. -## Universidad Politenica de Madrid (Spain) -## Contact: http://lsd.ls.fi.upm.es/lsd -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux. -## Contributor(s): -## Francisco Perez-Sorrosal (fpsorrosal@no-spam@fi.upm.es) -## Alberto Paz-Jimenez (apaz@no-spam@fi.upm.es) -## S. Ali Tokmen, Malek Chahine: EJB statistics -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionRemote -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.util.Date; -import java.rmi.AccessException; -import java.rmi.RemoteException; - -import javax.ejb.RemoveException; - -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionRemote; -import org.ow2.jonas.lib.ejb21.ha.JRepStatefulRemote; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.ejb21.MonitoringEvent; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.objectweb.util.monolog.api.BasicLevel; - -#if ($isClusterReplicated) -public class $class extends JRepStatefulRemote implements $remote { -#else -public class $class extends JSessionRemote implements $remote { -#end - - /** - * Constructor - */ - public $class(JSessionFactory bf) throws RemoteException { - - super(bf); - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoteException, RemoveException { - - //TraceEjb.interp.log(BasicLevel.DEBUG,""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - - try { - JSessionContext bctx = bs.getICtx(rctx.currTx); - rctx.bmcalled = true; - bctx.setRemoved(); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // There is no response to the client (void parameter needed by HA) - postInvoke(rctx, null, true); -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - } - - #afterThrowRemoteException() - - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG,""); - #timerVariablesDeclaration() - #getRequestStartTime() - #beforeThrowRemoteException() - - #if ($M.getReturnType() != "void") - $M.getReturnType() result = $M.getDefaultValue(); - #end - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - if (hasResponse()) { - // Inject the state if found on HA tables - injectState(); - - cmilogger.log(BasicLevel.DEBUG, "Response found"); - // Obtain the response associated with the request - // and delete the request because the method is going to return - Object response = getResponse(); - #if ($M.getReturnType() == "void") - cmilogger.log(BasicLevel.DEBUG, "\tResponse void"); - return; - #else - cmilogger.log(BasicLevel.DEBUG, "\tResponse not void"); - #if ($M.getWrapperType() != "") - return ($M.getReturnType()) (($M.getWrapperType())response).$M.getReturnType()Value(); - #else - return ($M.getReturnType()) response; - #end - #end - } else { - // Inject the state if found on HA tables - injectState(); - cmilogger.log(BasicLevel.DEBUG, "Response not found"); - } -/* **********************END OF REPLICATION CODE************************ */ -#end - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - - try { - JSessionContext bctx = bs.getICtx(rctx.currTx); - $bean_wrp b = ($bean_wrp) bctx.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - - #getBusinessStartTime() - - #if ($M.getReturnType() != "void") - result = - #end - - b.$M.getName()($M.getActualParameters()); - - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - #getBusinessStopTime() - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // If exists, pass the return type to postInvoke (Needed by HA) - #if ($M.getReturnType() != "void") - #if ($M.getWrapperType() != "") - postInvoke(rctx, new $M.getWrapperType()(result), false); - #else - postInvoke(rctx, result, false); - #end - #else - postInvoke(rctx, null, false); - #end -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - - #getRequestStopTime() - #updateEJBMonitoringData() - } - - #if ($M.getReturnType() != "void") - return result; - #end - - #afterThrowRemoteException() - - } - -#end - -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessHome.vm deleted file mode 100644 index f2ebb629c6..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessHome.vm +++ /dev/null @@ -1,169 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionHome for Stateless Sessions -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.rmi.RemoteException; - -import javax.ejb.Handle; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; - -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.JFactory; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionHome; -import org.ow2.jonas.lib.ejb21.JSessionRemote; -import org.ow2.jonas.lib.ejb21.JSessionSwitch; -import org.ow2.jonas.lib.ejb21.JStatelessFactory; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.deployment.ejb.SessionDesc; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.objectweb.util.monolog.api.BasicLevel; - - -public class $class extends JSessionHome implements $home { - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - /** - * Created by JSessionFactory (by newInstance) - */ - public $class(SessionDesc dd, JSessionFactory bf) throws RemoteException { - - super(dd, bf); - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method (unique for stateless session beans) - */ - public $M.getReturnType() create() throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - checkSecurity(ejbInv); - JSessionSwitch bs = null; - try { - rctx.bmcalled = true; - bs = ((JSessionFactory) bf).createEJB(); - } catch (javax.ejb.AccessLocalException e) { - throw new RemoteException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - postInvoke(rctx); - } - - return ($remote) bs.getRemote(); - - #afterThrowRemoteException() - - } - -#elseif ($M.isRemoveHandle()) - - /** - * Remove by Handle - */ - public void remove(Handle p1) throws $M.getExceptionList() { - - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - checkSecurity(ejbInv); - javax.ejb.EJBObject ejbobj = null; - try { - ejbobj = p1.getEJBObject(); - rctx.bmcalled = true; - ejbobj.remove(); - } catch (javax.ejb.AccessLocalException e) { - throw new RemoteException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - postInvoke(rctx); - } - - #afterThrowRemoteException() - } - -#end - -#end - - public JSessionRemote createRemoteObject() throws RemoteException { - - #beforeThrowRemoteException() - - return new $remote_wrp((JStatelessFactory)bf); - - #afterThrowRemoteException() - - } -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocal.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocal.vm deleted file mode 100644 index a0e085d3a7..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocal.vm +++ /dev/null @@ -1,155 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2008 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux. -## Contributor(s): - S. Ali Tokmen, Malek Chahine: EJB statistics -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionLocal -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.util.Date; -import java.rmi.RemoteException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionLocal; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.ejb21.MonitoringEvent; -import org.objectweb.util.monolog.api.BasicLevel; - -public class $class extends JSessionLocal implements $local { - - /** - * Constructor - */ - public $class(JSessionFactory bf) { - super(bf); - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoveException { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - - try { - rctx.ejbContext = bs.getICtx(rctx.currTx); - rctx.bmcalled = true; - rctx.ejbContext.setRemoved(); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - postInvoke(rctx); - } - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - #timerVariablesDeclaration() - #getRequestStartTime() - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); -#if ($M.getReturnType() != "void") - $M.getReturnType() result; -#end - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - try { - rctx.ejbContext = bs.getICtx(rctx.currTx); - $bean_wrp b = ($bean_wrp) rctx.ejbContext.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - #getBusinessStartTime() - -#if ($M.getReturnType() != "void") - result = -#end - b.$M.getName()($M.getActualParameters()); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean: "+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised", e); - } finally { - #getBusinessStopTime() - postInvoke(rctx); - #getRequestStopTime() - #updateEJBMonitoringData() - } -#if ($M.getReturnType() != "void") - return result; -#end - } - -#end - -#end - -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocalHome.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocalHome.vm deleted file mode 100644 index 56a02be2a5..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessLocalHome.vm +++ /dev/null @@ -1,118 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2004 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux, Helene Joanin. -## Contributor(s): ______________________________________. -## -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionLocalHome for Stateless Sessions -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.rmi.RemoteException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.JFactory; -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionLocalHome; -import org.ow2.jonas.lib.ejb21.JSessionLocal; -import org.ow2.jonas.lib.ejb21.JSessionSwitch; -import org.ow2.jonas.lib.ejb21.JStatelessFactory; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.deployment.ejb.MethodDesc; -import org.ow2.jonas.deployment.ejb.SessionDesc; -import org.ow2.jonas.lib.ejb21.EJBInvocation; - -import org.objectweb.util.monolog.api.BasicLevel; - -public class $class extends JSessionLocalHome implements $localhome { - - // JOnAS version used to deploy - public static final String JONAS_VERSION = "$jVersion"; - - /** - * Created by JSessionFactory (by newInstance) - */ - public $class(SessionDesc dd, JSessionFactory bf) { - super(dd, bf); - } - -#foreach ($M in $methodList) - -#if ($M.isCreate()) - - /** - * create method (unique for stateless session beans) - */ - public $M.getReturnType() create() -#if ( $M.getExceptionList().length() > 0 ) - throws $M.getExceptionList() -#end - { - //TraceEjb.interp.log(BasicLevel.DEBUG, ""); - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - RequestCtx rctx = preInvoke(MethodDesc.TX_NOT_SET); - checkSecurity(ejbInv); - JSessionSwitch bs = null; - try { - rctx.bmcalled = true; - bs = ((JSessionFactory) bf).createEJB(); - } catch (javax.ejb.AccessLocalException e) { - throw new EJBException("Security Exception thrown by an enterprise Bean", e); - } catch (EJBException e) { - rctx.sysExc = e; - throw e; - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new EJBException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new EJBException("Error thrown by an enterprise Bean"+e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw new EJBException("Remote Exception raised:", e); - } finally { - postInvoke(rctx); - } - return ($local) bs.getLocal(); - } - -#end - -#end - - public JSessionLocal createLocalObject() { - return new $local_wrp((JStatelessFactory)bf); - } -} -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessRemote.vm b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessRemote.vm deleted file mode 100644 index 591b48638a..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/JStatelessRemote.vm +++ /dev/null @@ -1,220 +0,0 @@ -## --------------------------------------------------------------------------- -## JOnAS: Java(TM) Open Application Server -## Copyright (C) 1999-2008 Bull S.A. -## Contact: jonas-team@objectweb.org -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA -## -## Initial developer(s): Philippe Durieux. -## Contributor(s): - S. Ali Tokmen, Malek Chahine: EJB statistics -## --------------------------------------------------------------------------- -## $Id$ -## --------------------------------------------------------------------------- - -// This class is the bean specific part of JSessionRemote -// Generated by GenIC via Velocity. Do not edit directly this file. -// Start: $Id$ - -#if ($package.length() != 0) -package $package; -#end - -import java.lang.Error; -import java.lang.RuntimeException; -import java.rmi.AccessException; -import java.rmi.RemoteException; -import javax.ejb.RemoveException; -import java.util.Date; - -import org.ow2.jonas.lib.ejb21.JSessionContext; -import org.ow2.jonas.lib.ejb21.JSessionFactory; -import org.ow2.jonas.lib.ejb21.JSessionRemote; -import org.ow2.jonas.lib.ejb21.ha.JRepStatelessRemote; -import org.ow2.jonas.lib.ejb21.RequestCtx; -import org.ow2.jonas.lib.ejb21.TraceEjb; -import org.ow2.jonas.lib.ejb21.EJBInvocation; -import org.ow2.jonas.lib.ejb21.MonitoringEvent; - -import org.ow2.carol.rmi.exception.RmiUtility; -import org.objectweb.util.monolog.api.BasicLevel; - -#if ($isClusterReplicated) -public class $class extends JRepStatelessRemote implements $remote { -#else -public class $class extends JSessionRemote implements $remote { -#end - - /** - * Constructor - */ - public $class(JSessionFactory bf) throws RemoteException { - super(bf); - } - -#foreach ($M in $methodList) - -#if ($M.isRemoveThis()) - - /** - * remove this bean instance - */ - public void remove() throws RemoteException, RemoveException { - //TraceEjb.interp.log(BasicLevel.DEBUG,""); - - #beforeThrowRemoteException() - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - checkSecurity(ejbInv); - - try { - rctx.ejbContext = bs.getICtx(rctx.currTx); - rctx.bmcalled = true; - rctx.ejbContext.setRemoved(); - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // There is no response to the client (void parameter needed by HA) - postInvoke(rctx, null); -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - } - - #afterThrowRemoteException() - - } - -#else - - public $M.getReturnType() $M.getName()($M.getFormalParameters()) throws $M.getExceptionList() { - //TraceEjb.interp.log(BasicLevel.DEBUG,""); - - #timerVariablesDeclaration() - #getRequestStartTime() - #beforeThrowRemoteException() - -#if ($M.getReturnType() != "void") - $M.getReturnType() result = $M.getDefaultValue(); -#end - -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - if (hasResponse()) { - cmilogger.log(BasicLevel.DEBUG, "Response found"); - // Obtain the response associated with the request - // and delete the request because the method is going to return - Object response = getResponse(); - #if ($M.getReturnType() == "void") - cmilogger.log(BasicLevel.DEBUG, "\tResponse void"); - return; - #else - cmilogger.log(BasicLevel.DEBUG, "\tResponse not void"); - #if ($M.getWrapperType() != "") - return ($M.getReturnType()) (($M.getWrapperType())response).$M.getReturnType()Value(); - #else - return ($M.getReturnType()) response; - #end - #end - } else { - cmilogger.log(BasicLevel.DEBUG, "Response not found"); - } -/* **********************END OF REPLICATION CODE************************ */ -#end - - EJBInvocation ejbInv = new EJBInvocation(); - ejbInv.methodPermissionSignature = "$M.getSecuritySignature()"; - ejbInv.arguments = $M.getArrayObjectParameters(); - - RequestCtx rctx = preInvoke($M.getTxAttribute()); - - try { - rctx.ejbContext = bs.getICtx(rctx.currTx); - $bean_wrp b = ($bean_wrp) rctx.ejbContext.getInstance(); - ejbInv.bean = b; - checkSecurity(ejbInv); - rctx.bmcalled = true; - #getBusinessStartTime() - -#if ($M.getReturnType() != "void") - result = -#end - - b.$M.getName()($M.getActualParameters()); - - } catch (javax.ejb.AccessLocalException e) { - throw new AccessException("Security Exception thrown by an enterprise Bean", e); - } catch (RuntimeException e) { - rctx.sysExc = e; - throw new RemoteException("RuntimeException thrown by an enterprise Bean", e); - } catch (Error e) { - rctx.sysExc = e; - throw new RemoteException("Error thrown by an enterprise Bean", e); - } catch (RemoteException e) { - rctx.sysExc = e; - throw e; - } finally { - #getBusinessStopTime() -#if ($isClusterReplicated) -/* ******************REPLICATION CODE STARTS HERE*********************** */ - // If exists, pass the return type to postInvoke (Needed by HA) - #if ($M.getReturnType() != "void") - #if ($M.getWrapperType() != "") - postInvoke(rctx, new $M.getWrapperType()(result)); - #else - postInvoke(rctx, result); - #end - #else - postInvoke(rctx, null); - #end -/* **********************END OF REPLICATION CODE************************ */ -#else - postInvoke(rctx); -#end - #getRequestStopTime() - #updateEJBMonitoringData() - } - -#if ($M.getReturnType() != "void") - return result; -#end - -#afterThrowRemoteException() - - } - -#end - -#end - -} - -// End: $Id$ diff --git a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/README b/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/README deleted file mode 100644 index e5cb6ec673..0000000000 --- a/jonas/modules/generators/jonas-genic/src/main/resources/org/ow2/jonas/generators/genic/README +++ /dev/null @@ -1,94 +0,0 @@ - -+-------------------------------------------------------+ -| List of args used for Velocity: (for 1 bean) | -+-------------------------------------------------------+ - - -Common for all generated files: -------------------------------------------------------------------------------- -dd Deployment Descriptor -home Home Interface (full name) -localhome LocalHome Interface (full name) -remote Remote Interface (full name) -local Local Interface (full name) -home_wrp Wrapper Home (full name) used ? -localhome_wrp Wrapper localhome (full name) used ? -remote_wrp Wrapper remote (full name) -local_wrp Wrapper local (full name) -bean Bean class (full name of bean provider class) -bean_wrp Bean derived class (CMP) or Bean class (others) -handle Handle generated class -pk class of PK (entity only) - -fieldList Container managed persistence bean's fields -fieldPkList CMP bean's fields which make up the primary key -fieldNoPkList CMP bean's fields which don't make up the primary key - -Specific to each generated file: -------------------------------------------------------------------------------- -package package of generated file (same as inherited class) -class class of generated file -methodList List of Method's for this generated class, - including remove methods. - -Class Field: List of function calls: --------------------------------------------------------------------------------- -getName() -getTypeName() -getDefaultValue() -getSqlTypeName() -getSqlGetMethod() -getSqlSetMethod() -hasNotPrimitiveType() -hasBigIntegerType() -hasSerializableType() -hasJavaLangTypeExceptString() - - -Class Method: List of function calls: --------------------------------------------------------------------------------- -isFinderByPk() true if findByPrimaryKey method -isFinderSimple() true if finder method returning 1 value and if it's not findByPrimaryKey -isFinderEnum() true if finder method returning Enumeration -isFinderCol() true if finder method returning Collection -isCreate() true if create method -isCreate() true if ejbCreate bean method -isRemovePk() true if remove by PK -isRemoveHandle() true if remove by Handle -isRemoveThis() true if remove bean method -isEjbRemove() true if ejbRemove bean method -isEjbLoad() true if ejbLoad bean method -isEjbStore() true if ejbStore bean method -isEjbSetEntityContext() true if ejbSetEntityContext bean method - -getName() -getCapName() -getFormalParameters() -getActualParameters() -getExceptionList() -getSecuritySignature() -getTxAttribute() -getReturnType() -getSqlStmt() SQL statement (available for Entity CMP) -getParamWhereList() parameters list for the WHERE clause - (available for Entity CMP for finder methods) - - -Class ParamWhere: List of function calls: --------------------------------------------------------------------------------- -getName() -getTypeName() -getDefaultValue() -getSqlTypeName() -getSqlSetMethod() -hasNotPrimitiveType() -hasBigIntegerType() -hasSerializableType() -hasJavaLangTypeExceptString() - - --------------------------------------------------------------------------------- -A VOIR : --------------------------------------------------------------------------------- -1 seul template pour local/remote ? -1 seul template pour session/entity ? diff --git a/jonas/modules/generators/jonas-wsgen/pom.xml b/jonas/modules/generators/jonas-wsgen/pom.xml deleted file mode 100644 index 53bf442e90..0000000000 --- a/jonas/modules/generators/jonas-wsgen/pom.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - org.ow2.jonas - jonas-generators - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-generators-wsgen - bundle - JOnAS :: Generators :: WSGen - - - - org.ow2.jonas - jonas-commons - ${project.version} - - - org.ow2.jonas - jonas-deployment - ${project.version} - - - org.ow2.jonas - jonas-generators-base - ${project.version} - - - org.ow2.jonas.osgi - xmlbeans - ${project.version} - - - org.ow2.jonas - jonas-version - ${project.version} - - - org.apache.axis - axis - - - org.apache.ws.ews - ews-mapper - 1.1 - - - - velocity - velocity-dep - 1.4 - - - commons-discovery - commons-discovery - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - provided - - - org.ow2.bundles - ow2-util-ee-deploy-impl - - - org.ow2.jonas - eclipse-compiler - ${project.version} - - - diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGen.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGen.java deleted file mode 100644 index edecd72f99..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGen.java +++ /dev/null @@ -1,290 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen; - -import java.io.File; -import java.util.StringTokenizer; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.generators.genbase.NoJ2EEWebservicesException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.generator.GeneratorFactories; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.genbase.utils.TempRepository; -import org.ow2.jonas.generators.wsgen.finder.GeneralWSFinder; -import org.ow2.jonas.generators.wsgen.finder.J2EEWebServicesFinder; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.ow2.jonas.generators.wsgen.modifier.ModifierFactory; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; - -/** - * Main WsGen Class. - * @author Guillaume Sauthier - */ -public class WsGen { - - /** - * Logger. - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** - * Set to false if input file cannot be processed by WsGen (DTDs). - */ - private boolean inputModified = true; - - /** - * Private Constructor for Utility class WsGen. - */ - public WsGen() { } - - /** - * Main method. - * @param args Commend line args - * @throws Exception When the execute method fails - */ - public static void main(final String[] args) throws Exception { - WsGen wsgen = new WsGen(); - wsgen.execute(args); - } - - /** - * Method used by the main method and by external class to retrieve the name of - * the modified or created file by WsGen. - * @param args command line arguments - * @throws Exception When a failure occurs - * @return the modified file name or the input file name if nothing has been changed - */ - public String execute(final String[] args) throws Exception { - // store configuration properties - Config config = parseInput(args); - - if (config.isHelp() || config.isError() || config.getInputname() == null) { - // display usage message - usage(); - return null; - } - - return execute(config, null); - } - - /** - * Method used by the main method and by external class to retrieve the name of - * the modified or created file by WsGen. - * @param config the given config - * @param deployable the current deployable - * @return the modified file name or the input file name if nothing has been changed - * @throws Exception When a failure occurs - */ - public String execute(final Config config, final IDeployable deployable) throws Exception { - GeneratorFactory gf = GeneratorFactory.getInstance(); - - // Make sure that DTD is turned to off - config.setDTDsAllowed(false); - - // setup configuration - gf.setConfiguration(config); - GeneratorFactories.setCurrentFactory(gf); - Archive modifiedArchive = null; - ArchiveModifier am = null; - // get the ArchiveModifier - try { - am = ModifierFactory.getModifier(config.getInputname(), false, deployable); - - J2EEWebServicesFinder finder = new GeneralWSFinder(am.getArchive()); - - // Do not touch the archive unless necessary ! - if (finder.find()) { - - logger.log(BasicLevel.INFO, "WebServices generation for '" + config.getInputname() + "'"); - - am.getArchive().initialize(); - - // modify the given archive - modifiedArchive = am.modify(); - - return modifiedArchive.getRootFile().getCanonicalPath(); - } - - } catch (NoJ2EEWebservicesException e) { - logger.log(BasicLevel.DEBUG, config.getInputname() + " is using DTDs, WsGen needs Schema only : " - + e.getMessage()); - inputModified = false; - return config.getInputname(); - } finally { - // close archive - if (am != null && am.getArchive() != null) { - am.getArchive().close(); - } - - modifiedArchive = null; - am = null; - - // delete all the temporary files created - TempRepository.getInstance().deleteAll(); - - System.gc(); - } - // no changes needed ... - inputModified = false; - return config.getInputname(); - - } - - /** - * Parse Command Line input and returns a Config object. - * @param args Command Lines params - * @return a Config object - */ - private static Config parseInput(final String[] args) { - Config config = new Config(); - - // Get args - for (int argn = 0; argn < args.length; argn++) { - String arg = args[argn]; - - if (arg.equals("-help") || arg.equals("-?")) { - config.setHelp(true); - - continue; - } - - if (arg.equals("-verbose")) { - config.setVerbose(true); - - continue; - } - - if (arg.equals("-debug")) { - config.setDebug(true); - config.setVerbose(true); - - continue; - } - - if (arg.equals("-keepgenerated")) { - config.setKeepGenerated(true); - - continue; - } - - if (arg.equals("-noconfig")) { - config.setNoConfig(true); - - continue; - } - - if (arg.equals("-novalidation")) { - config.setParseWithValidation(false); - - continue; - } - - if (arg.equals("-javac")) { - config.setNameJavac(args[++argn]); - - continue; - } - - if (arg.equals("-javacopts")) { - argn++; - - if (argn < args.length) { - StringTokenizer st = new StringTokenizer(args[argn]); - - while (st.hasMoreTokens()) { - config.getJavacOpts().add(st.nextToken()); - } - } else { - config.setError(true); - } - - continue; - } - - if (arg.equals("-d")) { - argn++; - - if (argn < args.length) { - config.setOut(new File(args[argn])); - } else { - config.setError(true); - } - - continue; - } - - if (arg.equals("-unpacked")) { - config.setSaveUnpacked(); - - continue; - } - - if (args[argn] != null) { - config.setInputname(args[argn]); - } else { - config.setError(true); - } - } - - return config; - - } - - /** - * Display the usage. - */ - public static void usage() { - StringBuffer msg = new StringBuffer(); - msg.append("Usage: java org.ow2.jonas.generators.wsgen.WsGen -help \n"); - msg.append(" to print this help message \n"); - msg.append(" or java org.ow2.jonas.generators.wsgen.WsGen \n"); - msg.append("Options include: \n"); - msg.append(" -d specify where to place the generated files \n"); - msg.append(" -novalidation parse the XML deployment descriptors without \n"); - msg.append(" validation \n"); - msg.append(" -javac specify the java compiler to use \n"); - msg.append(" -javacopts specify the options to pass to the java compiler \n"); - msg.append(" -keepgenerated do not delete intermediate generated files \n"); - msg.append(" -noconfig do not generate configuration files (require \n"); - msg.append(" user provided files) \n"); - msg.append(" -verbose \n"); - msg.append(" -debug \n"); - msg.append(" \n"); - msg.append(" Input_File the ejb-jar, war or ear filename\n"); - System.out.println(msg.toString()); - } - - /** - * @return Returns the inputModified. - */ - public boolean isInputModified() { - return inputModified; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGenException.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGenException.java deleted file mode 100644 index 5722c85fd1..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/WsGenException.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume Sauthier - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen; - -import org.ow2.jonas.generators.genbase.GenBaseException; - -/** - * This class represents the exception that can be throwned by the WsGen tool. - */ -public class WsGenException extends GenBaseException { - - /** - * Constructs a WsGenException with no specified detail message. - */ - public WsGenException() { - super(); - } - - /** - * Constructs an WsGenException with the specified detail message. - * @param msg Error message - */ - public WsGenException(String msg) { - super(msg); - } - - /** - * Constructs an WsGenException with the specified detail message. - * @param inner Cause Exception to wrap - */ - public WsGenException(Exception inner) { - super(inner); - } - - /** - * Constructs an WsGenException with the specified detail message. - * @param msg Error message - * @param inner Cause Exception to wrap - */ - public WsGenException(String msg, Exception inner) { - super(msg, inner); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/ContextDDModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/ContextDDModifier.java deleted file mode 100644 index cc59546dfe..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/ContextDDModifier.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Matt Wringe - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Modify a the context.xml file. Wrapper around a web.xml DOM - * - * @author Matt Wringe - */ -public class ContextDDModifier extends DeploymentDescModifier { - - - /** - * The class used by Tomcat to setup the realm - */ - private static final String REALM_CLASS_NAME = "org.ow2.jonas.web.tomcat6.security.Realm"; - - - /** - * Create a new ContextDDModifier - * - * @param doc the context.xml Document - */ - public ContextDDModifier(Document doc) { - super(doc.getDocumentElement(), doc); - } - - /** - * Setups the realm for Tomcat to use - * - * @param realm the realm to use - */ - public void addContextRealm(String realm) { - Element contextElement = getElement(); - - contextElement.appendChild (setRealm(realm)); - } - - /** - * Returns an element that defines the realm to use - * - * @param realm the realm to use - * @return an element the defines the realm to use - */ - private Element setRealm (String realm) { - Element realmElement = newElement("Realm"); - realmElement.setAttribute("className", REALM_CLASS_NAME); - realmElement.setAttribute("resourceName", realm); - - return realmElement; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/DeploymentDescModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/DeploymentDescModifier.java deleted file mode 100644 index 340a6d4fb6..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/DeploymentDescModifier.java +++ /dev/null @@ -1,213 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.ow2.jonas.lib.util.Log; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Text; - - -import org.objectweb.util.monolog.api.Logger; - -/** - * Modify an Element from a Deployment Descriptor. Contains XML commons - * utilities. - * - * @author Guillaume Sauthier - */ -public class DeploymentDescModifier { - - /** J2EE Default XML namespace */ - protected static final String J2EE_NS = "http://java.sun.com/xml/ns/j2ee"; - - /** JOnAS Default XML namespace */ - protected static final String JONAS_NS = "http://www.objectweb.org/jonas/ns"; - - /** logger */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** base element */ - private Element element; - - /** parent element */ - private Element parent; - - /** base document */ - private Document doc; - - /** - * Create a new DeploymentDescModifier to update the given Element. - * - * @param element XML element to be modified. - * @param doc base document for Element creation. - */ - public DeploymentDescModifier(Element element, Document doc) { - this(element, doc, null); - } - - /** - * Create a new DeploymentDescModifier to update the given Element. - * - * @param element XML element to be modified. - * @param doc base document for Element creation. - * @param parent parent Element, used if element is null - */ - public DeploymentDescModifier(Element element, Document doc, Element parent) { - this.element = element; - this.doc = doc; - this.parent = parent; - } - - /** - * Create a new Element with given name in J2EE XML namespace. - * - * @param name Element name - * - * @return the created Element - */ - protected Element newJ2EEElement(String name) { - return doc.createElementNS(J2EE_NS, name); - } - - /** - * Create a new Element with given name in J2EE XML namespace with an inner - * Text Node. - * - * @param name Element name - * @param text Element content - * - * @return the created Element - */ - protected Element newJ2EEElement(String name, String text) { - Element e = doc.createElementNS(J2EE_NS, name); - Text txt = doc.createTextNode(text); - e.appendChild(txt); - - return e; - } - - /** - * Create a new Element with given name in JOnAS XML namespace. - * - * @param name Element name - * - * @return the created Element - */ - protected Element newJOnASElement(String name) { - return doc.createElementNS(JONAS_NS, name); - } - - /** - * Create a new Element with given name in JOnAS XML namespace, with an - * inner Text Node. - * - * @param name Element name - * @param text node's text - * - * @return the created Element - */ - protected Element newJOnASElement(String name, String text) { - Element e = doc.createElementNS(JONAS_NS, name); - Text txt = doc.createTextNode(text); - e.appendChild(txt); - - return e; - } - - - /** - * Create a new Element with given name - * - * @param name Element name - * @return the created Element - */ - protected Element newElement (String name) { - return doc.createElement(name); - } - - /** - * Create a new Element with an inner Text Node. - * - * @param name Element name - * @param text node's text - * - * @return the created Element - */ - protected Element newElement (String name, String text) { - Element e = doc.createElement(name); - Text txt = doc.createTextNode(text); - e.appendChild(txt); - - return e; - } - - /** - * @return Returns the logger. - */ - public static Logger getLogger() { - return logger; - } - - /** - * @return Returns the parent (can be null). - */ - public Element getParent() { - return parent; - } - - /** - * @return Returns the element. - */ - public Element getElement() { - return element; - } - - /** - * @return Returns the document. - */ - public Document getDocument() { - return doc; - } - - /** - * Set the new document to use - * @param doc the new document to use - */ - public void setDocument(Document doc) { - this.doc = doc; - this.parent = doc.getDocumentElement(); - } - - /** - * Set the new base Element to use - * @param e the new base Element to use - */ - public void setElement(Element e) { - element = e; - getParent().appendChild(e); - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebJettyDDModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebJettyDDModifier.java deleted file mode 100644 index 6dd1dfeb1b..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebJettyDDModifier.java +++ /dev/null @@ -1,123 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer: Matt Wringe - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Modify the web-jetty.xml file. Wrapper around a web.xml DOM - * - * @author Matt Wringe - */ -public class WebJettyDDModifier extends DeploymentDescModifier { - - /** the name of the class that sets the realm for Jetty */ - private static final String REALM_CLASS = "org.ow2.jonas.web.jetty6.security.Realm"; - - /** the name of the class that sets the context for Jetty */ - private static final String CONTEXT_CLASS = "org.mortbay.jetty.webapp.WebAppContext"; - - /** Default Realm name is no name is specified */ - private static final String DEFAULT_REALM_NAME = "Endpoint Authentication Area"; - - /** - * Create a new WebJettyDDModifier - * - * @param doc the context.xml Document - */ - public WebJettyDDModifier(Document doc) { - super(doc.getDocumentElement(), doc); - } - - /** - * Sets up the realm for Jetty to use - * - * @param realm the realm to use - */ - public void configRealm (String realm) { - configRealm (DEFAULT_REALM_NAME, realm); - } - - /** - * Sets up the realm for Jetty to use - * - * @param realmName the realm name for the realm - * @param realm the realm to use - */ - public void configRealm(String realmName, String realm) { - Element configureElement = getElement(); - configureElement.appendChild(setRealmName(realmName)); - configureElement.appendChild(setRealm(realm, realmName)); - } - - - /** - * Returns an element that defines the realm name to use - * - * @param realmName the name of the realm - * @return an element that defines the realm name - */ - private Element setRealmName (String realmName) { - Element callElement = newElement("Call"); - callElement.setAttribute("name", "setRealmName"); - - Element argElement = newElement("Arg", realmName); - callElement.appendChild(argElement); - - return callElement; - } - - /** - * Returns an element that defines which realm to use - * - * @param realm the realm - * @param realmName the name of the realm - * @return an element that defines which realm to use - */ - private Element setRealm (String realm, String realmName) { - Element callElement = newElement ("Call"); - callElement.setAttribute("name", "setRealm"); - - Element argElement = newElement ("Arg"); - - Element newElement = newElement ("New"); - newElement.setAttribute("class", REALM_CLASS); - - Element argRealmName = newElement ("Arg", realmName); - Element argRealm = newElement ("Arg", realm); - - newElement.appendChild(argRealmName); - newElement.appendChild(argRealm); - - argElement.appendChild(newElement); - callElement.appendChild(argElement); - - return callElement; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebServicesDDModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebServicesDDModifier.java deleted file mode 100644 index 58f3c43d7d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WebServicesDDModifier.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * @author Guillaume Sauthier - */ -public class WebServicesDDModifier extends DeploymentDescModifier { - - /** - * @param doc webservices.xml Document - */ - public WebServicesDDModifier(Document doc) { - super(doc.getDocumentElement(), doc); - } - - /** - * Update the servlet-link element in webservices.xml to the Generated servlet element. - * - * @param wsdName WebService Description name - * @param link old servlet-link value - * @param replace new servlet-link value - */ - public void changeServletLink(String wsdName, String link, String replace) { - - Element wsd = findWebserviceDesc(wsdName); - - // if element found - if (wsd != null) { - NodeList nl = wsd.getElementsByTagNameNS(J2EE_NS, "port-component"); - - for (int i = 0; i < nl.getLength(); i++) { - Element e = (Element) nl.item(i); - NodeList sib = e.getElementsByTagNameNS(J2EE_NS, "service-impl-bean"); - - Node servletLink = ((Element) sib.item(0)).getElementsByTagNameNS(J2EE_NS, "servlet-link").item(0); - - // test - // port-component/sib-link/servlet-link/#text-node.value - if (servletLink.getFirstChild().getNodeValue().equals(link)) { - servletLink.getFirstChild().setNodeValue(replace); - } - } - } - } - - /** - * Search element for webservices-description named with the given name. - * - * @param name the searched webservices-description name - * - * @return the found element or null if element is not found (should'nt - * occurs). - */ - private Element findWebserviceDesc(String name) { - NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, "webservice-description"); - Element wsd = null; - - for (int i = 0; (i < nl.getLength()) && (wsd == null); i++) { - Element e = (Element) nl.item(i); - - NodeList names = e.getElementsByTagNameNS(J2EE_NS, "webservice-description-name"); - - // test - // webservices-description/webservices-description--name/#text-node.value - if (names.item(0).getFirstChild().getNodeValue().equals(name)) { - wsd = e; - } - } - - return wsd; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsClientDDModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsClientDDModifier.java deleted file mode 100644 index 26f8f6fed8..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsClientDDModifier.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - - - -/** - * Modify a Web Services Client Deployment Desc Element. Wrapper around a - * jonas-service-ref element - * @author Guillaume Sauthier - */ -public class WsClientDDModifier extends DeploymentDescModifier { - - /** - * jonas-init-param Element name - */ - private static final String JONAS_INIT_PARAM = "jonas-init-param"; - - /** - * param-name Element name - */ - private static final String PARAM_NAME = "param-name"; - - /** - * param-value Element name - */ - private static final String PARAM_VALUE = "param-value"; - - /** - * Creates a new WsClientDDModifier where element is a - * jonas-service-ref XML Node. - * @param name service-ref-name value - * @param doc document base for Element creation - * @param base base element for searching jonas-service-ref - */ - public WsClientDDModifier(String name, Document doc, Element base) { - super(XMLUtils.getJonasServiceRef(base, name), doc, base); - } - - /** - * Add a jonas-init-param in jonas-service-ref. - * @param name param name - * @param value param value - */ - public void addJonasInitParam(String name, String value) { - Element jip = newJOnASElement(JONAS_INIT_PARAM); - Element pn = newJOnASElement(PARAM_NAME, name); - Element pv = newJOnASElement(PARAM_VALUE, value); - - jip.appendChild(pn); - jip.appendChild(pv); - - getElement().appendChild(jip); - } - - /** - * @return Returns true if this web service client has a JOnAS specific - * descriptor (jonas-service-ref). - */ - public boolean hasJonasServiceRef() { - return (getElement() != null); - } - - /** - * @param serviceRefName the value of service-ref-name Element - * @return Returns a default jonas-service-ref Element (initialized with the given service-ref-name). - */ - public Element createJonasServiceRef(String serviceRefName) { - Element jsr = newJOnASElement("jonas-service-ref"); - Element srn = newJOnASElement("service-ref-name", serviceRefName); - - jsr.appendChild(srn); - return jsr; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsEndpointDDModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsEndpointDDModifier.java deleted file mode 100644 index 1a83db2695..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/ddmodifier/WsEndpointDDModifier.java +++ /dev/null @@ -1,572 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.ddmodifier; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; - -/** - * Modify a Deployment Desc for Endpoint. Wrapper around a web.xml DOM. - * - * @author Guillaume Sauthier - */ -public class WsEndpointDDModifier extends DeploymentDescModifier { - - /** - * servlet Element name - */ - private static final String SERVLET = "servlet"; - - /** - * servlet-name Element name - */ - private static final String SERVLET_NAME = "servlet-name"; - - /** - * servlet-class Element name - */ - private static final String SERVLET_CLASS = "servlet-class"; - - /** - * servlet-mapping Element name - */ - private static final String SERVLET_MAPPING = "servlet-mapping"; - - /** - * url-pattern Element name - */ - private static final String URL_MAPPING = "url-pattern"; - - /** - * init-param Element name - */ - private static final String INIT_PARAM = "init-param"; - - /** - * param-name Element name - */ - private static final String PARAM_NAME = "param-name"; - - /** - * param-value Element name - */ - private static final String PARAM_VALUE = "param-value"; - - /** - * security-role-ref Element name - */ - private static final String SECURITY_ROLE_REF = "security-role-ref"; - - /** - * url-pattern Element name - */ - private static final String URL_PATTERN = "url-pattern"; - - /** - * security-constraint Element name - */ - private static final String SECURITY_CONSTRAINT = "security-constraint"; - - /** - * login-config Element name - */ - private static final String LOGIN_CONFIG = "login-config"; - - /** - * security-role Element name - */ - private static final String SECURITY_ROLE = "security-role"; - - /** - * role-name Element name. - */ - private static final String ROLE_NAME = "role-name"; - - /** - * Used to retrieve any Element childrens. - */ - private static final String ANY_TAG_NAME = "*"; - - /** - * Creates a new WsEndpointDDModifier object. - * @param web web.xml document - */ - public WsEndpointDDModifier(Document web) { - super(web.getDocumentElement(), web); - } - - /** - * Add a new servlet element in the web.xml. - * @param name servlet name. - * @param classname servlet fully qualified classname. - */ - public void addServlet(String name, String classname) { - Element servlet = newJ2EEElement(SERVLET); - Element servletName = newJ2EEElement(SERVLET_NAME, name); - Element servletClass = newJ2EEElement(SERVLET_CLASS, classname); - - servlet.appendChild(servletName); - servlet.appendChild(servletClass); - - // add servlet in the webapp Element - getElement().appendChild(servlet); - - } - - /** - * Add a new security-constraint element into the web.xml - * - * @param securityConstraint A node containing the security-constraint setting - */ - public void addEndpointSecurityConstraint(Node securityConstraint) { - Element sConstraintElement = newJ2EEElement(SECURITY_CONSTRAINT); - - // securityConstraint comes from another document, therefore have to - // import first - Node newSecurityConstraint = getDocument().importNode(securityConstraint, true); - - while (newSecurityConstraint.hasChildNodes()) { - sConstraintElement.appendChild(newSecurityConstraint.getFirstChild()); - } - - // add security-constraint to webapp - getElement().appendChild(sConstraintElement); - } - - /** - * Add a new login-config element into the web.xml - * - * @param loginConfig An element constaining the login-config setting - */ - public void addEndpointLoginConfig(Element loginConfig) { - - // A MUST only have 1 element - // If the same login-config is already there, that's fine. - // But if there is *another* login-config, we must throw an Exception - - // Try to get a reference on a login-config element - NodeList configs = getElement().getElementsByTagNameNS(J2EE_NS, LOGIN_CONFIG); - if (configs.getLength() == 0) { - // no login-config, we can insert our own ... - Element myLoginConfig = newJ2EEElement(LOGIN_CONFIG); - - // loginConfig comes from another document, therefore have to import - // first - Node importedLoginConfig = getDocument().importNode(loginConfig, true); - - while (importedLoginConfig.hasChildNodes()) { - myLoginConfig.appendChild(importedLoginConfig.getFirstChild()); - } - - // add login-config to webapp - getElement().appendChild(myLoginConfig); - } else { - // Ooops, found another login-config - // Check if the login-config is the same than our own... - - // There can be only 1 login-config per web-app - Element config = (Element) configs.item(0); - - // If nodes are not the same - if (!areChildNodesIdentical(config, loginConfig)) { - String msg = "Cannot insert the new login-config element (login-config cannot " - + "be defined twice, even with different values !) : " + loginConfig; - throw new IllegalStateException(msg); - } - // OK, That's fine, we can let it 'as is' - - } - } - - /** - * @param first first Node to compare childs. - * @param second second nodes to compare childs. - * @return Returns true if nodes childs are identical. - */ - private static boolean areChildNodesIdentical(final Element first, final Element second) { - - // Check childrens - boolean identical = true; - // by using getElementsByTagName, we avoid to check meaningless Text nodes - NodeList firstChilds = first.getElementsByTagName(ANY_TAG_NAME); - NodeList secondChilds = second.getElementsByTagName(ANY_TAG_NAME); - - if (firstChilds.getLength() != secondChilds.getLength()) { - // one of the 2 nodes have more childrens, so they are not - // identical. - - return false; - } else if (firstChilds.getLength() == 0) { - // no child *Element* - // get the elements inner value - String one = first.getFirstChild().getNodeValue(); - String two = second.getFirstChild().getNodeValue(); - - // End recursion - return one.equals(two); - - } else { - // There is some children Elements - // same number of childrens - - boolean childrensIdentical = true; - for (int index = 0; index < firstChilds.getLength() - && childrensIdentical; index++) { - // Compare childrens 1-to-1 - Element firstChild = (Element) firstChilds.item(index); - Element secondChild = (Element) secondChilds.item(index); - childrensIdentical = areElementIdentical(firstChild, secondChild); - } - identical &= childrensIdentical; - } - return identical; - } - - /** - * @param first first element to compare. - * @param second second element to compare. - * @return Returns true if both elements are identical. - */ - private static boolean areElementIdentical(final Element first, final Element second) { - - // Check namespace URI - if (!first.getNamespaceURI().equals(second.getNamespaceURI())) { - return false; - } - - // Check localname - if (!first.getLocalName().equals(second.getLocalName())) { - return false; - } - - return areChildNodesIdentical(first, second); - } - - /** - * Add a new security-role element into the web.xml - * @param securityRole A node containing the login-config setting - */ - public void addSecurityRole(Node securityRole) { - - // Maybe the security-role element was already added. - // Look in the Document to find an pre-existing security-role element - // with the same name. - - Element foundSecurityRole = findSecurityRole((Element) securityRole); - if (foundSecurityRole == null) { - // no security-rople element, or none is matching - // we can add our own ... - - Element mySecurityRole = newJ2EEElement(SECURITY_ROLE); - - // securityRole comes from another document, therefor have to import - // first - Node importedSecurityRole = getDocument().importNode(securityRole, true); - - while (importedSecurityRole.hasChildNodes()) { - mySecurityRole.appendChild(importedSecurityRole.getFirstChild()); - } - - // add security-role to webapp - getElement().appendChild(mySecurityRole); - } - // else, the right security-role is already there, nothing to do ... - } - - /** - * @param securityRole security-role element. - * @return Returns a matching security-role element already - * in the Document. - */ - private Element findSecurityRole(Element securityRole) { - - NodeList potentialSecurityRoles = getElement().getElementsByTagNameNS(J2EE_NS, SECURITY_ROLE); - if (potentialSecurityRoles.getLength() == 0) { - // no security-role elements defined - // exit safely - return null; - } - - // Iterates over the potential security-role to find a matching - // role-name - Element found = null; - String requiredRoleName = getRoleName(securityRole); - // while nothing was found AND iteration not over - for (int index = 0; (index < potentialSecurityRoles.getLength()) - && (found == null); index++) { - Element potentialSR = (Element) potentialSecurityRoles.item(index); - // get the potential security-role name - String roleName = getRoleName(potentialSR); - - // compare, if equals, we're done - if (requiredRoleName.equals(roleName)) { - found = potentialSR; - } - } - - // found is still null if no matching security-role was found - return found; - } - - /** - * @param securityRole security-role element in which the role name - * will be extracted. - * @return Returns the extracted role-name value. - */ - private static String getRoleName(Element securityRole) { - Node roleName = securityRole.getElementsByTagNameNS(J2EE_NS, ROLE_NAME).item(0); - // j2ee:security-role/j2ee:role-name/#text - return roleName.getFirstChild().getNodeValue().trim(); - } - - /** - * Remove a servlet element from the web.xml. - * @param name servlet name. - */ - public void removeServlet(String name) { - Element servlet = findServlet(name); - - if (servlet != null) { - getElement().removeChild(servlet); - } - } - - /** - * Remove a servlet element from the web.xml. - * @param name servlet name. - * @return security-role elements for this servlet if such elements exist - */ - public NodeList removeServletWithSecurity(String name) { - Element servlet = findServlet(name); - NodeList elements = null; - - if (servlet != null) { - - elements = servlet.getElementsByTagNameNS(J2EE_NS, SECURITY_ROLE_REF); - // if the list is empty, return null - if (elements.getLength() == 0) { - elements = null; - } - getElement().removeChild(servlet); - } - return elements; - } - - /** - * Add a new servlet-mapping element in the web.xml. - * @param name servlet name. - * @param mapping url-mapping value - */ - public void addServletMapping(String name, String mapping) { - Element servletMapping = newJ2EEElement(SERVLET_MAPPING); - Element servletName = newJ2EEElement(SERVLET_NAME, name); - Element urlMapping = newJ2EEElement(URL_MAPPING, mapping); - - servletMapping.appendChild(servletName); - servletMapping.appendChild(urlMapping); - - // add servletMapping in the webapp Element - getElement().appendChild(servletMapping); - } - - /** - * Add a new init-param element in the web.xml. - * @param servletName the servlet name where init-param will be added. - * @param pName parameter name - * @param pValue parameter value - */ - public void addServletParam(String servletName, String pName, String pValue) { - Element ip = newJ2EEElement(INIT_PARAM); - Element pn = newJ2EEElement(PARAM_NAME, pName); - Element pv = newJ2EEElement(PARAM_VALUE, pValue); - - ip.appendChild(pn); - ip.appendChild(pv); - - Element servlet = findServlet(servletName); - servlet.appendChild(ip); - - } - - /** - * Add a new security-role-ref element in the web.xml. - * @param servletName the servlet name where security-role-ref will be - * added. - * @param securityRoleRefs security-role elements for a servlet - */ - public void addServletSecurityRoleRefs(String servletName, NodeList securityRoleRefs) { - // find the servlet - Element servlet = findServlet(servletName); - // add all security-role-ref - for (int i = 0; i < securityRoleRefs.getLength(); i++) { - Node securityRoleRefItem = securityRoleRefs.item(i); - servlet.appendChild(securityRoleRefItem); - } - } - - /** - * search webapp element for servlet named with the given name. - * @param name the searched servlet name - * @return the found element or null if element is not found (should'nt - * occurs). - */ - private Element findServlet(String name) { - NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SERVLET); - Element servlet = null; - - for (int i = 0; (i < nl.getLength()) && (servlet == null); i++) { - Element e = (Element) nl.item(i); - - NodeList names = e.getElementsByTagNameNS(J2EE_NS, SERVLET_NAME); - - // test servlet/servlet-name/#text-node.value - if (names.item(0).getFirstChild().getNodeValue().equals(name)) { - servlet = e; - } - } - - return servlet; - } - - /** - * Remove servlet-mapping tag associated to a given servlet-name - * @param sName servlet-name - * @return url-pattern element's value in the servelet-mapping - */ - public String removeServletMapping(String sName) { - NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SERVLET_MAPPING); - Element mapping = null; - String urlPatternValue = null; - - for (int i = 0; (i < nl.getLength()) && (mapping == null); i++) { - Element e = (Element) nl.item(i); - - NodeList names = e.getElementsByTagNameNS(J2EE_NS, SERVLET_NAME); - - // test servlet-mapping/servlet-name/#text-node.value - if (names.item(0).getFirstChild().getNodeValue().equals(sName)) { - mapping = e; - } - } - - if (mapping != null) { - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "mapping element found : " + mapping); - } - // pick up the url-pattern before removing - NodeList urlPatterns = mapping.getElementsByTagNameNS(J2EE_NS, URL_PATTERN); - urlPatternValue = urlPatterns.item(0).getFirstChild().getNodeValue(); - - getElement().removeChild(mapping); - } - - return urlPatternValue; - } - - /** - * Update the security-constraint element having url-pattern equal with - * oldPattern by replacing this old pattern with the newUrlPattern - * @param oldUrlPatter url-pattern to be replaced - * @param newUrlPatterValue url-pattern to replace with - */ - public void updateSecurityConstraint(String oldUrlPatter, String newUrlPatterValue) { - - NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SECURITY_CONSTRAINT); - - // loop over security constraints - for (int i = 0; i < nl.getLength(); i++) { - Element e = (Element) nl.item(i); - - // look at nested url-pattern Element(s) - NodeList urlPatternCollection = e.getElementsByTagNameNS(J2EE_NS, URL_PATTERN); - for (int j = 0; j < urlPatternCollection.getLength(); j++) { - - Element urlPatternElement = (Element) urlPatternCollection.item(j); - Text urlPatternText = (Text) urlPatternElement.getFirstChild(); - - // if found urlPattern Element, replace its value - if (urlPatternText.getNodeValue().equals(oldUrlPatter)) { - urlPatternText.setNodeValue(newUrlPatterValue); - } - } - } - } - - /** - * DOCUMENT ME! - * @param name DOCUMENT ME! - * @param home DOCUMENT ME! - * @param remote DOCUMENT ME! - * @param link DOCUMENT ME! - */ - public void addEjbRef(String name, String home, String remote, String link) { - - Element ejbRef = newJ2EEElement("ejb-ref"); - Element ejbRefName = newJ2EEElement("ejb-ref-name", name); - Element ejbRefType = newJ2EEElement("ejb-ref-type", "Session"); - Element ejbHome = newJ2EEElement("home", home); - Element ejbRemote = newJ2EEElement("remote", remote); - Element ejbLink = newJ2EEElement("ejb-link", link); - - ejbRef.appendChild(ejbRefName); - ejbRef.appendChild(ejbRefType); - ejbRef.appendChild(ejbHome); - ejbRef.appendChild(ejbRemote); - ejbRef.appendChild(ejbLink); - - getElement().appendChild(ejbRef); - - } - - /** - * DOCUMENT ME! - * @param name DOCUMENT ME! - * @param home DOCUMENT ME! - * @param remote DOCUMENT ME! - * @param link DOCUMENT ME! - */ - public void addEjbLocalRef(String name, String home, String remote, String link) { - - Element ejbRef = newJ2EEElement("ejb-local-ref"); - Element ejbRefName = newJ2EEElement("ejb-ref-name", name); - Element ejbRefType = newJ2EEElement("ejb-ref-type", "Session"); - Element ejbHome = newJ2EEElement("local-home", home); - Element ejbRemote = newJ2EEElement("local", remote); - Element ejbLink = newJ2EEElement("ejb-link", link); - - ejbRef.appendChild(ejbRefName); - ejbRef.appendChild(ejbRefType); - ejbRef.appendChild(ejbHome); - ejbRef.appendChild(ejbRemote); - ejbRef.appendChild(ejbLink); - - getElement().appendChild(ejbRef); - - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GeneralWSFinder.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GeneralWSFinder.java deleted file mode 100644 index 3a85ab2c50..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GeneralWSFinder.java +++ /dev/null @@ -1,128 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.finder; - -import java.util.Iterator; - -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; - - -/** - * GeneralWSFinder is a wrapper for ear and other J2EE module types. - * - * @author Guillaume Sauthier - */ -public class GeneralWSFinder implements J2EEWebServicesFinder { - - /** - * Explored archive. - */ - private J2EEArchive archive = null; - - /** - * Creates a WSFinder suitable for all types of modules. - * @param archive Explored archive. - */ - public GeneralWSFinder(J2EEArchive archive) { - super(); - this.archive = archive; - } - - /** - * @see org.ow2.jonas.generators.wsgen.finder.J2EEWebServicesFinder#find() - */ - public boolean find() { - - if (archive instanceof Application) { - // explore sub modules - Application app = (Application) archive; - - // If any ejbjar has a webservice, return directly - for (Iterator i = app.getEjbJars(); i.hasNext();) { - EjbJar ejb = (EjbJar) i.next(); - if (findWebServicesInEjbJar(ejb)) { - return true; - } - } - - // If any webapp has a webservice, return directly - for (Iterator i = app.getWebApps(); i.hasNext();) { - WebApp web = (WebApp) i.next(); - if (findWebServicesInWebApp(web)) { - return true; - } - } - - //If any client has a webservice, return directly - for (Iterator i = app.getClients(); i.hasNext();) { - Client client = (Client) i.next(); - if (findWebServicesInClient(client)) { - return true; - } - } - - } else if (archive instanceof EjbJar) { - return findWebServicesInEjbJar((EjbJar) archive); - } else if (archive instanceof WebApp) { - return findWebServicesInWebApp((WebApp) archive); - } else if (archive instanceof Client) { - return findWebServicesInClient((Client) archive); - } - return false; - } - - /** - * @param archive The archive to explore. - * @return Returns true if the Client has WebServices. - */ - private static boolean findWebServicesInClient(Client archive) { - J2EEWebServicesFinder finder = new GenericWSFinder(archive, "META-INF/application-client.xml"); - return finder.find(); - } - - /** - * @param archive The archive to explore. - * @return Returns true if the WebApp has WebServices. - */ - private static boolean findWebServicesInWebApp(WebApp archive) { - J2EEWebServicesFinder finder = new GenericWSFinder(archive, "WEB-INF/web.xml"); - return finder.find(); - } - - /** - * @param archive The archive to explore. - * @return Returns true if the EjbJar has WebServices. - */ - private static boolean findWebServicesInEjbJar(EjbJar archive) { - J2EEWebServicesFinder finder = new GenericWSFinder(archive, "META-INF/ejb-jar.xml"); - return finder.find(); - } - - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GenericWSFinder.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GenericWSFinder.java deleted file mode 100644 index c7e709d09a..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/GenericWSFinder.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.finder; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.lib.util.Log; -import org.xml.sax.SAXException; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import java.io.InputStream; - -/** - * Multi-module (EjbJar, WebApp, Client) WebServices Finder. - * - * @author Guillaume Sauthier - */ -public class GenericWSFinder implements J2EEWebServicesFinder { - - /** - * logger. - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** - * The archive to be explored. - */ - private J2EEArchive archive = null; - - /** - * Standard XML descriptor name. - */ - private String descriptorName = null; - - /** - * Create a multi-module type WSFinder. - * @param archive The archive to be explored. - * @param descriptorName Standard XML descriptor name. - */ - public GenericWSFinder(J2EEArchive archive, String descriptorName) { - super(); - this.archive = archive; - this.descriptorName = descriptorName; - } - - /** - * @see org.ow2.jonas.generators.wsgen.finder.J2EEWebServicesFinder#find() - */ - public boolean find() { - - // Look for webservices.xml - WebServicesXmlFinder wsFinder = new WebServicesXmlFinder(archive); - try { - wsFinder.init(getSAXParser()); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, "Cannot return a SAXParser", e); - // by default, the WebServicesXmlFinder will return false... - - } - - // Look for service-ref - ServiceRefFinder srFinder = new ServiceRefFinder(); - try { - InputStream is = archive.getInputStream(descriptorName); - SAXParser parser = getSAXParser(); - parser.parse(is, srFinder); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, "Cannot return a SAXParser", e); - // by default, the ServiceRefFinder will return false... - } - - // returns true if there is a webservices.xml (JAX-RPC only) - // and/or some service-ref (J2EE namespace only) - return wsFinder.find() || srFinder.find(); - } - /** - * @return Returns a SAXParser - * @throws ParserConfigurationException when Parser cannot be created. - * @throws SAXException when Parser cannot be created. - */ - protected SAXParser getSAXParser() throws ParserConfigurationException, SAXException { - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); - return factory.newSAXParser(); - } - -} - diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/J2EEWebServicesFinder.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/J2EEWebServicesFinder.java deleted file mode 100644 index d08e427010..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/J2EEWebServicesFinder.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.finder; - -/** - * The J2EEWebServiceFinder interface is used to react if an - * archive may contains some J2EE webservices or J2EE webservices clients. - * - * @author Guillaume Sauthier - */ -public interface J2EEWebServicesFinder { - - /** - * @return Returns true if webservices have been found. - */ - boolean find(); -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/ServiceRefFinder.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/ServiceRefFinder.java deleted file mode 100644 index 2176ef125c..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/ServiceRefFinder.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.finder; - -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * Specialized Finder for XML files. - * If one contains some service-ref elements, it will be marked has WS enabled. - * - * @author Guillaume Sauthier - */ -public class ServiceRefFinder extends DefaultHandler implements J2EEWebServicesFinder { - - /** - * J2EE Namespace URI. - */ - private static final String J2EE_NS = "http://java.sun.com/xml/ns/j2ee"; - - /** - * true if a service-ref element was found. - */ - private boolean found = false; - - /** - * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) - */ - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - super.startElement(uri, localName, qName, attributes); - if ("service-ref".equals(localName) && J2EE_NS.equals(uri)) { - // found a j2ee:service-ref element - // react in some way - found = true; - } - } - - /** - * @see org.ow2.jonas.generators.wsgen.finder.J2EEWebServicesFinder#find() - */ - public boolean find() { - return found; - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/WebServicesXmlFinder.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/WebServicesXmlFinder.java deleted file mode 100644 index 6e7fde6a9f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/finder/WebServicesXmlFinder.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.finder; - -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.lib.util.Log; -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -import javax.xml.parsers.SAXParser; -import java.util.Iterator; -import java.util.List; -import java.io.InputStream; -import java.io.IOException; - - -/** - * WebServicesXmlFinder finds out if there is any - * webservices.xml within the given {@link J2EEArchive}. - * - * @author Guillaume Sauthier - */ -public class WebServicesXmlFinder extends DefaultHandler implements J2EEWebServicesFinder { - - /** - * logger. - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** - * WebApp's webservices.xml. - */ - private static final String WEBINF_WEBSERVICES_XML = "WEB-INF/webservices.xml"; - - /** - * EjbJar's webservices.xml. - */ - private static final String METAINF_WEBSERVICES_XML = "META-INF/webservices.xml"; - - /** - * JAX-RPC value for the version attribute of the webservices.xml - */ - private static final String JAXRPC_VERSION = "1.1"; - - /** - * Archive to browse. - */ - private J2EEArchive archive = null; - - /** - * Tell if the archive is a jaxrpc archive or not. - */ - private boolean jaxrpc = false; - - /** - * Constructs a WebServicesXmlFinder that will - * explore the given {@link J2EEArchive}. - * @param archive archive to explore. - */ - public WebServicesXmlFinder(J2EEArchive archive) { - this.archive = archive; - } - - /** - * @see org.ow2.jonas.generators.wsgen.finder.J2EEWebServicesFinder#find() - */ - public boolean find() { - return jaxrpc; - } - - /** - * Explore the archive and find a webservices.xml. If found, parse the - * file and observe the 'version' attribute. - * @param parser SAX Parser - */ - public void init(SAXParser parser) { - List files = archive.getContainedFiles(); - for (Iterator i = files.iterator(); i.hasNext();) { - String filename = (String) i.next(); - - // If there is a webservices.xml file, check if it's a JAX-RPC file - if (WEBINF_WEBSERVICES_XML.equals(filename)) { - parseWebservicesDescriptor(parser, filename); - } - if (METAINF_WEBSERVICES_XML.equals(filename)) { - parseWebservicesDescriptor(parser, filename); - } - } - } - - /** - * Parse the descriptor. - * @param parser SAX Parser - * @param filename webservices.xml filename - */ - private void parseWebservicesDescriptor(SAXParser parser, String filename) { - InputStream is = null; - try { - is = archive.getArchive().getInputStream(filename); - parser.parse(is, this); - } catch (IOException e) { - logger.log(BasicLevel.DEBUG, "Cannot open " + filename + " in archive " + archive.getArchive().getName()); - } catch (SAXException e) { - logger.log(BasicLevel.DEBUG, "Cannot parse " + filename + " in archive " + archive.getArchive().getName()); - } finally { - if (is != null) { - try { - is.close(); - } catch (IOException e) { - logger.log(BasicLevel.DEBUG, "Ignored"); - } - } - } - } - - /** - * Receive notification of the start of an element. - *

    - *

    By default, do nothing. Application writers may override this - * method in a subclass to take specific actions at the start of - * each element (such as allocating a new tree node or writing - * output to a file).

    - * - * @param uri The Namespace URI, or the empty string if the - * element has no Namespace URI or if Namespace - * processing is not being performed. - * @param localName The local name (without prefix), or the - * empty string if Namespace processing is not being - * performed. - * @param qName The qualified name (with prefix), or the - * empty string if qualified names are not available. - * @param attributes The attributes attached to the element. If - * there are no attributes, it shall be an empty - * Attributes object. - * @throws org.xml.sax.SAXException Any SAX exception, possibly - * wrapping another exception. - * @see org.xml.sax.ContentHandler#startElement - */ - @Override - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - // the 'version' attribute is located on the 'webservices' element - if ("webservices".equals(localName)) { - - // Check value of the 'version' attribute - String value = attributes.getValue("version"); - if (JAXRPC_VERSION.equals(value)) { - jaxrpc = true; - } - } - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/Generator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/Generator.java deleted file mode 100644 index d4b59ebacb..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/Generator.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.ow2.jonas.eclipse.compiler.CompilationContext; -import org.ow2.jonas.eclipse.compiler.CompilerError; -import org.ow2.jonas.eclipse.compiler.JOnASCompiler; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.generator.AbsGenerator; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; -import org.ow2.jonas.lib.util.I18n; - -/** - * Generators provide a structure to be extended for specific generation - * mecanisms. Axis will provide an AxisWsClientGenerator that will be in charge - * of client side generation (WSDL2Java tool) and an AxisWsEndpointGenerator - * that will bother with server side artifact generation. - * - * @author Guillaume Sauthier - */ -public abstract class Generator extends AbsGenerator { - - /** - * i18n. - */ - private static I18n i18n = I18n.getInstance(Generator.class); - - /** - * Creates a new Generator with the given Config. - * - * @param config internal configuration object. - * - * @throws GenBaseException When sources and target temporary directory cannot - * be created - */ - public Generator(final Config config) throws GenBaseException { - super(config); - } - - /** - * Generate files. - * - * @throws WsGenException When generation fails. - */ - @Override - public abstract void generate() throws WsGenException; - - /** - * Compile generated java files into classes directory. - * - * @throws WsGenException When compilation fails - */ - @Override - public void compile() throws WsGenException { - // get all java files contained in the sources dir - List sources = new ArrayList(); - sources = getJavaSources(getSources(), getSources()); - - // Init the compilation context - CompilationContext context = new CompilationContext(); - - JClassLoader classLoader = new JClassLoader("WSGen", new URL[]{}, Thread.currentThread().getContextClassLoader()); - addClasspath(classLoader, getConfig().getClasspath()); - context.setContextualClassLoader(classLoader); - - context.setOutputDirectory(getClasses()); - context.setSourceDirectory(getSources()); - context.setSources(sources); - - // Compile - JOnASCompiler compiler = new JOnASCompiler(context); - - List errors = compiler.compile(); - if (errors.isEmpty()) { - getLogger().log(BasicLevel.INFO, "Sources classes successfully compiled with Eclipse compiler."); - } else { - for (CompilerError error : errors) { - getLogger().log(BasicLevel.ERROR, error.toString()); - } - throw new WsGenException("Failed when compiling classes"); - } - - classLoader = null; - context = null; - compiler = null; - - // Perform garbage collector - System.gc(); - } - - /** - * Add To the given ClassLoader the given classpath. - * @param cl ClassLoader to be updated - * @param classpath the classpath to add inside the ClassLoader - * @throws WsGenException When classpath contains invalid URL - */ - private static void addClasspath(final JClassLoader cl, - final String classpath) throws WsGenException { - String[] elems = classpath.split(File.pathSeparator); - for (int i = 0; i < elems.length; i++) { - try { - cl.addURL(new File(elems[i]).toURL()); - } catch (MalformedURLException e) { - throw new WsGenException("Cannot create URL from '" + elems[i] + "'", e); - } - } - } - - - /** - * @return the i18n. - */ - protected static I18n getI18n() { - return i18n; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/GeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/GeneratorFactory.java deleted file mode 100644 index 101cac96f1..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/GeneratorFactory.java +++ /dev/null @@ -1,214 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; - - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * a GeneratorFactory has to be extended by specific generation - * mecanism. It will look in jonas.properties file for a property - * named :jonas.service.ws.wsgen.generator.factory that is a - * classname extending GeneratorFactory. By default Axis - * GeneratorFactory is used. - * - * @author Guillaume Sauthier - */ -public abstract class GeneratorFactory implements org.ow2.jonas.generators.genbase.generator.GeneratorFactory { - - /** - * Generator Factory property name in jonas.properties - */ - public static final String GENERATOR_FACTORY = "jonas.service.ws.wsgen.generator.factory"; - - /** - * Default GeneratorFactory impl to use - */ - public static final String GENERATOR_FACTORY_DEFAULT = "org.ow2.jonas.generators.wsgen.generator.ews.EWSGeneratorFactory"; - - /** GeneratorFactory unique instance */ - private static GeneratorFactory instance = null; - - /** i18n */ - private static I18n i18n = I18n.getInstance(GeneratorFactory.class); - - /** logger */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** Configuration to set on instanciated Generator */ - private Config configuration; - - /** - * Returns the unique GeneratorFactory instance. - * - * @return the unique GeneratorFactory instance. - * - * @throws WsGenException When instanciation fails - */ - public static GeneratorFactory getInstance() throws WsGenException { - if (instance == null) { - instance = newInstance(); - } - - return instance; - } - - /** - * Create a new generatorFactory instance by looking up in - * jonas.properties and load class specified with - * jonas.service.ws.wsgen.generator-factory property. If not - * set, Axis GeneratorFactory is the default Factory returned. - * - * @return a new generatorFactory instance. - * - * @throws WsGenException when Exception occurs when dynamiccaly - * instantiating GeneratorFactory subclass - */ - private static GeneratorFactory newInstance() throws WsGenException { - - String classname = null; - - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - InputStream is = cl.getResourceAsStream("jonas.properties"); - - if (is == null) { - // Should be on the client side - // use default value - classname = GENERATOR_FACTORY_DEFAULT; - } else { - Properties jprop = new Properties(); - try { - jprop.load(is); - classname = jprop.getProperty(GENERATOR_FACTORY, GENERATOR_FACTORY_DEFAULT); - } catch (IOException e) { - // cannot read properties, use default value - logger.log(BasicLevel.WARN, "Cannot get '" + GENERATOR_FACTORY + "' value, default used : '" - + GENERATOR_FACTORY_DEFAULT + "'"); - classname = GENERATOR_FACTORY_DEFAULT; - } finally { - try { - is.close(); - } catch (IOException e) { - // use default if it was not set - if (classname == null) { - classname = GENERATOR_FACTORY_DEFAULT; - } - } - } - } - - // instanciate - GeneratorFactory gf = null; - - try { - Class gfc = cl.loadClass(classname) - .asSubclass(GeneratorFactory.class); - gf = gfc.newInstance(); - } catch (Exception e) { - // Try with another ClassLoader - cl = GeneratorFactory.class.getClassLoader(); - try { - Class gfc = cl.loadClass(classname) - .asSubclass(GeneratorFactory.class); - gf = gfc.newInstance(); - } catch (Exception e2) { - String err = i18n.getMessage("GeneratorFactory.newInstance.instance", classname); - throw new WsGenException(err, e2); - } - } - - return gf; - - } - - /** - * Return a new WsClientGenerator for the specific generation mecanism. - * - * @param serviceRef the service-ref containing information for client side - * generation process. - * @param ddm the XML modifier. - * @param archive the Archive to be modified - * - * @return a new WsClientGenerator. - * - * @throws GenBaseException When Factory cannot instanciate WsClientGenerator - */ - public abstract WsClientGenerator newGenerator(ServiceRefDesc serviceRef, WsClientDDModifier ddm, Archive archive) - throws GenBaseException; - - /** - * Return a new WsEndpointGenerator for the specific generation mecanism. - * - * @param serviceDesc the webservice-description containing information for - * server side generation process. - * @param ddm the XML modifier. - * @param wsddm the Webservices.xml DD modifier - * @param arch The archive to modify - * - * @return a new WsEndpointGenerator. - * - * @throws GenBaseException When Factory cannot instanciate WsEndpointGenerator - */ - public abstract WsEndpointGenerator newGenerator(ServiceDesc serviceDesc, WsEndpointDDModifier ddm, - WebServicesDDModifier wsddm, Archive arch) throws GenBaseException; - - /** - * Set the Configuration to use with newly created Generator. - * - * @param config the Configuration to use with newly created Generator. - */ - public void setConfiguration(Config config) { - this.configuration = config; - } - - /** - * Get the Configuration to use with newly created Generator. - * - * @return the Configuration to use with newly created Generator - */ - public Config getConfiguration() { - return configuration; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/SecurityGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/SecurityGenerator.java deleted file mode 100644 index 46099b4651..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/SecurityGenerator.java +++ /dev/null @@ -1,304 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Inital Developer : Matt Wringe - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator; - -import org.ow2.jonas.generators.wsgen.ddmodifier.ContextDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebJettyDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - - -/** - * Generates the necessary security files to the generated - * webapp for a stateless session bean endpoint. - * - * @author Matt Wringe - */ -public class SecurityGenerator { - - /** - * Document that contains the security configurations to be used - */ - private Document securityDesc = null; - - /** - * WsEndpointDDModifier used to add security settings to the web.xml - */ - private WsEndpointDDModifier wsddm = null; - - /** - * ContextDDModifier used to add Realm settings to the context.xml - */ - private ContextDDModifier cddm = null; - - /** - * WebJettyDDModifuer used to add Realm settings to web-jetty.xml - */ - private WebJettyDDModifier wjddm = null; - - /** - * The name of the node in securityDesc that contains the login-config settings - */ - private static final String LOGIN_CONFIG = "endpoint-login-config"; - - /** - * The name of the node in securityDesc that contains the security-constraint settings - */ - private static final String SECURITY_CONSTRAINT = "endpoint-security-constraint"; - - /** - * The name of the node that contains the realm - */ - private static final String REALM = "endpoint-realm"; - - /** - * The name of the node that contains the name of the realm - */ - private static final String REALM_NAME = "endpoint-realm-name"; - - /** - * The name of the node that contains the security role - */ - private static final String SECURITY_ROLE = "endpoint-security-role"; - - /** - * The realm the webapp should use - */ - private String realm = null; - - /** - * The name of the realm that the webapp should use - */ - private String realmName = null; - - - /** - * Creates a new SecurityGenerator object - * @param securityDesc Dom Document that contains the security settings - */ - public SecurityGenerator(final Document securityDesc) { - this.securityDesc = securityDesc; - } - - /** - * Generates the security settings specified in securityDesc document - * - * @param ddm Used to add security to the web.xml - * @param cddm Used to add a security realm to the context.xml - * @param wjddm Used to add a security realn to the web-jetty.xml - */ - public void generate(final WsEndpointDDModifier ddm, final ContextDDModifier cddm, final WebJettyDDModifier wjddm) { - this.wsddm = ddm; - this.cddm = cddm; - this.wjddm = wjddm; - - if (securityDesc != null) { - - realm = getRealm(); - realmName = getRealmName(); - - if (ddm != null) { - addEndpointSecurity(); - } - if (cddm != null) { - addContextRealm(); - } - // Do not add the realm in web-jetty.xml (already in jetty6.xml) - // TODO has to be refined - /* - if (wjddm != null) { - addWebJettyRealm(); - } - */ - } - } - - - /** - * Add realm settings to the context.xml - * - */ - private void addContextRealm() { - if (realm != null) { - cddm.addContextRealm(realm); - } - } - - /** - * Add realm settings to web-jetty.xml - * - */ - private void addWebJettyRealm() { - if (realm != null) { - if (realmName != null) { - wjddm.configRealm(realmName, realm); - } else { - wjddm.configRealm(realm); - } - } - } - - /** - * Setup the web security in the web.xml - * - */ - private void addEndpointSecurity() { - - //Add the security constraints - NodeList securityConstraints = getEndpointSecurityConstraints(); - if (securityConstraints != null) { - for (int i = 0; i < securityConstraints.getLength(); i++) { - //remove the j2ee prefix of this node - removePrefix(securityConstraints.item(i)); - wsddm.addEndpointSecurityConstraint(securityConstraints.item(i)); - } - } - - //Add the login configs - NodeList loginConfigs = getEndpointLoginConfig(); - if (loginConfigs != null) { - for (int i = 0; i < loginConfigs.getLength(); i++) { - //remove the j2ee prefix from this node - removePrefix(loginConfigs.item(i)); - wsddm.addEndpointLoginConfig((Element) loginConfigs.item(i)); - } - } - - //Add the security roles - NodeList securityRoles = getEndpointSecurityRole(); - if (securityRoles != null) { - for (int i = 0; i < securityRoles.getLength(); i++) { - //remove the j2ee prefix from thie node - removePrefix(securityRoles.item(i)); - wsddm.addSecurityRole(securityRoles.item(i)); - } - } - } - - /** - * Returns the DocumentElement for the securityDesc document - * - * @return DocumentElement for the securityDesc document - */ - private Element getElement() { - return securityDesc.getDocumentElement(); - } - - /** - * Returns the login-config nodes from the securityDesc document - * @return the login-config nodes from the securityDesc document - */ - public NodeList getEndpointLoginConfig() { - NodeList nodeList = getElement().getElementsByTagName(LOGIN_CONFIG); - return nodeList; - } - - /** - * Returns the security-constraint nodes from the securityDesc document - * - * @return the security-constraint nodes from the securityDesc document - */ - public NodeList getEndpointSecurityConstraints() { - NodeList nodeList = getElement().getElementsByTagName(SECURITY_CONSTRAINT); - return nodeList; - } - - /** - * Returns the security-role nodes from the securityDesc document - * - * @return the security-role nodes from the securityDesc document - */ - public NodeList getEndpointSecurityRole() { - NodeList nodeList = getElement().getElementsByTagName(SECURITY_ROLE); - return nodeList; - } - - /** - * Returns the context-realm node from the securityDesc document - * - * @return the realm node from the securityDesc document - */ - public String getRealm() { - NodeList nodeList = getElement().getElementsByTagName(REALM); - Node node = nodeList.item(0); - - if (node != null && node.hasChildNodes()) { - Node realmNode = nodeList.item(0).getFirstChild(); - realm = realmNode.getNodeValue(); - } - return realm; - } - - /** - * Returns the realm name - * - * @return the realm name - */ - public String getRealmName() { - String realmName = null; - NodeList nodeList = getElement().getElementsByTagName(REALM_NAME); - Node node = nodeList.item(0); - - if (node != null && node.hasChildNodes()) { - Node realmNameNode = nodeList.item(0).getFirstChild(); - realmName = realmNameNode.getNodeValue(); - } - return realmName; - } - - /** - * Returns the Document that contains the security settings - * - * @return Document that contains the security settings - */ - public Document getSecurityDesc() { - return securityDesc; - } - - /** - * Removes the prefix from all the children of a node - * - * @param node Node - */ - private void removePrefix (final Node node) { - if (node != null) { - if (node.getPrefix() != null) { - node.setPrefix(null); - } - if (node.hasChildNodes()) { - for (int i = 0; i < node.getChildNodes().getLength(); i++) { - removePrefix (node.getChildNodes().item(i)); - } - } - } - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsClientGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsClientGenerator.java deleted file mode 100644 index c7c79176d7..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsClientGenerator.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator; - -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; - - - -/** - * Generate sources and/or config for WebServices clients. - * - * @author Guillaume Sauthier - */ -public abstract class WsClientGenerator extends Generator { - - /** service-ref describing client dependency on a webservice */ - private ServiceRefDesc ref; - - /** jonas-service-ref modifier */ - private WsClientDDModifier modifier; - - /** archive */ - private Archive archive; - - /** - * Creates a new WsClientGenerator. - * - * @param config Generator Configuration - * @param serviceRef client dependency on a webservice - * @param ddm jonas-service-ref modifier - * @param arch modified archive - * - * @throws GenBaseException When instanciation fails - */ - public WsClientGenerator(Config config, ServiceRefDesc serviceRef, WsClientDDModifier ddm, Archive arch) - throws GenBaseException { - super(config); - ref = serviceRef; - modifier = ddm; - archive = arch; - } - /** - * @return the archive. - */ - public Archive getArchive() { - return archive; - } - /** - * @return the modifier. - */ - public WsClientDDModifier getModifier() { - return modifier; - } - /** - * @return the ref. - */ - public ServiceRefDesc getRef() { - return ref; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsEndpointGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsEndpointGenerator.java deleted file mode 100644 index ad6b238775..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/WsEndpointGenerator.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator; - -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; - - - -/** - * Generate sources and/or config files for WebServices Endpoint. - * @author Guillaume Sauthier - */ -public abstract class WsEndpointGenerator extends Generator { - - /** WebService Endpoint description */ - private ServiceDesc service; - - /** archive */ - private Archive archive; - - /** Web DD Modifier */ - private WsEndpointDDModifier modifier; - - /** Webservices DD Modifier */ - private WebServicesDDModifier wsModifier; - - /** - * Creates a new WsEndpointGenerator - * @param config Generator Configuration - * @param serviceDesc WebService Endpoint description - * @param ddm Web DD Modifier - * @param wsddm webservices.xml DD modifier - * @param arch the Archive to modify - * @throws GenBaseException When instanciation fails - */ - public WsEndpointGenerator(Config config, ServiceDesc serviceDesc, WsEndpointDDModifier ddm, - WebServicesDDModifier wsddm, Archive arch) throws GenBaseException { - super(config); - service = serviceDesc; - modifier = ddm; - wsModifier = wsddm; - archive = arch; - } - - /** - * @return the service. - */ - public ServiceDesc getService() { - return service; - } - - /** - * @return the archive. - */ - public Archive getArchive() { - return archive; - } - - /** - * @return the modifier. - */ - public WsEndpointDDModifier getModifier() { - return modifier; - } - - /** - * @return the wsModifier. - */ - public WebServicesDDModifier getWsModifier() { - return wsModifier; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisGeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisGeneratorFactory.java deleted file mode 100644 index 6cabe4eda8..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisGeneratorFactory.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- -*/ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.ow2.jonas.generators.wsgen.generator.WsClientGenerator; -import org.ow2.jonas.generators.wsgen.generator.WsEndpointGenerator; - - - - -/** - * GeneratorFactory impl for Axis. - * - * @deprecated - * @author Guillaume Sauthier - */ -public class AxisGeneratorFactory extends GeneratorFactory { - /** - * Return a new WsClientGenerator for the specific generation mecanism. - * - * @param serviceRef the service-ref containing information for client side - * generation process. - * @param ddm the XML modifier. - * @param archive the Archive to be modified - * - * @return a new WsClientGenerator. - * - * @throws GenBaseException When creation fails. - * @throws WsGenException When creation fails. - */ - public WsClientGenerator newGenerator(ServiceRefDesc serviceRef, - WsClientDDModifier ddm, Archive archive) throws GenBaseException, WsGenException { - return new AxisWsClientGenerator(getConfiguration(), serviceRef, ddm, archive); - } - - /** - * Return a new WsEndpointGenerator for the specific generation mecanism. - * - * @param serviceDesc the webservice-description containing information for - * server side generation process. - * @param ddm the XML modifier. - * @param wsddm webservices.xml DD modifier - * - * @return a new WsEndpointGenerator. - * - * @throws GenBaseException When creation fails. - * @throws WsGenException When creation fails. - */ - public WsEndpointGenerator newGenerator(ServiceDesc serviceDesc, - WsEndpointDDModifier ddm, WebServicesDDModifier wsddm, Archive arch) throws GenBaseException, WsGenException { - return new AxisWsEndpointGenerator(getConfiguration(), serviceDesc, ddm, wsddm, arch); - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsClientGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsClientGenerator.java deleted file mode 100644 index f54a1627fe..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsClientGenerator.java +++ /dev/null @@ -1,294 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.io.File; - -import org.ow2.jonas.deployment.ws.MappingFile; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.generator.WsClientGenerator; -import org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java.JOnASWSDL2Java; -import org.ow2.jonas.lib.loader.AbsModuleClassLoader; -import org.ow2.jonas.lib.util.I18n; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import org.apache.velocity.VelocityContext; - - - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Generate WebServices client files dedicated to axis.
    • - * client-config.wsdd : if needed
    • java sources : from WSDL
    • - *
    - * - * @author Guillaume sauthier - */ -public class AxisWsClientGenerator extends WsClientGenerator { - - /** unique JVelocity instance */ - private static JVelocity jvelocity = null; - - /** - * jonas-init-param name for client configuration file declaration - */ - private static final String CLIENT_CONFIG = "axis.clientConfigFile"; - - /** - * WSDD Extension suffix - */ - private static final String WSDD_SUFFIX = ".wsdd"; - - /** - * WSDD Extension prefix - */ - private static final String WSDD_PREFIX = "deploy-client-"; - - /** count generated files to assure names unicity */ - private static int count = 0; - - /** generated config file */ - private File generated = null; - - /** - * WEB-INF/ prefix - */ - private static final String WEB_PREFIX = "WEB-INF/"; - - /** - * I18n - */ - private static I18n i18n = I18n.getInstance(AxisWsClientGenerator.class); - - /** - * Creates a new AxisWsClientGenerator - * @param config Generator Configuration - * @param srd WebService Endpoint description - * @param ddm Web DD Modifier - * @param archive client archive containing WSDL - * @throws GenBaseException When instanciation fails - * @throws WsGenException When instanciation fails - */ - public AxisWsClientGenerator(Config config, ServiceRefDesc srd, WsClientDDModifier ddm, Archive archive) - throws GenBaseException, WsGenException { - super(config, srd, ddm, archive); - - // init velocity - if (jvelocity == null) { - String packageName = this.getClass().getPackage().getName(); - packageName = packageName.replace('.', '/'); - jvelocity = new JVelocity(packageName + "/deploy_client.vm"); - } - } - - /** - * generate axis specific files - * @throws WsGenException if WSDL cannot be found in archive - */ - public void generate() throws WsGenException { - - // the source generation is possible only when a - // WSDL Definition is provided - if ((getRef().getWsdlFileName() != null) - && !getRef().getServiceInterface().getName().equals("javax.xml.rpc.Service")) { - - try { - // classpath creation - J2EEArchive j2eeArchive = (J2EEArchive) getArchive(); - AbsModuleClassLoader cl = (AbsModuleClassLoader) j2eeArchive.getModuleClassloader(); - getConfig().setClasspath(getConfig().getClasspath() + cl.getClasspath()); - - - JOnASWSDL2Java jWsdl2Java = new JOnASWSDL2Java(); - jWsdl2Java.run(this); - getLogger().log(BasicLevel.INFO, "Web Services Classes successfully generated by Axis."); - } catch (Exception e) { - String err = getI18n().getMessage("AxisWsClientGenerator.generate.WSDL2Java"); - e.printStackTrace(System.err); - throw new WsGenException(err, e); - } - } - - // Client-config.wsdd ?? - // only if handlers are specified in ServiceRef - // but if noConfig set to true, assume that - // user configure himself the client. (expert) - // Could we create configuration ? - if (hasClientConfigFile(getRef())) { - // create deploy.wsdd - // use velocity template - // build a unique file name - String filename = WSDD_PREFIX + (count++) + WSDD_SUFFIX; - - VelocityContext vctx = VContextFactory.getContext(getRef()); - - if (getLogger().isLoggable(BasicLevel.DEBUG)) { - getLogger().log(BasicLevel.DEBUG, "Creating '" + filename + "'"); - } - generated = new File(getSources(), filename); - - jvelocity.generate(generated, vctx); - - } - // End !noConfig - } - - /** - * Returns true if given service-ref need a client configuration files - * @param ref Service Ref - * @return true if given service-ref need a client configuration files - */ - private boolean hasClientConfigFile(ServiceRefDesc ref) { - // no configuration asked - if (getConfig().isNoConfig()) { - return false; - } - - MappingFile mf = ref.getMappingFile(); - - if (mf != null) { - // mapping file defined - if (mf.getXmlTypeMappings().hasNext()) { - // we have 1 mapping at least - return true; - } else { - // no mapping - // return true if ref has Handlers - return (ref.getHandlerRefs().size() != 0); - } - } else { - // no mapping file - // return true if ref has Handlers - return (ref.getHandlerRefs().size() != 0); - } - } - - /** - * Add generated files in given archive - * @param archive archive where generated fils will be added. - * @throws WsGenException when files cannot be added - */ - public void addFiles(Archive archive) throws WsGenException { - if (archive instanceof WebApp) { - archive.addDirectoryIn("WEB-INF/classes/", getClasses()); - - if (generated != null) { - archive.addFileIn("WEB-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - if (!getArchive().getContainedFiles().contains("WEB-INF/jonas-web.xml")) { - // jonas-web.xml doesn't exists - createEmptyJonasWeb((J2EEArchive) archive); - } - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, WEB_PREFIX + generated.getName()); - } - } else if (archive instanceof EjbJar) { - archive.addDirectory(getClasses()); - - if (generated != null) { - archive.addFileIn("META-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, "META-INF/" + generated.getName()); - } - } else { - archive.addDirectory(getClasses()); - - if (generated != null) { - archive.addFileIn("META-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - if (!getArchive().getContainedFiles().contains("META-INF/jonas-client.xml")) { - // jonas-client.xml doesn't exists - createEmptyJonasClient((J2EEArchive) archive); - } - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, "META-INF/" + generated.getName()); - } - } - } - - /** - * Add an empty jonas-web.xml in given J2EEArchive. - * @param archive archive to be updated - */ - private void createEmptyJonasWeb(J2EEArchive archive) { - Document doc = XMLUtils.newJonasWeb(); - archive.getDescriptors().put("WEB-INF/jonas-web.xml", doc); - getModifier().setDocument(doc); - } - - /** - * Add an empty jonas-client.xml in given J2EEArchive. - * @param archive archive to be updated - */ - private void createEmptyJonasClient(J2EEArchive archive) { - Document doc = XMLUtils.newJonasClient(); - archive.getDescriptors().put("META-INF/jonas-client.xml", doc); - getModifier().setDocument(doc); - } - - /** - * @return Returns the i18n. - */ - public static I18n getI18n() { - return i18n; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsEndpointGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsEndpointGenerator.java deleted file mode 100644 index fb6492168d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/AxisWsEndpointGenerator.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.io.File; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.ow2.jonas.deployment.ws.JaxRpcPortComponentDesc; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.WsEndpointGenerator; -import org.ow2.jonas.lib.util.Log; - -import org.apache.velocity.VelocityContext; - - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Generate Axis specific config files for Endpoint - * - * @author Guillaume Sauthier - */ -public class AxisWsEndpointGenerator extends WsEndpointGenerator { - - /** - * unique JVelocity instance - */ - private static JVelocity jvelocity = null; - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** - * Axis Servlet classname - */ - private static final String AXIS_SERVLET_CLASS = "org.ow2.jonas.ws.axis.JAxisServlet"; - - /** - * init-param name for declaring server configuration file - */ - private static final String SERVER_CONFIG = "axis.serverConfigFile"; - - /** - * WSDD Extension suffix - */ - private static final String WSDD_SUFFIX = ".wsdd"; - - /** - * WSDD Extension prefix - */ - private static final String WSDD_PREFIX = "deploy-server-"; - - /** - * count generated files - */ - private static int count = 0; - - /** - * generated server-config file - */ - private File generatedServerConfig; - - /** - * Creates a new AxisWsEndpointGenerator - * - * @param config Generator Configuration - * @param serviceDesc WebService Endpoint description - * @param ddm Web DD Modifier - * @param wsddm webservices.xml DD modifier - * - * @throws GenBaseException When instanciation fails - * @throws WsGenException When instanciation fails. - */ - public AxisWsEndpointGenerator(Config config, ServiceDesc serviceDesc, WsEndpointDDModifier ddm, - WebServicesDDModifier wsddm, Archive arch) throws GenBaseException, WsGenException { - super(config, serviceDesc, ddm, wsddm, arch); - - // init velocity - if (jvelocity == null) { - String packageName = this.getClass().getPackage().getName(); - packageName = packageName.replace('.', '/'); - jvelocity = new JVelocity(packageName + "/deploy_endpoint.vm"); - } - } - - /** - * Generate server side configuration file - * - * @throws WsGenException When generation fails - */ - public void generate() throws WsGenException { - String sName = getService().getName(); - - // construct VelocityContext - VelocityContext vc = VContextFactory.getContext(getService()); - - // Generate file - String filename = WSDD_PREFIX + (count++) + WSDD_SUFFIX; - generatedServerConfig = new File(getSources(), filename); - jvelocity.generate(generatedServerConfig, vc); - - // remove existing servlets - for (Iterator i = getService().getPortComponents().iterator(); i.hasNext();) { - Object obj = i.next(); - if (obj instanceof JaxRpcPortComponentDesc) { - JaxRpcPortComponentDesc jax = (JaxRpcPortComponentDesc) obj; - - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Removing servlet '" + jax.getSibLink() + "'"); - } - - // remove servlet mapping - getModifier().removeServletMapping(jax.getSibLink()); - // remove old servlet - getModifier().removeServlet(jax.getSibLink()); - // change sib-link - getWsModifier().changeServletLink(sName, jax.getSibLink(), sName); - } - } - - // and use our own - getModifier().addServlet(sName, AXIS_SERVLET_CLASS); - getModifier().addServletParam(sName, SERVER_CONFIG, filename); - - // setup servlet-mappings - boolean requireDefaultMapping = false; - List usedServletMappings = new Vector(); - for (Iterator i = getService().getPortComponents().iterator(); i.hasNext();) { - PortComponentDesc pcd = (PortComponentDesc) i.next(); - String mapping = pcd.getMapping(); - if (mapping != null) { - // port has specified an endpoint URI - // use it for servlet-mapping - if (!usedServletMappings.contains(mapping)) { - usedServletMappings.add(mapping); - - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Adding servlet-mapping for '" + sName + "' -> '" + mapping + "'"); - } - - getModifier().addServletMapping(sName, mapping); - } - } else { - // no specified endpoint uri for the port - requireDefaultMapping = true; - } - } - if (requireDefaultMapping) { - // try to set a default mapping - String defaultEndpointURI = getService().getEndpointURI(); - if (defaultEndpointURI == null) { - // default behavior - getModifier().addServletMapping(sName, "/" + sName + "/*"); - } else { - // use retieved value - getModifier().addServletMapping(sName, defaultEndpointURI); - } - } - - } - - /** - * Add generated files in given Archive - * - * @param archive WebApp archive - * - * @throws WsGenException When cannot add files in archive - */ - public void addFiles(Archive archive) throws WsGenException { - // archive must be a WebApp - if (!(archive instanceof WebApp)) { - String err = getI18n().getMessage("AxisWsEndpointGenerator.addFiles.illegal", archive.getRootFile()); - throw new IllegalArgumentException(err); - } - - WebApp web = (WebApp) archive; - web.addFileIn("WEB-INF/", generatedServerConfig); - - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/JVelocity.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/JVelocity.java deleted file mode 100644 index 07c26a12e4..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/JVelocity.java +++ /dev/null @@ -1,155 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; - -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; - - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Wrapper around Velocity tool. - * - * @author Guillaume Sauthier - */ -public class JVelocity { - - /** i18n */ - private static I18n i18n = I18n.getInstance(JVelocity.class); - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); - - /** Velocity Engine */ - private VelocityEngine vEngine; - - /** Velocity Template */ - private Template template; - - /** - * Creates a new JVelocity instance using the given template. - * - * @param tmplName the template filename - * - * @exception WsGenException when error occurs during Velocity - * initialization. - */ - public JVelocity(String tmplName) throws WsGenException { - // Prepare Velocity Engine - String jonasRoot = System.getProperty("jonas.root"); - - if (jonasRoot == null) { - String err = i18n.getMessage("JVelocity.constr.notset"); - throw new WsGenException(err); - } - - //String path2Tmpl = new String(jonasRoot + File.separatorChar + "templates" + File.separatorChar + "wsgen" - // + File.separatorChar + "generator" + File.separatorChar + "axis"); - - // instanciate the engine - vEngine = new VelocityEngine(); - //vEngine.setProperty(RuntimeConstants.VM_LIBRARY, ""); - vEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "class"); - //vEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, path2Tmpl); - - try { - vEngine.init(); - } catch (Exception e) { - String err = i18n.getMessage("JVelocity.constr.initFailure"); - throw new WsGenException(err, e); - } - - // Create the Template - try { - template = vEngine.getTemplate(tmplName); - } catch (Exception e) { - String err = i18n.getMessage("JVelocity.constr.tmplError", tmplName); - throw new WsGenException(err, e); - } - } - - /** - * Generate the given file with the given VelocityContext. - * - * @param fs the output file - * @param context VelocityContext - * - * @throws WsGenException when velocity generation fails - */ - public void generate(File fs, VelocityContext context) throws WsGenException { - FileWriter fwriter = null; - - try { - // Create before the parent directory - File fdir = fs.getParentFile(); - - if (fdir != null) { - if (!fdir.exists()) { - if (!fdir.mkdirs()) { - String err = i18n.getMessage("JVelocity.generate.directories", fdir.getPath()); - throw new WsGenException(err); - } - } - } - - fwriter = new FileWriter(fs); - } catch (IOException e) { - String err = i18n.getMessage("JVelocity.generate.file", fs); - throw new WsGenException(err, e); - } - - try { - template.merge(context, fwriter); - } catch (Exception e) { - String err = i18n.getMessage("JVelocity.generate.cannot", fs); - throw new WsGenException(err, e); - } - - try { - fwriter.flush(); - fwriter.close(); - } catch (IOException e) { - // do nothing, just a warn - String err = i18n.getMessage("JVelocity.generate.close", fs); - logger.log(BasicLevel.WARN, err); - } - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VContextFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VContextFactory.java deleted file mode 100644 index fb7ad42de5..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VContextFactory.java +++ /dev/null @@ -1,238 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.HandlerDesc; -import org.ow2.jonas.deployment.ws.MappingFile; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.SSBPortComponentDesc; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; - -import org.apache.velocity.VelocityContext; - - - -/** - * This class allows to create the Velocity Context used to build the generated - * sources with the Velocity templates. - * - * @author Xavier Delplanque (Bull) - */ -public class VContextFactory { - - /** - * Provider property name - */ - public static final String PROVIDER = "provider"; - - /** - * JOnAS EJB Provider name - */ - public static final String EJB_PROVIDER = "JOnASEJB"; - - /** - * Default RPC Provider name - */ - public static final String RPC_PROVIDER = "RPC"; - - /** - * Mapping property name - */ - public static final String MAPPINGS = "mappings"; - - /** - * Port Components list property name - */ - public static final String PORT_COMPONENTS = "portComponents"; - - /** - * WSDL directory in Webapp - */ - private static final String WEB_WSDL = "WEB-INF/wsdl/"; - - /** - * WSDL directory in EjbJar/Client - */ - private static final String META_WSDL = "META-INF/wsdl/"; - - /** - * Empty Constructor for Utility class - */ - private VContextFactory() { - } - - /** - * Creates the Velocity Context used to build the generated files with the - * Velocity templates. - * - * @param sd The ServiceDesc Deployment Descriptor - * - * @return a VelocityContext customized with the SD - */ - public static VelocityContext getContext(ServiceDesc sd) { - - VelocityContext vc = new VelocityContext(); - - // Set provider value - String wsdl; - if (sd.getPortComponents().get(0) instanceof SSBPortComponentDesc) { - // EJB Provider - vc.put(PROVIDER, EJB_PROVIDER); - // get wsdl name - wsdl = sd.getWSDL().getName().substring(META_WSDL.length()); - } else { - // JAXRPC Provider - vc.put(PROVIDER, RPC_PROVIDER); - // get wsdl name - wsdl = sd.getWSDL().getName().substring(WEB_WSDL.length()); - } - - // Add all ports - List ports = sd.getPortComponents(); - List portComponents = new Vector(); - for (Iterator it = ports.iterator(); it.hasNext();) { - PortComponentDesc pcd = (PortComponentDesc) it.next(); - portComponents.add(new VcPortComponent(pcd, wsdl)); - } - vc.put(PORT_COMPONENTS, portComponents); - - // add types mappings - List mappings = new Vector(); - MappingFile mf = sd.getMapping(); - for (Iterator m = mf.getXmlTypeMappings(); m.hasNext();) { - QName xml = (QName) m.next(); - String classname = mf.getClassname(xml); - - // if we have an Array, Axis use a different representation - if (classname.endsWith("[]")) { - mappings.add(new VcArrayMapping(xml, classname)); - } else { - mappings.add(new VcBeanMapping(xml, classname)); - } - } - vc.put(MAPPINGS, mappings); - - return vc; - } - - /** - * Creates the Velocity Context used to build the generated files with the - * Velocity templates. - * - * @param sr The ServiceRefDesc Deployment Descriptor - * - * @return a VelocityContext customized with the SR - */ - public static VelocityContext getContext(ServiceRefDesc sr) { - - VelocityContext vc = new VelocityContext(); - - Hashtable pcds = new Hashtable(); - - // for each service-ref handler - List hrs = sr.getHandlerRefs(); - - Vector commonh = new Vector(); - for (Iterator itHr = hrs.iterator(); itHr.hasNext();) { - HandlerDesc hr = (HandlerDesc) itHr.next(); - List pcns = hr.getPortNames(); - - if (pcns.size() != 0) { - // a port name list is defined : add the handler to each - // specified port - for (Iterator itPcn = pcns.iterator(); itPcn.hasNext();) { - String pcn = (String) itPcn.next(); - if (!pcds.containsKey(pcn)) { - pcds.put(pcn, new Vector()); - } - ((Vector) pcds.get(pcn)).add(hr); - } - } else { - // no port name is specified : the handler is added to each - // port - commonh.add(hr); - } - } - - // now, we can create the port component list - Vector portComponents = new Vector(); - - // if there is not port-component-ref - if (pcds.isEmpty()) { - Definition def = sr.getWSDLFile().getDefinition(); - Service s = def.getService(sr.getServiceQName()); - Map ports = s.getPorts(); - // for each wsdl:port - for (Iterator i = ports.values().iterator(); i.hasNext();) { - Port p = (Port) i.next(); - portComponents.add(new VcPortComponent(p.getName(), commonh)); - } - } else { - for (Enumeration enPc = pcds.keys(); enPc.hasMoreElements();) { - String pcn = (String) enPc.nextElement(); - // add common handlers to the list - Vector pchrs = (Vector) pcds.get(pcn); - pchrs.addAll(commonh); - portComponents.add(new VcPortComponent(pcn, pchrs)); - } - } - - vc.put(PORT_COMPONENTS, portComponents); - - // add types mappings - List mappings = new Vector(); - MappingFile mf = sr.getMappingFile(); - if (mf != null) { - for (Iterator m = mf.getXmlTypeMappings(); m.hasNext();) { - QName xml = (QName) m.next(); - String classname = mf.getClassname(xml); - - // if we have an Array, Axis use a different representaion - if (classname.endsWith("[]")) { - mappings.add(new VcArrayMapping(xml, classname)); - } else { - mappings.add(new VcBeanMapping(xml, classname)); - } - } - } - vc.put(MAPPINGS, mappings); - - return vc; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcArrayMapping.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcArrayMapping.java deleted file mode 100644 index 05d81f3fe7..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcArrayMapping.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Sauthier Guillaume - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import javax.xml.namespace.QName; - -/** - * Member of a VelocityContext. Contains information used to create a - * typeMapping WSDD tag. - * - * @author Guillaume SAUTHIER - */ -public class VcArrayMapping extends VcTypeMapping { - - /** - * Axis Array Serializer Factory - */ - private static final String ARRAY_SERIALIZER_FACTORY = "org.apache.axis.encoding.ser.ArraySerializerFactory"; - - /** - * Axis Array DeSerializer Factory - */ - private static final String ARRAY_DESERIALIZER_FACTORY = "org.apache.axis.encoding.ser.ArrayDeserializerFactory"; - - /** - * Create a VcArrayMapping holding arrayMapping information. - * - * @param xml XML Qname of the Array type - * @param name Java name of the Array type - */ - public VcArrayMapping(QName xml, String name) { - super(xml, name); - } - - /** - * @return Returns the serializer factory for the mapping - */ - public String getSerializerFactory() { - return ARRAY_SERIALIZER_FACTORY; - } - - /** - * @return Returns the deserializer factory for the mapping - */ - public String getDeserializerFactory() { - return ARRAY_DESERIALIZER_FACTORY; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBean.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBean.java deleted file mode 100644 index 96b96cf84f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBean.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; - -/** - * Member of a VelocityContext. Contains information about a bean. - * - * @author Xavier Delplanque - */ -public class VcBean { - - /** - * the bean jndi name - */ - private String jndiName; - - /** - * ServiceEndpoint interface name - */ - private String serviceEndpointInterface; - - /** - * Construct a Holder for Bean informations - * - * @param ssd SessionStatelessDesc descripting the given SessionBean - */ - public VcBean(SessionStatelessDesc ssd) { - - // set jndiName - jndiName = ssd.getJndiServiceEndpointName(); - - // set service endpoint - serviceEndpointInterface = ssd.getServiceEndpointClass().getName(); - - } - - /** - * The bean jndi name - * - * @return The bean jndi name - */ - public String getServiceEndpointJndiName() { - return jndiName; - } - - /** - * the bean service-endpoint interface name - * - * @return the bean service-endpoint interface name - */ - public String getServiceEndpointInterfaceName() { - return serviceEndpointInterface; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBeanMapping.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBeanMapping.java deleted file mode 100644 index 68d5940f83..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcBeanMapping.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import javax.xml.namespace.QName; - -/** - * Member of a VelocityContext. Contains information used to create a - * beanMapping WSDD tag. - * - * @author Guillaume SAUTHIER - */ -public class VcBeanMapping extends VcTypeMapping { - - /** - * Axis bean serializer factory - */ - private static final String BEAN_SERIALIZER_FACTORY = "org.apache.axis.encoding.ser.BeanSerializerFactory"; - - /** - * Axis bean deserializer factory - */ - private static final String BEAN_DESERIALIZER_FACTORY = "org.apache.axis.encoding.ser.BeanDeserializerFactory"; - - /** - * Create a VcBeanMapping holding typeMapping information. - * - * @param xml XML Qname of the type - * @param name Java name of the type - */ - public VcBeanMapping(QName xml, String name) { - super(xml, name); - } - - /** - * @return Returns the serializer factory for the mapping - */ - public String getSerializerFactory() { - return BEAN_SERIALIZER_FACTORY; - } - - /** - * @return Returns the deserializer factory for the mapping - */ - public String getDeserializerFactory() { - return BEAN_DESERIALIZER_FACTORY; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHandler.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHandler.java deleted file mode 100644 index 105e900fb2..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHandler.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.HandlerDesc; - - -/** - * Member of a VelocityContext. Contains information about a Handler (Ref/Desc). - * - * @author Xavier Delplanque - */ -public class VcHandler { - - /** handler name (unique) */ - private String name; - - /** handler class name */ - private String className; - - /** handler init parameters */ - private Vector initParameters; - - /** handler SOAP headers */ - private Vector headers; - - /** handler SOAP roles */ - private Vector soapRoles; - - /** - * Create a new VcHandler from a HandlerDesc - * - * @param hr HandlerDesc - */ - public VcHandler(HandlerDesc hr) { - - // set name - name = hr.getName(); - - //set className - className = hr.getHandlerClass().getName(); - - // set initParameters - Map ips = hr.getInitParams(); - initParameters = new Vector(); - for (Iterator itKey = ips.keySet().iterator(); itKey.hasNext();) { - String key = (String) itKey.next(); - String val = (String) ips.get(key); - initParameters.add(new VcInitParam(key, val)); - } - - // set headers - List hs = hr.getSOAPHeaders(); - headers = new Vector(); - for (Iterator itH = hs.iterator(); itH.hasNext();) { - QName qn = (QName) itH.next(); - headers.add(new VcHeader(qn)); - } - - // set soapRoles - soapRoles = new Vector(); - List srs = hr.getSOAPRoles(); - for (Iterator itSr = srs.iterator(); itSr.hasNext();) { - String sr = (String) itSr.next(); - soapRoles.add(sr); - } - } - - /** - * @return Returns the Handler name - */ - public String getName() { - return name; - } - - /** - * @return Returns the handler classname - */ - public String getClassName() { - return className; - } - - /** - * @return Returns the list of handler init param - */ - public Vector getInitParameters() { - return initParameters; - } - - /** - * @return Returns the list of header the given Handler is able to access. - */ - public Vector getHeaders() { - return headers; - } - - /** - * @return Returns the list of SOAP roles the Handler use - */ - public Vector getSoapRoles() { - return soapRoles; - } - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHeader.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHeader.java deleted file mode 100644 index f43c312b75..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcHeader.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import javax.xml.namespace.QName; - -/** - * Member of a VelocityContext. Contains information about a SOAP Header - * (basically a qName). - * - * @author Xavier Delplanque - */ -public class VcHeader { - - /** LocalPart of the QName */ - private String qname; - - /** NamespaceURI of the QName */ - private String namespace; - - /** - * Construct a VcHeader from a QName. - * - * @param qn the Header QName - */ - public VcHeader(QName qn) { - - // set qname - qname = qn.getLocalPart(); - - // set namespace - namespace = qn.getNamespaceURI(); - } - - /** - * @return Returns the Header localpart - */ - public String getQName() { - return qname; - } - - /** - * @return Returns the Header namespace URI - */ - public String getNamespace() { - return namespace; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcInitParam.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcInitParam.java deleted file mode 100644 index f7c439d99f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcInitParam.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -/** - * Member of a VelocityContext. Contains information about an InitParameter - * (basically a name/value pair). - * - * @author Xavier Delplanque - */ -public class VcInitParam { - - /** parameter name */ - private String name; - - /** parameter value */ - private String value; - - /** - * Construct a VcInitParam from a couple name/value. - * - * @param name init param name - * @param value init param value - */ - public VcInitParam(String name, String value) { - this.name = name; - this.value = value; - } - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @return Returns the value. - */ - public String getValue() { - return value; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcPortComponent.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcPortComponent.java deleted file mode 100644 index 48f1db93d8..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcPortComponent.java +++ /dev/null @@ -1,370 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Xavier Delplanque - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import java.lang.reflect.Method; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import javax.wsdl.BindingFault; -import javax.wsdl.BindingOperation; -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.soap.SOAPFault; -import javax.wsdl.extensions.soap.SOAPOperation; -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.HandlerDesc; -import org.ow2.jonas.deployment.ejb.SessionStatelessDesc; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.SSBPortComponentDesc; - - - - -/** - * Member of a VelocityContext. Contains information about a - * PortComponent(Desc/Ref). - * @author Xavier Delplanque - */ -public class VcPortComponent { - - /** port component name */ - private String name; - - /** the sib if the endpoint is an ejb */ - private VcBean bean = null; - - /** a string containing sei method names separated by ',' */ - private static final String SEP = ","; - - /** a list of method names */ - private String methods = null; - - /** port component handlers */ - private Vector handlers = new Vector(); - - /** the JAXRPC class name if the sib is a servlet */ - private String jaxRpcClassName; - - /** the wsdl file to display when ?wsdl is used */ - private String wsdlFilename; - - /** - * Document style name - */ - private static final String DOCUMENT_STYLE = "document"; - - /** - * SOAP style - */ - private String style = null; - - /** - * SOAP use - */ - private String use = null; - - /** - * target Namespace - */ - private String namespace = null; - - /** - * SOAP NS URI - */ - public static final String NS_URI_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/"; - - /** - * soap:binding - */ - private static final QName SOAP_BINDING_QNAME = new QName(NS_URI_SOAP, "binding"); - - /** - * soap:operation - */ - private static final QName SOAP_OPERATION_QNAME = new QName(NS_URI_SOAP, "operation"); - - /** - * soap:body - */ - private static final QName SOAP_BODY_QNAME = new QName(NS_URI_SOAP, "body"); - - /** - * soap:fault - */ - private static final QName SOAP_FAULT_QNAME = new QName(NS_URI_SOAP, "fault"); - - /** - * Construct a VcPortComponent from a PortComponentDesc. used for - * server-side configuration files generation. (server-config.wsdd) - * @param pcd PortComponentDesc to be used - * @param wsdl wsdl filename of the port - */ - public VcPortComponent(PortComponentDesc pcd, String wsdl) { - - // set name - name = pcd.getServiceName(); - - wsdlFilename = wsdl; - - // set bean or jaxRpcClassName - if (pcd.hasBeanImpl()) { - // set bean - SessionStatelessDesc ssb = ((SSBPortComponentDesc) pcd).getSessionStatelessDesc(); - bean = new VcBean(ssb); - } else { - jaxRpcClassName = pcd.getSIBClassname(); - } - // set methods - Method[] m = pcd.getServiceEndpointInterface().getMethods(); - for (int i = 0; i < m.length; i++) { - if (methods != null) { - methods += SEP; - } else { - methods = ""; - } - methods += m[i].getName(); - } - - // set style/use/namespace - Definition def = pcd.getServiceDesc().getWSDL().getDefinition(); - boolean portFound = false; - for (Iterator i = def.getServices().keySet().iterator(); i.hasNext() && !portFound;) { - Service s = def.getService((QName) i.next()); - Port p = s.getPort(pcd.getQName().getLocalPart()); - if (p != null) { - // we found the linked port - portFound = true; - - // search style attribute - style = getStyle(p); - - // search use attribute inside port - use = getUse(p); - } - } - namespace = def.getTargetNamespace(); - - // set handlers - List hs = pcd.getHandlers(); - for (Iterator itH = hs.iterator(); itH.hasNext();) { - HandlerDesc hd = (HandlerDesc) itH.next(); - handlers.add(new VcHandler(hd)); - } - - } - - /** - * @param p the wsdl port - * @return Returns the use to use with the port - */ - private static String getUse(Port p) { - String use = null; - - // use is declared inside - // - wsdl:definition/wsdl:binding/wsdl:operation/wsdl:input/soap:body@use - // - wsdl:definition/wsdl:binding/wsdl:operation/wsdl:output/soap:body@use - // - wsdl:definition/wsdl:binding/wsdl:operation/wsdl:fault/soap:fault@use - // take the first one. - List ops = p.getBinding().getBindingOperations(); - for (Iterator j = ops.iterator(); j.hasNext() && (use == null);) { - BindingOperation bop = (BindingOperation) j.next(); - - // search input - List inputExt = bop.getBindingInput().getExtensibilityElements(); - for (Iterator k = inputExt.iterator(); k.hasNext() && (use == null);) { - ExtensibilityElement ext = (ExtensibilityElement) k.next(); - if (ext.getElementType().equals(SOAP_BODY_QNAME)) { - SOAPBody sb = (SOAPBody) ext; - use = sb.getUse(); - } - } - - // search output - List outputExt = bop.getBindingOutput().getExtensibilityElements(); - for (Iterator k = outputExt.iterator(); k.hasNext() && (use == null);) { - ExtensibilityElement ext = (ExtensibilityElement) k.next(); - if (ext.getElementType().equals(SOAP_BODY_QNAME)) { - SOAPBody sb = (SOAPBody) ext; - use = sb.getUse(); - } - } - - // search faults - for (Iterator k = bop.getBindingFaults().keySet().iterator(); k.hasNext() && (use == null);) { - BindingFault bf = bop.getBindingFault((String) k.next()); - - // search soap:fault - List faultExt = bf.getExtensibilityElements(); - for (Iterator i = faultExt.iterator(); i.hasNext() && (use == null);) { - ExtensibilityElement ext = (ExtensibilityElement) i.next(); - if (ext.getElementType().equals(SOAP_FAULT_QNAME)) { - SOAPFault sf = (SOAPFault) ext; - use = sf.getUse(); - } - } - } - } - // use cannot be null as it is required ! - - return use; - } - - /** - * @param p the wsdl port - * @return Returns the style to use with the port - */ - private static String getStyle(Port p) { - String style = null; - - // we need to explore soap:operation and get the first that set a style attribute - List bindingOps = p.getBinding().getBindingOperations(); - for (Iterator i = bindingOps.iterator(); i.hasNext() && (style == null);) { - - BindingOperation bop = (BindingOperation) i.next(); - // browse soap:operation - List extElements = bop.getExtensibilityElements(); - for (Iterator j = extElements.iterator(); j.hasNext();) { - ExtensibilityElement ext = (ExtensibilityElement) j.next(); - if (ext.getElementType().equals(SOAP_OPERATION_QNAME)) { - - // Got a soap:operation element - SOAPOperation sop = (SOAPOperation) ext; - style = sop.getStyle(); - } - } - } - - // browse extensibility elements of port's binding - List soapElements = p.getBinding().getExtensibilityElements(); - for (Iterator i = soapElements.iterator(); i.hasNext() && (style == null);) { - - ExtensibilityElement ext = (ExtensibilityElement) i.next(); - if (ext.getElementType().equals(SOAP_BINDING_QNAME)) { - - // Got a soap:binding element - SOAPBinding soapb = (SOAPBinding) ext; - style = soapb.getStyle(); - } - - } - - if (style == null) { - style = DOCUMENT_STYLE; - } - - return style; - } - - /** - * Construct a VcPortComponent from a PortComponentRef. used for client-side - * configuration files generation. (client-config.wsdd) - * @param name Port Ref name - * @param hrs HandlerRef list - */ - public VcPortComponent(String name, List hrs) { - - // set name - this.name = name; - - // set handlers - for (Iterator itH = hrs.iterator(); itH.hasNext();) { - HandlerDesc hr = (HandlerDesc) itH.next(); - handlers.add(new VcHandler(hr)); - } - - } - - /** - * @return Returns the PortComponent name - */ - public String getName() { - return name; - } - - /** - * @return Returns the VcBean of this PortComponent - */ - public VcBean getBean() { - return bean; - } - - /** - * @return Returns the WSDL filename - */ - public String getWSDLFilename() { - return wsdlFilename; - } - - /** - * @return returns the exposed methods as a comma separated list - */ - public String getMethods() { - return methods; - } - - /** - * @return Returns a list of Handler/HandlerRef - */ - public Vector getHandlers() { - return handlers; - } - - /** - * @return Returns the JaxRpc implementation classname - */ - public String getJaxRpcClassName() { - return jaxRpcClassName; - } - - /** - * @return Returns the style. - */ - public String getStyle() { - return style; - } - - /** - * @return Returns the use. - */ - public String getUse() { - return use; - } - - /** - * @return Returns the namespace. - */ - public String getNamespace() { - return namespace; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcTypeMapping.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcTypeMapping.java deleted file mode 100644 index a78423433d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/VcTypeMapping.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Sauthier Guillaume - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.axis; - -import javax.xml.namespace.QName; - -/** - * Member of a VelocityContext. Contains information used to create a - * typeMapping WSDD tag. - * - * @author Guillaume SAUTHIER - */ -public abstract class VcTypeMapping { - - /** classname */ - private String classname; - - /** xml type QName */ - private QName xmlType; - - /** - * SOAP Encoding Style - */ - private static final String ENCODING_STYLE = "http://schemas.xmlsoap.org/soap/encoding/"; - - /** - * Create a VcTypeMapping holding typeMapping information. - * - * @param xml XML Qname of the type - * @param name Java name of the type - */ - public VcTypeMapping(QName xml, String name) { - classname = name; - xmlType = xml; - } - - /** - * @return Returns the Java classname - */ - public String getClassname() { - return classname; - } - - /** - * @return Returns the namespace of the QName - */ - public String getNamespaceURI() { - return xmlType.getNamespaceURI(); - } - - /** - * @return Returns the local-part of the QName - */ - public String getLocalPart() { - return xmlType.getLocalPart(); - } - - /** - * @return Returns the serializer factory for the mapping - */ - protected abstract String getSerializerFactory(); - - /** - * @return Returns the deserializer factory for the mapping - */ - protected abstract String getDeserializerFactory(); - - /** - * @return Returns the encoding style for the mapping - */ - protected String getEncodingStyle() { - return ENCODING_STYLE; - } - - /** - * @return Returns a String representation of the typeMapping - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append(""); - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASEmitter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASEmitter.java deleted file mode 100644 index 9887d6ced3..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASEmitter.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import org.apache.axis.wsdl.toJava.Emitter; - - -/** - * JOnASEmitter to override Service extends in ServiceLocator Writer. - * - * @author Guillaume Sauthier - */ -public class JOnASEmitter extends Emitter { - - /** - * Constructs new JOnASEmitter. - */ - public JOnASEmitter() { - setFactory(new JOnASGeneratorFactory(this)); - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASGeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASGeneratorFactory.java deleted file mode 100644 index c44681fb13..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASGeneratorFactory.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import javax.wsdl.Definition; -import javax.wsdl.Service; - -import org.apache.axis.wsdl.gen.Generator; -import org.apache.axis.wsdl.gen.NoopGenerator; -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaDefinitionWriter; -import org.apache.axis.wsdl.toJava.JavaGeneratorFactory; - -/** - * JOnASGeneratorFactory returns our own JOnASServiceWriter in WSDL2Java process. - * - * @author Guillaume Sauthier - */ -public class JOnASGeneratorFactory extends JavaGeneratorFactory { - - /** - * Constructs a new JOnASGeneratorFactory associated with a given - * JOnASEmitter - * @param emitter the JOnASEmitter - */ - public JOnASGeneratorFactory(Emitter emitter) { - super(emitter); - } - - /** - * Method addDefinitionGenerators - */ - protected void addDefinitionGenerators() { - addGenerator(Definition.class, JavaDefinitionWriter.class); // for - // faults - } // addDefinitionGenerators - - /** - * @param service wsdl:service instance - * @param symbolTable SymbolTable - * @return Returns the JOnASServiceWriter when encoutering Service in - * SymbolTable - */ - public Generator getGenerator(Service service, SymbolTable symbolTable) { - if (include(service.getQName())) { - Generator writer = new JOnASServiceWriter(emitter, service, symbolTable); - ServiceEntry sEntry = symbolTable.getServiceEntry(service.getQName()); - serviceWriters.addStuff(writer, sEntry, symbolTable); - return serviceWriters; - } else { - return new NoopGenerator(); - } - } // getGenerator - - /** - * Method getGenerator - * - * @param type TypeEntry - * @param symbolTable SymbolTable - * @return a NoopGenerator (we don't need Types at this time, should be already generated) - */ - /* - public Generator getGenerator(TypeEntry type, SymbolTable symbolTable) { - return new NoopGenerator(); - } // getGenerator -*/ -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASInterfaceServiceImplWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASInterfaceServiceImplWriter.java deleted file mode 100644 index 4067ad419f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASInterfaceServiceImplWriter.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceIfaceWriter; - - -/** - * Used for service interface generation. - * The super class has protected constructor, so redefine it. - * @author Florent Benoit - */ -public class JOnASInterfaceServiceImplWriter extends JavaServiceIfaceWriter { - - /** - * Constructor. - * @param emitter JOnASEmitter - * @param sEntry ServiceEntry - * @param symbolTable SymbolTable - */ - public JOnASInterfaceServiceImplWriter(Emitter emitter, ServiceEntry sEntry, SymbolTable symbolTable) { - super(emitter, sEntry, symbolTable); - } - - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceImplWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceImplWriter.java deleted file mode 100644 index 91f62a8ff7..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceImplWriter.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceImplWriter; - - -/** - * ServiceImplWriter that substitues Axis' Service implementation with our own. - * - * @author Guillaume Sauthier - */ -public class JOnASServiceImplWriter extends JavaServiceImplWriter { - - /** - * Constructor. - * - * @param emitter JOnASEmitter - * @param sEntry ServiceEntry - * @param symbolTable SymbolTable - */ - public JOnASServiceImplWriter(Emitter emitter, ServiceEntry sEntry, SymbolTable symbolTable) { - super(emitter, sEntry, symbolTable); - } - - /** - * @return Returns "extends org.ow2.jonas.ws.axis.JService ". - */ - protected String getExtendsText() { - return "extends org.ow2.jonas.ws.axis.JService "; - //return "extends org.apache.axis.client.Service "; - } // getExtendsText - - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceWriter.java deleted file mode 100644 index 542bc1cfaf..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASServiceWriter.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import javax.wsdl.Service; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceWriter; - - -/** - * This is JOnASWsdl2java's Service Writer. It writes the following files, as - * appropriate: .java, Locator.java. - */ -public class JOnASServiceWriter extends JavaServiceWriter { - - /** - * Constructor. - * @param emitter JOnASEmitter - * @param service Service - * @param symbolTable SymbolTable - */ - public JOnASServiceWriter(Emitter emitter, Service service, SymbolTable symbolTable) { - super(emitter, service, symbolTable); - ServiceEntry sEntry = symbolTable.getServiceEntry(service.getQName()); - - if (sEntry.isReferenced()) { - serviceIfaceWriter = null; - // Write service interface if : - // - class is not available - // - emitter is not a J2eeEmitter (for backward compliance) - if (emitter instanceof JOnASWSEmitter) { - ClassLoader cl = ((JOnASWSEmitter) emitter).getClassLoader(); - String className = sEntry.getName(); - try { - cl.loadClass(className); - } catch (ClassNotFoundException cnfe) { - // class not available, generate it - serviceIfaceWriter = new JOnASInterfaceServiceImplWriter(emitter, sEntry, symbolTable); - } - } - - // overwrite Axis Writer - serviceImplWriter = new JOnASServiceImplWriter(emitter, sEntry, symbolTable); - } - } // ctor - -} // class JOnASServiceWriter diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASWSDL2Java.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASWSDL2Java.java deleted file mode 100644 index 49003d2c7d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/axis/wsdl2java/JOnASWSDL2Java.java +++ /dev/null @@ -1,165 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.axis.wsdl2java; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.wsdl.WSDLException; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.generator.axis.AxisWsClientGenerator; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import org.apache.axis.wsdl.WSDL2Java; -import org.apache.axis.wsdl.gen.Parser; - - -/** - * Programmatic interface to the WSDL2Java Axis tool. - * @author Guillaume Sauthier - */ -public class JOnASWSDL2Java extends WSDL2Java { - - /** - * Field emitter - */ - private JOnASEmitter jEmitter; - - /** - * WSDL Localtion URL - */ - private String wsdlURL = null; - - /** - * Parsed WSDL Document - */ - private Document wsdlDoc = null; - - /** - * JOnASWSDL2Java Constructor. - */ - public JOnASWSDL2Java() { - super(); - // just cast it once - jEmitter = (JOnASEmitter) getParser(); - } - - /** - * @return Returns an extension of the Parser - */ - protected Parser createParser() { - return new JOnASEmitter(); - } // createParser - - /** - * Setup the JOnASWSDL2Java generator. - * @param wsc WsClientGenerator from wich the configuration will be read. - * @throws WsGenException Cannot parse WSDL Document - */ - private void setup(AxisWsClientGenerator wsc) throws WsGenException { - setupEmitter(wsc); - setupWSDL(wsc); - } - - /** - * Setup the WSDL Document before giving it to the Emitter. - * @param wsc configuration - * @throws WsGenException Cannot load WSDL - */ - private void setupWSDL(AxisWsClientGenerator wsc) throws WsGenException { - try { - if (wsc.getArchive().isPacked()) { - // URL Loading - String jarpath = wsc.getArchive().getRootFile().getCanonicalFile().toURL().toExternalForm(); - wsdlURL = "jar:" + jarpath + "!/" + wsc.getRef().getWsdlFileName(); - } else { - // File Loading - wsdlURL = new File(wsc.getArchive().getRootFile(), wsc.getRef().getWsdlFileName()).toURL() - .toExternalForm(); - } - - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - factory.setNamespaceAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - wsdlDoc = builder.parse(wsdlURL); - } catch (ParserConfigurationException pce) { - throw new WsGenException("", pce); - } catch (IOException ioe) { - throw new WsGenException("", ioe); - } catch (SAXException se) { - throw new WsGenException("", se); - } - } - - /** - * Setup the JOnASEmitter instance. - * @param wsc configuration - */ - private void setupEmitter(AxisWsClientGenerator wsc) { - jEmitter.setDebug(wsc.getConfig().isDebug()); - jEmitter.setVerbose(wsc.getConfig().isVerbose()); - jEmitter.setNamespaceMap(convert2HashMap(wsc.getRef().getMappingFile().getMappings())); - jEmitter.setOutputDir(wsc.getSources().getPath()); - } - - /** - * Converts Hashtable to HashMap. - * @param m Hashtable to be converted - * @return HashMap converted - */ - private HashMap convert2HashMap(Map m) { - HashMap ns2pkg = new HashMap(); - for (Iterator i = m.keySet().iterator(); i.hasNext();) { - String ns = (String) i.next(); - ns2pkg.put(ns, m.get(ns)); - } - return ns2pkg; - } - - /** - * Setup and runs the JOnASEmitter. - * - * @param wsc Configuration. - * - * @throws WsGenException When WSDL has not been properly parsed - * @throws SAXException Cannot parse WSDL document - * @throws WSDLException When WSDL is incorrect - * @throws ParserConfigurationException Cannot Configure Parser - * @throws IOException Import URL cannot be loaded - */ - public void run(AxisWsClientGenerator wsc) throws WsGenException, IOException, SAXException, WSDLException, ParserConfigurationException { - setup(wsc); - parser.run(wsdlURL, wsdlDoc); - } // run - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSGeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSGeneratorFactory.java deleted file mode 100644 index 7fa10f88fe..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSGeneratorFactory.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.ews; - -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.ow2.jonas.generators.wsgen.generator.WsClientGenerator; -import org.ow2.jonas.generators.wsgen.generator.WsEndpointGenerator; - - - - -/** - * GeneratorFactory impl for EWS. - * - * @author Guillaume Sauthier - */ -public class EWSGeneratorFactory extends GeneratorFactory { - /** - * Return a new WsClientGenerator for the specific generation mecanism. - * - * @param serviceRef the service-ref containing information for client side - * generation process. - * @param ddm the XML modifier. - * @param archive the Archive to be modified - * - * @return a new WsClientGenerator. - * - * @throws GenBaseException When creation fails. - */ - public WsClientGenerator newGenerator(ServiceRefDesc serviceRef, - WsClientDDModifier ddm, Archive archive) throws GenBaseException { - return new EWSWsClientGenerator(getConfiguration(), serviceRef, ddm, archive); - } - - /** - * Return a new WsEndpointGenerator for the specific generation mecanism. - * - * @param serviceDesc the webservice-description containing information for - * server side generation process. - * @param ddm the XML modifier. - * @param wsddm webservices.xml DD modifier - * @param arch base archive - * - * @return a new WsEndpointGenerator. - * - * @throws GenBaseException When creation fails. - */ - public WsEndpointGenerator newGenerator(ServiceDesc serviceDesc, - WsEndpointDDModifier ddm, WebServicesDDModifier wsddm, Archive arch) throws GenBaseException { - return new EWSWsEndpointGenerator(getConfiguration(), serviceDesc, ddm, wsddm, arch); - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsClientGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsClientGenerator.java deleted file mode 100644 index 15b4480baf..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsClientGenerator.java +++ /dev/null @@ -1,311 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.ews; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.common.HandlerDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.genbase.utils.XMLUtils; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.generator.WsClientGenerator; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.ServiceReferenceContextImpl; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.FullEmitter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.factory.JOnASClientGeneratorFactory; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.wscf.JOnASWSCFHandler; -import org.ow2.jonas.lib.loader.AbsModuleClassLoader; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import org.apache.axis.constants.Scope; -import org.apache.axis.wsdl.toJava.GeneratedFileInfo; -import org.apache.ws.ews.context.webservices.client.ServiceReferenceContext; - - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Generate WebServices client files dedicated to axis.
    • - * client-config.wsdd : if needed
    • java sources : from WSDL
    • - *
    - * @author Guillaume sauthier - */ -public class EWSWsClientGenerator extends WsClientGenerator { - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_EWS_PREFIX); - - /** - * jonas-init-param name for client configuration file declaration - */ - private static final String CLIENT_CONFIG = "axis.clientConfigFile"; - - /** generated config file */ - private File generated = null; - - /** - * WEB-INF/ prefix - */ - private static final String WEB_PREFIX = "WEB-INF/"; - - /** - * I18n - */ - private static I18n i18n = I18n.getInstance(EWSWsClientGenerator.class); - - /** - * Creates a new AxisWsClientGenerator - * @param config Generator Configuration - * @param srd WebService Endpoint description - * @param ddm Web DD Modifier - * @param archive client archive containing WSDL - * @throws GenBaseException When instanciation fails - */ - public EWSWsClientGenerator(Config config, ServiceRefDesc srd, WsClientDDModifier ddm, Archive archive) - throws GenBaseException { - super(config, srd, ddm, archive); - } - - /** - * generate axis specific files - * @throws WsGenException if WSDL cannot be found in archive - */ - public void generate() throws WsGenException { - - // the source generation is possible only when a - // WSDL Definition is provided - // we need : - // - a: wsdl-file - // - b: jaxrpc-mapping-file - // - c: service-interface != javax.xml.rpc.Service - // - d: some port-component-ref - // = ((a && b) && (c || d)) - - boolean hasWSDL = getRef().getWsdlFileName() != null; - - if (hasWSDL) { - // classpath creation - J2EEArchive j2eeArchive = (J2EEArchive) getArchive(); - AbsModuleClassLoader cl = (AbsModuleClassLoader) j2eeArchive.getModuleClassloader(); - getConfig().setClasspath(getConfig().getClasspath() + cl.getClasspath()); - - try { - // WSDL + mapping file - FullEmitter wsEmitter = new FullEmitter(); - wsEmitter.setMappingFileInputStream(getRef().getMappingFileURL().openStream()); - JOnASClientGeneratorFactory factory = new JOnASClientGeneratorFactory(); - factory.setEmitter(wsEmitter); - - wsEmitter.setTypeMappingVersion("1.3"); - wsEmitter.setScope(Scope.REQUEST); - wsEmitter.setWrapArrays(true); - - // Classloader to use to check if classes are present before - // generating java classes - wsEmitter.setClassLoader(cl); - - wsEmitter.setFactory(factory); - //wsEmitter.setNowrap(true); - - wsEmitter.setJOnASWsContext(prepareJ2EEWebServicesContext(getRef())); - - wsEmitter.setOutputDir(this.getSources().getCanonicalPath()); - wsEmitter.setAllowInvalidURL(true); - - wsEmitter.run(getRef().getLocalWSDLURL().toExternalForm()); - - generated = new File(findClientConfigFile(wsEmitter.getGeneratedFileInfo())); - - getLogger().log(BasicLevel.INFO, "Web Services Classes successfully generated by EWS."); - getLogger().log(BasicLevel.INFO, - "Webservice client WSDD file '" + generated + "' sucessfully generated by EWS."); - } catch (Exception e) { - String err = getI18n().getMessage("EWSWsClientGenerator.generate.WSDL2Java", e.getMessage()); - logger.log(BasicLevel.ERROR, err, e); - throw new WsGenException(err, e); - } - - } - - } - - /** - * @param generatedFileInfo files generated by Axis - * @return Returns the first filename that matches "deploy-client-*.wsdd" - */ - private static String findClientConfigFile(GeneratedFileInfo generatedFileInfo) { - List generated = generatedFileInfo.getFileNames(); - boolean found = false; - String filename = null; - for (Iterator i = generated.iterator(); i.hasNext() && !found;) { - String entry = (String) i.next(); - // */deploy-client-*.wsdd - if (entry.matches(".*deploy-client-\\d+\\.wsdd$")) { - found = true; - filename = entry; - } - } - return filename; - } - - /** - * @param ref the ServiceRefDesc to be used in J2EE WS Context - * @return Returns a configured J2EEWebServiceContext - */ - private JOnASJ2EEWebServicesContext prepareJ2EEWebServicesContext(ServiceRefDesc ref) { - - JOnASJ2EEWebServicesContext wsCtx = new JOnASJ2EEWebServicesContext(); - ServiceReferenceContext sRefCtx = new ServiceReferenceContextImpl(); - sRefCtx.setServiceQName(ref.getServiceQName()); - - for (Iterator i = ref.getHandlerRefs().iterator(); i.hasNext();) { - HandlerDesc handler = (HandlerDesc) i.next(); - sRefCtx.addHandler(new JOnASWSCFHandler(handler)); - } - wsCtx.addServiceReferenceContext(sRefCtx); - return wsCtx; - } - - /** - * Add generated files in given archive - * @param archive archive where generated fils will be added. - * @throws WsGenException when files cannot be added - */ - public void addFiles(Archive archive) throws WsGenException { - if (archive instanceof WebApp) { - WebApp web = (WebApp) archive; - archive.addDirectoryIn("WEB-INF/classes/", getClasses()); - archive.addDirectoryIn("WEB-INF/sources/", getSources()); - - if (generated != null) { - archive.addFileIn("WEB-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - boolean jwaFileExists = getArchive().getContainedFiles().contains("WEB-INF/jonas-web.xml"); - boolean jwaDocumentExists = web.getDescriptors().containsKey("WEB-INF/jonas-web.xml"); - if (!(jwaFileExists || jwaDocumentExists)) { - // jonas-web.xml doesn't exists - createEmptyJonasWeb((J2EEArchive) archive); - } - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, WEB_PREFIX + generated.getName()); - } - } else if (archive instanceof EjbJar) { - archive.addDirectory(getClasses()); - - if (generated != null) { - archive.addFileIn("META-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, "META-INF/" + generated.getName()); - } - } else { - // We have a Client archive - Client client = (Client) archive; - archive.addDirectory(getClasses()); - - if (generated != null) { - archive.addFileIn("META-INF/", generated); - - // ensure the optionnal descriptor exists - if (!getModifier().hasJonasServiceRef()) { - boolean jcFileExists = getArchive().getContainedFiles().contains("META-INF/jonas-client.xml"); - boolean jcDocumentExists = client.getDescriptors().containsKey("META-INF/jonas-client.xml"); - if (!(jcFileExists || jcDocumentExists)) { - // jonas-client.xml doesn't exists - createEmptyJonasClient((J2EEArchive) archive); - } - Element jsr = getModifier().createJonasServiceRef(getRef().getServiceRefName()); - // update - getModifier().setElement(jsr); - - } - - // add init param - getModifier().addJonasInitParam(CLIENT_CONFIG, "META-INF/" + generated.getName()); - } - } - } - - /** - * Add an empty jonas-web.xml in given J2EEArchive. - * @param archive archive to be updated - */ - private void createEmptyJonasWeb(J2EEArchive archive) { - Document doc = XMLUtils.newJonasWeb(); - archive.getDescriptors().put("WEB-INF/jonas-web.xml", doc); - getModifier().setDocument(doc); - } - - /** - * Add an empty jonas-client.xml in given J2EEArchive. - * @param archive archive to be updated - */ - private void createEmptyJonasClient(J2EEArchive archive) { - Document doc = XMLUtils.newJonasClient(); - archive.getDescriptors().put("META-INF/jonas-client.xml", doc); - getModifier().setDocument(doc); - } - - /** - * @return Returns the i18n. - */ - public static I18n getI18n() { - return i18n; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsEndpointGenerator.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsEndpointGenerator.java deleted file mode 100644 index b89229700e..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/EWSWsEndpointGenerator.java +++ /dev/null @@ -1,251 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.generator.ews; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.ws.JaxRpcPortComponentDesc; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.generator.Config; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.WsEndpointGenerator; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.FullEmitter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.factory.JOnASEndpointGeneratorFactory; -import org.ow2.jonas.lib.loader.AbsModuleClassLoader; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.jonas.lib.util.Log; -import org.w3c.dom.NodeList; - -import org.apache.axis.constants.Scope; -import org.apache.axis.wsdl.toJava.GeneratedFileInfo; -import org.apache.ws.ews.mapper.J2eeGeneratorFactory; -import org.apache.ws.ews.mapper.context.JAXRPCMapperContext; - - - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Generate Axis specific config files for Endpoint - * @author Guillaume Sauthier - */ -public class EWSWsEndpointGenerator extends WsEndpointGenerator { - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_EWS_PREFIX); - - /** - * Axis Servlet classname - */ - private static final String AXIS_SERVLET_CLASS = "org.ow2.jonas.ws.axis.JAxisServlet"; - - /** - * init-param name for declaring server configuration file - */ - private static final String SERVER_CONFIG = "axis.serverConfigFile"; - - /** - * generated server-config file - */ - private File generatedServerConfig; - - /** - * I18n - */ - private static I18n i18n = I18n.getInstance(EWSWsClientGenerator.class); - - /** - * Creates a new AxisWsEndpointGenerator - * @param config Generator Configuration - * @param serviceDesc WebService Endpoint description - * @param ddm Web DD Modifier - * @param wsddm webservices.xml DD modifier - * @param arch base archive - * @throws GenBaseException When instanciation fails - */ - public EWSWsEndpointGenerator(Config config, ServiceDesc serviceDesc, WsEndpointDDModifier ddm, - WebServicesDDModifier wsddm, Archive arch) throws GenBaseException { - super(config, serviceDesc, ddm, wsddm, arch); - } - - /** - * Generate server side configuration file - * @throws WsGenException When generation fails - */ - public void generate() throws WsGenException { - - // 1. Generation of wsdd server file - String filename = null; - try { - FullEmitter emitter = new FullEmitter(); - - emitter.setWscontext(prepareJ2EEWebServicesContext(getService())); - emitter.setMappingFileInputStream(getService().getMappingFileURL().openStream()); - emitter.setOutputDir(this.getSources().getCanonicalPath()); - J2eeGeneratorFactory factory = new JOnASEndpointGeneratorFactory(); - factory.setEmitter(emitter); - emitter.setFactory(factory); - emitter.setTypeMappingVersion("1.3"); - emitter.setScope(Scope.REQUEST); - emitter.setWrapArrays(true); - - emitter.setServerSide(true); - emitter.run(getService().getLocalWSDLURL().toExternalForm()); - - generatedServerConfig = new File(findServerConfigFile(emitter.getGeneratedFileInfo())); - filename = generatedServerConfig.getName(); - getLogger().log(BasicLevel.INFO, - "Webservice endpoint WSDD file '" + filename + "' sucessfully generated by EWS."); - } catch (Exception e) { - String err = i18n.getMessage("EWSWsEndpointGenerator.generate.WSDL2Java", getService().getName(), e - .getMessage()); - logger.log(BasicLevel.ERROR, err, e); - throw new WsGenException(err, e); - } - - // 2. classpath creation - J2EEArchive j2eeArchive = (J2EEArchive) getArchive(); - AbsModuleClassLoader cl = (AbsModuleClassLoader) j2eeArchive.getModuleClassloader(); - getConfig().setClasspath(getConfig().getClasspath() + cl.getClasspath()); - - // 3. Remove existing servlets - // * remove the servlet used by the port (store security informations) - // * remove the associated servlet-mapping (store old url-pattern value) - for (Iterator i = getService().getPortComponents().iterator(); i.hasNext();) { - PortComponentDesc desc = (PortComponentDesc) i.next(); - - String urlPatternOld = null; - NodeList securityRoleRefs = null; - - // port-component linked to a servlet : - if (desc.hasJaxRpcImpl()) { - JaxRpcPortComponentDesc jax = (JaxRpcPortComponentDesc) desc; - - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Removing servlet '" + jax.getSibLink() + "'"); - } - - // remove servlet mapping - urlPatternOld = getModifier().removeServletMapping(jax.getSibLink()); - - // remove old servlet but pick up its security role refs - //getModifier().removeServlet(jax.getSibLink()); - securityRoleRefs = getModifier().removeServletWithSecurity(jax.getSibLink()); - } - - // in all case : - // create a servlet with all needed configuration - // and use our own - getModifier().addServlet(desc.getSibLink(), AXIS_SERVLET_CLASS); - getModifier().addServletParam(desc.getSibLink(), SERVER_CONFIG, filename); - getModifier().addServletParam(desc.getSibLink(), "axis.development.system", "true"); - - String mapping = null; - if (desc.getEndpointURI() != null) { - // simple style - mapping = desc.getEndpointURI(); - } else { - // old style - mapping = "/" + desc.getName() + "/*"; - } - getModifier().addServletMapping(desc.getSibLink(), mapping); - - if (desc.hasJaxRpcImpl()) { - // add the first element in the servletToSecurityRoleRefs map - // (currently consider that only one servlet with security - // constraints was removed !! - if there were more, keep the - // constraints of the last removed) - if (securityRoleRefs != null) { - getModifier().addServletSecurityRoleRefs(desc.getSibLink(), securityRoleRefs); - } - // update url-pattern - getModifier().updateSecurityConstraint(urlPatternOld, mapping); - } - } - } - - /** - * @param generatedFileInfo files generated by Axis - * @return Returns the first filename that matches "deploy-server-*.wsdd" - */ - private static String findServerConfigFile(GeneratedFileInfo generatedFileInfo) { - List generated = generatedFileInfo.getFileNames(); - boolean found = false; - String filename = null; - for (Iterator i = generated.iterator(); i.hasNext() && !found;) { - String entry = (String) i.next(); - // */deploy-server-*.wsdd - if (entry.matches(".*deploy-server-\\d+\\.wsdd$")) { - found = true; - filename = entry; - } - } - return filename; - } - - /** - * @param service the ServiceDesc to be used in J2EE WS Context - * @return Returns a configured J2EEWebServiceContext - */ - private JAXRPCMapperContext prepareJ2EEWebServicesContext(ServiceDesc service) { - JOnASJ2EEWebServicesContext ctx = new JOnASJ2EEWebServicesContext(); - ctx.setServiceDesc(service); - return ctx; - } - - /** - * Add generated files in given Archive - * @param archive WebApp archive - * @throws WsGenException When cannot add files in archive - */ - public void addFiles(Archive archive) throws WsGenException { - // archive must be a WebApp - if (!(archive instanceof WebApp)) { - String err = getI18n().getMessage("AxisWsEndpointGenerator.addFiles.illegal", archive.getRootFile()); - throw new IllegalArgumentException(err); - } - - WebApp web = (WebApp) archive; - web.addFileIn("WEB-INF/", generatedServerConfig); - - web.addDirectoryIn("WEB-INF/classes/", getClasses()); - web.addDirectoryIn("WEB-INF/sources/", getSources()); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/JOnASJ2EEWebServicesContext.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/JOnASJ2EEWebServicesContext.java deleted file mode 100644 index 44a21bd77d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/JOnASJ2EEWebServicesContext.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee; - -import java.util.List; -import java.util.Vector; - -import javax.ejb.EJBContext; - -import org.ow2.jonas.deployment.ws.ServiceDesc; - -import org.apache.ws.ews.context.webservices.client.ServiceReferenceContext; -import org.apache.ws.ews.context.webservices.server.WSCFContext; -import org.apache.ws.ews.mapper.context.JAXRPCMapperContext; - - - -/** - * JOnAS implementation of the J2EEWebServiceContext from EWS - * @author Guillaume Sauthier - */ -public class JOnASJ2EEWebServicesContext implements JAXRPCMapperContext { - - /** - * list of service-ref (for client) - */ - private List srCtx; - - /** - * service description (for endpoint) - */ - private ServiceDesc serviceDesc = null; - - /** - * Default constructor - */ - public JOnASJ2EEWebServicesContext() { - super(); - this.srCtx = new Vector(); - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#getWSCFContext() - */ - public WSCFContext getWSCFContext() { - return null; - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#setWSCFContext(org.apache.geronimo.ews.ws4j2ee.context.webservices.server.interfaces.WSCFContext) - */ - public void setWSCFContext(WSCFContext wscfcontext) { - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#getJAXRPCMappingContext() - */ - public JAXRPCMapperContext getJAXRPCMappingContext() { - return null; - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#setJAXRPCMappingContext(org.apache.geronimo.ews.ws4j2ee.context.JaxRpcMapperContext) - */ - public void setJAXRPCMappingContext(JAXRPCMapperContext context) { - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#validate() - */ - public void validate() { - } - - /** - * @return Returns the serviceDesc. - */ - public ServiceDesc getServiceDesc() { - return serviceDesc; - } - - /** - * @param serviceDesc The serviceDesc to set. - */ - public void setServiceDesc(ServiceDesc serviceDesc) { - this.serviceDesc = serviceDesc; - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#getEJBDDContext() - */ - public EJBContext getEJBDDContext() { - return null; - } - - /** - * @deprecated not used by JOnAS Implementation - * @inheritDoc - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#setEJBDDContext(org.apache.geronimo.ews.ws4j2ee.context.j2eeDD.EJBContext) - */ - public void setEJBDDContext(EJBContext context) { - } - - /** - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#getServiceReferanceContext(int) - */ - public ServiceReferenceContext getServiceReferenceContext(int index) { - return (ServiceReferenceContext) srCtx.get(index); - } - - /** - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#addServiceReferanceContext(org.apache.geronimo.ews.ws4j2ee.context.webservices.client.interfaces.ServiceReferanceContext) - */ - public void addServiceReferenceContext(ServiceReferenceContext context) { - srCtx.add(context); - } - - /** - * @see org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext#getServiceReferanceContextCount() - */ - public int getServiceReferenceContextCount() { - return srCtx.size(); - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/ServiceReferenceContextImpl.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/ServiceReferenceContextImpl.java deleted file mode 100644 index 2d4a33b698..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/ServiceReferenceContextImpl.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.ws.ews.context.webservices.client.ServiceReferenceContext; -import org.apache.ws.ews.context.webservices.server.WSCFHandler; - -/** - * Implementation of EWS ServiceReferenceContext for JOnAS. - * - * @author Guillaume Sauthier - */ -public class ServiceReferenceContextImpl implements ServiceReferenceContext { - - /** - * The service [to be used] QName - */ - private QName serviceQName = null; - - /** - * handlers to be applied for this service-ref - */ - private List handlers = null; - - /** - * Default constructor - */ - public ServiceReferenceContextImpl() { - super(); - handlers = new ArrayList(); - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#setServiceInterface(java.lang.String) - */ - public void setServiceInterface(String arg0) { - - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getServiceInterface() - */ - public String getServiceInterface() { - return null; - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getWsdlFile() - */ - public String getWsdlFile() { - return null; - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#setWsdlFile(java.lang.String) - */ - public void setWsdlFile(String arg0) { - - } - - /** - * Set the QName of the service to be used - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#setServiceQName(javax.xml.namespace.QName) - */ - public void setServiceQName(QName serviceQName) { - this.serviceQName = serviceQName; - } - - /** - * Returns the QName of the service to be used - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getServiceQName() - */ - public QName getServiceQName() { - return this.serviceQName; - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getJaxrpcMappingFile() - */ - public String getJaxrpcMappingFile() { - return null; - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#setJaxrpcMappingFile(java.lang.String) - */ - public void setJaxrpcMappingFile(String arg0) { - - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getServiceRefName() - */ - public String getServiceRefName() { - return null; - } - - /** - * @deprecated not used by JOnAS - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#setServiceRefName(java.lang.String) - */ - public void setServiceRefName(String arg0) { - - } - - /** - * Return the array of Handlers to be pplied for this service-ref - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#getHandlers() - */ - public WSCFHandler[] getHandlers() { - WSCFHandler[] handlersArray = new WSCFHandler[handlers.size()]; - return (WSCFHandler[]) handlers.toArray(handlersArray); - } - - /** - * Add a given handler to the list of applied handlers - * @param handler the added handler - * @see org.apache.ws.ews.context.webservices.client.ServiceReferenceContext#addHandler(org.apache.ws.ews.context.webservices.server.WSCFHandler) - */ - public void addHandler(WSCFHandler handler) { - this.handlers.add(handler); - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/FullEmitter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/FullEmitter.java deleted file mode 100644 index 4132d35253..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/FullEmitter.java +++ /dev/null @@ -1,128 +0,0 @@ -/** - * JOnAS : Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext; - -import org.apache.ws.ews.mapper.J2eeEmitter; - - -/** - * Allows to define more options like classloader. - * @author Florent Benoit - */ -public class FullEmitter extends J2eeEmitter implements JOnASWSEmitter { - - /** - * Classloader to use - */ - private ClassLoader classLoader = null; - - /** - * Generate bindings ? - */ - private boolean bindingGeneration = true; - - /** - * Generate Services ? - */ - private boolean serviceGeneration = true; - - /** - * Generate WSDDs ? - */ - private boolean deployGeneration = true; - - /** - * @return the classLoader. - */ - public ClassLoader getClassLoader() { - return classLoader; - } - - /** - * Set the classloader to use - * @param classLoader The classLoader to set. - */ - public void setClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader; - } - - /** - * @see org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter#getJOnASWsContext() - */ - public JOnASJ2EEWebServicesContext getJOnASWsContext() { - return (JOnASJ2EEWebServicesContext) getWscontext(); - } - - /** - * @see org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter#setJOnASWsContext(org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext) - */ - public void setJOnASWsContext(JOnASJ2EEWebServicesContext context) { - setWscontext(context); - } - - /** - * @see org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter#hasBindingGeneration() - */ - public boolean hasBindingGeneration() { - return bindingGeneration; - } - - /** - * @see org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter#hasServiceGeneration() - */ - public boolean hasServiceGeneration() { - return serviceGeneration; - } - - /** - * @see org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter#hasDeployGeneration() - */ - public boolean hasDeployGeneration() { - return deployGeneration; - } - - /** - * @param bg generate bindings on/off - */ - public void setBindingGeneration(boolean bg) { - bindingGeneration = bg; - } - - /** - * @param sg generate services on/off - */ - public void setServiceGeneration(boolean sg) { - serviceGeneration = sg; - } - - /** - * @param dg generate deploy files on/off - */ - public void setDeployGeneration(boolean dg) { - deployGeneration = dg; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/JOnASWSEmitter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/JOnASWSEmitter.java deleted file mode 100644 index 698811deda..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/emitter/JOnASWSEmitter.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext; - - -/** - * JOnAS interface for code Emitter - * @author Guillaume Sauthier - */ -public interface JOnASWSEmitter { - - /** - * @return Returns the Ws Context - */ - JOnASJ2EEWebServicesContext getJOnASWsContext(); - - /** - * @param context set the WS Context - */ - void setJOnASWsContext(JOnASJ2EEWebServicesContext context); - - /** - * @return true if needs to generate bindings - */ - boolean hasBindingGeneration(); - - /** - * @return true if needs to generate services - */ - boolean hasServiceGeneration(); - - /** - * @return true if needs to generate deploy files - */ - boolean hasDeployGeneration(); - - /** - * @return the classLoader. - */ - ClassLoader getClassLoader(); - - /** - * Set the classloader to use - * @param classLoader The classLoader to set. - */ - void setClassLoader(ClassLoader classLoader); -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASClientGeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASClientGeneratorFactory.java deleted file mode 100644 index 9fe3bff55d..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASClientGeneratorFactory.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.factory; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.Service; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.J2EEClientDeployWriter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.JOnASEWSBindingWriter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.JOnASEWSServiceWriter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.JOnASTypeWriter; - -import org.apache.axis.wsdl.gen.Generator; -import org.apache.axis.wsdl.gen.NoopGenerator; -import org.apache.axis.wsdl.symbolTable.BindingEntry; -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.symbolTable.TypeEntry; -import org.apache.ws.ews.mapper.J2eeGeneratorFactory; - - -/** - * JOnAS implementation of J2EEGeneratorFactory for the client side. - * @author Guillaume Sauthier - */ -public class JOnASClientGeneratorFactory extends J2eeGeneratorFactory { - - /** - * @see org.apache.geronimo.ews.jaxrpcmapping.J2eeGeneratorFactory#addDefinitionGenerators() - */ - protected void addDefinitionGenerators() { - // for faults - // Do not emit Faults - //addGenerator(Definition.class, JavaDefinitionWriter.class); - // for deploy.wsdd - addGenerator(Definition.class, J2EEClientDeployWriter.class); - } - - /** - * Use the JOnASServiceWriter instead of default JavaServiceWriter - * @param service wsdl:service - * @param symbolTable symbol Table - * @return Returns the JOnASServiceWriter - */ - public Generator getGenerator(Service service, SymbolTable symbolTable) { - Generator writer = new JOnASEWSServiceWriter(emitter, service, symbolTable); - ServiceEntry sEntry = symbolTable.getServiceEntry(service.getQName()); - serviceWriters.addStuff(writer, sEntry, symbolTable); - return serviceWriters; - } - - /** - * Use the JOnASServiceWriter instead of default JavaServiceWriter - * @param binding wsdl:binding - * @param symbolTable symbol Table - * @return Returns the JOnASJ2eeBindingWriter - */ - public Generator getGenerator(Binding binding, SymbolTable symbolTable) { - Generator writer = new JOnASEWSBindingWriter(emitter, binding, symbolTable); - BindingEntry bEntry = symbolTable.getBindingEntry(binding.getQName()); - bindingWriters.addStuff(writer, bEntry, symbolTable); - return bindingWriters; - } - - /** - * Since this Generator doesn't output anything else than - * deploy-server.wsdd, other generator are NoopGenerator. - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(javax.wsdl.PortType, - * org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(PortType portType, SymbolTable symbolTable) { - return new NoopGenerator(); - } - - /** - * Use the JOnASTypeWriter instead of default JavaTypeWriter - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(org.apache.axis.wsdl.symbolTable.TypeEntry, - * org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(TypeEntry type, SymbolTable symbolTable) { - Generator writer = new JOnASTypeWriter(emitter, type, symbolTable); - typeWriters.addStuff(writer, type, symbolTable); - return typeWriters; - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASEndpointGeneratorFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASEndpointGeneratorFactory.java deleted file mode 100644 index 546760a4a8..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/factory/JOnASEndpointGeneratorFactory.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.factory; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.Service; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.J2EEServerDeployWriter; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer.JOnASTypeWriter; - -import org.apache.axis.wsdl.gen.Generator; -import org.apache.axis.wsdl.gen.NoopGenerator; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.symbolTable.TypeEntry; -import org.apache.ws.ews.mapper.J2eeGeneratorFactory; - - - -/** - * JOnAS extension of the EWS J2EEGeneratorFactory that handles the jaxrpc mapping file. - * It only writes the deploy-server.wsdd ... - * @author Guillaume Sauthier - */ -public class JOnASEndpointGeneratorFactory extends J2eeGeneratorFactory { - - /** - * @see org.apache.geronimo.ews.jaxrpcmapping.J2eeGeneratorFactory#addDefinitionGenerators() - */ - protected void addDefinitionGenerators() { - addGenerator(Definition.class, J2EEServerDeployWriter.class); // for deploy.wsdd - } - - /** - * Since this Generator doesn't output anything else than deploy-server.wsdd, other generator are NoopGenerator. - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(javax.wsdl.Binding, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(Binding binding, SymbolTable symbolTable) { - return new NoopGenerator(); - } - - /** - * Since this Generator doesn't output anything else than deploy-server.wsdd, other generator are NoopGenerator. - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(javax.wsdl.PortType, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(PortType portType, SymbolTable symbolTable) { - return new NoopGenerator(); - } - - /** - * Since this Generator doesn't output anything else than deploy-server.wsdd, other generator are NoopGenerator. - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(javax.wsdl.Service, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(Service service, SymbolTable symbolTable) { - return new NoopGenerator(); - } - - /** - * Use the JOnASTypeWriter instead of default JavaTypeWriter - * @see org.apache.axis.wsdl.gen.GeneratorFactory#getGenerator(org.apache.axis.wsdl.symbolTable.TypeEntry, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - public Generator getGenerator(TypeEntry type, SymbolTable symbolTable) { - Generator writer = new JOnASTypeWriter(emitter, type, symbolTable); - typeWriters.addStuff(writer, type, symbolTable); - return typeWriters; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEClientDeployWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEClientDeployWriter.java deleted file mode 100644 index 163e17f988..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEClientDeployWriter.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Iterator; -import java.util.List; - -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.wsdl.extensions.UnknownExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.xml.namespace.QName; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.wscf.JOnASWSCFHandler; - -import org.apache.axis.Constants; -import org.apache.axis.constants.Style; -import org.apache.axis.constants.Use; -import org.apache.axis.utils.Messages; -import org.apache.axis.wsdl.symbolTable.BindingEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.Utils; -import org.apache.ws.ews.context.webservices.client.ServiceReferenceContext; -import org.apache.ws.ews.context.webservices.server.WSCFHandler; -import org.apache.ws.ews.context.webservices.server.WSCFInitParam; -import org.apache.ws.ews.context.webservices.server.WSCFSOAPHeader; - - -/** - * This is Wsdl2java's deploy Writer. It writes the deploy.wsdd file. - * Based on J2eeDeployWriter from Ias - * (http://cvs.apache.org/viewcvs.cgi/ws-axis/contrib/ews/src/org/apache/geronimo/ews/ws4j2ee/toWs/ws/J2eeDeployWriter.java?rev=1.13&view=markup) - */ -public class J2EEClientDeployWriter extends JOnASDeployWriter { - - /** - * WSDD Extension prefix - */ - private static final String WSDD_PREFIX = "deploy-client-"; - - /** - * Constructor. - * @param emitter J2eeEmitter - * @param definition wsdl:definition - * @param symbolTable SymbolTable - */ - public J2EEClientDeployWriter(Emitter emitter, Definition definition, SymbolTable symbolTable) { - super(emitter, definition, symbolTable); - } - - /** - * Generate deploy.wsdd. Only generate it if the emitter is generating - * server-side mappings. - * @throws IOException When generation fails - */ - public void generate() throws IOException { - - if (!emitter.isServerSide()) { - super.generate(); - } - } - - /** - * Write out deployment and undeployment instructions for each WSDL service - * @param pw PrintWriter - * @throws IOException IOException - */ - protected void writeDeployServices(PrintWriter pw) throws IOException { - - int sRefIndex = getJonasWSContext().getServiceReferenceContextCount(); - // should only have 1 service-ref - if (sRefIndex == 1) { - - ServiceReferenceContext ctx = getJonasWSContext().getServiceReferenceContext(0); - QName desiredServiceQName = ctx.getServiceQName(); - - Service myService = getDefinition().getService(desiredServiceQName); - - // Generate only if there is a Service - if (myService != null) { - pw.println(); - pw.println(" "); - pw.println(); - - for (Iterator portIterator = myService.getPorts().values().iterator(); portIterator.hasNext();) { - Port myPort = (Port) portIterator.next(); - BindingEntry bEntry = getSymbolTable().getBindingEntry(myPort.getBinding().getQName()); - - // If this isn't an SOAP binding, skip it - if (bEntry.getBindingType() != BindingEntry.TYPE_SOAP) { - continue; - } - - writeDeployPort(pw, myPort, bEntry, ctx); - } - } - } - } - - /** - * Write out deployment and undeployment instructions for given WSDL port - * @param pw PrintWriter - * @param port wsdl:port - * @param bEntry Axis BindingEntry - * @param ctx ServiceReferanceContext - */ - protected void writeDeployPort(PrintWriter pw, Port port, BindingEntry bEntry, ServiceReferenceContext ctx) { - - String serviceName = port.getName(); - boolean hasLiteral = bEntry.hasLiteral(); - boolean hasMIME = Utils.hasMIME(bEntry); - - - Use use = Use.DEFAULT; - String styleStr = ""; - Iterator iterator = bEntry.getBinding().getExtensibilityElements().iterator(); - - // iterate throught extensibilityElements of given Port's Binding - while (iterator.hasNext()) { - Object obj = iterator.next(); - - if (obj instanceof SOAPBinding) { - use = Use.ENCODED; - } else if (obj instanceof UnknownExtensibilityElement) { - - // TODO After WSDL4J supports soap12, change this code - UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement) obj; - QName name = unkElement.getElementType(); - - if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) && name.getLocalPart().equals("binding")) { - use = Use.ENCODED; - } - } - } - - if (getSymbolTable().isWrapped()) { - styleStr = " style=\"" + Style.WRAPPED + "\""; - use = Use.LITERAL; - } else { - styleStr = " style=\"" + bEntry.getBindingStyle().getName() + "\""; - if (hasLiteral) { - use = Use.LITERAL; - } - } - - String useStr = " use=\"" + use + "\""; - - pw.println(" "); - - // MIME attachments don't work with multiref, so turn it off. - if (hasMIME) { - pw.println(" "); - } - // force JAXRPC 1.1 Type Mapping - pw.println(" "); - - //writeDeployBinding(pw, bEntry); - writeDeployTypes(pw, bEntry.getBinding(), hasLiteral, hasMIME, use); - - WSCFHandler[] handlers = ctx.getHandlers(); - if (handlers != null && handlers.length != 0) { - pw.println(" "); - for (int i = 0; i < handlers.length; i++) { - writeHandlerForPort(pw, (JOnASWSCFHandler) handlers[i], port); - } - pw.println(" "); - } - pw.println(" "); - } - - /** - * Writes out a client-side handler - * @param pw PrintWriter - * @param handler EWS Handler description - * @param port wsdl:port - */ - private void writeHandlerForPort(PrintWriter pw, JOnASWSCFHandler handler, Port port) { - - /** - * If handler contains no port-names, add the handler - * else, check if the handler is applied to the current port - */ - List ports = handler.getPortNames(); - if (ports.isEmpty()) { - // handler applied for all ports - writeHandler(pw, handler); - } else if (ports.contains(port.getName())) { - // handler applied for current port - writeHandler(pw, handler); - } - } - /** - * Writes out a client-side handler - * @param pw PrintWriter - * @param handler EWS Handler description - */ - private void writeHandler(PrintWriter pw, JOnASWSCFHandler handler) { - - pw.println(" "); - WSCFInitParam[] param = handler.getInitParam(); - for (int i = 0; i < param.length; i++) { - pw.println(" "); - } - WSCFSOAPHeader[] headers = handler.getSoapHeader(); - for (int i = 0; i < headers.length; i++) { - pw.println("
    "); - } - pw.println(" "); - String[] roles = handler.getSoapRole(); - for (int i = 0; i < roles.length; i++) { - pw.println(" "); - } - } - - /** - * @return Returns the filename prefix - */ - protected String getPrefix() { - return WSDD_PREFIX; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEServerDeployWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEServerDeployWriter.java deleted file mode 100644 index 4e4ee0079a..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/J2EEServerDeployWriter.java +++ /dev/null @@ -1,388 +0,0 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.BindingOperation; -import javax.wsdl.Definition; -import javax.wsdl.Operation; -import javax.wsdl.OperationType; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.wsdl.extensions.UnknownExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.HandlerDesc; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.SSBPortComponentDesc; -import org.ow2.jonas.deployment.ws.ServiceDesc; - -import org.apache.axis.Constants; -import org.apache.axis.constants.Scope; -import org.apache.axis.constants.Style; -import org.apache.axis.constants.Use; -import org.apache.axis.deployment.wsdd.WSDDConstants; -import org.apache.axis.utils.JavaUtils; -import org.apache.axis.utils.Messages; -import org.apache.axis.wsdl.symbolTable.BindingEntry; -import org.apache.axis.wsdl.symbolTable.Parameters; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.Utils; - - - -/** - * This is Wsdl2java's deploy Writer. It writes the server-deploy-XX.wsdd file. - * Based on J2eeDeployWriter from Ias - * (http://cvs.apache.org/viewcvs.cgi/ws-axis/contrib/ews/src/org/apache/geronimo/ews/ws4j2ee/toWs/ws/J2eeDeployWriter.java?rev=1.13&view=markup) - */ -public class J2EEServerDeployWriter extends JOnASDeployWriter { - - /** - * WSDD Extension prefix - */ - private static final String WSDD_PREFIX = "deploy-server-"; - - /** - * Axis parameter name for SE interface name - */ - private static final String SERVICE_ENDPOINT_INTERFACE_NAME = "serviceEndpointInterfaceName"; - - /** - * Axis parameter name for SE jndi name - */ - private static final String SERVICE_ENDPOINT_JNDI_NAME = "serviceEndpointJndiName"; - - /** - * Constructor. - * @param emitter J2EEEmitter - * @param definition Definition - * @param symbolTable SymbolTable - */ - public J2EEServerDeployWriter(Emitter emitter, Definition definition, SymbolTable symbolTable) { - super(emitter, definition, symbolTable); - } // ctor - - /** - * Write out deployment and undeployment instructions for each WSDL service - * @param pw PrintWriter - * @throws IOException when services cannot be created - */ - protected void writeDeployServices(PrintWriter pw) throws IOException { - - // deploy the ports on each service - Map serviceMap = getDefinition().getServices(); - ServiceDesc desc = getJonasWSContext().getServiceDesc(); - - for (Iterator mapIterator = serviceMap.values().iterator(); mapIterator.hasNext();) { - Service myService = (Service) mapIterator.next(); - - pw.println(); - pw.println(" "); - pw.println(); - - for (Iterator portIterator = myService.getPorts().values().iterator(); portIterator.hasNext();) { - Port myPort = (Port) portIterator.next(); - BindingEntry bEntry = getSymbolTable().getBindingEntry(myPort.getBinding().getQName()); - - // If this isn't an SOAP binding, skip it - if (bEntry.getBindingType() != BindingEntry.TYPE_SOAP) { - continue; - } - - PortComponentDesc portDesc = findPortComponentDesc(desc, myPort); - - if (portDesc != null) { - // write ports described by the current ServiceDesc - writeDeployPort(pw, myService, bEntry, portDesc); - } - } - } - } // writeDeployServices - - /** - * @param desc JOnAS Service Description - * @param myPort wsdl:port - * @return Returns the JOnAS PortComponentDesc associated with the given wsdl:port - */ - private static PortComponentDesc findPortComponentDesc(ServiceDesc desc, Port myPort) { - - PortComponentDesc port = null; - List ports = desc.getPortComponents(); - for (Iterator i = ports.iterator(); i.hasNext() && port == null;) { - PortComponentDesc pcd = (PortComponentDesc) i.next(); - if (pcd.getQName().getLocalPart().equals(myPort.getName())) { - port = pcd; - } - } - return port; - } - - /** - * Write out deployment and undeployment instructions for given WSDL port - * @param pw PrintWriter - * @param service wsdl:service - * @param bEntry BindingEntry - * @param portComponentDesc JOnAS Port representation - * @throws IOException IOException - */ - protected void writeDeployPort(PrintWriter pw, Service service, BindingEntry bEntry, - PortComponentDesc portComponentDesc) throws IOException { - - String serviceName = portComponentDesc.getServiceName(); - boolean hasLiteral = bEntry.hasLiteral(); - boolean hasMIME = Utils.hasMIME(bEntry); - String prefix = WSDDConstants.NS_PREFIX_WSDD_JAVA; - String styleStr = ""; - Iterator iterator = bEntry.getBinding().getExtensibilityElements().iterator(); - - // iterate throught extensibilityElements of given Port's Binding - while (iterator.hasNext()) { - Object obj = iterator.next(); - - if (obj instanceof SOAPBinding) { - use = Use.ENCODED; - } else if (obj instanceof UnknownExtensibilityElement) { - - // TODO After WSDL4J supports soap12, change this code - UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement) obj; - QName name = unkElement.getElementType(); - - if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) && name.getLocalPart().equals("binding")) { - use = Use.ENCODED; - } - } - } - - if (getSymbolTable().isWrapped()) { - styleStr = " style=\"" + Style.WRAPPED + "\""; - use = Use.LITERAL; - } else { - styleStr = " style=\"" + bEntry.getBindingStyle().getName() + "\""; - - if (hasLiteral) { - use = Use.LITERAL; - } - } - - String useStr = " use=\"" + use + "\""; - - if (portComponentDesc.hasBeanImpl()) { - pw.println(" "); - - SSBPortComponentDesc ssbPCD = (SSBPortComponentDesc) portComponentDesc; - - pw.println(" "); - pw.println(" "); - - } else { - pw.println(" "); - pw.println(" "); - - } - - pw.println(" "); - pw.println(" "); - pw.println(" "); - - // MIME attachments don't work with multiref, so turn it off. - if (hasMIME) { - pw.println(" "); - } - - writeDeployBinding(pw, bEntry); - writeDeployTypes(pw, bEntry.getBinding(), hasLiteral, hasMIME, use); - - List handlers = portComponentDesc.getHandlers(); - if (!handlers.isEmpty()) { - pw.println(" "); - for (Iterator i = handlers.iterator(); i.hasNext();) { - writeHandler(pw, (HandlerDesc) i.next()); - } - pw.println(" "); - } - pw.println(" "); - } - - /** - * Write out deployment instructions for given WSDL binding - * @param pw PrintWriter - * @param bEntry BindingEntry - * @throws IOException IOException - */ - protected void writeDeployBinding(PrintWriter pw, BindingEntry bEntry) throws IOException { - - Binding binding = bEntry.getBinding(); - - pw.println(" "); - // force JAXRPC 1.1 Type Mapping - pw.println(" "); - - HashSet allowedMethods = new HashSet(); - - if (!emitter.isSkeletonWanted()) { - Iterator operationsIterator = binding.getBindingOperations().iterator(); - - for (; operationsIterator.hasNext();) { - BindingOperation bindingOper = (BindingOperation) operationsIterator.next(); - Operation operation = bindingOper.getOperation(); - OperationType type = operation.getStyle(); - String javaOperName = JavaUtils.xmlNameToJava(operation.getName()); - - // These operation types are not supported. The signature - // will be a string stating that fact. - if ((type == OperationType.NOTIFICATION) || (type == OperationType.SOLICIT_RESPONSE)) { - continue; - } - - allowedMethods.add(javaOperName); - - // We pass "" as the namespace argument because we're just - // interested in the return type for now. - Parameters params = getSymbolTable().getOperationParameters(operation, "", bEntry); - - if (params != null) { - - // Get the operation QName - QName elementQName = Utils.getOperationQName(bindingOper, bEntry, getSymbolTable()); - - // Get the operation's return QName and type - QName returnQName = null; - QName returnType = null; - - if (params.returnParam != null) { - returnQName = params.returnParam.getQName(); - returnType = Utils.getXSIType(params.returnParam); - } - - // Get the operations faults - Map faultMap = bEntry.getFaults(); - ArrayList faults = null; - - if (faultMap != null) { - faults = (ArrayList) faultMap.get(bindingOper); - } - - String soapAction = Utils.getOperationSOAPAction(bindingOper); - - // Write the operation metadata - writeOperation(pw, javaOperName, elementQName, returnQName, returnType, params, faults, soapAction); - } - } - } - - pw.print(" "); - } else { - boolean first = true; - - for (Iterator i = allowedMethods.iterator(); i.hasNext();) { - String method = (String) i.next(); - - if (first) { - pw.print(method); - - first = false; - } else { - pw.print(" " + method); - } - } - - pw.println("\"/>"); - } - - Scope scope = emitter.getScope(); - - if (scope != null) { - pw.println(" "); - } - } - - /** - * @param pw PrintWriter - * @param handler the server Handler to write - */ - protected void writeHandler(PrintWriter pw, HandlerDesc handler) { - pw.println(" "); - Map params = handler.getInitParams(); - for (Iterator i = params.keySet().iterator(); i.hasNext();) { - String pName = (String) i.next(); - pw.println(" "); - } - List headers = handler.getSOAPHeaders(); - for (Iterator i = headers.iterator(); i.hasNext();) { - QName sh = (QName) i.next(); - pw.println("
    "); - } - pw.println(" "); - List roles = handler.getSOAPRoles(); - for (Iterator i = roles.iterator(); i.hasNext();) { - String role = (String) i.next(); - pw.println(" "); - } - } - - /** - * @return Returns "deploy-server-" - */ - protected String getPrefix() { - return WSDD_PREFIX; - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASDeployWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASDeployWriter.java deleted file mode 100644 index 016b2af661..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASDeployWriter.java +++ /dev/null @@ -1,558 +0,0 @@ -/* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import javax.wsdl.Binding; -import javax.wsdl.Definition; -import javax.wsdl.OperationType; -import javax.xml.namespace.QName; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.JOnASJ2EEWebServicesContext; -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter; - -import org.apache.axis.deployment.wsdd.WSDDConstants; -import org.apache.axis.constants.Use; -import org.apache.axis.utils.Messages; -import org.apache.axis.wsdl.symbolTable.FaultInfo; -import org.apache.axis.wsdl.symbolTable.Parameter; -import org.apache.axis.wsdl.symbolTable.Parameters; -import org.apache.axis.wsdl.symbolTable.SchemaUtils; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.symbolTable.TypeEntry; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaWriter; -import org.apache.axis.wsdl.toJava.Utils; - - - -/** - * JOnAS Base DeployWriter. It's a placeholder for commonly used methods and fields. - * @author Guillaume Sauthier - * Based on J2eeDeployWriter from Ias - * (http://cvs.apache.org/viewcvs.cgi/ws-axis/contrib/ews/src/org/apache/geronimo/ews/ws4j2ee/toWs/ws/J2eeDeployWriter.java?rev=1.13&view=markup) - */ -public abstract class JOnASDeployWriter extends JavaWriter { - - /** - * JOnASJ2EEWebServicesContext storing JOnAS specific info. - */ - private JOnASJ2EEWebServicesContext jonasWSContext; - - /** - * WSDD Extension suffix - */ - protected static final String WSDD_SUFFIX = ".wsdd"; - - /** - * count generated files - */ - private static int count = 0; - - /** - * Definition base used to write deploy file - */ - private Definition definition = null; - - /** - * Symbol Table to use - */ - private SymbolTable symbolTable = null; - - /** Field use */ - protected Use use = Use.DEFAULT; - - /** - * Constructor. - * @param emitter J2EE Emitter - * @param definition Current Definition - * @param symbolTable SymbolTable - */ - public JOnASDeployWriter(Emitter emitter, Definition definition, SymbolTable symbolTable) { - - super(emitter, "deploy"); - this.definition = definition; - this.symbolTable = symbolTable; - if (emitter instanceof JOnASWSEmitter) { - this.jonasWSContext = ((JOnASWSEmitter) emitter).getJOnASWsContext(); - } - if (jonasWSContext == null) { - throw new RuntimeException("jonasWSContext can not be null"); - } - } - - /** - * @return Returns the fully-qualified name of the deploy.wsdd file to be generated. - */ - protected String getFileName() { - // put directly in "output" directory - String dir = emitter.getNamespaces().getAsDir(""); - return dir + getPrefix() + getCount() + WSDD_SUFFIX; - } - - /** - * Replace the default file header with the deployment doc file header. - * - * @param pw PrintWriter where descriptor has to be written - * @throws IOException not thrown - */ - protected void writeFileHeader(PrintWriter pw) throws IOException { - - pw.println(Messages.getMessage("deploy00")); - pw.println(Messages.getMessage("deploy02")); - pw.println(Messages.getMessage("deploy03")); - pw.println(Messages.getMessage("deploy05")); - pw.println(Messages.getMessage("deploy06")); - pw.println(Messages.getMessage("deploy07")); - pw.println(Messages.getMessage("deploy09")); - pw.println(); - pw.println(""); - } - - /** - * Write the body of the deploy.wsdd file. - * - * @param pw PrintWriter - * @throws IOException thrown by writeDeployServices - */ - protected void writeFileBody(PrintWriter pw) throws IOException { - writeDeployServices(pw); - pw.println(""); - } - - /** - * @return Returns the filename prefix. - */ - protected abstract String getPrefix(); - - /** - * Writes te list of wsdd:service - * @param pw PrintWriter - * @throws IOException implementation may throw IOException - */ - protected abstract void writeDeployServices(PrintWriter pw) throws IOException; - - /** - * Raw routine that writes out the typeMapping. - * @param pw PrintWriter - * @param namespaceURI xml type namespace - * @param localPart xml type localpart - * @param javaType java classname - * @param serializerFactory java serializer factory classname - * @param deserializerFactory java deserializer factory classname - * @param encodingStyle encoding style - */ - protected void writeTypeMapping(PrintWriter pw, String namespaceURI, String localPart, String javaType, - String serializerFactory, String deserializerFactory, String encodingStyle) { - - pw.println(" "); - } - - /** - * Raw routine that writes out the operation and parameters. - * - * @param pw PrintWriter - * @param javaOperName java method name - * @param elementQName wsdl operation qname - * @param returnQName wsdl return type qname - * @param returnType java return type classname ? - * @param params list of params used by this operation - * @param faults list of faults thrown by this operation - * @param soapAction soapAction value - */ - protected void writeOperation(PrintWriter pw, String javaOperName, - QName elementQName, QName returnQName, - QName returnType, Parameters params, - ArrayList faults, String soapAction) { - - pw.print(" "); - - Vector paramList = params.list; - - for (int i = 0; i < paramList.size(); i++) { - Parameter param = (Parameter) paramList.elementAt(i); - - // Get the parameter name QName and type QName - QName paramQName = param.getQName(); - QName paramType = Utils.getXSIType(param); - - pw.print(" "); - } - - if (faults != null) { - for (Iterator iterator = faults.iterator(); iterator.hasNext();) { - FaultInfo faultInfo = (FaultInfo) iterator.next(); - QName faultQName = faultInfo.getQName(); - - if (faultQName != null) { - String className = - Utils.getFullExceptionName(faultInfo.getMessage(), - symbolTable); - - pw.print(" "); - } - } - } - - pw.println(" "); - } - - /** - * Write out bean mappings for each type - * @param pw PrintWriter - * @param binding wsdl:binding - * @param hasLiteral has a literal type ? - * @param hasMIME has MIME type ? - * @param use Use - */ - protected void writeDeployTypes(PrintWriter pw, Binding binding, boolean hasLiteral, boolean hasMIME, Use use) { - - pw.println(); - - if (hasMIME) { - QName bQName = binding.getQName(); - - writeTypeMapping(pw, bQName.getNamespaceURI(), "DataHandler", "javax.activation.DataHandler", - "org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory", - "org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory", use.getEncoding()); - } - - boolean useJAF = false; - - Map types = getSymbolTable().getTypeIndex(); - Collection typeCollection = types.values(); - for (Iterator i = typeCollection.iterator(); i.hasNext();) { - TypeEntry type = (TypeEntry) i.next(); - - // Note this same check is repeated in JavaStubWriter. - boolean process = true; - - // 1) Don't register types we shouldn't - if (!Utils.shouldEmit(type)) { - process = false; - } - - if (process) { - String namespaceURI = type.getQName().getNamespaceURI(); - String localPart = type.getQName().getLocalPart(); - String javaType = type.getName(); - String serializerFactory; - String deserializerFactory; - String encodingStyle = ""; - QName innerType = null; - - if (!hasLiteral) { - encodingStyle = use.getEncoding(); - } - - if (javaType.endsWith("[]")) { - if (SchemaUtils.isListWithItemType(type.getNode())) { - serializerFactory = "org.apache.axis.encoding.ser.SimpleListSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.SimpleListDeserializerFactory"; - } else { - serializerFactory = "org.apache.axis.encoding.ser.ArraySerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.ArrayDeserializerFactory"; - innerType = type.getComponentType(); - } - } else if ((type.getNode() != null) - && (Utils.getEnumerationBaseAndValues(type.getNode(), getSymbolTable()) != null)) { - serializerFactory = "org.apache.axis.encoding.ser.EnumSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.EnumDeserializerFactory"; - } else if (type.isSimpleType()) { - serializerFactory = "org.apache.axis.encoding.ser.SimpleSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.SimpleDeserializerFactory"; - } else if (type.getBaseType() != null) { - serializerFactory = "org.apache.axis.encoding.ser.SimpleSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.SimpleDeserializerFactory"; - } else { - serializerFactory = "org.apache.axis.encoding.ser.BeanSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.BeanDeserializerFactory"; - } - - List jafType = new Vector(); - jafType.add("java.awt.Image"); - jafType.add("javax.xml.transform.Source"); - jafType.add("javax.mail.internet.MimeMultipart"); - if (jafType.contains(javaType)) { - serializerFactory = "org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"; - deserializerFactory = "org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory"; - useJAF = true; - } - - if (innerType == null) { - // no arrays - writeTypeMapping(pw, namespaceURI, localPart, javaType, - serializerFactory, deserializerFactory, - encodingStyle); - } else { - // arrays - writeArrayTypeMapping(pw, namespaceURI, localPart, javaType, - encodingStyle, innerType); - } - } - } - - if (useJAF) { - // mime don't work with ref - pw.println(" "); - } - } - - - /** - * Raw routine that writes out the arrayMapping. - * @param pw PrintWriter - * @param namespaceURI xml type namespace - * @param localPart xml type localpart - * @param javaType java classname - * @param encodingStyle encoding style - * @param innerType array component type QName - */ - protected void writeArrayTypeMapping( - PrintWriter pw, String namespaceURI, String localPart, String javaType, String encodingStyle, QName innerType) { - - pw.println(" "); - } - - /** - * Method getModeString - * - * @param mode Parameter mode (IN, INOUT, OUT) - * @return Parameter Mode String representation - */ - public String getModeString(byte mode) { - - if (mode == Parameter.IN) { - return "IN"; - } else if (mode == Parameter.INOUT) { - return "INOUT"; - } else { - return "OUT"; - } - } - - /** - * Method getPrintWriter - * @param filename file to open - * @return Returns the printWriter for the file - * @throws IOException When File cannot be open/written - */ - protected PrintWriter getPrintWriter(String filename) throws IOException { - - File file = new File(filename); - File parent = new File(file.getParent()); - - parent.mkdirs(); - - FileOutputStream out = new FileOutputStream(file); - OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8"); - - return new PrintWriter(writer); - } - - /** - * @return Returns the count. - */ - public static int getCount() { - return count++; - } - - /** - * @return Returns the definition. - */ - public Definition getDefinition() { - return definition; - } - - /** - * @return Returns the jonasWSContext. - */ - public JOnASJ2EEWebServicesContext getJonasWSContext() { - return jonasWSContext; - } - - /** - * @return Returns the symbolTable. - */ - public SymbolTable getSymbolTable() { - return symbolTable; - } - - /** - * Store operation type String representation - */ - private static Map mepStrings = new HashMap(); - static { - mepStrings.put(OperationType.REQUEST_RESPONSE, "request-response"); - mepStrings.put(OperationType.ONE_WAY, "oneway"); - } - - /** - * @param mep OperationType - * @return Returns the String representation of this type - */ - private String getMepString(OperationType mep) { - return (String) mepStrings.get(mep); - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSBindingWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSBindingWriter.java deleted file mode 100644 index e603255d0f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSBindingWriter.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import javax.wsdl.Binding; - -import org.apache.axis.wsdl.gen.Generator; -import org.apache.axis.wsdl.symbolTable.BindingEntry; -import org.apache.axis.wsdl.symbolTable.PortTypeEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.ws.ews.mapper.J2eeBindingWriter; -import org.apache.ws.ews.mapper.J2eeEmitter; - - -/** - * Extends EWS J2eeBindingWriter to generate port interface only when needed. - * @author Guillaume Sauthier - */ -public class JOnASEWSBindingWriter extends J2eeBindingWriter implements Generator { - - /** - * @param emitter J2eeEmitter - * @param binding wsdl:binding containing port-interface infos - * @param st Entry table - */ - public JOnASEWSBindingWriter(J2eeEmitter emitter, Binding binding, SymbolTable st) { - super(emitter, binding, st); - } - - /** - * @see org.apache.geronimo.ews.jaxrpcmapping.J2eeBindingWriter#getJavaInterfaceWriter(org.apache.geronimo.ews.jaxrpcmapping.J2eeEmitter, org.apache.axis.wsdl.symbolTable.PortTypeEntry, org.apache.axis.wsdl.symbolTable.BindingEntry, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - protected Generator getJavaInterfaceWriter(J2eeEmitter emitter, PortTypeEntry ptEntry, BindingEntry bEntry, SymbolTable st) { - ClassLoader cl = ((org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter) emitter).getClassLoader(); - try { - cl.loadClass(ptEntry.getName()); - } catch (ClassNotFoundException cnfe) { - // class not available, generate it - return super.getJavaInterfaceWriter(emitter, ptEntry, bEntry, symbolTable); - } - return null; - } - - /** - * @see org.apache.geronimo.ews.jaxrpcmapping.J2eeBindingWriter#getJavaImplWriter(org.apache.geronimo.ews.jaxrpcmapping.J2eeEmitter, org.apache.axis.wsdl.symbolTable.BindingEntry, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - protected Generator getJavaImplWriter(J2eeEmitter arg0, BindingEntry arg1, - SymbolTable arg2) { - return null; - } - - /** - * @see org.apache.geronimo.ews.jaxrpcmapping.J2eeBindingWriter#getJavaSkelWriter(org.apache.geronimo.ews.jaxrpcmapping.J2eeEmitter, org.apache.axis.wsdl.symbolTable.BindingEntry, org.apache.axis.wsdl.symbolTable.SymbolTable) - */ - protected Generator getJavaSkelWriter(J2eeEmitter arg0, BindingEntry arg1, - SymbolTable arg2) { - return null; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceImplWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceImplWriter.java deleted file mode 100644 index ab0b69c38c..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceImplWriter.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceImplWriter; - - -/** - * ServiceImplWriter that substitues Axis' Service implementation with our own. - * - * @author Guillaume Sauthier - */ -public class JOnASEWSServiceImplWriter extends JavaServiceImplWriter { - - /** - * Constructor. - * - * @param emitter JOnASEmitter - * @param sEntry ServiceEntry - * @param symbolTable SymbolTable - */ - public JOnASEWSServiceImplWriter(Emitter emitter, ServiceEntry sEntry, SymbolTable symbolTable) { - super(emitter, sEntry, symbolTable); - } - - /** - * @return Returns "extends org.ow2.jonas.ws.axis.JService ". - */ - protected String getExtendsText() { - return "extends org.ow2.jonas.ws.axis.JService "; - } // getExtendsText - - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceIntfWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceIntfWriter.java deleted file mode 100644 index 8c2b8f1b85..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceIntfWriter.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceIfaceWriter; - - -/** - * Used for service interface generation. - * The super class has protected constructor, so redefine it. - * @author Florent Benoit - */ -public class JOnASEWSServiceIntfWriter extends JavaServiceIfaceWriter { - - /** - * Constructor. - * @param emitter JOnASEmitter - * @param sEntry ServiceEntry - * @param symbolTable SymbolTable - */ - public JOnASEWSServiceIntfWriter(Emitter emitter, ServiceEntry sEntry, SymbolTable symbolTable) { - super(emitter, sEntry, symbolTable); - } - - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceWriter.java deleted file mode 100644 index 79afc96611..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASEWSServiceWriter.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import javax.wsdl.Service; - -import org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.emitter.JOnASWSEmitter; - -import org.apache.axis.wsdl.symbolTable.ServiceEntry; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaServiceWriter; - -/** - * This is JOnASWsdl2java's Service Writer. It writes the following files, as - * appropriate: .java, Locator.java. - */ -public class JOnASEWSServiceWriter extends JavaServiceWriter { - - /** - * Constructor. - * @param emitter JOnASEmitter - * @param service Service - * @param symbolTable SymbolTable - */ - public JOnASEWSServiceWriter(Emitter emitter, Service service, SymbolTable symbolTable) { - super(emitter, service, symbolTable); - } // ctor - - /** - * setGenerators - * Logic to set the generators that are based on the Service. - * This logic was moved from the constructor so extended interfaces - * can more effectively use the hooks. - */ - protected void setGenerators() { - ServiceEntry sEntry = symbolTable.getServiceEntry(service.getQName()); - - if (sEntry.isReferenced()) { - serviceIfaceWriter = null; - testCaseWriter = null; - // Write service interface if : - // - class is not available - // - emitter is not a J2eeEmitter (for backward compliance) - if (emitter instanceof JOnASWSEmitter) { - ClassLoader cl = ((JOnASWSEmitter) emitter).getClassLoader(); - String className = sEntry.getName(); - try { - cl.loadClass(className); - } catch (ClassNotFoundException cnfe) { - // class not available, generate it - serviceIfaceWriter = new JOnASEWSServiceIntfWriter(emitter, sEntry, symbolTable); - } - } - - // overwrite Axis Writer - serviceImplWriter = new JOnASEWSServiceImplWriter(emitter, sEntry, symbolTable); - } - } -} // class JOnASServiceWriter diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASTypeWriter.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASTypeWriter.java deleted file mode 100644 index 67d06b3536..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/writer/JOnASTypeWriter.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.writer; - -import java.io.IOException; -import java.util.Vector; - -import javax.xml.namespace.QName; - -import org.w3c.dom.Node; - -import org.apache.axis.wsdl.gen.Generator; -import org.apache.axis.wsdl.symbolTable.SchemaUtils; -import org.apache.axis.wsdl.symbolTable.SymbolTable; -import org.apache.axis.wsdl.symbolTable.Type; -import org.apache.axis.wsdl.symbolTable.TypeEntry; -import org.apache.axis.wsdl.toJava.Emitter; -import org.apache.axis.wsdl.toJava.JavaGeneratorFactory; -import org.apache.axis.wsdl.toJava.JavaTypeWriter; -import org.apache.axis.wsdl.toJava.Utils; - -/** - * This is Wsdl2java's Type Writer. It writes the following files, as appropriate: - * .java, Holder.java. - */ -public class JOnASTypeWriter extends JavaTypeWriter implements Generator { - - /** Field typeWriter */ - private Generator jonasTypeWriter = null; - - /** - * Constructor. - * - * @param emitter the Emitter - * @param type Type to be generated - * @param symbolTable SymbolTable containing mapping informations - */ - public JOnASTypeWriter(Emitter emitter, TypeEntry type, - SymbolTable symbolTable) { - super(emitter, type, symbolTable); - if (type.isReferenced() && !type.isOnlyLiteralReferenced() && type instanceof Type) { - - // Determine what sort of type this is and instantiate - // the appropriate Writer. - Node node = type.getNode(); - - boolean isSimpleList = SchemaUtils.isListWithItemType(node); - // If it's an array, don't emit a class - if (!type.getName().endsWith("[]") && !isSimpleList) { - - // Generate the proper class for either "complex" or "enumeration" types - Vector v = Utils.getEnumerationBaseAndValues(node, symbolTable); - - if (v == null) { - // that's not an enumeration - TypeEntry base = - SchemaUtils.getComplexElementExtensionBase(node, - symbolTable); - - if (base == null) { - base = SchemaUtils.getComplexElementRestrictionBase( - node, symbolTable); - } - - if (base == null) { - QName baseQName = SchemaUtils.getSimpleTypeBase(node); - - if (baseQName != null) { - base = symbolTable.getType(baseQName); - } - } - Vector elements = type.getContainedElements(); - Vector attributes = type.getContainedAttributes(); - - // If this complexType is referenced in a - // fault context, emit a bean-like exception - // class - Boolean isComplexFault = (Boolean) type.getDynamicVar( - JavaGeneratorFactory.COMPLEX_TYPE_FAULT); - - if ((isComplexFault != null) && isComplexFault.booleanValue()) { - - jonasTypeWriter = getBeanHelperWriter(emitter, type, elements, base, attributes, true); - } else { - jonasTypeWriter = getBeanHelperWriter(emitter, type, elements, base, attributes, false); - } - } - } - } - } // ctor - - /** - * Write all the service bindnigs: service and testcase. - * - * @throws IOException if generation of Helper fails - */ - public void generate() throws IOException { - - if (jonasTypeWriter != null) { - jonasTypeWriter.generate(); - } - } - -} // class JavaTypeWriter diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFHandler.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFHandler.java deleted file mode 100644 index 4bb662f8b9..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFHandler.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.wscf; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.HandlerDesc; - -import org.apache.ws.ews.context.webservices.server.impl.AbstractWSCFHandler; - - - -/** - * JOnAS WSCFHandler implementation. - * That's used to fit into the EWS model. - * @author Guillaume Sauthier - */ -public class JOnASWSCFHandler extends AbstractWSCFHandler { - - /** - * port-name list - */ - private List portNames; - - /** - * @param handler JOnAS Handler implementation - */ - public JOnASWSCFHandler(HandlerDesc handler) { - // handler-class - this.handlerClass = handler.getHandlerClassName(); - // handler-name - this.handlerName = handler.getName(); - - // handler/init-param - this.initParam = new HashMap(); - for (Iterator i = handler.getInitParams().keySet().iterator(); i.hasNext();) { - String paramName = (String) i.next(); - this.initParam.put(paramName, new JOnASWSCFInitParam(paramName, handler.getInitParam(paramName))); - } - - // port-name list - this.portNames = new Vector(); - for (Iterator i = handler.getPortNames().iterator(); i.hasNext();) { - String sr = (String) i.next(); - this.portNames.add(sr); - } - - // soap-header* - this.soapHeader = new Vector(); - for (Iterator i = handler.getSOAPHeaders().iterator(); i.hasNext();) { - QName sh = (QName) i.next(); - this.soapHeader.add(new JOnASWSCFSOAPHeader(sh)); - } - - // soap-roles* - this.soapRole = new Vector(); - for (Iterator i = handler.getSOAPRoles().iterator(); i.hasNext();) { - String sr = (String) i.next(); - this.soapRole.add(sr); - } - } - - /** - * Gets the port name of the handler element - * - * @return port-name - */ - public List getPortNames() { - return portNames; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFInitParam.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFInitParam.java deleted file mode 100644 index 743f2950eb..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFInitParam.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.wscf; - -import org.apache.ws.ews.context.webservices.server.impl.AbstractWSCFInitParam; - - -/** - * JOnAS WSCFInitParam implementation. - * That's used to fit into the EWS model. - * @author Guillaume Sauthier - */ -public class JOnASWSCFInitParam extends AbstractWSCFInitParam { - - /** - * @param paramName parameter name - * @param initParam parameter value - */ - public JOnASWSCFInitParam(String paramName, String initParam) { - this.paramName = paramName; - this.paramValue = initParam; - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFSOAPHeader.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFSOAPHeader.java deleted file mode 100644 index 5e31eded01..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/generator/ews/wsdltoj2ee/wscf/JOnASWSCFSOAPHeader.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * JOnAS : Java(TM) OpenSource Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.generator.ews.wsdltoj2ee.wscf; - -import javax.xml.namespace.QName; - -import org.apache.ws.ews.context.webservices.server.impl.AbstractWSCFSOAPHeader; - - -/** - * JOnAS WSCFSOAPHeader implementation. - * That's used to fit into the EWS model. - * @author Guillaume Sauthier - */ -public class JOnASWSCFSOAPHeader extends AbstractWSCFSOAPHeader { - - /** - * @param sh SOAP Header QName - */ - public JOnASWSCFSOAPHeader(QName sh) { - this.localpart = sh.getLocalPart(); - this.namespaceURI = sh.getNamespaceURI(); - } - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ApplicationModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ApplicationModifier.java deleted file mode 100644 index 37fbad8c97..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ApplicationModifier.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.modifier; - -import java.util.Iterator; -import java.util.jar.Attributes; - -import org.ow2.jonas.Version; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.AbsApplicationModifier; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; - - - -/** - * Modify a given Application. - * @author Guillaume Sauthier - */ -public class ApplicationModifier extends AbsApplicationModifier { - - /** - * Creates a new ApplicationModifier. - * @param archive the Application J2EE archive - * @throws WsGenException if the application modifier cannot be built - */ - public ApplicationModifier(Application archive) throws WsGenException { - super(archive, GeneratorFactory.getInstance().getConfiguration()); - } - - /** - * initialize modifier - */ - protected void init() { - - // fill ejbjar list - for (Iterator i = getApplication().getEjbJars(); i.hasNext();) { - EjbJar ejbjar = (EjbJar) i.next(); - getEjbModifiers().add(new EjbJarModifier(ejbjar)); - } - - // fill webapp list - for (Iterator i = getApplication().getWebApps(); i.hasNext();) { - WebApp webapp = (WebApp) i.next(); - getWebModifiers().add(new WebAppModifier(webapp)); - } - - // fill client list - for (Iterator i = getApplication().getClients(); i.hasNext();) { - Client client = (Client) i.next(); - getCltModifiers().add(new ClientModifier(client)); - } - } - - /** - * Update the Manifest of the Application before modifying it. - * @return Returns the modified Archive. - * @see org.ow2.jonas.generators.genbase.modifier.AbsApplicationModifier#modify() - */ - public Archive modify() throws GenBaseException { - // Update MANIFEST with Version Number - // used to say if WsGen has already been applied to this Module - Attributes main = this.getApplication().getManifest().getMainAttributes(); - main.put(new Attributes.Name(WsGenModifierConstants.WSGEN_JONAS_VERSION_ATTR), Version.getNumber()); - - return super.modify(); - } - - -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ClientModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ClientModifier.java deleted file mode 100644 index fda91ae8e9..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ClientModifier.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; -import java.util.jar.Attributes; - -import org.ow2.jonas.Version; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.generator.Generator; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Modify a given Client. - * - * @author Guillaume Sauthier - */ -public class ClientModifier extends ArchiveModifier { - - /** client */ - private Client client; - - /** - * Creates a new ClientModifier object. - * - * @param client Client Archive - */ - public ClientModifier(Client client) { - super(client); - this.client = client; - } - - /** - * Modify the current archive and return a modified archive. - * - * @return a modified archive. - * - * @throws GenBaseException When Client Generation or storing phase fails. - */ - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing Client " + client.getName()); - - // Update MANIFEST with Version Number - // used to say if WsGen has already been applied to this Module - Attributes main = this.client.getManifest().getMainAttributes(); - main.put(new Attributes.Name(WsGenModifierConstants.WSGEN_JONAS_VERSION_ATTR), Version.getNumber()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - Document jclient = client.getJonasClientDoc(); - - List refs = client.getServiceRefDescs(); - for (Iterator i = refs.iterator(); i.hasNext();) { - ServiceRefDesc ref = (ServiceRefDesc) i.next(); - - // create dd modifier - Element base = null; - if (jclient != null) { - base = jclient.getDocumentElement(); - } - WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jclient, base); - - // launch generation - Generator g = gf.newGenerator(ref, ddm, client); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(client); - - // update the Document if it was created - // in the meantime - jclient = ddm.getDocument(); - } - - return save(gf.getConfiguration(), "clients" + File.separator + client.getRootFile().getName()); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/EjbJarModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/EjbJarModifier.java deleted file mode 100644 index 8fef43735e..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/EjbJarModifier.java +++ /dev/null @@ -1,206 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; -import java.util.jar.Attributes; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.ow2.jonas.Version; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.DummyApplication; -import org.ow2.jonas.generators.genbase.archive.DummyWebApp; -import org.ow2.jonas.generators.genbase.archive.Ejb; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.ContextDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebJettyDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.Generator; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.ow2.jonas.generators.wsgen.generator.SecurityGenerator; -import org.w3c.dom.Document; - -/** - * Modify a given EjbJar. - * - * @author Guillaume Sauthier - */ -public class EjbJarModifier extends ArchiveModifier { - - /** modified ejbjar */ - private EjbJar ejbjar = null; - - /** - * Creates a new EjbJarModifier object. - * - * @param ejbjar EjbJar Archive - */ - public EjbJarModifier(final EjbJar ejbjar) { - super(ejbjar); - this.ejbjar = ejbjar; - } - - /** - * modify the current EjbJar. If EjbJar is contained in not an application - * and have webservices endpoints, A DummyApplication is created and - * modification process launched against the newly created application. If - * EjbJar is contained in an application + webservices endpoints, a - * DummyWebApp is created to hold "facade" servlet managing SOAP processing. - * - * @return an EjbJar or an Application Archive - * - * @throws GenBaseException When generation or storing fails - */ - @Override - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing EjbJar " + ejbjar.getName()); - - // MANIFEST attributes - Attributes main = this.ejbjar.getManifest().getMainAttributes(); - - // Add all MANIFEST entries from parent - if (this.getArchive() != null && this.getArchive().getArchive() != null) { - main.putAll(this.getArchive().getArchive().getManifest().getMainAttributes()); - } - - // Update MANIFEST with Version Number - // used to say if WsGen has already been applied to this Module - main.put(new Attributes.Name(WsGenModifierConstants.WSGEN_JONAS_VERSION_ATTR), Version.getNumber()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - Document jejbjar = ejbjar.getJonasEjbJarDoc(); - - // Webservices endpoint - List sds = ejbjar.getServiceDescs(); - - if (sds.size() != 0) { - if (ejbjar.getApplication() == null) { - // we have webservices outside of an application - - /** - * Process : - create a default Application - add EjbJar within - - * return ApplicationModifier.modify() - */ - String ejbName = ejbjar.getRootFile().getName(); - String earName = ejbName.substring(0, ejbName.length() - ".jar".length()) + ".ear"; - Application application = new DummyApplication(earName); - ejbjar.setApplication(application); - application.addEjbJar(ejbjar); - ApplicationModifier am = new ApplicationModifier(application); - - return am.modify(); - - } else { - // we have webservices inside of an application - - /** - * Process : - create a default WebApp - add in Application - - * iterate over the services - add files in web instead of - * ejbjar - */ - - String warName = null; - String war = ejbjar.getWarName(); - if (war != null) { - warName = war; - } else { - String ejbName = ejbjar.getRootFile().getName(); - String contextName = ejbName.substring(0, ejbName.length() - ".jar".length()); - warName = contextName + ".war"; - } - - Application application = ejbjar.getApplication(); - WebApp web = new DummyWebApp(application, warName); - - for (Iterator i = sds.iterator(); i.hasNext();) { - ServiceDesc sd = (ServiceDesc) i.next(); - - // create dd modifier - WsEndpointDDModifier ddm = new WsEndpointDDModifier(web.getWebAppDoc()); - - // launch generation - Generator g = gf.newGenerator(sd, ddm, null, ejbjar); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(web); - - //Now generate the security for the web app - Document context = web.getContextDoc(); - if (context == null) { - context = web.newContextDoc(); - } - ContextDDModifier cddm = new ContextDDModifier(context); - Document webJetty = web.getWebJettyDoc(); - if (webJetty == null) { - webJetty = web.newWebJettyDoc(); - } - WebJettyDDModifier wjddm = new WebJettyDDModifier(webJetty); - Document jonaswebservices = ejbjar.getJonasWebservicesDoc(); - SecurityGenerator sm = new SecurityGenerator(jonaswebservices); - sm.generate(ddm, cddm, wjddm); - - - } - // save webapp - application.addWebApp(new WebApp(save(gf.getConfiguration(), - "webapps" + File.separator + web.getName(), web)), ejbjar.getContextRoot()); - } - } - - // add client files - List ejbs = ejbjar.getEjbs(); - for (Iterator i = ejbs.iterator(); i.hasNext();) { - Ejb ejb = (Ejb) i.next(); - List refs = ejb.getServiceRefDescs(); - for (Iterator j = refs.iterator(); j.hasNext();) { - ServiceRefDesc ref = (ServiceRefDesc) j.next(); - - // create dd modifier - WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jejbjar, ejb.getJonasBeanElement()); - - // launch generation - Generator g = gf.newGenerator(ref, ddm, ejbjar); - g.generate(); - g.compile(); - // add files in web archive - g.addFiles(ejbjar); - } - } - - return save(gf.getConfiguration(), "ejbjars" + File.separator + ejbjar.getRootFile().getName()); - - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ModifierFactory.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ModifierFactory.java deleted file mode 100644 index b384880b6b..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/ModifierFactory.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.modifier; - -import java.io.File; - -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Application; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.Client; -import org.ow2.jonas.generators.genbase.archive.EjbJar; -import org.ow2.jonas.generators.genbase.archive.FileArchive; -import org.ow2.jonas.generators.genbase.archive.J2EEArchive; -import org.ow2.jonas.generators.genbase.archive.JarArchive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.AbsModifierFactory; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.wsgen.WsGenException; -import org.ow2.jonas.lib.util.I18n; -import org.ow2.util.archive.api.IArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.ee.deploy.api.deployable.CARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EJBDeployable; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.ow2.util.ee.deploy.api.deployable.WARDeployable; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelper; -import org.ow2.util.ee.deploy.impl.helper.UnpackDeployableHelper; -import org.ow2.util.url.URLUtils; - -/** - * Used to create the right ArchiveModifier from a given filename (ear, jar, - * war, ... - * @author Guillaume Sauthier - */ -public class ModifierFactory extends AbsModifierFactory { - - /** - * I18n. - */ - private static I18n i18n = I18n.getInstance(ModifierFactory.class); - - /** - * Empty Constructor for utility class. - */ - private ModifierFactory() { - } - - /** - * Returns an ArchiveModifier according to archive type - * (application, ejbjar, webapp or client). - * @param filename input filename. - * @return an ArchiveModifier. - * @exception GenBaseException when archive creation fails. - */ - public static ArchiveModifier getModifier(final String filename) throws GenBaseException { - return getModifier(filename, true, null); - } - - /** - * Returns an ArchiveModifier according to archive type (application, ejbjar, webapp or client). - * @param filename input filename. - * @param init Initialize the archive. - * @param deployable the current deployable (can be null) - * @return an ArchiveModifier. - * @exception GenBaseException when archive creation fails. - */ - public static ArchiveModifier getModifier(final String filename, final boolean init, final IDeployable deployable) - throws GenBaseException { - Archive archive = null; - J2EEArchive j2eeArchive = null; - ArchiveModifier modifier = null; - int mode; - IDeployable localDeployable = null; - - File file = new File(filename); - - if (file.exists()) { - if (file.isFile()) { - // Create the inner Archive - archive = new JarArchive(file); - } else { - // directory unpacked - // Create the inner Archive - archive = new FileArchive(file); - } - - try { - if (deployable == null) { - // Build Archive - IArchive fileArchive = ArchiveManager.getInstance().getArchive(file); - localDeployable = DeployableHelper.getDeployable(fileArchive); - } else { - localDeployable = deployable; - } - } catch (Exception e) { - throw new WsGenException("Cannot get a deployable for the archive '" + archive + "'", e); - } - - // now we are sure that filename is a correct jar - // Workaround for http://bugs.sun.com/view_bug.do?bug_id=6548436 - if (EARDeployable.class.isInstance(localDeployable)) { - if (archive instanceof JarArchive) { - try { - localDeployable = UnpackDeployableHelper.unpack(EARDeployable.class.cast(localDeployable), "genbase"); - archive = new FileArchive(URLUtils.urlToFile(localDeployable.getArchive().getURL())); - } catch (Exception e) { - throw new GenBaseException("Cannot unpack the deployable '" + deployable + "'.", e); - } - } - - // Application J2EE Archive - j2eeArchive = new Application(archive, localDeployable); - mode = APPLICATION; - } else if (EJBDeployable.class.isInstance(localDeployable)) { - // EjbJar J2EE Archive - j2eeArchive = new EjbJar(archive); - mode = EJBJAR; - - } else if (WARDeployable.class.isInstance(localDeployable)) { - // WebApp J2EE Archive - j2eeArchive = new WebApp(archive); - mode = WEBAPP; - - } else if (CARDeployable.class.isInstance(localDeployable)) { - // Client J2EE Archive - j2eeArchive = new Client(archive); - mode = CLIENT; - - } else { - // unsupported archive type - String err = i18n.getMessage("ModifierFactory.getModifier.unsupported", filename); - throw new WsGenException(err); - } - } else { - String err = i18n.getMessage("ModifierFactory.getModifier.notfound", filename); - throw new WsGenException(err); - } - - // init the archive - if (init) { - j2eeArchive.initialize(); - } - - // create the modifier - switch (mode) { - case APPLICATION: - modifier = new ApplicationModifier((Application) j2eeArchive); - break; - case EJBJAR: - modifier = new EjbJarModifier((EjbJar) j2eeArchive); - break; - case WEBAPP: - modifier = new WebAppModifier((WebApp) j2eeArchive); - break; - case CLIENT: - modifier = new ClientModifier((Client) j2eeArchive); - break; - default: - // cannot happen - } - - return modifier; - } -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WebAppModifier.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WebAppModifier.java deleted file mode 100644 index f85eb90cdd..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WebAppModifier.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.wsgen.modifier; - -import java.io.File; -import java.util.Iterator; -import java.util.List; -import java.util.jar.Attributes; - -import org.objectweb.util.monolog.api.BasicLevel; - -import org.ow2.jonas.Version; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.generators.genbase.GenBaseException; -import org.ow2.jonas.generators.genbase.archive.Archive; -import org.ow2.jonas.generators.genbase.archive.WebApp; -import org.ow2.jonas.generators.genbase.modifier.ArchiveModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.ContextDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebJettyDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WebServicesDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsClientDDModifier; -import org.ow2.jonas.generators.wsgen.ddmodifier.WsEndpointDDModifier; -import org.ow2.jonas.generators.wsgen.generator.Generator; -import org.ow2.jonas.generators.wsgen.generator.GeneratorFactory; -import org.ow2.jonas.generators.wsgen.generator.SecurityGenerator; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Modify a given WebApp. - * - * @author Guillaume Sauthier - */ -public class WebAppModifier extends ArchiveModifier { - - /** webapp */ - private WebApp web; - - /** - * Creates a new WebAppModifier - * - * @param webapp - * the WebApp J2EE archive - */ - public WebAppModifier(WebApp webapp) { - super(webapp); - web = webapp; - } - - /** - * Modify the current archive and return a modified archive. - * - * @return a modified archive. - * - * @throws GenBaseException - * When modification fails - */ - public Archive modify() throws GenBaseException { - - getLogger().log(BasicLevel.INFO, "Processing WebApp " + web.getName()); - - // Update MANIFEST with Version Number - // used to say if WsGen has already been applied to this Module - Attributes main = this.web.getManifest().getMainAttributes(); - main.put(new Attributes.Name(WsGenModifierConstants.WSGEN_JONAS_VERSION_ATTR), Version.getNumber()); - - GeneratorFactory gf = GeneratorFactory.getInstance(); - Document jwebapp = web.getJonasWebAppDoc(); - Document webapp = web.getWebAppDoc(); - Document webservices = web.getWebservicesDoc(); - Document jonasWebservices = web.getJonasWebservicesDoc(); - - List refs = web.getServiceRefDescs(); - - for (Iterator i = refs.iterator(); i.hasNext();) { - ServiceRefDesc ref = (ServiceRefDesc) i.next(); - - // create dd modifier - Element base = null; - if (jwebapp != null) { - base = jwebapp.getDocumentElement(); - } - WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jwebapp, base); - - // launch generation - Generator g = gf.newGenerator(ref, ddm, web); - g.generate(); - g.compile(); - - // add files in web archive - g.addFiles(web); - - // update the Document if it was created - // in the meantime - jwebapp = ddm.getDocument(); - - } - - // create dd modifier - WsEndpointDDModifier ddm = new WsEndpointDDModifier(webapp); - WebServicesDDModifier wsddm = null; - if (webservices != null) { - wsddm = new WebServicesDDModifier(webservices); - } - - List sds = web.getServiceDescs(); - - for (Iterator i = sds.iterator(); i.hasNext();) { - ServiceDesc sd = (ServiceDesc) i.next(); - - // launch generation - Generator g = gf.newGenerator(sd, ddm, wsddm, web); - g.generate(); - g.compile(); - - // add files in web archive - g.addFiles(web); - - //Now generate the security for the web app - Document context = web.getContextDoc(); - if (context == null) { - context = web.newContextDoc(); - } - ContextDDModifier cddm = new ContextDDModifier(context); - Document webJetty = web.getWebJettyDoc(); - if (webJetty == null) { - webJetty = web.newWebJettyDoc(); - } - WebJettyDDModifier wjddm = new WebJettyDDModifier(webJetty); - SecurityGenerator sm = new SecurityGenerator(jonasWebservices); - sm.generate(ddm, cddm, wjddm); - - } - - return save(gf.getConfiguration(), "webapps" + File.separator - + web.getName()); - } -} \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WsGenModifierConstants.java b/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WsGenModifierConstants.java deleted file mode 100644 index 3c75f4b472..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/java/org/ow2/jonas/generators/wsgen/modifier/WsGenModifierConstants.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.wsgen.modifier; - -/** - * Modifier Constants for WsGen. - * - * @author Guillaume Sauthier - */ -public interface WsGenModifierConstants { - - /** - * Manifest Attribute for WsGen. - * Injected in the Manifest for updated archive. - */ - String WSGEN_JONAS_VERSION_ATTR = "WsGen-JOnAS-Version"; - -} diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/META-INF/jonas-generators-wsgen.bnd b/jonas/modules/generators/jonas-wsgen/src/main/resources/META-INF/jonas-generators-wsgen.bnd deleted file mode 100644 index 5d390b4779..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/META-INF/jonas-generators-wsgen.bnd +++ /dev/null @@ -1,34 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.generators.wsgen, \ - org.ow2.jonas.generators.wsgen.wrapper - -Private-Package org.ow2.jonas.generators.wsgen.*;-split-package:=merge-first - -Import-Package !org.apache.velocity.*,\ - javax.xml.namespace,\ - org.apache.xmlbeans.impl.schema,\ - * - -Embed-Dependency ews-mapper;inline=true \ No newline at end of file diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/I18n.properties b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/I18n.properties deleted file mode 100644 index 8f10e42f12..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/I18n.properties +++ /dev/null @@ -1,7 +0,0 @@ -# $Id$ - -GeneratorFactory.newInstance.instance Cannot instanciate ''{0}'' GeneratorFactory - -Generator.constr.ioe Cannot create temporary directories - -Generator.compile.error=Error when running javac for WebServices clients compilation. diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/I18n.properties b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/I18n.properties deleted file mode 100644 index 8f43bc4de5..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/I18n.properties +++ /dev/null @@ -1,15 +0,0 @@ -# $Id$ - -JVelocity.constr.initFailure Cannot initialize the Velocity engine -JVelocity.constr.tmplError Cannot get the ''{0}'' template file -JVelocity.constr.notset System property 'jonas.root' not set - -JVelocity.generate.directories Cannot create the directory ''{0}'' -JVelocity.generate.file Cannot create the ''{0}'' file -JVelocity.generate.cannot Cannot generate the file ''{0}'' from the template. -JVelocity.generate.close Cannot close the file ''{0}'' - -AxisWsEndpointGenerator.generate.illegal ''{0}'' is not a WebApp instance -AxisWsClientGenerator.generate.wsdl Cannot retrieve WSDL file ''{0}'' from ''{1}'' - -AxisWsClientGenerator.generate.WSDL2Java Error when running axis WSDL2Java tool. diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_client.vm b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_client.vm deleted file mode 100644 index 9ba17a831f..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_client.vm +++ /dev/null @@ -1,32 +0,0 @@ - - - - -#foreach ($pc in $portComponents) - - - #foreach ($handler in $pc.getHandlers()) - - ## pour chaque init parameter - #foreach ($param in $handler.getInitParameters()) - - #end - ## pour chaque header - #foreach ($header in $handler.getHeaders()) -
    - #end - - #foreach ($role in $handler.getSoapRoles()) - - #end - #end - - -#end - -#foreach ($mapping in $mappings) - $mapping.toString() -#end - - diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_endpoint.vm b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_endpoint.vm deleted file mode 100644 index 54de608d44..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/axis/deploy_endpoint.vm +++ /dev/null @@ -1,87 +0,0 @@ - - - - -#* *##foreach ($pc in $portComponents) -## start foreach pc - -#if ($pc.getWSDLFilename()) - $pc.getWSDLFilename() -#end -#if ($pc.getNamespace()) - - $pc.getNamespace() -#end - - -#if ($provider == "JOnASEJB") -## start if ejb -#set ($bean = $pc.getBean()) - - - - - -#foreach ($handler in $pc.getHandlers()) -##start foreach handlers - -## pour chaque init parameter -#foreach ($param in $handler.getInitParameters()) - -#end -## pour chaque header -#foreach ($header in $handler.getHeaders()) -
    -#end - -#foreach ($role in $handler.getSoapRoles()) - -#end -#end -## end foreach handlers - -#end -## end if ejb -#if ($provider == "RPC") -## start if rpc - -#if ($pc.getMethods().length() != 0) - -#else - -#end - -#foreach ($handler in $pc.getHandlers()) -##start foreach handlers - -## pour chaque init parameter -#foreach ($param in $handler.getInitParameters()) - -#end -## pour chaque header -#foreach ($header in $handler.getHeaders()) -
    -#end - -#end -## end foreach handlers - -#end -## end if rpc - - -#* *##end -## end foreach pc - -#foreach ($mapping in $mappings) - $mapping.toString() -#end - diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/ews/I18n.properties b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/ews/I18n.properties deleted file mode 100644 index c3f7a20720..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/generator/ews/I18n.properties +++ /dev/null @@ -1,7 +0,0 @@ -# $Id$ - -AxisWsEndpointGenerator.generate.illegal ''{0}'' is not a WebApp instance -AxisWsClientGenerator.generate.wsdl Cannot retrieve WSDL file ''{0}'' from ''{1}'' - -EWSWsClientGenerator.generate.WSDL2Java Error when running axis WSDL2Java tool. ''{0}'' -EWSWsEndpointGenerator.generate.WSDL2Java Error when generating server-side deploy file for ''{0}''. ''{1}'' diff --git a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/modifier/I18n.properties b/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/modifier/I18n.properties deleted file mode 100644 index 58bcd33df5..0000000000 --- a/jonas/modules/generators/jonas-wsgen/src/main/resources/org/ow2/jonas/generators/wsgen/modifier/I18n.properties +++ /dev/null @@ -1,5 +0,0 @@ -# $Id$ - -ModifierFactory.getModifier.notfound file not found ''{0}'' -ModifierFactory.getModifier.notjar ''{0}'' is not a jar file -ModifierFactory.getModifier.unsupported ''{0}'' is not a supported jar archive (should be EjbJar, WebApp, Client or Application) diff --git a/jonas/modules/generators/pom.xml b/jonas/modules/generators/pom.xml deleted file mode 100644 index e7c43a1384..0000000000 --- a/jonas/modules/generators/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-generators - JOnAS :: Generators - - pom - - jonas-genbase - jonas-genclientstub - jonas-wsgen - jonas-genic - raconfig - - \ No newline at end of file diff --git a/jonas/modules/generators/raconfig/pom.xml b/jonas/modules/generators/raconfig/pom.xml deleted file mode 100644 index c9d5d21d19..0000000000 --- a/jonas/modules/generators/raconfig/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - org.ow2.jonas - jonas-generators - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - - jonas-generators-raconfig - bundle - JOnAS :: Generators :: RAConfig - - - - org.ow2.jonas - jonas-commons - ${project.version} - - - org.ow2.jonas - jonas-naming - ${project.version} - - - org.ow2.jonas - jonas-deployment - ${project.version} - - - \ No newline at end of file diff --git a/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfig.java b/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfig.java deleted file mode 100644 index 4543db1f5b..0000000000 --- a/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfig.java +++ /dev/null @@ -1,929 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2010 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): Eric Hardesty - * - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.generators.raconfig; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Properties; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; - -import javax.naming.Context; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.rar.ConfigPropertyDesc; -import org.ow2.jonas.deployment.rar.RarDeploymentDesc; -import org.ow2.jonas.deployment.rar.RarDeploymentDescException; -import org.ow2.jonas.deployment.rar.lib.RarDeploymentDescManager; -import org.ow2.jonas.deployment.rar.xml.Activationspec; -import org.ow2.jonas.deployment.rar.xml.Adminobject; -import org.ow2.jonas.deployment.rar.xml.ConfigProperty; -import org.ow2.jonas.deployment.rar.xml.ConnectionDefinition; -import org.ow2.jonas.deployment.rar.xml.Connector; -import org.ow2.jonas.deployment.rar.xml.InboundResourceadapter; -import org.ow2.jonas.deployment.rar.xml.JdbcConnParams; -import org.ow2.jonas.deployment.rar.xml.JonasActivationspec; -import org.ow2.jonas.deployment.rar.xml.JonasAdminobject; -import org.ow2.jonas.deployment.rar.xml.JonasConfigProperty; -import org.ow2.jonas.deployment.rar.xml.JonasConnectionDefinition; -import org.ow2.jonas.deployment.rar.xml.JonasConnector; -import org.ow2.jonas.deployment.rar.xml.JonasSecurityMapping; -import org.ow2.jonas.deployment.rar.xml.Messageadapter; -import org.ow2.jonas.deployment.rar.xml.Messagelistener; -import org.ow2.jonas.deployment.rar.xml.OutboundResourceadapter; -import org.ow2.jonas.deployment.rar.xml.PoolParams; -import org.ow2.jonas.deployment.rar.xml.RequiredConfigProperty; -import org.ow2.jonas.deployment.rar.xml.Resourceadapter; -import org.ow2.jonas.deployment.rar.xml.SecurityEntry; -import org.ow2.jonas.lib.naming.ComponentContext; -import org.ow2.jonas.lib.util.Base64; - -/** - * This class may be used to parse a resource adapter deployment descriptor and - * generate the corresponding properties files for the jca service java RAConfig - * -j jndiname -r rarlink -verbose java - * org.ow2.jonas.generators.raconfig.RAConfig -u jonas-ra.xml java - * org.ow2.jonas.generators.raconfig.RAConfig -dm -p db.properties - * - */ -public class RAConfig { - - /** - * Buffer Size - */ - private static final int BUFFER_SIZE = 500; - - /** JCA 1.5 */ - private static final double JCA_1_5 = 1.5; - - /** JCA 1.0 */ - private static final double JCA_1_0 = 1.0; - - RarDeploymentDesc rarDD = null; - - /** - * Validate the XML - */ - private static boolean validation = true; - - /** - * jonas-ra.xml XML filename - */ - private static final String JONAS_RA_FILENAME = "META-INF/jonas-ra.xml"; - - /** - * Constructor - */ - public RAConfig(final String fileName) throws RAConfigException { - ClassLoader curLoader = Thread.currentThread().getContextClassLoader(); - - try { - RarDeploymentDescManager.setParsingWithValidation(validation); - rarDD = getRarDD(fileName, curLoader); - } catch (Exception e) { - throw new RAConfigException(e); - } - - } - - /** - * Get an instance of an RAR deployment descriptor by parsing the ra.xml and - * jonas-ra.xml deployment descriptors. - * @param rarFileName the fileName of the rar file for the deployment - * descriptors. - * @param classLoader the classloader for the classes. - * @return an RAR deployment descriptor by parsing the ra.xml & jonas-ra.xml - * deployment descriptors. - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private RarDeploymentDesc getRarDD(final String rarFileName, final ClassLoader classLoader) throws DeploymentDescException { - - // The context to give for the creation of an instance - // of RarDeploymentDesc - Context contctx = null; - try { - contctx = new ComponentContext(rarFileName); - contctx.rebind("rarFileName", rarFileName); - contctx.rebind("classloader", classLoader); - } catch (Exception e) { - // An exception occurred trying to bind context - // logger.log(BasicLevel.ERROR, "Error when binding context for - // RarDeploymentDesc for '" + rarFileName + "'"); - // logger.log(BasicLevel.ERROR, e.getMessage()); - - throw new RarDeploymentDescException("Error during the deployment", e); - } - // want both ra.xml & jonas-ra.xml - return RarDeploymentDescManager.getInstance(contctx); - } - - public RarDeploymentDesc getRarDeploymentDesc() { - return rarDD; - } - - /** - * Process the ra.xml file in the input rar file and build the corresponding - * jonas-ra.xml. If the -p argument is specified, then retrieve the - * appropriate configuration values to pre-configure the corrsponding JDBC - * RA config properties. - * @param fileInputName String file name - * @param jndiname String jndi name - * @param rarlink String rar link - * @param dbProps Properties - * @param encrypt boolean - * @param securityfile String security file - * @param path String path - * @param isVerbose boolean - * @param createNew boolean - * @throws RAConfigException if an Exception occurs - */ - private static void buildXML(final String fileInputName, String jndiname, final String rarlink, final Properties dbProps, final boolean encrypt, - final String securityfile, final String path, final boolean isVerbose, final boolean createNew) throws RAConfigException { - - // Check if jonas-ra.xml already exists and return it - if (!createNew) { - boolean ext = extractJonasRAXml(fileInputName, path); - if (ext) { - return; - } - } - - RAConfig raxml = new RAConfig(fileInputName); - Connector conn = raxml.getRarDeploymentDesc().getConnector(); - double specVersion = 0.0; - ConfigPropertyDesc[] raProps = raxml.getRarDeploymentDesc().getRaConfigPropTags(); - if (raProps == null) { - throw new RAConfigException("RAR file doesn't contain ra.xml"); - } - if (conn.getSpecVersion().equals("1.0")) { - specVersion = JCA_1_0; - } else if (conn.getSpecVersion().equals("1.5")) { - specVersion = JCA_1_5; - } else { - throw new RAConfigException("ra.xml doesn't correct spec version"); - } - - JonasConnector jConn = new JonasConnector(); - PoolParams jPool = new PoolParams(); - JdbcConnParams jConnParams = new JdbcConnParams(); - JonasConfigProperty jCfg = null; - - String val = ""; - String str = ""; - - val = "0"; - if (dbProps.getProperty("jdbc.initconpool") != null && dbProps.getProperty("jdbc.initconpool").length() > 0) { - val = dbProps.getProperty("jdbc.initconpool").trim(); - } - jPool.setPoolInit(val); - - val = "0"; - if (dbProps.getProperty("jdbc.minconpool") != null && dbProps.getProperty("jdbc.minconpool").length() > 0) { - val = dbProps.getProperty("jdbc.minconpool").trim(); - } - jPool.setPoolMin(val); - - val = "-1"; - if (dbProps.getProperty("jdbc.maxconpool") != null && dbProps.getProperty("jdbc.maxconpool").length() > 0) { - val = dbProps.getProperty("jdbc.maxconpool").trim(); - } - jPool.setPoolMax(val); - - val = "0"; - if (dbProps.getProperty("jdbc.connmaxage") != null && dbProps.getProperty("jdbc.connmaxage").length() > 0) { - val = dbProps.getProperty("jdbc.connmaxage").trim(); - } - jPool.setPoolMaxAgeMinutes(val); - - val = "0"; - if (dbProps.getProperty("jdbc.maxopentime") != null && dbProps.getProperty("jdbc.maxopentime").length() > 0) { - val = dbProps.getProperty("jdbc.maxopentime").trim(); - } - jPool.setPoolMaxOpentime(val); - - val = "0"; - if (dbProps.getProperty("jdbc.maxwaiters") != null && dbProps.getProperty("jdbc.maxwaiters").length() > 0) { - val = dbProps.getProperty("jdbc.maxwaiters").trim(); - } - jPool.setPoolMaxWaiters(val); - - val = "0"; - if (dbProps.getProperty("jdbc.maxwaittime") != null && dbProps.getProperty("jdbc.maxwaittime").length() > 0) { - val = dbProps.getProperty("jdbc.maxwaittime").trim(); - } - jPool.setPoolMaxWaittime(val); - - val = "30"; - if (dbProps.getProperty("jdbc.samplingperiod") != null && dbProps.getProperty("jdbc.samplingperiod").length() > 0) { - val = dbProps.getProperty("jdbc.samplingperiod").trim(); - } - jPool.setPoolSamplingPeriod(val); - - val = "10"; - if (dbProps.getProperty("jdbc.pstmtmax") != null && dbProps.getProperty("jdbc.pstmtmax").length() > 0) { - val = dbProps.getProperty("jdbc.pstmtmax").trim(); - } - jPool.setPstmtMax(val); - - jConn.setLogEnabled("false"); - jConn.setLogTopic(""); - jConn.setNativeLib(""); - if (jndiname.length() == 0) { - jndiname = dbProps.getProperty("datasource.name", "").trim(); - } - - val = "0"; - if (dbProps.getProperty("jdbc.connchecklevel") != null && dbProps.getProperty("jdbc.connchecklevel").length() > 0) { - val = dbProps.getProperty("jdbc.connchecklevel").trim(); - } - jConnParams.setJdbcCheckLevel(val); - - val = ""; - if (dbProps.getProperty("jdbc.connteststmt") != null && dbProps.getProperty("jdbc.connteststmt").length() > 0) { - val = dbProps.getProperty("jdbc.connteststmt").trim(); - jConnParams.setJdbcTestStatement(val); - } - - if (specVersion == JCA_1_0) { - jConn.setJndiName(jndiname); - } - jConn.setRarlink(rarlink); - jConn.setPoolParams(jPool); - jConn.setJdbcConnParams(jConnParams); - - if (specVersion == JCA_1_0) { - val = ""; - str = ""; - for (int i = 0; i < raProps.length; i++) { - jCfg = new JonasConfigProperty(); - str = raProps[i].getConfigPropertyName(); - jCfg.setJonasConfigPropertyName(str); - if (dbProps.size() > 0) { - val = getProp(dbProps, str); - } else { - val = ""; - } - jCfg.setJonasConfigPropertyValue(val); - jConn.addJonasConfigProperty(jCfg); - } - } else if (specVersion == JCA_1_5) { - Resourceadapter rAdapter = conn.getResourceadapter(); - ConfigProperty cProperty = null; - // TODO rProperty never used !!! - RequiredConfigProperty rProperty = null; - // Process config properties if they exist - for (Iterator i = rAdapter.getConfigPropertyList().iterator(); i.hasNext();) { - cProperty = (ConfigProperty) i.next(); - jCfg = new JonasConfigProperty(); - str = cProperty.getConfigPropertyName(); - jCfg.setJonasConfigPropertyName(str); - if (dbProps.size() > 0) { - val = getProp(dbProps, str); - } else { - val = ""; - } - jCfg.setJonasConfigPropertyValue(val); - jConn.addJonasConfigProperty(jCfg); - } - - // is it the first jonas-connection-definition - boolean first = true; - - // Now process the outbound-resourceadapter - OutboundResourceadapter oRes = rAdapter.getOutboundResourceadapter(); - if (oRes != null) { - ConnectionDefinition cDef = null; - JonasConnectionDefinition jcDef = null; - for (Iterator it = oRes.getConnectionDefinitionList().iterator(); it.hasNext();) { - cDef = (ConnectionDefinition) it.next(); - jcDef = new JonasConnectionDefinition(); - jcDef.setId(cDef.getId()); - jcDef.addDescription(cDef.getManagedconnectionfactoryClass()); - - // This allows the jndi name to be set for the first - // jonas-connection-definition - // with a 1.5 version of the connector. - if (first && (jndiname.length() != 0)) { - jcDef.setJndiName(jndiname); - first = false; - } else { - jcDef.setJndiName(""); - } - - for (Iterator i = cDef.getConfigPropertyList().iterator(); i.hasNext();) { - cProperty = (ConfigProperty) i.next(); - jCfg = new JonasConfigProperty(); - str = cProperty.getConfigPropertyName(); - jCfg.setJonasConfigPropertyName(str); - jCfg.setJonasConfigPropertyValue(""); - jcDef.addJonasConfigProperty(jCfg); - } - jConn.addJonasConnectionDefinition(jcDef); - } - } - // Now process the inbound-resourceadapter - InboundResourceadapter iRes = rAdapter.getInboundResourceadapter(); - if (iRes != null) { - Messageadapter mAdapter = iRes.getMessageadapter(); - if (mAdapter != null) { - Messagelistener mList = null; - JonasActivationspec jaSpec = null; - Activationspec aSpec = null; - for (Iterator it = mAdapter.getMessagelistenerList().iterator(); it.hasNext();) { - mList = (Messagelistener) it.next(); - aSpec = mList.getActivationspec(); - if (aSpec != null) { - jaSpec = new JonasActivationspec(); - jaSpec.setId(mList.getId()); - jaSpec.addDescription(mList.getMessagelistenerType()); - jaSpec.setJndiName(""); - jConn.addJonasActivationspec(jaSpec); - } - } - } - } - // Now process the adminobject - for (Iterator it = rAdapter.getAdminobjectList().iterator(); it.hasNext();) { - Adminobject aObj = (Adminobject) it.next(); - JonasAdminobject jaObj = null; - if (aObj != null) { - jaObj = new JonasAdminobject(); - jaObj.setId(aObj.getId()); - jaObj.addDescription(aObj.getAdminobjectClass()); - jaObj.setJndiName(""); - // Process config properties if they exist - for (Iterator i = aObj.getConfigPropertyList().iterator(); i.hasNext();) { - cProperty = (ConfigProperty) i.next(); - jCfg = new JonasConfigProperty(); - str = cProperty.getConfigPropertyName(); - jCfg.setJonasConfigPropertyName(str); - jCfg.setJonasConfigPropertyValue(""); - jaObj.addJonasConfigProperty(jCfg); - } - jConn.addJonasAdminobject(jaObj); - } - } - } - - if (securityfile != null) { - Properties secProps = new Properties(); - File f = null; - try { - f = new File(securityfile); - FileInputStream is = new FileInputStream(f); - secProps.load(is); - } catch (FileNotFoundException e) { - System.err.println("Cannot find security properties file: " + securityfile); - System.err.println("Continuing with creation of jonas-ra.xml"); - } catch (IOException e) { - System.err.println(e); - } - - JonasSecurityMapping jsMap = new JonasSecurityMapping(); - String pName = null; - String user = null; - String pass = null; - String tmp = null; - int offset = 0; - SecurityEntry sEnt = null; - for (Enumeration e = secProps.propertyNames(); e.hasMoreElements();) { - pName = (String) e.nextElement(); - tmp = secProps.getProperty(pName); - offset = tmp.indexOf("::"); - if (offset < 0) { - System.err.println("Error in format of file: principalName = user::password"); - continue; - } - user = tmp.substring(0, offset); - pass = tmp.substring(offset + 2); - - sEnt = new SecurityEntry(); - sEnt.setPrincipalName(pName); - sEnt.setUser(user); - if (encrypt) { - try { - pass = new String(Base64.encode(pass.getBytes())); - sEnt.setEncrypted("" + encrypt); - } catch (Exception ex) { - System.err.println("Unable to encrypt the password."); - } - } - sEnt.setPassword(pass); - jsMap.addSecurityEntry(sEnt); - } - jConn.setJonasSecurityMapping(jsMap); - } - - try { - String tmpDir = path; - if (path.length() == 0) { - tmpDir = System.getProperty("java.io.tmpdir"); - } - String fileName = tmpDir; - int fileLen = fileName.length(); - if (fileName.charAt(fileLen - 1) != File.separatorChar) { - fileName += File.separatorChar; - } - fileName += "jonas-ra.xml"; - FileWriter fw = new FileWriter(fileName); - fw.write(jConn.toXML()); - fw.close(); - if (isVerbose) { - System.out.println("Build Jonas Specific DD File '" + fileName + "' OK"); - } - - } catch (Exception e) { - throw new RAConfigException("Error writing output", e); - } - } - - /** - * Mapping routine for the JDBC RA config values and the existing - * .properties values. - * @param prop Properties - * @param str String - * @return String - */ - private static String getProp(final Properties prop, final String str) { - // ra-keys | properties-keys - String[][] mapping = { {"connCheckLevel", "jdbc.connchecklevel"}, {"connMaxAge", "jdbc.connmaxage"}, - {"connTestStmt", "jdbc.connteststmt"}, {"URL", "datasource.url"}, {"dsClass", "datasource.classname"}, - {"user", "datasource.username"}, {"password", "datasource.password"}, - {"isolationLevel", "datasource.isolationlevel"}, {"mapperName", "datasource.mapper"},}; - - String ret = ""; - for (int i = 0; i < mapping.length; i++) { - if (mapping[i][0].equalsIgnoreCase(str)) { - String value = prop.getProperty(mapping[i][1]); - if (value == null) { - ret = ""; - } else { - ret = value.trim(); - } - } - } - - return ret; - } - - /** - * Update the RAR file - * @param infile String input RAR file - * @param outfile String output RAR file - * @param updatename String update file - * @param rarlink String RAR link - * @throws RAConfigException to throw if an Exception occurs - */ - private static void updateRAR(final String infile, final String outfile, final String updatename, final String rarlink) throws RAConfigException { - - ZipOutputStream zipOutput = null; - ZipFile zipFile = null; - Enumeration zippedFiles = null; - ZipEntry currEntry = null; - ZipEntry entry = null; - byte[] buffer = new byte[BUFFER_SIZE]; - int num = 0; - - String filename = infile; - String outfilename = infile; - boolean outNew = false; - if (outfile != null && outfile.length() != 0) { - outfilename = outfile; - outNew = true; - } - - try { - File file = new File(filename); - if (file.exists()) { - zipFile = new ZipFile(file.getAbsolutePath()); - // get an enumeration of all existing entries - zippedFiles = zipFile.entries(); - // create your output zip file - if (!outNew) { - zipOutput = new ZipOutputStream(new FileOutputStream(new File(file.getAbsolutePath() + "NEW"))); - } else { - File ofile = new File(outfilename); - if (ofile.exists()) { - ofile.delete(); - } - - zipOutput = new ZipOutputStream(new FileOutputStream(new File(outfilename))); - } - // Get all the data out of the previously zipped files and - // write - // it to a new ZipEntry to go into a new file archive - if ((outfile == null || outfile.length() == 0) && rarlink.length() == 0) { - while (zippedFiles.hasMoreElements()) { - // Retrieve entry of existing files - currEntry = (ZipEntry) zippedFiles.nextElement(); - if (currEntry.getName().equalsIgnoreCase(JONAS_RA_FILENAME)) { - continue; - } - // Read data from existing file - zipOutput.putNextEntry(new ZipEntry(currEntry.getName())); - InputStream reader = zipFile.getInputStream(currEntry); - while ((num = reader.read(buffer)) != -1) { - zipOutput.write(buffer, 0, num); - } - // Commit the data - zipOutput.flush(); - zipOutput.closeEntry(); - } - } - // Close the old zip file - zipFile.close(); - - // Write the 'new' file to the archive, commit, and close - entry = new ZipEntry(JONAS_RA_FILENAME); - zipOutput.putNextEntry(entry); - - // Read data from existing file - try { - BufferedReader reader = new BufferedReader(new FileReader(updatename)); - int ch = 0; - while ((ch = reader.read()) != -1) { - zipOutput.write(ch); - } - } catch (Exception ex) { - System.out.println("Error reading input file: " + updatename + " " + ex); - // Commit the data - zipOutput.flush(); - zipOutput.closeEntry(); - zipOutput.finish(); - zipOutput.close(); - } - // Commit the data - zipOutput.flush(); - zipOutput.closeEntry(); - zipOutput.finish(); - zipOutput.close(); - - if (!outNew) { - // delete the old file and rename the new one - File toBeDeleted = new File(file.getAbsolutePath()); - toBeDeleted.delete(); - File toBeRenamed = new File(file.getAbsolutePath() + "NEW"); - toBeRenamed.renameTo(file); - } - } else { - // create your output zip file - zipOutput = new ZipOutputStream(new FileOutputStream(new File(outfilename))); - - // Write the file to the archive, commit, and close - entry = new ZipEntry(JONAS_RA_FILENAME); - zipOutput.putNextEntry(entry); - // Read data from existing file - BufferedReader reader = new BufferedReader(new FileReader(updatename)); - int ch = 0; - while ((ch = reader.read()) != -1) { - zipOutput.write(ch); - } - - // Commit the data - zipOutput.flush(); - zipOutput.closeEntry(); - zipOutput.finish(); - zipOutput.close(); - } - // finally, we delete generated jonas-ra.xml - new File(updatename).delete(); - } catch (Exception ex) { - throw new RAConfigException(ex); - } - - } - - /** - * Extract the jonas-ra.xml file if it exists in the rar - * @param infile String rar file name - * @param path String path - */ - private static boolean extractJonasRAXml(final String infile, final String path) { - ZipFile zipFile = null; - ZipEntry entry = null; - byte[] buffer = new byte[BUFFER_SIZE]; - - String filename = infile; - File file = new File(filename); - if (file.exists()) { - try { - zipFile = new ZipFile(file.getAbsolutePath()); - entry = zipFile.getEntry(JONAS_RA_FILENAME); - if (entry != null) { - InputStream input = zipFile.getInputStream(entry); - String tmpDir = path; - if (path.length() == 0) { - tmpDir = System.getProperty("java.io.tmpdir"); - } - String fileName = tmpDir; - int fileLen = fileName.length(); - if (fileName.charAt(fileLen - 1) != File.separatorChar) { - fileName += File.separatorChar; - } - fileName += "jonas-ra.xml"; - - FileOutputStream output = new FileOutputStream(fileName); - for (int j = 0;;) { - int length = input.read(buffer); - if (length <= 0) { - break; - } - output.write(buffer, 0, length); - } - output.close(); - return true; - } - } catch (Exception ex) { - return false; - } - } - return false; - } - - /** - * Usage of RAConfig - */ - public static void usage() { - System.out.println(""); - System.out.println("Usage: java org.ow2.jonas.generators.raconfig.RAConfig [Output_File]"); - System.out.println(" to generate the jonas-ra.xml file for a Resource Adapter."); - System.out.println(" The output file will be written to the default location of the java "); - System.out.println(" system property 'java.io.tmpdir' unless the -path parameter is specified"); - System.out.println(""); - System.out.println(" Note: for a parameter either the whole name must be used or only the"); - System.out.println(" the capital letters, e.g. -jndiname or -j are equivalent"); - System.out.println(""); - System.out.println(" With Options:"); - System.out.println(" -? or -help print this help message"); - System.out.println(" -DM,-DS,-CP,-XA DriverManager, Datasource, ConnectionPoolDatasource,"); - System.out.println(" XAConnection only used with -p. Additional"); - System.out.println(" user configuration of the jonas-ra.xml file"); - System.out.println(" will be necessary for any option but -DM."); - System.out.println(" -Jndiname specifies the jndiname RA"); - System.out.println(" -Property specifies the database property file"); - System.out.println(" to process"); - System.out.println(" -Rarlink specifies the rar file to link to"); - System.out.println(" -Update update the input rar with the specified file"); - System.out.println(" unless an output_file named is specified"); - System.out.println(" -ENcrypt used with -sf to encrypt the passwords "); - System.out.println(" -SecurityFile security xml file to add to jonas-ra.xml "); - System.out.println(" -Verbose output the contents of the deployment descriptor "); - System.out.println(" -NoValidation turn off xml dtd/schema validation "); - System.out.println(" -PATH path where jonas-ra.xml should be written to "); - System.out.println(" default is System.property('java.io.tmpdir')"); - System.out.println(" -NEW don't extract jonas-ra.xml create a new one "); - System.out.println(""); - System.out.println(" Input_File Resource Adapter RAR file"); - System.out.println(" Output_File Resource Adapter RAR file only used with "); - System.out.println(" -p(required) or -u(optional)"); - System.out.println(""); - } - - // Main Method - /** - * Main routine - * @param args String [] input arguments - * @throws RAConfigException if an Exception occurs - */ - public static void main(final String[] args) throws RAConfigException { - boolean isHelp = false; - boolean isVerbose = false; - boolean doProperty = false; - boolean doUpdate = false; - boolean encrypt = false; - boolean newXml = false; - String fileInputName = null; - String fileOutputName = null; - String securityfile = null; - String jndiname = ""; - String rarlink = ""; - String updatename = ""; - String jdbcRarLink = ""; - String jonasRarStr = "JOnASJDBC_"; - String propertyFile = ""; - String path = ""; - // Get command args - - Properties dbProps = null; - - if (args.length < 1) { - isHelp = true; - } - for (int argn = 0; argn < args.length; argn++) { - String arg = args[argn].toLowerCase(); - if (arg.equals("-help") || arg.equals("-?")) { - isHelp = true; - continue; - } - if (arg.equals("-verbose") || arg.equals("-v")) { - isVerbose = true; - continue; - } - if (arg.equals("-encrypt") || arg.equals("-en")) { - encrypt = true; - continue; - } - if (arg.equals("-securityfile") || arg.equals("-sf")) { - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -sf input"); - } - securityfile = args[argn]; - continue; - } - if (arg.equals("-novalidation") || arg.equals("-nv")) { - validation = false; - continue; - } - if (arg.equals("-update") || arg.equals("-u")) { - doUpdate = true; - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -u input"); - } - updatename = args[argn]; - continue; - } - if (arg.equals("-jndiname") || arg.equals("-j")) { - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -j input"); - } - jndiname = args[argn]; - continue; - } - if (arg.equals("-rarlink") || arg.equals("-r")) { - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -r input"); - } - rarlink = args[argn]; - continue; - } - if (arg.equals("-property") || arg.equals("-p")) { - doProperty = true; - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -p input"); - } - propertyFile = args[argn]; - continue; - } - if (arg.equals("-dm")) { - jdbcRarLink = jonasRarStr + "DM"; - continue; - } - if (arg.equals("-ds")) { - jdbcRarLink = jonasRarStr + "DS"; - continue; - } - if (arg.equals("-xa")) { - jdbcRarLink = jonasRarStr + "XA"; - continue; - } - if (arg.equals("-cp")) { - jdbcRarLink = jonasRarStr + "CP"; - continue; - } - if (arg.equals("-path")) { - if (argn + 1 == args.length || args[++argn].startsWith("-")) { - usage(); - throw new RAConfigException("Error with -path"); - } - path = args[argn]; - continue; - } - if (arg.equals("-new")) { - newXml = true; - continue; - } - if (fileInputName == null) { - fileInputName = args[argn]; - if (!fileInputName.endsWith(".rar")) { - fileInputName += ".rar"; - } - } else if (doProperty || doUpdate) { - if (fileOutputName == null) { - fileOutputName = args[argn]; - if (!fileOutputName.endsWith(".rar")) { - fileOutputName += ".rar"; - } - } - } else { - usage(); - throw new RAConfigException("Error multiple input files specified without -property or -update"); - } - } - - // Usage ? - if (isHelp) { - usage(); - System.exit(0); - } - if (fileInputName == null) { - usage(); - throw new RAConfigException("Error missing input file"); - } - if (doProperty && fileOutputName == null) { - usage(); - throw new RAConfigException("Error missing output file"); - } - if (fileInputName.equals(fileOutputName)) { - throw new RAConfigException("Input and Output filenames cannot be the same"); - } - - dbProps = new Properties(); - if (doProperty) { - if (jdbcRarLink.length() > 0 && rarlink.length() == 0) { - rarlink = jdbcRarLink; - } - try { - dbProps.load(new FileInputStream(propertyFile)); - } catch (Exception ex) { - if (propertyFile.endsWith(".properties")) { - System.out.println("Error reading " + propertyFile + " " + ex); - } else { - try { - dbProps.load(new FileInputStream(propertyFile + ".properties")); - } catch (Exception ex1) { - System.out.println("Error reading " + propertyFile + " " + ex); - } - } - } - buildXML(fileInputName, jndiname, rarlink, dbProps, encrypt, securityfile, path, isVerbose, true); - if (updatename.length() == 0) { - updatename = System.getProperty("java.io.tmpdir") + File.separator + "jonas-ra.xml"; - } - updateRAR(fileInputName, fileOutputName, updatename, rarlink); - } else if (doUpdate) { - updateRAR(fileInputName, fileOutputName, updatename, rarlink); - } else { - buildXML(fileInputName, jndiname, rarlink, dbProps, encrypt, securityfile, path, isVerbose, newXml); - } - } - - /** - * This method is used to generate rar files from a Properties object - * @param props the properties object which fields are used to create the - * rar file - * @param rarLink rarlink - * @param inputfile the jonas rar file used - * @param outputfile the url of the rar file - * @throws RAConfigException when a problem occurs while generating the rar - * file - */ - public static void generateRars(final Properties props, final String rarLink, final String inputfile, - final String outputfile) throws RAConfigException { - String jndiname = ""; - Boolean encrypt = false; - String securityfile = null; - String path = ""; - Boolean isVerbose = false; - String updatename = ""; - - buildXML(inputfile, jndiname, rarLink, props, encrypt, securityfile, path, isVerbose, true); - if (updatename.length() == 0) { - updatename = System.getProperty("java.io.tmpdir") + File.separator + "jonas-ra.xml"; - } - updateRAR(inputfile, outputfile, updatename, rarLink); - - } -} diff --git a/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfigException.java b/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfigException.java deleted file mode 100644 index a4f7440ecc..0000000000 --- a/jonas/modules/generators/raconfig/src/main/java/org/ow2/jonas/generators/raconfig/RAConfigException.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.generators.raconfig; - - -/** - * RAConfigException thrown when RAConfig fails. - * - * @author Guillaume Sauthier - */ -public class RAConfigException extends Exception { - - /** - * @param message inner message - */ - public RAConfigException(String message) { - super(message); - } - - /** - * @param cause inner cause - */ - public RAConfigException(Throwable cause) { - super(cause); - } - - /** - * @param message inner message - * @param cause inner cause - */ - public RAConfigException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/jonas/modules/generators/raconfig/src/main/resources/META-INF/jonas-generators-raconfig.bnd b/jonas/modules/generators/raconfig/src/main/resources/META-INF/jonas-generators-raconfig.bnd deleted file mode 100644 index a35ec917a9..0000000000 --- a/jonas/modules/generators/raconfig/src/main/resources/META-INF/jonas-generators-raconfig.bnd +++ /dev/null @@ -1,24 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.generators.raconfig diff --git a/jonas/modules/itests/applications/classloader/pom.xml b/jonas/modules/itests/applications/classloader/pom.xml deleted file mode 100644 index 758d81cf13..0000000000 --- a/jonas/modules/itests/applications/classloader/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-applications - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-applications-classloader - bundle - JOnAS :: iTests :: Applications :: ClassLoader - Application which check context classloader at startup - - - - - org.apache.felix - maven-bundle-plugin - true - - - org.ow2.jonas.tests.applications.classloader - - - - - - org.apache.felix - maven-ipojo-plugin - ${ipojo-maven-plugin.version} - - true - ipojo - - - - - ipojo-bundle - - - - - - - diff --git a/jonas/modules/itests/applications/classloader/src/main/java/org/ow2/jonas/tests/applications/classloader/ClassLoaderChecker.java b/jonas/modules/itests/applications/classloader/src/main/java/org/ow2/jonas/tests/applications/classloader/ClassLoaderChecker.java deleted file mode 100644 index 550bb00938..0000000000 --- a/jonas/modules/itests/applications/classloader/src/main/java/org/ow2/jonas/tests/applications/classloader/ClassLoaderChecker.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.tests.applications.classloader; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Component used to check that the Thread context classloader doesn't contain - * the client.jar - * @author Florent Benoit - */ -public class ClassLoaderChecker { - - /** - * Logger. - */ - private Logger log = Logger.getLogger(ClassLoaderChecker.class.getName()); - - /** - * - */ - public void start() throws IOException { - // Write result into a file in work directory - - String jBase = System.getProperty("jonas.base"); - log.log(Level.INFO, "JONAS_BASE set to '" + jBase + "'."); - - FileWriter writer = null; - File jFile = new File(jBase + File.separator - + "classloader-results.txt"); - writer = new FileWriter(jFile); - - try { - - // Get current CL - ClassLoader currentCL = Thread.currentThread() - .getContextClassLoader(); - - // Expect to miss the client.jar classes but not the bootstrap - // classes that should be available - try { - currentCL - .loadClass("org.ow2.jonas.deployablemonitor.DeployableMonitorService"); - // problem, write it to the file - writer.write("KO\n"); - } catch (ClassNotFoundException e) { - // Not found as expected - writer.write("OK\n"); - } - - // No test with a bootstrap class - try { - currentCL.loadClass("org.ow2.jonas.launcher.felix.JOnAS"); - // ok, write it to the file - writer.write("OK\n"); - } catch (ClassNotFoundException e) { - // Not found as expected - writer.write("KO\n"); - } - } finally { - writer.write("\n"); - writer.flush(); - writer.close(); - - } - - } - -} diff --git a/jonas/modules/itests/applications/classloader/src/main/resources/metadata.xml b/jonas/modules/itests/applications/classloader/src/main/resources/metadata.xml deleted file mode 100644 index 6ab379282d..0000000000 --- a/jonas/modules/itests/applications/classloader/src/main/resources/metadata.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/itests/applications/connection-leaks/pom.xml b/jonas/modules/itests/applications/connection-leaks/pom.xml deleted file mode 100644 index 2c5e5db791..0000000000 --- a/jonas/modules/itests/applications/connection-leaks/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-applications - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - JOnAS :: iTests :: Applications :: Connection Leaks - Application which make connection leaks - - - - org.apache.tomcat - servlet-api - provided - - - - - connection-leaks.war - - - org.apache.maven.plugins - maven-war-plugin - - ${basedir}/src/main/webapp/WEB-INF/web.xml - - - - - diff --git a/jonas/modules/itests/applications/connection-leaks/src/main/java/org/ow2/jonas/tests/applications/connectionsleaks/ConnectionLeakServlet.java b/jonas/modules/itests/applications/connection-leaks/src/main/java/org/ow2/jonas/tests/applications/connectionsleaks/ConnectionLeakServlet.java deleted file mode 100644 index 4f75112054..0000000000 --- a/jonas/modules/itests/applications/connection-leaks/src/main/java/org/ow2/jonas/tests/applications/connectionsleaks/ConnectionLeakServlet.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.tests.applications.connectionsleaks; - -import java.io.IOException; -import java.io.PrintWriter; -import java.sql.SQLException; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.sql.DataSource; - -/** - * This class is getting a JDBC connection and forgot to close the SQL Connection - * @author Florent Benoit - */ -public class ConnectionLeakServlet extends HttpServlet { - - /** - * Serial version UID. - */ - private static final long serialVersionUID = 1L; - - /** - * - */ - @Override - protected void doGet(final HttpServletRequest req, final HttpServletResponse response) throws ServletException, IOException { - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println("Connection Leak Servlet"); - - DataSource ds = null; - try { - ds = (DataSource) new InitialContext().lookup("jdbc_1"); - ds.getConnection(); - out.println("Example OK"); - } catch (NamingException e) { - out.println("Cannot lookup get jdbc_1"); - e.printStackTrace(); - } catch (SQLException e) { - out.println("Cannot get a Connection"); - e.printStackTrace(); - } finally { - out.println(""); - out.close(); - } - - } -} diff --git a/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/jonas-web.xml b/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index a91d645b82..0000000000 --- a/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - connection-leaks - - diff --git a/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/web.xml b/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index f09a3e280d..0000000000 --- a/jonas/modules/itests/applications/connection-leaks/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Make connection leaks - - ConnectionLeak - org.ow2.jonas.tests.applications.connectionsleaks.ConnectionLeakServlet - - - - ConnectionLeak - /ConnectionLeak - - - - - - ConnectionLeak - - - - diff --git a/jonas/modules/itests/applications/jaxws-add/assemblies/ear/pom.xml b/jonas/modules/itests/applications/jaxws-add/assemblies/ear/pom.xml deleted file mode 100644 index 2109379da1..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/assemblies/ear/pom.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - assemblies - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Assemblies :: EAR - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean - ${project.version} - ejb - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-wsadd-webapp - ${project.version} - war - - - - wsadd - - - org.apache.maven.plugins - maven-ear-plugin - 2.3.2 - - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean-api - lib/addbean-api.jar - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-wsadd-webapp - /wsadd-sample - - - - - true - - - true - - - - - diff --git a/jonas/modules/itests/applications/jaxws-add/assemblies/pom.xml b/jonas/modules/itests/applications/jaxws-add/assemblies/pom.xml deleted file mode 100644 index d560fd49d1..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/assemblies/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - org.ow2.jonas - jonas-itests-applications-jaxws-add - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add - assemblies - pom - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Assemblies - Assemblies of Example Project - - ear - - - - wsadd - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/api/pom.xml b/jonas/modules/itests/applications/jaxws-add/modules/api/pom.xml deleted file mode 100644 index 73c5e21a99..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/api/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - modules - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean-api - jar - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Modules :: Api - - - addbean-api - - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/api/src/main/java/org/ow2/jonas/tests/applications/wsadd/api/IAddBean.java b/jonas/modules/itests/applications/jaxws-add/modules/api/src/main/java/org/ow2/jonas/tests/applications/wsadd/api/IAddBean.java deleted file mode 100644 index ad8bddb517..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/api/src/main/java/org/ow2/jonas/tests/applications/wsadd/api/IAddBean.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.tests.applications.wsadd.api; - -/** - * Add Bean interface. - * @author Helene Joanin - */ -public interface IAddBean { - - /** - * @return sum of two args - */ - int addFromBean(int op1, int op2); - -} diff --git a/jonas/modules/itests/applications/jaxws-add/modules/beans/pom.xml b/jonas/modules/itests/applications/jaxws-add/modules/beans/pom.xml deleted file mode 100644 index c166c5d124..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/beans/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - modules - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean - ejb - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Modules :: Beans - - - org.ow2.spec.ee - ow2-javaee-5-spec - 1.0.3 - provided - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean-api - ${project.version} - - - - addbean - - - org.apache.maven.plugins - maven-ejb-plugin - 2.1 - - 3.0 - - - - - - - codehaus - Codehaus Release Repo - http://repository.codehaus.org - - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/java/org/ow2/jonas/tests/applications/wsadd/beans/AddBean.java b/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/java/org/ow2/jonas/tests/applications/wsadd/beans/AddBean.java deleted file mode 100644 index 11f8d7d606..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/java/org/ow2/jonas/tests/applications/wsadd/beans/AddBean.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 20010 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.tests.applications.wsadd.beans; - -import javax.ejb.Local; -import javax.ejb.Stateless; -import javax.ejb.TransactionAttribute; -import static javax.ejb.TransactionAttributeType.SUPPORTS; - -import org.ow2.jonas.tests.applications.wsadd.api.IAddBean; - - -/** - * Stateless Add. - * @author Helene Joanin - */ -@Stateless -@Local(IAddBean.class) -public class AddBean implements IAddBean { - - /** - * @return sum of the two args - */ - @TransactionAttribute(SUPPORTS) - public int addFromBean(int op1, int op2) { - return (op1 + op2); - } - -} diff --git a/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/resources/META-INF/ejb-jar.xml b/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/resources/META-INF/ejb-jar.xml deleted file mode 100644 index 4c8a66240a..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/beans/src/main/resources/META-INF/ejb-jar.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/pom.xml b/jonas/modules/itests/applications/jaxws-add/modules/pom.xml deleted file mode 100644 index 993255a52c..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - org.ow2.jonas - jonas-itests-applications-jaxws-add - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add - modules - pom - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Modules - - api - beans - webapp - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/pom.xml b/jonas/modules/itests/applications/jaxws-add/modules/webapp/pom.xml deleted file mode 100644 index c5c4d12662..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - modules - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-wsadd-webapp - war - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Modules :: Webapp - - - - org.ow2.spec.ee - ow2-javaee-5-spec - 1.0.3 - provided - - - org.ow2.jonas.jonas-itests-applications-jaxws-add - module-addbean-api - ${project.version} - - - org.ow2.bundles - ow2-audit-report - provided - - - - - module-wsadd-webapp - - - org.apache.maven.plugins - maven-war-plugin - - ${basedir}/src/main/webapp/WEB-INF/web.xml - - - - - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/AuditPropagationServlet.java b/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/AuditPropagationServlet.java deleted file mode 100644 index 86b93821a4..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/AuditPropagationServlet.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.tests.applications.wsadd.ws; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.ow2.util.auditreport.api.IAuditID; -import org.ow2.util.auditreport.impl.CurrentInvocationID; - -/** - * A {@code AuditPropagationServlet} is ... - * - * @author Guillaume Sauthier - */ -public class AuditPropagationServlet extends HttpServlet { - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - // The Audit ID should be installed in the ThreadLocal now ... - IAuditID id = CurrentInvocationID.getInstance().getAuditID(); - String result = "null"; - if (id != null) { - result = id.getID(); - } - - // Print back the result - resp.getWriter().println(result); - } -} diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/IWSAdd.java b/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/IWSAdd.java deleted file mode 100644 index 4865c2c446..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/IWSAdd.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.tests.applications.wsadd.ws; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; -import javax.xml.ws.RequestWrapper; - -@WebService(name = "WSAdd", targetNamespace = "http://wsadd.applis.tests.jonas.ow2.org/") -public interface IWSAdd { - - @WebMethod(operationName = "add") - @RequestWrapper(localName = "addRequest") - public int add(@WebParam(name = "op1") int op1, @WebParam(name = "op2") int op2); - - public boolean checkEnvEntry(); - public boolean checkEjb(); - public boolean checkResource(); - -} diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/WSAdd.java b/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/WSAdd.java deleted file mode 100644 index 0d8fc5e2ef..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/java/org/ow2/jonas/tests/applications/wsadd/ws/WSAdd.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 20010 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.tests.applications.wsadd.ws; - -import javax.annotation.Resource; -import javax.ejb.EJB; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; -import javax.naming.InitialContext; -import javax.xml.ws.RequestWrapper; - -import org.ow2.jonas.tests.applications.wsadd.api.IAddBean; - - -@WebService(name="WSAdd",targetNamespace="http://wsadd.applis.tests.jonas.ow2.org/") -public class WSAdd implements IWSAdd { - - @WebMethod(operationName = "add") - @RequestWrapper(localName = "addRequest") - public int add(@WebParam(name = "op1") int op1, @WebParam(name = "op2") int op2) { - return op1 + op2; - } - - public boolean checkEnvEntry() { - try { - InitialContext ic = new InitialContext(); - String envValue = (String) ic.lookup("java:comp/env/location"); - return ("echirolles".equals(envValue)); - } catch (javax.naming.NamingException e) { - e.printStackTrace(); - return false; - } - - } - - @EJB - private IAddBean addBean; - public boolean checkEjb() { - int op1 = 10; - int op2 = 12; - int res = addBean.addFromBean(op1, op2); - return (res == (op1 + op2)); - } - - @Resource(mappedName="CF") - private ConnectionFactory cf; - public boolean checkResource() { - try { - Connection con = cf.createConnection(); - con.close(); - return true; - } catch (javax.jms.JMSException e) { - e.printStackTrace(); - return false; - } - } - -} diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/jonas-web.xml b/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 3630a9b861..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - /wsadd-sample - diff --git a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/web.xml b/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 48d2788b68..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/modules/webapp/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - This is an env entry - location - java.lang.String - echirolles - - - - InvocationIdPropagationChecker - org.ow2.jonas.tests.applications.wsadd.ws.AuditPropagationServlet - - - - InvocationIdPropagationChecker - /PropagationChecker - - - diff --git a/jonas/modules/itests/applications/jaxws-add/pom.xml b/jonas/modules/itests/applications/jaxws-add/pom.xml deleted file mode 100644 index 2d61b1e7c0..0000000000 --- a/jonas/modules/itests/applications/jaxws-add/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - org.ow2.jonas - jonas-itests-applications - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-itests-applications-jaxws-add - pom - JOnAS :: iTests :: Applications :: JAX-WS Add sample :: Modules - - modules - assemblies - - diff --git a/jonas/modules/itests/applications/jaxws-sample/pom.xml b/jonas/modules/itests/applications/jaxws-sample/pom.xml deleted file mode 100644 index 0aa24092dc..0000000000 --- a/jonas/modules/itests/applications/jaxws-sample/pom.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-applications - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - JOnAS :: iTests :: Applications :: JAX-WS sample - JAX-WS sample from the JOnAS JAX-WS tutorial - - - ${project.build.directory}/jonas-full-${project.version} - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - - - - maven-antrun-plugin - - - generate-jaxws-sample - generate-resources - - - - - - - - - - - - - run - - - - - - maven-ear-plugin - - - - ${project.version} - - - - - - - diff --git a/jonas/modules/itests/applications/pom.xml b/jonas/modules/itests/applications/pom.xml deleted file mode 100644 index 5909fd06b6..0000000000 --- a/jonas/modules/itests/applications/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-applications - pom - JOnAS :: iTests :: Applications - Applications used by tests - - - connection-leaks - classloader - jaxws-sample - versioning - jaxws-add - - - diff --git a/jonas/modules/itests/applications/versioning/pom.xml b/jonas/modules/itests/applications/versioning/pom.xml deleted file mode 100644 index ea71992a4e..0000000000 --- a/jonas/modules/itests/applications/versioning/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-applications - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-applications-versioning - JOnAS :: iTests :: Applications :: Versioning - Versioned applications (Web, EJB, EAR) - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/non-versioned-war/non-versioned-war.war b/jonas/modules/itests/applications/versioning/src/main/resources/non-versioned-war/non-versioned-war.war deleted file mode 100644 index 6572e8229c895ec3e79d2e7d50f04bd7ca096d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmWIWW@Zs#U|`^25QtN@mJE%GbOZAIftU-3GxJhXEA%o-a&vUg7;+s@;BmOP_krvq zy(dfucbdPLBec>fYsrp^-(qjSwVhvnC%-q3dBL2Bf{!MW!SkcjOoq3HX`ZQ3slaYZz z6iHQ9eqLg+Zh2~wUPW$B?*zmALk0q^oq;22AA_mQ@qVlKxgdY^Wd z*46pmYV2Ul+f#l2^6qpq=W=2D2Rl{Qq)dDo#9*~5I!CMW$E{UU@2q)lT&%ifjnbT{ zZ>uLNJn@Qidf~k`xkqyD`Ug(C(w|7%t}@*;=lqeBeBD-Q~L- z(nGstbgU}MJZnxa&Tv21Hsx=xfxn(Ur|r*QTWp@*Jg`+{<%Hcc3tJf57T5$v81KmE z-`aI8TP5WGQm5Q6i}O;>Ua@>z#|R1|i0`d|F;Z~**XOf9Urz%1o*&8gaDV%AA2Q%M zdYLX>39Zh zjMlyWD@E(5PQq#j>0eLc&P3i7Ij&vsR!h*0X~X-O+s*jr)xS6@kURga`kup|4z`zA zeiNMLx7zH^x8q8mfufTf5wjx89^oQ=3N`V95l?TL#REDq(TRMa2QUFp@kaVG>I%Ef9 ei!6i@py-2H42`+~Z&o&t0u~^A2c&zLKs*3}Dn7;l diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.classpath b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.classpath deleted file mode 100644 index 1984370d7e..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.project b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.project deleted file mode 100644 index e78624882f..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - Versioning test - version 1.0.0 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.core.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7e5eaefea5..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,256 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=true -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=130 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.ui.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 2b1bf7e3e2..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -formatter_profile=_Eclipse + spaces -formatter_settings_version=11 -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.maven.ide.eclipse.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index 3c15060d32..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Wed Aug 13 13:43:52 CEST 2008 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -includeModules=false -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -version=1 diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/pom.xml deleted file mode 100644 index 90695bca86..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - org.ow2.jonas - root-war - 1.0.0 - 4.0.0 - war - - - - - maven-war-plugin - - ${project.artifactId} - ${basedir} - - - ${version} - - - - - - - - - - javax.servlet - servlet-api - 2.5 - provided - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/root-war.war b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/root-war.war deleted file mode 100644 index eefc2bd52c10904f6d5b62c7ef618528f94bc3ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6504 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 - - - - / - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/WEB-INF/web.xml b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 81788faffb..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - root-war - - - RedirectServletWithContext - - org.ow2.jonas.test.versioning.RedirectServletWithContext - - - - RedirectServletWithContext - /redirect-servlet-with-context - - - - RedirectServletWithoutContext - - org.ow2.jonas.test.versioning.RedirectServletWithoutContext - - - - RedirectServletWithoutContext - /redirect-servlet-without-context - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/test.jsp b/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/test.jsp deleted file mode 100644 index ccb8bd446d..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/root-war/src/main/webapp/test.jsp +++ /dev/null @@ -1,2 +0,0 @@ -Context URL: "<%= getServletContext().getContextPath() %>" -Test image: \ No newline at end of file diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/secured-war/secured-war.war b/jonas/modules/itests/applications/versioning/src/main/resources/secured-war/secured-war.war deleted file mode 100644 index 77fa39682a62a5b1cd5f6802a3d27d2bb33d6d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmWIWW@Zs#U|`^2xD_O6t!?+N-VDg|1Y#~A&df_mt~0p0Ar{Zb43J zZfaghVo7Fxo^DubQ8AFVQZUpr&@Bvs|9NqQBzIddmp^nPL>aBP0;jsFY31bS?Kr+8x0+Bu5~7Tjy*+IKR>>U!^% z$&)-LCE* zMsv@HG}p6)T&*d)WG1kFTh6tQ$9`w2rd~Gj{H(lDZ~Ez@k9_vsxo`W5cbWpvM)pe* z-)raF=6~Shygnr(`c&AYBeA^f?^mVDJ)FLK?Owh3^OJScW9?^)mPhZ{EVXB2iA%tj z_!Z}G>Q4T=WA2q2F;^|;Yv)23=NP@Zm8d3F;MLc1@Ak`M^&GjKdzqc>c%3>7V?;kF za(LZ2FR8uPI_I3??OT~Shr5_cAC!E$VsLiO3Fq{;T!D?>UuaBS?$vkAHny(+zU6{% zvrj5EKgik0yf2bTY{JyGDKe*Q9~CsMlAL?uz~O^m%6wxYpS#96|9&fYx&1!BxtHHm z#;>`{CbjFYxy&_Nn(OO+HUHzs^)BY;OpE(l^QUy}lNDEX%Qywf?U=G~-{OA3$?76* z*M5Gx|Da-B{QU - - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.project b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.project deleted file mode 100644 index e78624882f..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - Versioning test - version 1.0.0 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.core.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7e5eaefea5..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,256 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=true -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=130 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.ui.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 2b1bf7e3e2..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -formatter_profile=_Eclipse + spaces -formatter_settings_version=11 -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.maven.ide.eclipse.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index 3c15060d32..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Wed Aug 13 13:43:52 CEST 2008 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -includeModules=false -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -version=1 diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ear/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ear/pom.xml deleted file mode 100644 index 6c58e9fbee..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ear/pom.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 1.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-ear - ear - - - - ${pom.groupId} - ${parent.artifactId}-ejb - ${version} - ejb - - - ${pom.groupId} - ${parent.artifactId}-war - ${version} - war - - - - - - - maven-ear-plugin - - ${parent.artifactId} - ${parent.artifactId} - ${parent.artifactId} - ${basedir}/.. - 5 - - - ${pom.groupId} - - ${parent.artifactId}-war - - - /${parent.artifactId} - - - ${parent.artifactId}.war - - - - ${pom.groupId} - - ${parent.artifactId}-ejb - - - ${parent.artifactId}.jar - - - - - - ${version} - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/pom.xml deleted file mode 100644 index 93d02e5b3f..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 1.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-ejb - jar - - - - - maven-ejb-plugin - - 3.0 - ${parent.artifactId} - - - true - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java deleted file mode 100644 index 8b9a551fe2..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.ow2.jonas.test.versioning; - -public interface TestBean { - - /** - * @return Version number. - */ - String getVersion(); - -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java deleted file mode 100644 index caffcb2a1f..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import javax.ejb.Stateless; - -@Stateless -public class TestBeanImpl implements TestBean { - - private static String version = "1.0.0"; - - public String getVersion() { - return version; - } - -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/pom.xml deleted file mode 100644 index e31146b3fc..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - org.ow2.jonas - test-versioning - 1.0.0 - 4.0.0 - pom - - - install - - - maven-compiler-plugin - - 1.5 - 1.5 - - - - - - - ejb - war - ear - - - - - javax.servlet - servlet-api - 2.5 - provided - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - 1.0-M1 - provided - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/test-versioning.ear b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/test-versioning.ear deleted file mode 100644 index c70ed778335896a9a06d6543c4aad9e675059582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8950 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 G;Qs-0auo9b diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/pom.xml deleted file mode 100644 index cf38b48650..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 1.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-war - war - - - - ${groupId} - ${parent.artifactId}-ejb - ${version} - provided - - - - - - - maven-war-plugin - - ${parent.artifactId} - - - true - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java deleted file mode 100644 index b36f69edc9..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import java.io.IOException; - -import javax.ejb.EJB; -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class TestServlet extends HttpServlet { - - @EJB - private TestBean bean; - - private static String version = "1.0.0"; - - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse - * response) - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.getSession(true); - response.setContentType("text/html"); - - // Use response.getOutputStream() to test JONAS-166 - ServletOutputStream output = response.getOutputStream(); - output.println("WAR version: " + version); - output.println("EJB version: " + bean.getVersion()); - - // Write two context paths in order to test when offset is not 0 - StringBuilder sb = new StringBuilder(); - sb.append("Context URL: \"" + this.getServletContext().getContextPath() + "\", "); - sb.append("Test image: "); - output.println(sb.toString()); - } -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/WEB-INF/web.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 6c73668a4f..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Versioning Test - - TestServlet - - org.ow2.jonas.test.versioning.TestServlet - - - - TestServlet - /test-servlet - - \ No newline at end of file diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/test.jsp b/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/test.jsp deleted file mode 100644 index ccb8bd446d..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version1.0.0/war/src/main/webapp/test.jsp +++ /dev/null @@ -1,2 +0,0 @@ -Context URL: "<%= getServletContext().getContextPath() %>" -Test image: \ No newline at end of file diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.classpath b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.classpath deleted file mode 100644 index b6774abec0..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.project b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.project deleted file mode 100644 index 5505fc25e1..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - Versioning test - version 2.0.0 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.core.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7e5eaefea5..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,256 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=true -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=130 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.ui.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 2b1bf7e3e2..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Wed Aug 13 13:44:14 CEST 2008 -eclipse.preferences.version=1 -formatter_profile=_Eclipse + spaces -formatter_settings_version=11 -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.maven.ide.eclipse.prefs b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index 3c15060d32..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Wed Aug 13 13:43:52 CEST 2008 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -includeModules=false -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -version=1 diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ear/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ear/pom.xml deleted file mode 100644 index b5768499ab..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ear/pom.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 2.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-ear - ear - - - - ${pom.groupId} - ${parent.artifactId}-ejb - ${version} - ejb - - - ${pom.groupId} - ${parent.artifactId}-war - ${version} - war - - - - - - - maven-ear-plugin - - ${parent.artifactId} - ${parent.artifactId} - ${parent.artifactId} - ${basedir}/.. - 5 - - - ${pom.groupId} - - ${parent.artifactId}-war - - - /${parent.artifactId} - - - ${parent.artifactId}.war - - - - ${pom.groupId} - - ${parent.artifactId}-ejb - - - ${parent.artifactId}.jar - - - - - - ${version} - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/pom.xml deleted file mode 100644 index ff3aeddcec..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 2.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-ejb - jar - - - - - maven-ejb-plugin - - 3.0 - ${parent.artifactId} - - - true - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java deleted file mode 100644 index 8b9a551fe2..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBean.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.ow2.jonas.test.versioning; - -public interface TestBean { - - /** - * @return Version number. - */ - String getVersion(); - -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java deleted file mode 100644 index c76bbc2539..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/ejb/src/main/java/org/ow2/jonas/test/versioning/TestBeanImpl.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import javax.ejb.Stateless; - -@Stateless -public class TestBeanImpl implements TestBean { - - private static String version = "2.0.0"; - - public String getVersion() { - return version; - } - -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/pom.xml deleted file mode 100644 index acd4ada46a..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - org.ow2.jonas - test-versioning - 2.0.0 - 4.0.0 - pom - - - install - - - maven-compiler-plugin - - 1.5 - 1.5 - - - - - - - ejb - war - ear - - - - - javax.servlet - servlet-api - 2.5 - provided - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - 1.0-M1 - provided - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/test-versioning.ear b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/test-versioning.ear deleted file mode 100644 index d4fb02458bb5cb6fa08b9ede671cf68e3bbea37e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10325 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 diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/pom.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/pom.xml deleted file mode 100644 index 40315a9707..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - org.ow2.jonas - test-versioning - 2.0.0 - ../pom.xml - - 4.0.0 - ${parent.artifactId}-war - war - - - - ${groupId} - ${parent.artifactId}-ejb - ${version} - provided - - - - - - - maven-war-plugin - - ${parent.artifactId} - - - true - - - - - - - diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithContext.java b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithContext.java deleted file mode 100644 index 4e3d7155d3..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithContext.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class RedirectServletWithContext extends HttpServlet { - - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse - * response) - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.sendRedirect(this.getServletContext().getContextPath() + "/somewhere"); - } -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithoutContext.java b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithoutContext.java deleted file mode 100644 index afd826c8c1..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/RedirectServletWithoutContext.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class RedirectServletWithoutContext extends HttpServlet { - - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse - * response) - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.sendRedirect("somewhere"); - } -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java deleted file mode 100644 index 61944b2173..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/java/org/ow2/jonas/test/versioning/TestServlet.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.ow2.jonas.test.versioning; - -import java.io.IOException; - -import javax.ejb.EJB; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class TestServlet extends HttpServlet { - - @EJB - private TestBean bean; - - private static String version = "2.0.0"; - - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse - * response) - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.getSession(true); - response.setContentType("text/html"); - response.getWriter().println("WAR version: " + version); - response.getWriter().println("EJB version: " + bean.getVersion()); - response.getWriter().println("Context URL: \"" + this.getServletContext().getContextPath() + "\""); - - // Split output to test JONAS-221 - final int firstDivider = 3; - final int secondDivider = 6; - String firstPart = this.getServletContext().getContextPath().substring(0, firstDivider); - String secondPart = this.getServletContext().getContextPath().substring(firstDivider, secondDivider); - String thirdPart = this.getServletContext().getContextPath().substring(secondDivider); - response.getWriter().print("Test image: "); - - // Output that looks like split but that actually isn't (JONAS-221) - response.getWriter().print("First part: " + firstPart); - response.getWriter().println(" ... and no other parts !"); - } -} diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/WEB-INF/web.xml b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index bf5a54bcac..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Versioning Test - - - TestServlet - - org.ow2.jonas.test.versioning.TestServlet - - - - TestServlet - /test-servlet - - - - RedirectServletWithContext - - org.ow2.jonas.test.versioning.RedirectServletWithContext - - - - RedirectServletWithContext - /redirect-servlet-with-context - - - - RedirectServletWithoutContext - - org.ow2.jonas.test.versioning.RedirectServletWithoutContext - - - - RedirectServletWithoutContext - /redirect-servlet-without-context - - \ No newline at end of file diff --git a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/test.jsp b/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/test.jsp deleted file mode 100644 index ccb8bd446d..0000000000 --- a/jonas/modules/itests/applications/versioning/src/main/resources/version2.0.0/war/src/main/webapp/test.jsp +++ /dev/null @@ -1,2 +0,0 @@ -Context URL: "<%= getServletContext().getContextPath() %>" -Test image: \ No newline at end of file diff --git a/jonas/modules/itests/cargo/iiop/pom.xml b/jonas/modules/itests/cargo/iiop/pom.xml deleted file mode 100644 index 2bc7c9a839..0000000000 --- a/jonas/modules/itests/cargo/iiop/pom.xml +++ /dev/null @@ -1,274 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-cargo - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo-iiop - JOnAS :: iTests :: Cargo :: IIOP - Tests the JOnAS distribution via CARGO - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - copy-bundles - process-test-resources - - copy - - - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - ${jonas.base}/deploy - - - true - true - - - - - - - - maven-antrun-plugin - - - copy-tests - generate-test-sources - - - - - - - - - - - - - run - - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo.version} - - - start-jonas - pre-integration-test - - start - - - - stop-jonas - post-integration-test - - stop - - - - - - jonas5x - installed - ${jonas.root} - - - existing - ${jonas.base} - - localhost - ${webcontainer.port} - http - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - - - - - - - - - maven-surefire-plugin - - true - - - - surefire-it - integration-test - - test - - - - - webcontainer.port - ${webcontainer.port} - - - carol.url - service:jmx:iiop://localhost/jndi/iiop://localhost:${carol.port}/iiopconnector_jonas - - - project.version - ${project.version} - - - jonas.base - ${jonas.base} - - - false - - - - - - - - diff --git a/jonas/modules/itests/cargo/irmi/pom.xml b/jonas/modules/itests/cargo/irmi/pom.xml deleted file mode 100644 index 30a113f852..0000000000 --- a/jonas/modules/itests/cargo/irmi/pom.xml +++ /dev/null @@ -1,274 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-cargo - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo-irmi - JOnAS :: iTests :: Cargo :: IRMI - Tests the JOnAS distribution via CARGO - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - copy-bundles - process-test-resources - - copy - - - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - ${jonas.base}/deploy - - - true - true - - - - - - - - maven-antrun-plugin - - - copy-tests - generate-test-sources - - - - - - - - - - - - - run - - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo.version} - - - start-jonas - pre-integration-test - - start - - - - stop-jonas - post-integration-test - - stop - - - - - - jonas5x - installed - ${jonas.root} - - - existing - ${jonas.base} - - localhost - ${webcontainer.port} - http - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - - - - - - - - - maven-surefire-plugin - - true - - - - surefire-it - integration-test - - test - - - - - webcontainer.port - ${webcontainer.port} - - - carol.url - service:jmx:rmi://localhost/jndi/rmi://localhost:${carol.port}/irmiconnector_jonas - - - project.version - ${project.version} - - - jonas.base - ${jonas.base} - - - false - - - - - - - - diff --git a/jonas/modules/itests/cargo/jrmp/pom.xml b/jonas/modules/itests/cargo/jrmp/pom.xml deleted file mode 100644 index 9640d0fede..0000000000 --- a/jonas/modules/itests/cargo/jrmp/pom.xml +++ /dev/null @@ -1,258 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-cargo - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo-jrmp - JOnAS :: iTests :: Cargo :: JRMP - Tests the JOnAS distribution via CARGO - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - copy-bundles - process-test-resources - - copy - - - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - ${jonas.base}/deploy - - - true - true - - - - - - - - - - maven-antrun-plugin - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo.version} - - - start-jonas - pre-integration-test - - start - - - - stop-jonas - post-integration-test - - stop - - - - - - jonas5x - installed - ${jonas.root} - - - existing - ${jonas.base} - - localhost - ${webcontainer.port} - http - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - - - - - - - - - maven-surefire-plugin - - true - - - - surefire-it - integration-test - - test - - - - - webcontainer.port - ${webcontainer.port} - - - carol.url - service:jmx:rmi://localhost/jndi/rmi://localhost:${carol.port}/jrmpconnector_jonas - - - project.version - ${project.version} - - - jonas.base - ${jonas.base} - - - false - - - - - - - - diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas290Test.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas290Test.java deleted file mode 100644 index fa9320b83c..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas290Test.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.net.URL; - -import org.testng.annotations.Test; - -/** - * Tests that the JONAS-290 bug doesn't happen. - * - * @author S. Ali Tokmen - */ -public class BugJonas290Test extends TestCommons { - - @Test - public void testJonas290() throws Exception { - String response = getContentAsString(new URL("http://localhost:" + webcontainerPort + "/jonas-290/")); - checkString(response, "Hello again, World"); - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas292Test.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas292Test.java deleted file mode 100644 index cac9928aa2..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas292Test.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.util.List; - -import javax.management.Attribute; -import javax.management.ObjectName; -import org.apache.commons.io.IOUtils; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests that the JONAS-292 bug doesn't happen. - * - * @author S. Ali Tokmen - */ -public class BugJonas292Test extends TestCommons { - - @Test - public void deactivateDevelopmentMode() throws Exception { - ObjectName depmonitor = new ObjectName("jonas:type=service,name=depmonitor"); - this.mBeanServerConnection.setAttribute(depmonitor, new Attribute("development", Boolean.FALSE)); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testJonas292() throws Exception { - final ObjectName j2eeServer = new ObjectName("jonas:j2eeType=J2EEServer,name=jonas"); - - final String jonasBase = (String) this.mBeanServerConnection.getAttribute(j2eeServer, "jonasBase"); - Assert.assertNotNull(jonasBase, "jonasBase is null"); - final String fileName = "jonas-292.jar"; - final File targetFile = new File(jonasBase, "deploy/" + fileName); - final Object[] opParams = {targetFile.getAbsolutePath()}; - final String[] opSignature = {"java.lang.String"}; - - this.checkDeployableStatus(j2eeServer, "deployableJars", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployableFiles", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployedJars", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployedFiles", fileName, false); - - try { - final InputStream fileContents = this.getClass().getClassLoader().getResourceAsStream(fileName); - Assert.assertNotNull(fileContents, "Cannot find " + fileName); - - FileOutputStream targetStream = new FileOutputStream(targetFile); - IOUtils.copy(fileContents, targetStream); - - targetStream.close(); - targetStream = null; - } finally { - System.gc(); - } - - try { - this.checkDeployableStatus(j2eeServer, "deployableJars", fileName, true); - this.checkDeployableStatus(j2eeServer, "deployableFiles", fileName, true); - this.checkDeployableStatus(j2eeServer, "deployedJars", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployedFiles", fileName, false); - - mBeanServerConnection.invoke(j2eeServer, "deploy", opParams, opSignature); - - this.checkDeployableStatus(j2eeServer, "deployableJars", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployableFiles", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployedJars", fileName, true); - this.checkDeployableStatus(j2eeServer, "deployedFiles", fileName, true); - - mBeanServerConnection.invoke(j2eeServer, "undeploy", opParams, opSignature); - - this.checkDeployableStatus(j2eeServer, "deployableJars", fileName, true); - this.checkDeployableStatus(j2eeServer, "deployableFiles", fileName, true); - this.checkDeployableStatus(j2eeServer, "deployedJars", fileName, false); - this.checkDeployableStatus(j2eeServer, "deployedFiles", fileName, false); - } finally { - Assert.assertTrue(targetFile.delete(), "File " + targetFile + " cannot be deleted"); - } - } - - private void checkDeployableStatus(final ObjectName j2eeServer, final String attribute, final String fileName, - final boolean status) throws Exception { - - boolean found = false; - List files = (List) this.mBeanServerConnection.getAttribute(j2eeServer, attribute); - for (String file : files) { - if (file.contains(fileName)) { - found = true; - break; - } - } - - Assert.assertEquals(found, status, "File " + fileName + " is " + (status ? "not " : "") + "in the " + attribute - + " list: " + files); - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas96Test.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas96Test.java deleted file mode 100644 index a3839d9499..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/BugJonas96Test.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.File; -import java.util.List; - -import javax.management.Attribute; -import javax.management.ObjectName; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests that the JONAS-96 bug doesn't happen. - * - * @author S. Ali Tokmen - */ -public class BugJonas96Test extends TestCommons { - - @Test - public void deactivateDevelopmentMode() throws Exception { - ObjectName depmonitor = new ObjectName("jonas:type=service,name=depmonitor"); - this.mBeanServerConnection.setAttribute(depmonitor, new Attribute("development", Boolean.FALSE)); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testEar() throws Exception { - checkIfFileAppearsAsDeployed("dummy.ear", "Ear"); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testJar() throws Exception { - checkIfFileAppearsAsDeployed("dummy.jar", "Jar"); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testRar() throws Exception { - checkIfFileAppearsAsDeployed("dummy.rar", "Rar"); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testWar() throws Exception { - checkIfFileAppearsAsDeployed("dummy.war", "War"); - } - - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void testFile() throws Exception { - checkIfFileAppearsAsDeployed("dummy.xml", "File"); - } - - private void checkIfFileAppearsAsDeployed(final String fileName, final String type) throws Exception { - // Connect to the JMX server - List files; - ObjectName j2eeServer = new ObjectName("jonas:j2eeType=J2EEServer,name=jonas"); - - files = (List) this.mBeanServerConnection.getAttribute(j2eeServer, "deployable" + type + "s"); - for (String file : files) { - Assert.assertFalse(file.contains(fileName), "File " + fileName + " already exists: " + file); - } - files = (List) this.mBeanServerConnection.getAttribute(j2eeServer, "deployableFiles"); - for (String file : files) { - Assert.assertFalse(file.contains(fileName), "File " + fileName + " already exists: " + file); - } - - String jonasBase = (String) this.mBeanServerConnection.getAttribute(j2eeServer, "jonasBase"); - Assert.assertNotNull(jonasBase, "jonasBase is null"); - File testFile = new File(jonasBase, "deploy/" + fileName); - testFile.createNewFile(); - - try { - boolean found = false; - files = (List) this.mBeanServerConnection.getAttribute(j2eeServer, "deployable" + type + "s"); - for (String file : files) { - if (file.contains(file)) { - found = true; - break; - } - } - Assert.assertTrue(found, "File " + fileName + " doesn't appear in the deployable" + type + "s list"); - files = (List) this.mBeanServerConnection.getAttribute(j2eeServer, "deployableFiles"); - for (String file : files) { - if (file.contains(file)) { - return; - } - } - Assert.fail("File " + fileName + " doesn't appear in the deployableFiles list"); - } finally { - Assert.assertTrue(testFile.delete(), "File " + testFile + " cannot be deleted"); - } - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CargoTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CargoTest.java deleted file mode 100644 index 00d08bd90d..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CargoTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.net.URL; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests the JOnAS - CARGO plug-in. This test is expected to work with JOnAS 4 - * and JOnAS 5 without any issues. - * - * @author S. Ali Tokmen - * @author Florent Benoit junit->TestNG - */ -public class CargoTest extends TestCommons { - - @Test - public void testCargo() throws Exception { - final URL url = new URL("http://localhost:" + this.webcontainerPort + "/cargocpc/index.html"); - final String expected = "Cargo Ping Component used to verify if the container is started."; - - String content = null; - final long stopTime = System.currentTimeMillis() + TestCommons.TIMEOUT * 1000; - while (System.currentTimeMillis() < stopTime) { - Thread.sleep(1000); - content = this.getContentAsString(url); - if (content.contains(expected)) { - break; - } - } - - Assert.assertTrue(content.contains(expected), content + " does not contain " + expected); - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/ClassLoaderTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/ClassLoaderTest.java deleted file mode 100644 index c9521e8038..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/ClassLoaderTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests that the JONAS-364 bug doesn't happen. - * @author Florent - */ -public class ClassLoaderTest extends TestCommons { - - @Test - public void testJonas364() throws Exception { - String jBase = getJOnASBase(); - Assert.assertNotNull(jBase, "Unable to get JOnAS Base property"); - - // Check the file with result is here - File resultFile = new File(jBase + File.separator + "classloader-results.txt"); - - Assert.assertTrue(resultFile.exists(), "No results for classloader"); - - // Read the first line - FileReader fReader = new FileReader(resultFile); - BufferedReader bufferedReader = new BufferedReader(fReader); - String firstLine = bufferedReader.readLine(); - Assert.assertEquals(firstLine, "OK"); - String secondLine = bufferedReader.readLine(); - Assert.assertEquals(secondLine, "OK"); - - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CookieManager.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CookieManager.java deleted file mode 100644 index f10c6a88aa..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/CookieManager.java +++ /dev/null @@ -1,165 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.IOException; -import java.net.URLConnection; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * HTTP cookie manager. - * - * @author S. Ali Tokmen - */ -public class CookieManager { - - private static final String DATE_FORMAT = "EEE, dd-MMM-yyyy hh:mm:ss z"; - - private static final DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); - - private List cookies; - - /** - * Constructs a cookie manager with no cookies. - */ - public CookieManager() { - this.cookies = new ArrayList(); - } - - /** - * Constructs a cookie manager with no cookies. - * - * @param copy CookieManager to copy cookies from. - */ - public CookieManager(CookieManager copy) { - if (copy != null) { - this.cookies = new ArrayList(copy.cookies); - } else { - this.cookies = new ArrayList(); - } - } - - /** - * Adds a cookie to the cookies list. - * - * @param cookie Cookie string to add. - */ - private void addCookie(String cookie) { - String key = cookie.substring(0, cookie.indexOf('=')); - for (String c : this.cookies) { - String k = c.substring(0, c.indexOf('=')); - if (k.equals(key)) { - this.cookies.remove(cookie); - break; - } - } - this.cookies.add(cookie); - } - - /** - * Retrieves and stores cookies returned by the host on the other side of - * the the open java.net.URLConnection. The connection MUST have been opened - * using the connect() method or a IOException will be thrown. - * - * @param conn A URLConnection - must be open, or IOException will be thrown - * @throws IOException Thrown if conn is not open. - */ - public void storeCookies(URLConnection conn) throws IOException { - String headerName = null; - for (int i = 1; (headerName = conn.getHeaderFieldKey(i)) != null; i++) { - if ("Set-Cookie".equals(headerName)) { - addCookie(conn.getHeaderField(i)); - } - } - } - - /** - * Prior to opening a URLConnection, calling this method will set all - * unexpired cookies that match the path or subpaths for thi underlying URL. - * The connection MUST NOT have been opened method or an IOException will be - * thrown. - * - * @param conn A URLConnection - must NOT be open, or IOException will be - * thrown - * @throws IOException Thrown if conn has already been opened. - * @throws ParseException Thrown if the "expires" field of the cookie is not - * a valid date. - */ - public void setCookies(URLConnection conn) throws IOException, ParseException { - StringBuilder cookies = new StringBuilder(); - for (String cookie : this.cookies) { - String c = null; - String domain = ""; - String path = ""; - Date expires = null; - for (String part : cookie.split(";")) { - if (c == null) { - c = part; - } - String[] parts = part.trim().split("="); - if (parts.length == 2) { - if ("domain".equals(parts[0])) { - domain = parts[1]; - } else if ("path".equals(parts[0])) { - path = parts[1]; - } else if ("expires".equals(parts[0])) { - expires = dateFormat.parse(parts[1]); - } - } - } - if (c == null) { - break; - } - if (expires != null) { - if ((new Date()).after(expires)) { - break; - } - } - if (!conn.getURL().getHost().endsWith(domain)) { - break; - } - if (!conn.getURL().getPath().startsWith(path)) { - break; - } - if (cookies.length() > 0) { - cookies.append("; "); - } - cookies.append(c); - } - if (cookies.length() > 0) { - conn.setRequestProperty("Cookie", cookies.toString()); - } - } - - @Override - public String toString() { - return super.toString() + this.cookies; - } -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JDBCConnectionLeakTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JDBCConnectionLeakTest.java deleted file mode 100644 index 801d039253..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JDBCConnectionLeakTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.net.URL; - -import javax.management.Attribute; -import javax.management.ObjectName; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests the JDBC connection leak servlet. - * - * @author Florent Benoit - */ -public class JDBCConnectionLeakTest extends TestCommons { - - /** - * Test that the connection leak closing mechanism is working - * @throws Exception - */ - @Test - public void testConnectionLeak() throws Exception { - int CONNECTION_LEAKS_REQUEST = 3; - - ObjectName datasourceON = - new ObjectName("jonas:j2eeType=JCAConnectionFactory,name=jdbc_1,JCAResource=jdbc_1,J2EEServer=jonas"); - ObjectName jndiJDBCInterceptorON = new ObjectName("jonas:type=service,name=jndi-interceptors,interceptor=" - + "org.ow2.jonas.jndi.interceptors.impl.datasource.DataSourceLeakDetectorContextInterceptor"); - - // Check there is no busy connections - Integer currentBusy = (Integer) this.mBeanServerConnection.getAttribute(datasourceON, "currentBusy"); - Assert.assertNotNull(currentBusy); - Assert.assertEquals(currentBusy.intValue(), 0); - - // Do some connection leaks - for (int i = 0; i < CONNECTION_LEAKS_REQUEST; i++) { - hitConnectionLeakServlet(); - } - - // Check busy are still to 0 (automatic close of connection leak is working) - // Wait a little - Thread.sleep(2000); - currentBusy = (Integer) this.mBeanServerConnection.getAttribute(datasourceON, "currentBusy"); - Assert.assertEquals(currentBusy.intValue(), 0); - - // Disable automatic close of connection leaks - Attribute attribute = new Attribute("forceClose", false); - this.mBeanServerConnection.setAttribute(jndiJDBCInterceptorON, attribute); - - // Do some connection leaks - for (int i = 0; i < CONNECTION_LEAKS_REQUEST; i++) { - hitConnectionLeakServlet(); - } - - // Check that now we have busy connections - // Wait a little - Thread.sleep(2000); - currentBusy = (Integer) this.mBeanServerConnection.getAttribute(datasourceON, "currentBusy"); - Assert.assertEquals(currentBusy.intValue(), CONNECTION_LEAKS_REQUEST); - } - - /** - * Make a request and check that the result is OK - */ - protected void hitConnectionLeakServlet() throws Exception { - // Connect on the servlet that is making connection leaks - final URL url = new URL("http://localhost:" + this.webcontainerPort + "/connection-leaks/"); - final String expected = "Example OK"; - - String content = null; - final long stopTime = System.currentTimeMillis() + TestCommons.TIMEOUT * 1000; - while (System.currentTimeMillis() < stopTime) { - Thread.sleep(1000); - content = this.getContentAsString(url); - if (content.contains(expected)) { - break; - } - } - // Check expected value - Assert.assertTrue(content.contains(expected), content + " does not contain " + expected); - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSAddTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSAddTest.java deleted file mode 100644 index 548550aa60..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSAddTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.lang.reflect.Method; -import java.net.URL; -import java.util.Random; - -import org.testng.Assert; -import org.testng.annotations.Test; - -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; - -/** - * Tests the JAX-WS WSAdd service. - */ -public class JaxWSAddTest extends TestCommons { - - private String serviceURL; - - private URL wsdlURL; - - @Test - public void waitForWSAddServiceInitialization() throws Exception { - this.serviceURL = "http://localhost:" + this.webcontainerPort + "/wsadd-sample/WSAddService"; - this.wsdlURL = new URL(this.serviceURL + "?wsdl"); - - final String expected = "http://wsadd.applis.tests.jonas.ow2.org/"; - - String content = null; - final long stopTime = System.currentTimeMillis() + TestCommons.TIMEOUT * 1000; - while (System.currentTimeMillis() < stopTime) { - Thread.sleep(1000); - content = this.getContentAsString(this.wsdlURL); - if (content.contains(expected)) { - break; - } - } - - Assert.assertTrue(content.contains(expected), content + " does not contain " + expected); - } - - - @Test(dependsOnMethods = "waitForWSAddServiceInitialization") - public void testWSAddService() throws Exception { - final Random random = new Random(System.currentTimeMillis()); - final int op1 = random.nextInt(); - final int op2 = random.nextInt(); - - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(this.wsdlURL); - - Object addRequest = Thread.currentThread().getContextClassLoader().loadClass("org.ow2.jonas.tests.applis.wsadd.AddRequest").newInstance(); - Method setOp1 = addRequest.getClass().getMethod("setOp1", Integer.TYPE); - Method setOp2 = addRequest.getClass().getMethod("setOp2", Integer.TYPE); - setOp1.invoke(addRequest, op1); - setOp2.invoke(addRequest, op2); - Object addResponse = client.invoke("add", addRequest)[0]; - - Method getReturn = addResponse.getClass().getMethod("getReturn"); - String sresult = getReturn.invoke(addResponse).toString(); - int result = 0; - try { - result = Integer.parseInt(sresult); - } catch (NumberFormatException e) { - Assert.fail("did not get a add result value: " + sresult); - } - - Assert.assertEquals(result, op1+op2, "add result incorrect: " + result + ", " + op1 + ", " + op2); - - } - - // uncomment the test to reproduce the Bug JIRA #213 - //@Test(dependsOnMethods = "waitForWSAddServiceInitialization") - public void testEnvEntryInWSBug213() throws Exception { - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(this.wsdlURL); - - Object checkResponse = client.invoke("checkEnvEntry")[0]; - - Method getReturn = checkResponse.getClass().getMethod("getReturn"); - String sresult = getReturn.invoke(checkResponse).toString(); - boolean result = result = Boolean.valueOf(sresult); - Assert.assertTrue(result, "Env-Entry in WS-Pojo checking failed"); - - } - - // uncomment the test to reproduce the Bug JIRA #215 - //@Test(dependsOnMethods = "waitForWSAddServiceInitialization") - public void testEjbInWSBug215() throws Exception { - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(this.wsdlURL); - - Object checkResponse = client.invoke("checkEjb")[0]; - - Method getReturn = checkResponse.getClass().getMethod("getReturn"); - String sresult = getReturn.invoke(checkResponse).toString(); - boolean result = result = Boolean.valueOf(sresult); - Assert.assertTrue(result, "@EJB in WS-Pojo checking failed"); - - } - - // uncomment the test to reproduce the Bug JIRA #215 - //@Test(dependsOnMethods = "waitForWSAddServiceInitialization") - public void testResourceInWSBug215() throws Exception { - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(this.wsdlURL); - - Object checkResponse = client.invoke("checkResource")[0]; - - Method getReturn = checkResponse.getClass().getMethod("getReturn"); - String sresult = getReturn.invoke(checkResponse).toString(); - boolean result = result = Boolean.valueOf(sresult); - Assert.assertTrue(result, "@Resource in WS-Pojo checking failed"); - - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSTest.java deleted file mode 100644 index 7b2bdf17bf..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/JaxWSTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.lang.reflect.Method; -import java.net.URL; -import java.util.UUID; - -import org.testng.Assert; -import org.testng.annotations.Test; - -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; - -/** - * Tests the JAX-WS services. - */ -public class JaxWSTest extends TestCommons { - - private String serviceURL; - - private URL wsdlURL; - - @Test - public void waitForQuoteServiceInitialization() throws Exception { - this.serviceURL = "http://localhost:" + this.webcontainerPort + "/quote/QuoteReporterService"; - this.wsdlURL = new URL(this.serviceURL + "?wsdl"); - - final String expected = "http://jonas.ow2.org/tutorial/jaxws/quote"; - - String content = null; - final long stopTime = System.currentTimeMillis() + TestCommons.TIMEOUT * 1000; - while (System.currentTimeMillis() < stopTime) { - Thread.sleep(1000); - content = this.getContentAsString(this.wsdlURL); - if (content.contains(expected)) { - break; - } - } - - Assert.assertTrue(content.contains(expected), content + " does not contain " + expected); - } - - @Test(dependsOnMethods = "waitForQuoteServiceInitialization") - public void checkBugJonas131() throws Exception { - // JONAS-131: When exposing WebServices with OnDemand feature enabled, - // the specified URL, where the webservice is available, is displayed - // using the "onDemand" port and not the web application server port. - - final String content = this.getContentAsString(this.wsdlURL); - Assert.assertTrue(content.contains(this.serviceURL), content + " does not contain " + this.wsdlURL); - } - - @Test(dependsOnMethods = "waitForQuoteServiceInitialization") - public void testQuoteService() throws Exception { - final String quoteTicker = UUID.randomUUID().toString(); - - JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); - Client client = dcf.createClient(this.wsdlURL); - - Object quoteResponse = client.invoke("getQuote", quoteTicker)[0]; - Method getTicker = quoteResponse.getClass().getMethod("getTicker"); - Method getValue = quoteResponse.getClass().getMethod("getValue"); - - String ticker = getTicker.invoke(quoteResponse).toString(); - String value = getValue.invoke(quoteResponse).toString(); - - Assert.assertEquals(ticker, quoteTicker); - try { - Double.parseDouble(value); - } catch (NumberFormatException e) { - Assert.fail("did not get a ticker value: " + value); - } - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/TestCommons.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/TestCommons.java deleted file mode 100644 index a1d819c1a1..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/TestCommons.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import javax.management.MBeanServerConnection; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; - -import org.testng.Assert; -import org.testng.annotations.BeforeClass; - -/** - * Common test files. - * - * @author S. Ali Tokmen - */ -public class TestCommons { - - protected static final int TIMEOUT = 10; - - protected MBeanServerConnection mBeanServerConnection; - - protected int webcontainerPort; - - @BeforeClass - public void setUp() throws Exception { - String webcontainerPort = System.getProperty("webcontainer.port"); - Assert.assertNotNull(webcontainerPort, "webcontainer.port not set!"); - this.webcontainerPort = Integer.parseInt(webcontainerPort); - - this.mBeanServerConnection = getMBeanServerConnection("jonas", "jonas"); - } - - /** - * Get an MBeanServerConnection using the provided credentials. - * @param username User name. - * @param password Password. - * @return An MBeanServerConnection. - * @throws Exception If anything fails, for example invalid credentials. - */ - protected MBeanServerConnection getMBeanServerConnection(final String username, final String password) throws Exception { - String carolUrl = System.getProperty("carol.url"); - Assert.assertNotNull(carolUrl, "carol.url not set!"); - - Map properties = new HashMap(1); - if (username != null && password != null) { - properties.put(JMXConnector.CREDENTIALS, new String[] { username, password } ); - } - JMXServiceURL address = new JMXServiceURL(carolUrl); - JMXConnector jmxConnector = JMXConnectorFactory.connect(address, properties); - return jmxConnector.getMBeanServerConnection(); - } - - /** - * Get the URL content as a String. - * @param url the url - * @return the URL content as a String - * @throws IOException if an I/O exception occurs. - */ - protected String getContentAsString(final URL url) throws IOException { - final InputStream inStream = url.openStream(); - final ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try { - int c; - while ((c = inStream.read()) != -1) { - bos.write(c); - } - } finally { - inStream.close(); - bos.flush(); - } - final String urlString = bos.toString(); - return urlString; - } - - /** - * Check if needle appears in haystack. - * @param haystack Haystack to look in. - * @param needle Needle to look for. - */ - protected void checkString(final String haystack, final String needle) { - if (!haystack.contains(needle)) { - Assert.fail("\"" + needle + "\" not found in \"" + haystack + "\""); - } - } - - /** - * @return jonasBase - */ - protected String getJOnASBase() { - return System.getProperty("jonas.base"); - } - -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/VersioningTest.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/VersioningTest.java deleted file mode 100644 index af82427bea..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/VersioningTest.java +++ /dev/null @@ -1,592 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.Authenticator; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.List; - -import javax.management.Attribute; -import javax.management.ObjectName; - -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.io.IOUtils; - -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -/** - * Versioning Service test suite.
    - *
    - * Note that this also tests various other Java EE aspects of JOnAS, including - * EJB3, the @EJB annotation in servlets, login modules, etc. - * - * @author S. Ali Tokmen - */ -public class VersioningTest extends TestCommons { - - /** - * J2EEServer object name. - */ - private static ObjectName j2eeServer; - - /** - * Versioning service object name. - */ - private static ObjectName versioning; - - /** - * Was versioning started at the beginning of the test? - */ - private static boolean versioningStarted; - - /** - * Old default deployment policy if versioning was started at the beginning - * of the test. - */ - private static String defaultDeploymentPolicy; - - /** - * File name of the version 1.0.0. - */ - private static String version1File; - - /** - * File name of the version 2.0.0. - */ - private static String version2File; - - /** - * File name of the secured-war. - */ - private static String securedWarFile; - - /** - * File name of the non-versioned-war. - */ - private static String nonVersionedWarFile; - - /** - * File name of the root-war. - */ - private static String rootWarFile; - - /** - * Cookie manager that will be used as soon as version 1.0.0 gets deployed. - * It is expected to stay on version 1.0.0. - */ - private static CookieManager client1; - - /** - * Cookie manager that will be used as soon as version 2.0.0 gets deployed. - * It is expected to stay on version 1.0.0. - */ - private static CookieManager client2; - - /** - * Cookie manager that will be used as soon as version 2.0.0 gets set as - * default version. It is expected to stay on version 2.0.0. - */ - private static CookieManager client3; - - private String projectVersion; - - @Override - @BeforeClass - public void setUp() throws Exception { - super.setUp(); - - // Create all cookie managers - client1 = new CookieManager(); - client2 = new CookieManager(); - client3 = new CookieManager(); - - // ObjectNames used by these tests - j2eeServer = ObjectName.getInstance("jonas:j2eeType=J2EEServer,name=jonas"); - versioning = ObjectName.getInstance("jonas:type=service,name=versioning"); - - projectVersion = System.getProperty("project.version"); - Assert.assertNotNull(projectVersion, "project.version not set!"); - } - - @Test - public void deactivateDevelopmentMode() throws Exception { - ObjectName depmonitor = new ObjectName("jonas:type=service,name=depmonitor"); - this.mBeanServerConnection.setAttribute(depmonitor, new Attribute("development", Boolean.FALSE)); - } - - @SuppressWarnings("unchecked") - @Test(dependsOnMethods = "deactivateDevelopmentMode") - public void enableVersioning() throws Exception { - final Object[] opParams = {"versioning"}; - final String[] opSignature = {"java.lang.String"}; - - if ("RUNNING".equals(mBeanServerConnection.invoke(j2eeServer, "getServiceState", opParams, opSignature))) { - versioningStarted = true; - defaultDeploymentPolicy = (String) mBeanServerConnection.getAttribute(versioning, "DefaultDeploymentPolicy"); - mBeanServerConnection.invoke(j2eeServer, "stopService", opParams, opSignature); - } - - mBeanServerConnection.invoke(j2eeServer, "startService", opParams, opSignature); - while (!"RUNNING".equals(mBeanServerConnection.invoke(j2eeServer, "getServiceState", opParams, opSignature))) { - System.out.println("versioning service not RUNNING yet..."); - Thread.sleep(1000); - } - - // Get the Versioning service - boolean versioningEnabled = ((Boolean) mBeanServerConnection.getAttribute(versioning, "VersioningEnabled")).booleanValue(); - if (!versioningEnabled) { - Assert.fail("Cannot enable the versioning service"); - } - } - - @Test(dependsOnMethods = "enableVersioning") - public void testDeployRootWar() throws Exception { - rootWarFile = deployApplication("root-war/root-war.war"); - } - - @Test(dependsOnMethods = "testDeployRootWar") - public void testRootWar() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/test.jsp", null, null); - - checkString(response, "Context URL: \"\""); - checkString(response, "Test image: "); - } - - @Test(dependsOnMethods = "testDeployRootWar") - public void testRootWarVersionedURL() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/-1.0.0/test.jsp", null, null); - - checkString(response, "Context URL: \"/-1.0.0\""); - checkString(response, "Test image: "); - } - - @Test(dependsOnMethods = "testDeployRootWar") - public void testRootRedirectWithContext() throws Exception { - URL redirect = new URL("http://localhost:" + webcontainerPort + "/redirect-servlet-with-context"); - - HttpURLConnection connection = (HttpURLConnection) redirect.openConnection(); - try { - connection.setInstanceFollowRedirects(false); - - Assert.assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_MOVED_TEMP); - - String location = connection.getHeaderField("Location"); - Assert.assertEquals(location, "http://localhost:" + webcontainerPort + "/somewhere"); - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } - - @Test(dependsOnMethods = "testDeployRootWar") - public void testRootRedirectWithoutContext() throws Exception { - URL redirect = new URL("http://localhost:" + webcontainerPort + "/redirect-servlet-without-context"); - - HttpURLConnection connection = (HttpURLConnection) redirect.openConnection(); - try { - connection.setInstanceFollowRedirects(false); - - Assert.assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_MOVED_TEMP); - - String location = connection.getHeaderField("Location"); - Assert.assertEquals(location, "http://localhost:" + webcontainerPort + "/somewhere"); - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } - - @Test(dependsOnMethods = {"testRootWar", "testRootWarVersionedURL", "testRootRedirectWithContext", - "testRootRedirectWithoutContext"}) - public void testDeployVersion1() throws Exception { - version1File = deployApplication("version1.0.0/test-versioning.ear"); - - verifyVersion(client1, "1.0.0"); - } - - @Test(dependsOnMethods = "testDeployVersion1") - public void testDeployVersion2() throws Exception { - version2File = deployApplication("version2.0.0/test-versioning.ear"); - - verifyVersion(client1, "1.0.0"); - verifyVersion(client2, "1.0.0"); - } - - @Test(dependsOnMethods = "testDeployVersion2") - public void testSetDefaultVersion2() throws Exception { - final Object[] opParams = {"/test-versioning-2.0.0", "Default"}; - final String[] opSignature = {"java.lang.String", "java.lang.String"}; - - ObjectName webModule = ObjectName.getInstance( - "jonas:j2eeType=WebModule,name=//localhost/test-versioning,J2EEApplication=none,J2EEServer=jonas,virtualContext=true"); - mBeanServerConnection.invoke(webModule, "rebindContext", opParams, opSignature); - - verifyVersion(client1, "1.0.0"); - verifyVersion(client2, "1.0.0"); - verifyVersion(client3, "2.0.0"); - } - - @Test(dependsOnMethods = "testSetDefaultVersion2") - public void testRedirectWithContext() throws Exception { - URL redirect = new URL("http://localhost:" + webcontainerPort + "/test-versioning/redirect-servlet-with-context"); - - HttpURLConnection connection = (HttpURLConnection) redirect.openConnection(); - try { - connection.setInstanceFollowRedirects(false); - - Assert.assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_MOVED_TEMP); - - String location = connection.getHeaderField("Location"); - Assert.assertEquals(location, "http://localhost:" + webcontainerPort + "/test-versioning/somewhere"); - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } - - @Test(dependsOnMethods = "testSetDefaultVersion2") - public void testRedirectWithoutContext() throws Exception { - URL redirect = new URL("http://localhost:" + webcontainerPort + "/test-versioning/redirect-servlet-without-context"); - - HttpURLConnection connection = (HttpURLConnection) redirect.openConnection(); - try { - connection.setInstanceFollowRedirects(false); - - Assert.assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_MOVED_TEMP); - - String location = connection.getHeaderField("Location"); - Assert.assertEquals(location, "http://localhost:" + webcontainerPort + "/test-versioning/somewhere"); - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } - - @Test(dependsOnMethods = "testSetDefaultVersion2") - public void testUndeployVersion1() throws Exception { - undeployApplication(version1File); - - verifyVersion(client1, "2.0.0"); - verifyVersion(client2, "2.0.0"); - verifyVersion(client3, "2.0.0"); - } - - @Test(dependsOnMethods = {"testUndeployVersion1", "testRedirectWithContext", "testRedirectWithoutContext"}) - public void testUndeployVersion2() throws Exception { - undeployApplication(version2File); - - verifyVersion(client1, null); - verifyVersion(client2, null); - verifyVersion(client3, null); - } - - @Test(dependsOnMethods = {"testRootWar", "testRootWarVersionedURL"}) - public void testDeploySecuredWar() throws Exception { - securedWarFile = deployApplication("secured-war/secured-war.war"); - } - - @Test(dependsOnMethods = "testDeploySecuredWar") - public void testSecuredWarWithoutCredentials() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/", null, null); - checkString(response, "Connection error: Unauthorized"); - } - - @Test(dependsOnMethods = "testDeploySecuredWar") - public void testSecuredWarWithIncorrectCredentials() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/", "jetty", "jetty"); - checkString(response, "Connection error: Forbidden"); - } - - @Test(dependsOnMethods = "testDeploySecuredWar") - public void testSecuredWarWithCorrectCredentials() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/", "jonas", "jonas"); - checkString(response, "Hello, World"); - } - - @Test(dependsOnMethods = "testDeploySecuredWar") - public void testDeployNonVersionedWarUnderTheSecuredWarContext() throws Exception { - nonVersionedWarFile = deployApplication("non-versioned-war/non-versioned-war.war"); - } - - @Test(dependsOnMethods = "testDeployNonVersionedWarUnderTheSecuredWarContext") - public void testNonVersionedWarUnderTheSecuredWarContext() throws Exception { - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/non-versioned/", null, null); - checkString(response, "Hello again, World"); - } - - @Test(dependsOnMethods = {"testSecuredWarWithoutCredentials", "testSecuredWarWithIncorrectCredentials", - "testSecuredWarWithCorrectCredentials", "testNonVersionedWarUnderTheSecuredWarContext"}) - public void testUndeploySecuredWar() throws Exception { - undeployApplication(securedWarFile); - - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/", null, null); - checkString(response, "Connection error: Not Found"); - } - - @Test(dependsOnMethods = {"testUndeploySecuredWar"}) - public void testUndeployNonVersionedWarUnderTheSecuredWarContext() throws Exception { - undeployApplication(nonVersionedWarFile); - - String response = getURL("http://localhost:" + webcontainerPort + "/secured-war/non-versioned/", null, null); - checkString(response, "Connection error: Not Found"); - } - - @Test(dependsOnMethods = {"testUndeployVersion2", "testUndeployNonVersionedWarUnderTheSecuredWarContext"}) - public void testUndeployRootWar() throws Exception { - undeployApplication(rootWarFile); - - String response = getURL("http://localhost:" + webcontainerPort + "/test.jsp", null, null); - // Might be Bad Request (400) or Not Found (404), see JONAS-121 - // The tomcat7 itests module will check for "Connection error: Not Found" - checkString(response, "Connection error: "); - } - - @Test(dependsOnMethods = "enableVersioning") - public void testJonas239() throws Exception { - final String JAXWS_SAMPLE = "jonas-itests-applications-jaxws-sample"; - String jaxWsSampleURL = null; - List deployedEars = (List) mBeanServerConnection.getAttribute(j2eeServer, "deployedEars"); - for (String deployedEar : deployedEars) { - if (deployedEar.contains(JAXWS_SAMPLE)) { - jaxWsSampleURL = deployedEar; - break; - } - } - Assert.assertNotNull(jaxWsSampleURL, "Cannot find " + JAXWS_SAMPLE + " in " + deployedEars); - - // Redeploy to have it versioned - final Object[] opParams = {jaxWsSampleURL}; - final String[] opSignature = {"java.lang.String"}; - mBeanServerConnection.invoke(j2eeServer, "undeploy", opParams, opSignature); - mBeanServerConnection.invoke(j2eeServer, "deploy", opParams, opSignature); - - String wsdl; - final String originalURL = "http://localhost:" + webcontainerPort + "/quote/QuoteReporterService"; - final String versionedURL = "http://localhost:" + webcontainerPort + "/quote-" + projectVersion - + "/QuoteReporterService"; - - wsdl = getURL(originalURL + "?wsdl"); - Assert.assertTrue(wsdl.contains(originalURL), "The WSDL does not contain " + originalURL + ":\n" + wsdl); - Assert.assertFalse(wsdl.contains(versionedURL), "The WSDL contains " + versionedURL + ":\n" + wsdl); - - wsdl = getURL(versionedURL + "?wsdl"); - Assert.assertTrue(wsdl.contains(versionedURL), "The WSDL does not contain " + versionedURL + ":\n" + wsdl); - Assert.assertFalse(wsdl.contains(originalURL), "The WSDL contains " + originalURL + ":\n" + wsdl); - } - - @Test(dependsOnMethods = {"testUndeployRootWar", "testJonas239"}) - public void testDisableVersioning() throws Exception { - final Object[] opParams = {"versioning"}; - final String[] opSignature = {"java.lang.String"}; - mBeanServerConnection.invoke(j2eeServer, "stopService", opParams, opSignature); - while ("RUNNING".equals(mBeanServerConnection.invoke(j2eeServer, "getServiceState", opParams, opSignature))) { - System.out.println("versioning service still RUNNING..."); - Thread.sleep(1000); - } - if (versioningStarted) { - versioningStarted = true; - mBeanServerConnection.invoke(j2eeServer, "startService", opParams, opSignature); - mBeanServerConnection.setAttribute(versioning, new Attribute("DefaultDeploymentPolicy", defaultDeploymentPolicy)); - } - } - - private String deployApplication(final String filename) throws Exception { - Object[] opParams; - String[] opSignature; - - System.out.println("Now deploying " + filename); - InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filename); - if (inputStream == null) { - throw new FileNotFoundException("Cannot find \"" + filename + "\" in the class loader"); - } - byte[] bytesOfFile = IOUtils.toByteArray(inputStream); - - String deployFilename; - if (filename.contains("/")) { - deployFilename = filename.substring(filename.lastIndexOf('/')); - } else { - deployFilename = filename; - } - opParams = new Object[] {bytesOfFile, deployFilename, false}; - opSignature = new String[] {"[B", "java.lang.String", "boolean"}; - String sendFile = (String) mBeanServerConnection.invoke(j2eeServer, "sendFile", opParams, opSignature); - - opParams = new Object[] {sendFile}; - opSignature = new String[] {"java.lang.String"}; - mBeanServerConnection.invoke(j2eeServer, "deploy", opParams, opSignature); - - return sendFile; - } - - private void undeployApplication(final String filename) throws Exception { - System.out.println("Now undeploying " + filename); - - Object[] opParams; - String[] opSignature; - - opParams = new Object[] {filename}; - opSignature = new String[] {"java.lang.String"}; - mBeanServerConnection.invoke(j2eeServer, "undeploy", opParams, opSignature); - mBeanServerConnection.invoke(j2eeServer, "removeModuleFile", opParams, opSignature); - } - - private void verifyVersion(final CookieManager cookies, final String version) throws Exception { - String servletResponse = getURL("http://localhost:" + webcontainerPort + "/test-versioning/test-servlet", - version == null, cookies); - if (version != null) { - checkString(servletResponse, "WAR version: " + version); - checkString(servletResponse, "EJB version: " + version); - - checkString(servletResponse, "Context URL: \"/test-versioning\""); - checkString(servletResponse, "Test image: "); - - // Output that looks like split but that actually isn't (JONAS-221) - if ("2.0.0".equals(version)) { - checkString(servletResponse, "First part: /te ... and no other parts !"); - } - } - - String jspResponse = getURL("http://localhost:" + webcontainerPort + "/test-versioning/test.jsp", - version == null, cookies); - if (version != null) { - checkString(jspResponse, "Context URL: \"/test-versioning\""); - checkString(jspResponse, "Test image: "); - } - } - - private String getURL(final String url, final boolean expect404, final CookieManager cookies) throws Exception { - URL urlObject = new URL(url); - HttpURLConnection connection = (HttpURLConnection) urlObject.openConnection(); - try { - System.out.println("Sending cookies: " + cookies); - cookies.setCookies(connection); - if (expect404) { - try { - connection.getInputStream(); - } catch (Exception ignored) { - // We'll check the response code only - } - - if (connection.getResponseCode() != HttpURLConnection.HTTP_NOT_FOUND) { - Assert.fail("Did not get an error " + HttpURLConnection.HTTP_NOT_FOUND + " but rather a code " - + connection.getResponseCode() + " (" + connection.getResponseMessage() - + ") after application undeployment!"); - } - - return null; - } else { - InputStream inputStream; - try { - inputStream = connection.getInputStream(); - } catch (Exception e) { - Assert.fail("HTTP request failed: " + connection.getResponseCode() + " " + connection.getResponseMessage()); - return null; - } - BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); - StringBuilder builder = new StringBuilder(); - - String inputLine; - while ((inputLine = reader.readLine()) != null) { - builder.append(inputLine); - builder.append(' '); - } - reader.close(); - - cookies.storeCookies(connection); - System.out.println("Received cookies: " + cookies); - - return builder.toString(); - } - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } - - private String getURL(final String url) throws Exception { - return getURL(url, null, null); - } - - private String getURL(final String url, final String username, final String password) throws Exception { - HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); - try { - connection.setRequestMethod("GET"); - - if (username != null) { - Base64 enc = new Base64(); - String authData = username + ":" + password; - String base64AuthData = enc.encodeToString(authData.getBytes("UTF-8")); - if (base64AuthData.contains("=")) { - // Cut the string at the first equals sign - // For some reason, the Base64 implementation adds characters - // afterwards, which get refused by the URL validator - base64AuthData = base64AuthData.substring(0, base64AuthData.indexOf('=')); - } - String basicHeader = "Basic " + base64AuthData + '='; - - System.out.println("Setting Authorization header: " + basicHeader); - connection.setRequestProperty("Authorization", basicHeader); - } else { - // FIXME: this can be removed as soon as - // https://issues.apache.org/jira/browse/CXF-2702 - // gets fixed and CXF 2.2.7 gets released. - Authenticator.setDefault(null); - } - - String response = null; - int responseCode = connection.getResponseCode(); - - if (responseCode == HttpURLConnection.HTTP_OK) { - InputStream is = connection.getInputStream(); - try { - response = IOUtils.toString(is); - } finally { - is.close(); - is = null; - } - } else { - response = "Connection error: " + connection.getResponseMessage(); - } - - return response; - } finally { - connection.disconnect(); - connection = null; - System.gc(); - } - } -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/WebServicesAuditTestCase.java b/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/WebServicesAuditTestCase.java deleted file mode 100644 index 98d45242a6..0000000000 --- a/jonas/modules/itests/cargo/jrmp/src/test/java/org/ow2/jonas/itests/cargo/jrmp/WebServicesAuditTestCase.java +++ /dev/null @@ -1,156 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.itests.cargo.jrmp; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; - -import javax.management.MBeanServerConnection; -import javax.management.Notification; -import javax.management.NotificationListener; -import javax.management.ObjectName; -import javax.xml.namespace.QName; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.InputStreamEntity; -import org.apache.http.impl.client.DefaultHttpClient; -import org.ow2.jonas.ws.jaxws.base.audit.JaxwsAuditReport; -import org.ow2.util.auditreport.impl.util.ObjectEncoder; -import org.testng.annotations.Test; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.fail; - -/** - * A {@code WebServicesAuditTestCase} is ... - * - * @author Guillaume Sauthier - */ -public class WebServicesAuditTestCase extends TestCommons { - - private JaxwsAuditReport report; - private boolean ok = false; - - @Test - public void testInvocationIdIsPropagatedThroughHttp() throws Exception { - String serviceURL = "http://localhost:" + this.webcontainerPort + "/wsadd-sample/PropagationChecker"; - - String invocationId = "parent/0:local/1"; - - DefaultHttpClient httpclient = new DefaultHttpClient(); - - HttpGet get = new HttpGet(serviceURL); - get.setHeader("Invocation-ID", invocationId); - HttpResponse response = httpclient.execute(get); - - - // Get hold of the response entity - HttpEntity entity = response.getEntity(); - - // If the response does not enclose an entity, there is no need - // to worry about connection release - if (entity != null) { - InputStream instream = entity.getContent(); - - BufferedReader reader = new BufferedReader(new InputStreamReader(instream)); - // do something useful with the response - String line = reader.readLine(); - assertEquals(line, invocationId); - - // Closing the input stream will trigger connection release - instream.close(); - - // When HttpClient instance is no longer needed, - // shut down the connection manager to ensure - // immediate deallocation of all system resources - httpclient.getConnectionManager().shutdown(); - - } else { - fail("No output for PropagateServlet, was expecting an Invocation-ID"); - } - - } - - @Test(timeOut = 11000) - public void testNotificationReportIsSend() throws Exception { - - final QName serviceQName = new QName("http://wsadd.applis.tests.jonas.ow2.org/", "WSAddService"); - final QName portQName = new QName("http://wsadd.applis.tests.jonas.ow2.org/", "WSAddPort"); - final QName operationQName = new QName("http://wsadd.applis.tests.jonas.ow2.org/", "add"); - - // Hookup a Listener - mBeanServerConnection.addNotificationListener(endpointHandler(), new NotificationListener() { - public void handleNotification(Notification notification, Object handback) { - - assertNotNull(notification.getMessage()); - report = ObjectEncoder.decode(notification.getMessage(), JaxwsAuditReport.class); - - assertEquals(QName.valueOf(report.getServiceQName()), serviceQName); - assertEquals(QName.valueOf(report.getPortQName()), portQName); - assertEquals(QName.valueOf(report.getOperationQName()), operationQName); - - ok = true; - } - }, null, null); - - // Call the webservice - String serviceURL = "http://localhost:" + this.webcontainerPort + "/wsadd-sample/WSAddService"; - - // Trigger the report generation - DefaultHttpClient client = new DefaultHttpClient(); - HttpPost post = new HttpPost(serviceURL); - InputStreamEntity entity = new InputStreamEntity(getClass().getResourceAsStream("../jrmp/soap-request-add.xml"), -1); - entity.setContentType("application/soap+xml"); - post.setEntity(entity); - client.execute(post); - - // Wait for some times before failing the tests - // That let some times for the report to be generated - // wait up to 10 seconds (20 * 500ms) - int i = 0; - int times = 20; - int sleepTime = 500; - while((report == null) || (i < times)) { - Thread.sleep(sleepTime); - i++; - } - - // Fail if the report was not generated - if (!ok) { - fail("Report was not generated after " + ((i * sleepTime) / 1000) + " seconds"); - } - - } - - private ObjectName endpointHandler() throws Exception { - return ObjectName.getInstance("jonas:type=Auditors,auditorType=wsendpoint"); - } -} diff --git a/jonas/modules/itests/cargo/jrmp/src/test/resources/jonas-290.war b/jonas/modules/itests/cargo/jrmp/src/test/resources/jonas-290.war deleted file mode 100644 index 097ac744894e76cfff0a80f99ac112798e72c30f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmWIWW@Zs#U|`^25QtN@mJE%Gv;p$`ftU-3GxJhXEA%o-a&tDH)Hr!|SnHsU!tMj-lugyu;}s2U4UPTX6>auwsJmWt+t08lNPg87H~Aa^h5(=) zAk!EaV!ASI!3-$D38Z~pLmYKI{oM3H${ck%6Itg@FMi3RmXq=;!I? z8XThM>$Y~XZT=wxfwu1+KluftmmXPqAV{gL=~mZ5j+LR3R}K_v58rgYi`iY(q`#vU-tg9nqAnl?Plzzt=_#33FZ+ed3>(y zx;x#bzH{Z1%un9`p3GSo5Oh0(=cKjH9JwNm8IE&{w-m-@R`+ffd)<bUr=lO#5rD!gGfs=Iwqav|R7lA*SxP{K|f^C;s_geIU|g%sQ(; zZA#TayW5!v^CTfR+`neLGNq$OvUM&|AUuDh(Eazaz9Qf$1QobONi6xH_TS>gFR4_E!X@Ncv2 zmlWBs8l|Fh487Spd0PMWR-KOfQ8P_V>p=dp-Fm+Blo~?#QndGd-KV{jN3r9BPR#y^ zuJin#oIk$FEIOk!ZQ>p`=09g*XV~w(-c+X1lbsslxulRSJXg~8{e{z)vtK9KiZYuj z`)^zFv305Ot?2f0nI!(m*iG6;rW{{#sm1Ur!_0eS?vHPBo!IXCSX0h(V%o zWxkGno^GzeA$q=UpMB4q_VL!$yU6RUt99&Zi^y$^!w zI(M!N - - - - 1 - 1 - - - diff --git a/jonas/modules/itests/cargo/pom.xml b/jonas/modules/itests/cargo/pom.xml deleted file mode 100644 index 322d90244a..0000000000 --- a/jonas/modules/itests/cargo/pom.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo - JOnAS :: iTests :: Cargo - Tests the JOnAS distribution via CARGO - pom - - - - org.testng - testng - test - - - commons-codec - commons-codec - 1.4 - test - - - commons-io - commons-io - 1.4 - test - - - - - com.sun.xml.bind - jaxb-xjc - 2.1.12 - test - - - org.apache.cxf - cxf-rt-frontend-jaxws - ${cxf.version} - test - - - org.apache.cxf - cxf-rt-transports-http - ${cxf.version} - test - - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - ${project.version} - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ${project.version} - ear - - - org.ow2.jonas - jonas-itests-applications-versioning - ${project.version} - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ${project.version} - ear - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - - - - - org.apache.httpcomponents - httpclient - 4.0.3 - test - - - org.apache.httpcomponents - httpcore - 4.0.1 - test - - - org.ow2.bundles - ow2-audit-report - - - org.ow2.jonas - jonas-webservices-jaxws - ${project.version} - - - - - - jrmp - iiop - irmi - security - - - - - - - 1.6 - - - tomcat7 - - - - - diff --git a/jonas/modules/itests/cargo/security/pom.xml b/jonas/modules/itests/cargo/security/pom.xml deleted file mode 100644 index b54f0f1f56..0000000000 --- a/jonas/modules/itests/cargo/security/pom.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-cargo - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo-security - JOnAS :: iTests :: Cargo :: JMX security - Tests the JOnAS distribution via CARGO - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - copy-bundles - process-test-resources - - copy - - - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - ${jonas.base}/deploy - - - true - true - - - - - - - - maven-antrun-plugin - - - copy-tests - generate-test-sources - - - - - - - - - - - - - - - - - - run - - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo.version} - - - start-jonas - pre-integration-test - - start - - - - stop-jonas - post-integration-test - - stop - - - - - - jonas5x - installed - ${jonas.root} - - - existing - ${jonas.base} - - localhost - ${webcontainer.port} - http - jonas - jonas - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - - - - - - - - - maven-surefire-plugin - - true - - - - surefire-it - integration-test - - test - - - - - webcontainer.port - ${webcontainer.port} - - - carol.url - service:jmx:rmi://localhost/jndi/rmi://localhost:${carol.port}/jrmpconnector_jonas - - - project.version - ${project.version} - - - jonas.base - ${jonas.base} - - - false - - - - - - - - diff --git a/jonas/modules/itests/cargo/security/src/test/java/org/ow2/jonas/itests/cargo/jmx_security/JmxSecurityTest.java b/jonas/modules/itests/cargo/security/src/test/java/org/ow2/jonas/itests/cargo/jmx_security/JmxSecurityTest.java deleted file mode 100644 index 8cfd02fdb3..0000000000 --- a/jonas/modules/itests/cargo/security/src/test/java/org/ow2/jonas/itests/cargo/jmx_security/JmxSecurityTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.itests.cargo.jmx_security; - -import java.lang.reflect.UndeclaredThrowableException; - -import javax.management.Attribute; -import javax.management.AttributeNotFoundException; -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * Tests JMX security. - * - * @author S. Ali Tokmen - */ -public class JmxSecurityTest extends TestCommons { - - @Test - public void connectWithoutCredentials() throws Exception { - try { - this.getMBeanServerConnection(null, null); - Assert.fail("No SecurityException raised"); - } catch (SecurityException expected) { - // Expected - } - } - - @Test - public void connectWithWrongCredentials() throws Exception { - try { - this.getMBeanServerConnection("invalid", "invalid"); - Assert.fail("No SecurityException raised"); - } catch (SecurityException expected) { - // Expected - } - } - - @Test - public void connectWithReadonlyCredentials() throws Exception { - MBeanServerConnection mBeanServerConnection = this.getMBeanServerConnection("monitor", "jonas"); - - ObjectName cargocpc = new ObjectName( - "jonas:j2eeType=WebModule,name=//localhost/cargocpc,J2EEApplication=null,J2EEServer=jonas"); - - mBeanServerConnection.getAttribute(cargocpc, "cookies"); - try { - mBeanServerConnection.setAttribute(cargocpc, new Attribute("cookies", Boolean.FALSE)); - Assert.fail("No UndeclaredThrowableException raised"); - } catch (UndeclaredThrowableException e) { - Assert.assertNotNull(e.getCause()); - Assert.assertEquals(e.getCause().getClass(), IllegalAccessException.class); - } - try { - mBeanServerConnection.invoke(cargocpc, "reload", null, null); - Assert.fail("No UndeclaredThrowableException raised"); - } catch (UndeclaredThrowableException e) { - Assert.assertNotNull(e.getCause()); - Assert.assertEquals(e.getCause().getClass(), IllegalAccessException.class); - } - } - - @Test - public void connectWithReadWriteCredentials() throws Exception { - MBeanServerConnection mBeanServerConnection = this.getMBeanServerConnection("jonas", "jonas"); - - ObjectName cargocpc = new ObjectName( - "jonas:j2eeType=WebModule,name=//localhost/cargocpc,J2EEApplication=null,J2EEServer=jonas"); - - mBeanServerConnection.getAttribute(cargocpc, "cookies"); - mBeanServerConnection.setAttribute(cargocpc, new Attribute("cookies", Boolean.FALSE)); - mBeanServerConnection.invoke(cargocpc, "reload", null, null); - } - - @Test(dependsOnMethods = "connectWithReadonlyCredentials") - public void testJonas385() throws Exception { - MBeanServerConnection mBeanServerConnection = this.getMBeanServerConnection("monitor", "jonas"); - - ObjectName cargocpc = new ObjectName( - "jonas:j2eeType=WebModule,name=//localhost/cargocpc,J2EEApplication=null,J2EEServer=jonas"); - - try { - mBeanServerConnection.getAttribute(cargocpc, "attributeThatDoesntExist"); - Assert.fail("No AttributeNotFoundException raised"); - } catch (AttributeNotFoundException expected) { - // That one was expected - } - } - -} diff --git a/jonas/modules/itests/cargo/tomcat7/pom.xml b/jonas/modules/itests/cargo/tomcat7/pom.xml deleted file mode 100644 index e7927c1cc5..0000000000 --- a/jonas/modules/itests/cargo/tomcat7/pom.xml +++ /dev/null @@ -1,282 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-cargo - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-cargo-tomcat7 - JOnAS :: iTests :: Cargo :: Tomcat 7.x - Tests the JOnAS distribution via CARGO - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - ${project.build.directory} - - - true - true - - - - copy-bundles - process-test-resources - - copy - - - - - org.ow2.jonas - jonas-itests-applications-classloader - ${project.version} - ipojo - jar - ${jonas.base}/deploy - - - true - true - - - - - - - - maven-antrun-plugin - - - copy-tests - generate-test-sources - - - - - - - - - - - - - - - - run - - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo.version} - - - start-jonas - pre-integration-test - - start - - - - stop-jonas - post-integration-test - - stop - - - - - - jonas5x - installed - ${jonas.root} - - - existing - ${jonas.base} - - localhost - ${webcontainer.port} - http - - - - org.ow2.jonas - jonas-itests-applications-connection-leaks - war - - - org.ow2.jonas - jonas-itests-applications-jaxws-sample - ear - - - org.ow2.jonas.jonas-itests-applications-jaxws-add.assemblies - wsadd - ear - - - - - - - - - maven-surefire-plugin - - true - - - - surefire-it - integration-test - - test - - - - - webcontainer.port - ${webcontainer.port} - - - carol.url - service:jmx:rmi://localhost/jndi/rmi://localhost:${carol.port}/jrmpconnector_jonas - - - project.version - ${project.version} - - - jonas.base - ${jonas.base} - - - false - - - - - - - - diff --git a/jonas/modules/itests/intravm/pom.xml b/jonas/modules/itests/intravm/pom.xml deleted file mode 100644 index dd1a8d5b69..0000000000 --- a/jonas/modules/itests/intravm/pom.xml +++ /dev/null @@ -1,264 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-intravm - jar - JOnAS :: iTests :: Intra VM - Allows to run OSGi tests on the server side - - - - - org.ow2.jonas.launchers - felix-launcher - ${project.version} - test - - - org.ow2.jonas - jonas-commons - - - - - - - org.ow2.jonas - jonas-services-api - ${project.version} - test - - - - - org.ow2.bundles - ow2-util-log - test - - - - - - org.ow2.bundles - ow2-util-file - test - - - - - org.ow2.bundles - ow2-util-url - test - - - - org.apache.tomcat - servlet-api - test - - - - - org.testng - testng - 5.11 - jdk15 - test - - - - - - org.ops4j.pax.swissbox - pax-swissbox-tinybundles - 1.2.0 - test - - - - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - - - - ${project.build.directory} - - true - true - - - - - - - - maven-antrun-plugin - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - once - classes - 10 - - ${jonas.base}/conf - - - - jonas.root - ${jonas.root} - - - jonas.base - ${jonas.base} - - - ipojo.log.level - ERROR - - - java.security.policy - ${jonas.base}/conf/java.policy - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - java.endorsed.dirs - ${jonas.root}/lib/endorsed - - - jonas.felix.configuration.file - ${jonas.base}/conf/felix-config.properties - - - - - - - diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/JOnASLauncher.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/JOnASLauncher.java deleted file mode 100644 index aac748d277..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/JOnASLauncher.java +++ /dev/null @@ -1,207 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm; - -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantReadWriteLock; - -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.ow2.jonas.depmonitor.MonitoringService; -import org.ow2.jonas.launcher.felix.JOnAS; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; - -/** - * Abstract class for starting/stopping JOnAS and providing an access to OSGi - * through BundleContext. - * @author Florent Benoit - */ -public class JOnASLauncher { - - /** - * One second delay. - */ - private static final long ONE_SECOND = 1000L; - - /** - * Waiting time = 30 seconds. - */ - private static final long WAITING_SERVCICES_TIME = 30 * ONE_SECOND; - - /** - * Lock. - */ - private volatile static Lock lock = new ReentrantReadWriteLock().writeLock(); - - /** - * Counter of start of JOnAS. - */ - private static int count = 0; - - /** - * JOnAS instance. - */ - private static JOnAS jonas = null; - - /** - * OSGi bundle context. - */ - private static BundleContext bundleContext = null; - - /** - * Server ready. - */ - private static boolean ready = false; - - /** - * Server is stopping. - */ - private static boolean stopping = false; - - /** - * Server is stopping soon. - */ - private static boolean lastCallStopping = false; - - /** - * Logger. - */ - private static Log logger = LogFactory.getLog(JOnASLauncher.class); - - /** - * Start the JOnAS server. - * @throws Exception if server cannot be started. - */ - @BeforeClass - public void startServer() throws Exception { - try { - lock.lock(); - - if (jonas == null) { - jonas = new JOnAS(true); - // Get Bundle Context - bundleContext = jonas.getFramework().getBundleContext(); - - // Start JOnAS - new Thread() { - @Override - public void run() { - try { - jonas.start(); - } catch (Exception e) { - logger.error("Cannot start the server", e); - throw new IllegalStateException("Cannot start the server", e); - } - } - }.start(); - - // wait for depMonitor service - final long maxWaitTime = System.currentTimeMillis() + WAITING_SERVCICES_TIME; - ServiceReference serviceManagerServiceReference = null; - while (serviceManagerServiceReference == null && System.currentTimeMillis() < maxWaitTime) { - serviceManagerServiceReference = getBundleContext().getServiceReference(MonitoringService.class.getName()); - if (serviceManagerServiceReference == null) { - Thread.sleep(ONE_SECOND); - } else { - ready = true; - } - } - logger.info("The JOnAS server is ready, tests can be launched."); - } else { - logger.info("The JOnAS server is already launched"); - } - count++; - } finally { - lock.unlock(); - } - } - - /** - * Stop the JOnAS server. - * @throws Exception if server cannot be stopped - */ - @AfterClass - public void stopServer() throws Exception { - count--; - if (count == 1) { - lastCallStopping = true; - } - // last call to the stop is performing the stop; - if (count == 0) { - if (jonas != null) { - stopping = true; - logger.info("The JOnAS server is being stopped."); - jonas.stop(); - } - } - } - - /** - * @return true if server is ready - */ - public boolean isReady() { - return ready; - } - - /** - * Waits that the server is ready. - * @throws InterruptedException if exception - */ - public void waitReady() throws InterruptedException { - while (!ready) { - Thread.sleep(ONE_SECOND); - } - } - - /** - * Waits that the server is ready. - * @throws InterruptedException if exception - */ - public void waitStopping() throws InterruptedException { - while (!stopping) { - Thread.sleep(ONE_SECOND); - } - } - - /** - * Waits that the server is ready. - * @throws InterruptedException if exception - */ - public void waitStoppingSoon() throws InterruptedException { - while (!lastCallStopping) { - Thread.sleep(ONE_SECOND); - } - } - /** - * @return the bundle context. - */ - protected BundleContext getBundleContext() { - return bundleContext; - } -} diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/OSGiHttpServiceTest.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/OSGiHttpServiceTest.java deleted file mode 100644 index e6a133d901..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/OSGiHttpServiceTest.java +++ /dev/null @@ -1,443 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm.osgi.httpservice; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.net.URL; - -import org.ops4j.pax.swissbox.tinybundles.core.TinyBundle; -import org.ops4j.pax.swissbox.tinybundles.core.TinyBundles; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleException; -import org.osgi.framework.Constants; -import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceReference; -import org.osgi.service.http.HttpService; -import org.ow2.jonas.itests.intravm.JOnASLauncher; -import org.ow2.jonas.itests.intravm.osgi.httpservice.resource.RegisterResourceTestActivator; -import org.ow2.jonas.itests.intravm.osgi.httpservice.servlet.RegisterServletTestActivator; -import org.ow2.jonas.itests.intravm.osgi.httpservice.servlet.SimpleTestServlet; -import org.ow2.jonas.management.ServiceManager; -import org.ow2.util.file.FileUtils; -import org.ow2.util.url.URLUtils; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -/** - * Tests of the OSGi http service. - * @author Guillaume Porcher - * @author Florent Benoit - */ -public class OSGiHttpServiceTest extends JOnASLauncher { - - /** - * URL for the resource bundle. - */ - private URL resourceBundleURL = null; - - /** - * URL for the first servlet bundle. - */ - private URL servletBundle1URL = null; - - /** - * URL for the second servlet bundle. - */ - private URL servletBundle2URL = null; - - /** - * One second delay. - */ - private static final long ONE_SECOND = 1000L; - - /** - * Waiting time = 5 seconds. - */ - private static final long SLEEP = 5 * ONE_SECOND; - - /** - * HTTP service. - */ - private Object httpService = null; - - /** - * Port number. - */ - private String httpServicePort = null; - - /** - * JOnAS service manager service. - */ - private Object serviceManager = null; - - /** - * Create bundles in order to be ready for the tests. - * @throws Exception - */ - @BeforeClass - public void createBundles() throws Exception { - // create bundle for resources - TinyBundle resourceBundle = TinyBundles.newBundle(); - resourceBundle.add("files/index.html", OSGiHttpServiceTest.class.getClassLoader().getResource("index.html")); - resourceBundle.add("files/folder/test.html", OSGiHttpServiceTest.class.getClassLoader().getResource("test.html")); - resourceBundle.add(RegisterResourceTestActivator.class); - resourceBundle.set(Constants.BUNDLE_SYMBOLICNAME, "RegisterResourceBundle"); - resourceBundle.set(Constants.BUNDLE_ACTIVATOR, RegisterResourceTestActivator.class.getName()); - InputStream resourceBundleInputStream = resourceBundle.build(TinyBundles.withBnd()); - File bundleFile = File.createTempFile("rsrbundle", ".jar"); - FileUtils.dump(resourceBundleInputStream, bundleFile); - resourceBundleURL = URLUtils.fileToURL(bundleFile); - - // Create bundle for servlet - TinyBundle servletBundle1 = TinyBundles.newBundle(); - servletBundle1.add(RegisterServletTestActivator.class); - servletBundle1.add(SimpleTestServlet.class); - servletBundle1.set(Constants.BUNDLE_SYMBOLICNAME, "RegisterServletBundle"); - servletBundle1.set(Constants.BUNDLE_ACTIVATOR, RegisterServletTestActivator.class.getName()); - servletBundle1.set(Constants.EXPORT_PACKAGE, ""); - servletBundle1.set(Constants.BUNDLE_VERSION, "1.0.0"); - InputStream servletBundle1InputStream = servletBundle1.build(TinyBundles.withBnd()); - File servlet1File = File.createTempFile("servletbundle1", ".jar"); - FileUtils.dump(servletBundle1InputStream, servlet1File); - servletBundle1URL = URLUtils.fileToURL(servlet1File); - - // Create bundle for servlet with version 2 - TinyBundle servletBundle2 = TinyBundles.newBundle(); - servletBundle2.add(RegisterServletTestActivator.class); - servletBundle2.add(SimpleTestServlet.class); - servletBundle2.set(Constants.BUNDLE_SYMBOLICNAME, "RegisterServletBundle2"); - servletBundle2.set(Constants.BUNDLE_ACTIVATOR, RegisterServletTestActivator.class.getName()); - servletBundle2.set(Constants.EXPORT_PACKAGE, ""); - servletBundle2.set(Constants.BUNDLE_VERSION, "2.0.0"); - InputStream servletBundle2InputStream = servletBundle2.build(TinyBundles.withBnd()); - File servlet2File = File.createTempFile("servletbundle2", ".jar"); - FileUtils.dump(servletBundle2InputStream, servlet2File); - servletBundle2URL = URLUtils.fileToURL(servlet2File); - - } - - /** - * Test the access to the HTTP service. - * @throws InterruptedException if waiting fails - */ - @BeforeClass - public void waitForServices() throws InterruptedException { - // wait for initialization - final long maxWaitTime = System.currentTimeMillis() + SLEEP; - - ServiceReference httpServiceReference = null; - while (httpServiceReference == null && System.currentTimeMillis() < maxWaitTime) { - Thread.sleep(ONE_SECOND); - httpServiceReference = getBundleContext().getServiceReference(HttpService.class.getName()); - } - Assert.assertNotNull(httpServiceReference, "HttpService is not registered"); - httpService = getBundleContext().getService(httpServiceReference); - Assert.assertNotNull(httpService, "HttpService is not registered"); - httpServicePort = (String) httpServiceReference.getProperty("org.osgi.service.http.port"); - - ServiceReference serviceManagerServiceReference = null; - while (serviceManagerServiceReference == null && System.currentTimeMillis() < maxWaitTime) { - serviceManagerServiceReference = getBundleContext().getServiceReference(ServiceManager.class.getName()); - if (serviceManagerServiceReference == null) { - Thread.sleep(ONE_SECOND); - } - } - Assert.assertNotNull(serviceManagerServiceReference, "ServiceManager is not registered"); - serviceManager = getBundleContext().getService(serviceManagerServiceReference); - - } - - /** - * Test backwards compatibility. - * @throws Exception on failure - */ - @Test - public void testContextRoot() throws Exception { - // wait for context root - final String expected = "JOnAS Root Context"; - final URL url = new URL("http://localhost:" + httpServicePort + "/"); - isExpectedContent(expected, url); - } - - /** - * Test for registering a servlet on the http service. - * @throws Exception if registering fails - */ - @Test - public void testRegisterServlet() throws Exception { - - String context = "/simpleServletTest"; - Method[] methods = httpService.getClass().getDeclaredMethods(); - for (Method method : methods) { - if (method.getName().equals("registerServlet")) { - method.invoke(httpService, context, new SimpleTestServlet("2503"), null, null); - } - } - - // check index.html - final URL url = new URL("http://localhost:" + httpServicePort + context); - isExpectedContent("This is a test content version 2503 for request", url); - - Method unregisterServletMethod = httpService.getClass().getDeclaredMethod("unregister", String.class); - unregisterServletMethod.invoke(httpService, context); - - try { - url.openStream(); - Assert.fail("url still available"); - } catch (final IOException e) { - Assert.assertTrue(e.getMessage().contains("HTTP response code: 400") || e.getMessage().contains(url.toString())); - } - } - - /** - * Test for {@link HttpService#registerResources(String, String, org.osgi.service.http.HttpContext)}. - * @throws InvalidSyntaxException - * @throws IOException - * @throws InterruptedException - * @throws BundleException - */ - @Test - public void testRegisterResources() throws Exception { - - // start resource bundle - final Bundle resourceBundle = getBundleContext().installBundle(resourceBundleURL.toString()); - resourceBundle.start(); - - // check index.html - final URL url = new URL("http://localhost:" + httpServicePort + "/test/index.html"); - final URL refUrl = OSGiHttpServiceTest.class.getClassLoader().getResource("index.html"); - this.checkContent(url, refUrl); - - // check folder/test.html - final URL url2 = new URL("http://localhost:" + httpServicePort + "/test/folder/test.html"); - final URL refUrl2 = OSGiHttpServiceTest.class.getClassLoader().getResource("test.html"); - this.checkContent(url2, refUrl2); - - resourceBundle.stop(); - resourceBundle.uninstall(); - - // check url not available - final URL url3 = new URL("http://localhost:" + httpServicePort + "/test/index.html"); - try { - url3.openStream(); - Assert.fail("url still available"); - } catch (final IOException e) { - Assert.assertTrue(e.getMessage().contains("HTTP response code: 400") || e.getMessage().contains(url3.toString())); - } - } - - /** - * Test for - * {@link HttpService#registerServlet(String, javax.servlet.Servlet, java.util.Dictionary, org.osgi.service.http.HttpContext)} - * . - * @throws InvalidSyntaxException - * @throws IOException - * @throws InterruptedException - * @throws BundleException - */ - @Test - public void testRegisterBundleServlet() throws InvalidSyntaxException, IOException, InterruptedException, BundleException { - - // start servlet bundle - final Bundle bundle = getBundleContext().installBundle(servletBundle1URL.toString()); - bundle.start(); - - // check index.html - final URL url = new URL("http://localhost:" + httpServicePort + "/servletTest/index.html"); - - final String expected = "This is a test content version 1.0.0 for request: /index.html"; - Assert.assertEquals(expected, this.getContentAsString(url)); - - bundle.stop(); - bundle.uninstall(); - - // check url not available - final URL url2 = new URL("http://localhost:" + httpServicePort + "/servletTest/index.html"); - try { - url2.openStream(); - Assert.fail("url available"); - } catch (final IOException e) { - Assert.assertTrue(e.getMessage().contains("HTTP response code: 400") || e.getMessage().contains(url2.toString())); - } - } - - /** - * Enable versioning. - * @throws Exception on failure - */ - @Test - public void enableVersioning() throws Exception { - Method getServiceStateMethod = serviceManager.getClass().getDeclaredMethod("getServiceState", String.class); - Method startServiceMethod = serviceManager.getClass().getDeclaredMethod("startService", String.class); - - String state = (String) getServiceStateMethod.invoke(serviceManager, "versioning"); - Assert.assertNull(state, "the versioning service is not active by default"); - - startServiceMethod.invoke(serviceManager, "versioning"); - - final long maxWaitTime = System.currentTimeMillis() + SLEEP; - while (!"RUNNING".equals(state) && System.currentTimeMillis() < maxWaitTime) { - Thread.sleep(ONE_SECOND); - state = (String) getServiceStateMethod.invoke(serviceManager, "versioning"); - } - Assert.assertEquals("RUNNING", state, "the versioning service is not running"); - } - - /** - * Test for servlet versioning. - * @throws InvalidSyntaxException - * @throws IOException - * @throws InterruptedException - * @throws BundleException - */ - @Test(dependsOnMethods = {"testRegisterServlet", "enableVersioning"}) - public void testVersioning() throws InvalidSyntaxException, IOException, InterruptedException, BundleException { - - final URL url = new URL("http://localhost:" + httpServicePort + "/servletTest/index.html"); - - // start bundle v1 - final Bundle bundle1 = getBundleContext().installBundle(servletBundle1URL.toString()); - bundle1.start(); - - // check versioned url is available - final URL url1 = new URL("http://localhost:" + httpServicePort + "/servletTest-1.0.0/index.html"); - final String expected1 = "This is a test content version 1.0.0 for request: /index.html"; - Assert.assertEquals(expected1, this.getContentAsString(url1)); - - // check non-versioned url is available and pointing to v1 - Assert.assertEquals(expected1, this.getContentAsString(url)); - - // start bundle 2 - final Bundle bundle2 = getBundleContext().installBundle(servletBundle2URL.toString()); - bundle2.start(); - - // check versioned url is available - final URL url2 = new URL("http://localhost:" + httpServicePort + "/servletTest-2.0.0/index.html"); - final String expected2 = "This is a test content version 2.0.0 for request: /index.html"; - Assert.assertEquals(expected2, this.getContentAsString(url2)); - - // check non-versioned url is available and still pointing to v1 - Assert.assertEquals(expected1, this.getContentAsString(url)); - - // stop bundle 1 - bundle1.stop(); - - // check non-versioned url is unavailable - try { - url.openStream(); - Assert.fail("url still available"); - } catch (final IOException e) { - Assert.assertTrue(e.getMessage().contains("HTTP response code: 400") || e.getMessage().contains(url.toString())); - } - - // check versioned url is available - Assert.assertEquals(expected2, this.getContentAsString(url2)); - - // cleanup - bundle1.uninstall(); - bundle2.stop(); - bundle2.uninstall(); - } - - /** - * Checks the string content in local and remote urls are the same. Throw - * {@link AssertionError} if they are not the same. - * @param remoteURL the remote url - * @param localURL the reference url - * @throws IOException if an I/O exception occurs. - * @throws InterruptedException if sleeping is not done - */ - private void checkContent(final URL remoteURL, final URL localURL) throws IOException, InterruptedException { - // wait for initialization - final long stopTime = System.currentTimeMillis() + SLEEP; - - final String localContent = this.getContentAsString(localURL); - - String remoteContent = null; - while (System.currentTimeMillis() < stopTime) { - Thread.sleep(ONE_SECOND); - remoteContent = this.getContentAsString(remoteURL); - if (remoteContent.equals(localContent)) { - break; - } - } - - Assert.assertEquals(remoteContent, localContent); - } - - /** - * Check that the content on the given URL is the expected content. - * @param expectedContent the expected content - * @param url the url on which to get content - * @throws InterruptedException if cannot wait - * @throws IOException if stream is not opened - */ - protected void isExpectedContent(final String expectedContent, final URL url) throws InterruptedException, IOException { - // wait for initialization - final long maxWaitTime = System.currentTimeMillis() + SLEEP; - - String content = null; - while (System.currentTimeMillis() < maxWaitTime) { - Thread.sleep(ONE_SECOND); - content = this.getContentAsString(url); - if (content != null && content.contains(expectedContent)) { - return; - } - } - Assert.fail("The content '" + content + "' does not contain '" + expectedContent + "'."); - } - - /** - * Get the URL content as a String. - * @param url the url - * @return the URL content as a String or the exception message - * @throws IOException if there is a problem with streams - */ - private String getContentAsString(final URL url) throws IOException { - final InputStream inStream = url.openStream(); - final ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try { - int c; - while ((c = inStream.read()) != -1) { - bos.write(c); - } - } finally { - if (inStream != null) { - inStream.close(); - } - if (bos != null) { - bos.flush(); - } - } - final String urlString = bos.toString(); - return urlString; - } -} diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/resource/RegisterResourceTestActivator.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/resource/RegisterResourceTestActivator.java deleted file mode 100644 index 4472f62668..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/resource/RegisterResourceTestActivator.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm.osgi.httpservice.resource; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceEvent; -import org.osgi.framework.ServiceListener; -import org.osgi.framework.ServiceReference; -import org.osgi.service.http.HttpService; - -/** - * @author Guillaume Porcher - */ -public class RegisterResourceTestActivator implements BundleActivator, ServiceListener { - - BundleContext context; - - public void start(final BundleContext context) throws Exception { - this.context = context; - - final ServiceReference ref = this.context.getServiceReference(HttpService.class.getName()); - if (ref != null) { - this.register(ref); - } - this.context.addServiceListener(this, "(objectclass=" + HttpService.class.getName() + ")"); - } - - /* - * (non-Javadoc) - * @see - * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(final BundleContext context) throws Exception { - final ServiceReference ref = this.context.getServiceReference(HttpService.class.getName()); - if (ref != null) { - this.unregister(ref); - } - } - - public void serviceChanged(final ServiceEvent event) { - if (event.getType() == ServiceEvent.REGISTERED) { - this.register(event.getServiceReference()); - } else if (event.getType() == ServiceEvent.UNREGISTERING) { - this.unregister(event.getServiceReference()); - } - } - - private void register(final ServiceReference serviceReference) { - try { - final HttpService httpService = (HttpService) this.context.getService(serviceReference); - httpService.registerResources("/test", "/files", null); - } catch (final Exception e) { - throw new RuntimeException(e); - } - } - - /** - * @param serviceReference - */ - private void unregister(final ServiceReference serviceReference) { - try { - final HttpService httpService = (HttpService) this.context.getService(serviceReference); - httpService.unregister("/test"); - } catch (final Exception e) { - throw new RuntimeException(e); - } - - } - -} diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/RegisterServletTestActivator.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/RegisterServletTestActivator.java deleted file mode 100644 index 9bdea9381d..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/RegisterServletTestActivator.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm.osgi.httpservice.servlet; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.Constants; -import org.osgi.framework.ServiceEvent; -import org.osgi.framework.ServiceListener; -import org.osgi.framework.ServiceReference; -import org.osgi.service.http.HttpService; - -/** - * @author Guillaume Porcher - */ -public class RegisterServletTestActivator implements BundleActivator, ServiceListener { - - BundleContext context; - - String version; - - public void start(final BundleContext context) throws Exception { - this.version = (String) context.getBundle().getHeaders().get(Constants.BUNDLE_VERSION); - try { - this.context = context; - - final ServiceReference ref = this.context.getServiceReference(HttpService.class.getName()); - if (ref != null) { - this.register(ref); - } - this.context.addServiceListener(this, "(objectclass=" + HttpService.class.getName() + ")"); - } catch (final Exception e) { - e.printStackTrace(); - throw e; - } - } - - /* - * (non-Javadoc) - * @see - * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(final BundleContext context) throws Exception { - final ServiceReference ref = this.context.getServiceReference(HttpService.class.getName()); - if (ref != null) { - this.unregister(ref); - } - } - - public void serviceChanged(final ServiceEvent event) { - if (event.getType() == ServiceEvent.REGISTERED) { - this.register(event.getServiceReference()); - } else if (event.getType() == ServiceEvent.UNREGISTERING) { - this.unregister(event.getServiceReference()); - } - } - - private void register(final ServiceReference serviceReference) { - try { - final HttpService httpService = (HttpService) this.context.getService(serviceReference); - - httpService.registerServlet("/servletTest", new SimpleTestServlet(this.version), null, null); - } catch (final Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - /** - * @param serviceReference - */ - private void unregister(final ServiceReference serviceReference) { - try { - final HttpService httpService = (HttpService) this.context.getService(serviceReference); - httpService.unregister("/servletTest"); - } catch (final Exception e) { - throw new RuntimeException(e); - } - - } - -} diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/SimpleTestServlet.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/SimpleTestServlet.java deleted file mode 100644 index 33b875f706..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/osgi/httpservice/servlet/SimpleTestServlet.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm.osgi.httpservice.servlet; - -import java.io.IOException; -import java.io.PrintStream; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @author Guillaume Porcher - * - */ -public class SimpleTestServlet extends HttpServlet { - - public static String CONTENT = "This is a test content version %s for request: %s"; - - private final String version; - - /** - * - */ - public SimpleTestServlet(final String version) { - this.version = version; - } - - @Override - protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { - - final PrintStream ps = new PrintStream(resp.getOutputStream()); - ps.printf(SimpleTestServlet.CONTENT, this.version, req.getPathInfo()); - ps.close(); - } - -} diff --git a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/workdir/TestWorkDir.java b/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/workdir/TestWorkDir.java deleted file mode 100644 index fe0ea1c801..0000000000 --- a/jonas/modules/itests/intravm/src/test/java/org/ow2/jonas/itests/intravm/workdir/TestWorkDir.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.itests.intravm.workdir; - -import java.io.File; -import java.util.Arrays; - -import org.ow2.jonas.itests.intravm.JOnASLauncher; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - - -/** - * Ensures that the default work dir. - * @author Florent Benoit - */ -public class TestWorkDir extends JOnASLauncher { - - /** - * JONAS_BASE. - */ - private String jonasBase = null; - - /** - * Init properties. - */ - @BeforeClass - public void init() throws Exception { - this.jonasBase = System.getProperty("jonas.base"); - } - - /** - * Test that the default JONAS_BASE/work directory is not present on the - * filesystem. - * @throws Exception on failure - */ - @Test - public void testNotAvailableDefaultWorkDir() throws Exception { - waitStoppingSoon(); - File defaultWorkDir = new File(jonasBase, "work"); - if (defaultWorkDir.exists()) { - throw new Exception("The directory '" + defaultWorkDir - + "' exists while it shouldn't as a new work directory has been set"); - } - - } - - /** - * Test that the defined JOnAS work directory is present on the filesystem - * and contains some files. - * @throws Exception on failure - */ - @Test - public void testExistsNewWorkDir() throws Exception { - waitStoppingSoon(); - File workDir = new File(jonasBase, "work-tests"); - if (!workDir.exists()) { - throw new Exception("The directory '" + workDir - + "' doesn't exists while it should as a new work directory has been set"); - } - File[] files = workDir.listFiles(); - if (files.length < 3) { - throw new Exception("The directory '" + workDir + "' should contains some sub directories. Found '" - + Arrays.asList(files) + "'."); - } - - } - -} diff --git a/jonas/modules/itests/intravm/src/test/resources/index.html b/jonas/modules/itests/intravm/src/test/resources/index.html deleted file mode 100644 index 8678a52e5b..0000000000 --- a/jonas/modules/itests/intravm/src/test/resources/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -Test page - - - It works ! - - \ No newline at end of file diff --git a/jonas/modules/itests/intravm/src/test/resources/test.html b/jonas/modules/itests/intravm/src/test/resources/test.html deleted file mode 100644 index 0e0f481455..0000000000 --- a/jonas/modules/itests/intravm/src/test/resources/test.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -Nested Test page - - - It works ! - - \ No newline at end of file diff --git a/jonas/modules/itests/osgi/equinox/pom.xml b/jonas/modules/itests/osgi/equinox/pom.xml deleted file mode 100644 index 7bdee7f26c..0000000000 --- a/jonas/modules/itests/osgi/equinox/pom.xml +++ /dev/null @@ -1,347 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-osgi - 5.2.0-M1-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-equinox - pom - JOnAS :: iTests :: OSGi :: Equinox - Tests the OSGi Bundles of JOnAS with Eclipse Equinox - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - - - - ${project.build.directory} - - true - true - - - - - - - - maven-antrun-plugin - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.ow2.util.maven - maven-osgi-plugin-launcher-core - - - - org.eclipse - osgi - 3.5.0.v20090520 - - - - ${basedir}/../../../tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/javase-profiles.properties - ${basedir}/../../../tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/defaults.properties - ${basedir}/../../../tools/launchers/felix-launcher/src/main/resources/org/ow2/jonas/launcher/felix/gateway.properties - - - ${basedir}/../../../tools/launchers/felix-launcher/target/generated-resources/org/ow2/jonas/launcher/felix/jonas-autodeploy-bundles.properties - - - - jonas.base - ${jonas.base} - - - jonas.root - ${jonas.root} - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - m2.repository - ${settings.localRepository} - - - java.naming.factory.initial - - org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory - - - - java.security.policy - ${jonas.base}/conf/java.policy - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - - javax.security.jacc.PolicyConfigurationFactory.provider - - - org.ow2.jonas.lib.security.jacc.JPolicyConfigurationFactory - - - - monolog.wrappers - - mx4j.log.CommonsLogger,mx4j.log.Logger,java.util.logging.Logger,org.ow2.util.log.JDKLogger, - org.apache.juli.logging.DirectJDKLog,org.ow2.carol.util.configuration.TraceCarol - - - - java.awt.headless - true - - - ipojo.log.level - ERROR - - - - - bootstrap.kill.timeout - 420 - - - - - true - - - - ${itestsdebug} - 8000 - - - - 30 - - - 10 - - - - - 20 - org.ow2.easybeans.examples.* - - - - - - ${jonas.base}/conf/ - - - - - org.ow2.easybeans.osgi - easybeans-examples-entitybean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-mdb - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-migrationejb21 - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-example-osgi - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-security - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statefulbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statelessbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-timerservice - ${easybeans.version} - - - - - - - - start-framework - pre-integration-test - - start - - - - - stop-framework - post-integration-test - - stop - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${basedir}/target - - ${basedir}/../src/test/configuration/testng.xml - - - - rmi.port - ${carol.port} - - - - ${jonas.root}/lib/client.jar - - - - - testing-jonas-full - integration-test - - test - - - - - - - diff --git a/jonas/modules/itests/osgi/felix/pom.xml b/jonas/modules/itests/osgi/felix/pom.xml deleted file mode 100644 index b8c93c6c4c..0000000000 --- a/jonas/modules/itests/osgi/felix/pom.xml +++ /dev/null @@ -1,368 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-osgi - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-felix - pom - JOnAS :: iTests :: OSGi :: Felix - Tests the OSGi Bundles of JOnAS with Apache Felix - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - - - - ${project.build.directory} - - true - true - - - - unpack-properties-fiile - generate-test-resources - - unpack - - - - - org.ow2.jonas.launchers - felix-launcher - ${project.version} - - - - ${project.build.directory}/launcher - - true - true - - - - - - - - maven-antrun-plugin - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.ow2.util.maven - maven-osgi-plugin-launcher-core - - - - org.apache.felix - org.apache.felix.framework - ${felix.framework.version} - - - - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/javase-profiles.properties - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/defaults.properties - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/gateway.properties - - - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/jonas-autodeploy-bundles.properties - - - - jonas.base - ${jonas.base} - - - jonas.root - ${jonas.root} - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - m2.repository - ${settings.localRepository} - - - java.naming.factory.initial - - org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory - - - - java.security.policy - ${jonas.base}/conf/java.policy - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - - javax.security.jacc.PolicyConfigurationFactory.provider - - - org.ow2.jonas.lib.security.jacc.JPolicyConfigurationFactory - - - - monolog.wrappers - - mx4j.log.CommonsLogger,mx4j.log.Logger,java.util.logging.Logger,org.ow2.util.log.JDKLogger, - org.apache.juli.logging.DirectJDKLog,org.ow2.carol.util.configuration.TraceCarol - - - - java.awt.headless - true - - - ipojo.log.level - ERROR - - - - - bootstrap.kill.timeout - 420 - - - - - true - - - - ${itestsdebug} - 8000 - - - - 30 - - - 10 - - - - - 20 - org.ow2.easybeans.examples.* - - - - - - ${jonas.base}/conf/ - - - - - org.ow2.easybeans.osgi - easybeans-examples-entitybean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-mdb - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-migrationejb21 - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-example-osgi - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-security - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statefulbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statelessbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-timerservice - ${easybeans.version} - - - - - - - - start-framework - pre-integration-test - - start - - - - - stop-framework - post-integration-test - - stop - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${basedir}/target - - ${basedir}/../src/test/configuration/testng.xml - - - - rmi.port - ${carol.port} - - - - ${jonas.root}/lib/client.jar - - - - - testing-jonas-full - integration-test - - test - - - - - - - diff --git a/jonas/modules/itests/osgi/knopflerfish/pom.xml b/jonas/modules/itests/osgi/knopflerfish/pom.xml deleted file mode 100644 index d1cd2146ac..0000000000 --- a/jonas/modules/itests/osgi/knopflerfish/pom.xml +++ /dev/null @@ -1,369 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests-osgi - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-knopflerfish - pom - JOnAS :: iTests :: OSGi :: Knopflerfish - Tests the OSGi Bundles of JOnAS with Knopflerfish - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper.version} - - - generate-port-numbers - generate-test-sources - - reserve-network-port - - - - webcontainer.port - carol.port - jms.port - db.port - - - - - - - - - maven-dependency-plugin - - - unpack-assembly - generate-test-resources - - unpack - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - - - - ${project.build.directory} - - true - true - - - - unpack-properties-fiile - generate-test-resources - - unpack - - - - - org.ow2.jonas.launchers - felix-launcher - ${project.version} - - - - ${project.build.directory}/launcher - - true - true - - - - - - - - maven-antrun-plugin - - - create-jonas-base-with-all-options - generate-test-resources - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.ow2.util.maven - maven-osgi-plugin-launcher-core - - - - org.knopflerfish - knopflerfish-framework - 3.0.0.beta-3 - - - - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/javase-profiles.properties - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/defaults.properties - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/gateway.properties - - - ${project.build.directory}/launcher/org/ow2/jonas/launcher/felix/jonas-autodeploy-bundles.properties - - - - jonas.base - ${jonas.base} - - - jonas.root - ${jonas.root} - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - m2.repository - ${settings.localRepository} - - - java.naming.factory.initial - - org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory - - - - java.security.policy - ${jonas.base}/conf/java.policy - - - java.security.auth.login.config - ${jonas.base}/conf/jaas.config - - - - javax.security.jacc.PolicyConfigurationFactory.provider - - - org.ow2.jonas.lib.security.jacc.JPolicyConfigurationFactory - - - - monolog.wrappers - - mx4j.log.CommonsLogger,mx4j.log.Logger,java.util.logging.Logger,org.ow2.util.log.JDKLogger, - org.apache.juli.logging.DirectJDKLog,org.ow2.carol.util.configuration.TraceCarol - - - - java.awt.headless - true - - - ipojo.log.level - ERROR - - - - - bootstrap.kill.timeout - 420 - - - - - true - - - - ${itestsdebug} - 8000 - - - - 30 - - - 10 - - - - - 20 - org.ow2.easybeans.examples.* - - - - - - ${jonas.base}/conf/ - - - - - org.ow2.easybeans.osgi - easybeans-examples-entitybean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-mdb - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-migrationejb21 - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-example-osgi - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-security - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statefulbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-statelessbean - ${easybeans.version} - - - - org.ow2.easybeans.osgi - easybeans-examples-timerservice - ${easybeans.version} - - - - - - - - start-framework - pre-integration-test - - start - - - - - stop-framework - post-integration-test - - stop - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${basedir}/target - - ${basedir}/../src/test/configuration/testng.xml - - - - rmi.port - ${carol.port} - - - - ${jonas.root}/lib/client.jar - - - - - testing-jonas-full - integration-test - - test - - - - - - - diff --git a/jonas/modules/itests/osgi/pom.xml b/jonas/modules/itests/osgi/pom.xml deleted file mode 100644 index 735eff6502..0000000000 --- a/jonas/modules/itests/osgi/pom.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - org.ow2.jonas - jonas-itests - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests-osgi - pom - JOnAS :: iTests :: OSGi - Integration Tests on OSGi - - - - - org.ow2.easybeans.osgi - easybeans-osgi-itests-base - ${easybeans.version} - tests - test - - - - - org.testng - testng - 5.1 - jdk15 - test - - - - - org.ow2.easybeans.osgi - easybeans-client-fix - ${easybeans.version} - test - - - - - org.ow2.easybeans - easybeans-example-entitybean - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-messagedrivenbean - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-migrationejb21 - ${easybeans.version} - test - - - - org.ow2.easybeans.osgi - easybeans-example-osgi - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-security - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-statefulbean - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-statelessbean - ${easybeans.version} - test - - - - org.ow2.easybeans - easybeans-example-timerservice - ${easybeans.version} - test - - - - - felix - - knopflerfish - - - diff --git a/jonas/modules/itests/osgi/src/test/configuration/testng.xml b/jonas/modules/itests/osgi/src/test/configuration/testng.xml deleted file mode 100644 index 6fcc41fe2b..0000000000 --- a/jonas/modules/itests/osgi/src/test/configuration/testng.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/jonas/modules/itests/pom.xml b/jonas/modules/itests/pom.xml deleted file mode 100644 index c6f5b6df46..0000000000 --- a/jonas/modules/itests/pom.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-itests - pom - JOnAS :: iTests - Integration Tests - - - db,resource,ejb3,jaxws,web,ear,audit,depmonitor - ${project.build.directory}/jonas-full-${project.version} - ${project.build.directory}/jonas-base - - - - - - - maven-enforcer-plugin - - - enforce-java - - enforce - - - - - - - 2.1 - - - 1.5 - - - - - - - - - - - maven.test.skip - - - maven.test.skip - !true - - - - applications - cargo - osgi - intravm - - - - diff --git a/jonas/modules/libraries/externals/asm/pom.xml b/jonas/modules/libraries/externals/asm/pom.xml deleted file mode 100755 index fc00f1d980..0000000000 --- a/jonas/modules/libraries/externals/asm/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - asm - bundle - JOnAS :: Libraries :: Externals :: ASM - - - 2.2.3 - - - - - asm - asm - ${asm.version} - - - asm - asm-commons - ${asm.version} - - - asm - asm-util - ${asm.version} - - - asm - asm-tree - ${asm.version} - - - asm - asm-attrs - ${asm.version} - - - asm - asm-analysis - ${asm.version} - - - diff --git a/jonas/modules/libraries/externals/asm/src/main/resources/META-INF/asm.bnd b/jonas/modules/libraries/externals/asm/src/main/resources/META-INF/asm.bnd deleted file mode 100755 index f2553b9c53..0000000000 --- a/jonas/modules/libraries/externals/asm/src/main/resources/META-INF/asm.bnd +++ /dev/null @@ -1,30 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008-2011 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# List of packages exported by the bundle. -Export-Package org.objectweb.asm.*;version=${asm.version} - --versionpolicy [${version;==;${@}},${version;+;${@}}) - -# No private package. - diff --git a/jonas/modules/libraries/externals/javaee-api/pom.xml b/jonas/modules/libraries/externals/javaee-api/pom.xml deleted file mode 100644 index e4130964bf..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/pom.xml +++ /dev/null @@ -1,225 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - javaee-api - bundle - JOnAS :: Libraries :: Externals :: Java EE API - - - - - - org.ow2.spec.ee - ow2-ejb-3.0-spec - provided - - - - - org.apache.geronimo.specs - geronimo-jaxrpc_1.1_spec - - - - - org.ow2.spec.ee - ow2-jpa-1.0-spec - ${ow2.spec.version} - provided - - - org.ow2.spec.ee - ow2-connector-1.5-spec - provided - - - org.ow2.spec.ee - ow2-jta-1.1-spec - provided - - - org.ow2.spec.ee - ow2-deployment-1.2-spec - provided - - - org.ow2.spec.ee - ow2-jsr77-1.1-spec - provided - - - - - org.apache.axis - axis-jaxrpc - provided - - - wsdl4j - wsdl4j - 1.6.1 - provided - - - - org.apache.tomcat - servlet-api - provided - - - - org.mortbay.jetty - jsp-api-2.1 - - 6.1.5 - - - org.mortbay.jetty - servlet-api-2.5 - - - - - - - org.apache.geronimo.specs - geronimo-jaxr_1.0_spec - 1.1 - provided - - - org.apache.geronimo.specs - geronimo-ws-metadata_2.0_spec - 1.1.2 - provided - - - - org.apache.servicemix.specs - org.apache.servicemix.specs.stax-api-1.0 - 1.5.0 - provided - - - javax.security - jacc - provided - - - javax.mail - mail - provided - - - org.apache.geronimo.specs - geronimo-jms_1.1_spec - provided - - - org.apache.geronimo.specs - geronimo-jaxws_2.1_spec - 1.0 - provided - - - - org.apache.servicemix.specs - org.apache.servicemix.specs.jaxb-api-2.1 - 1.2.0 - provided - - - - org.apache.servicemix.specs - org.apache.servicemix.specs.stax-api-1.0 - - - org.apache.geronimo.specs - geronimo-activation_1.1_spec - - - - - javax.xml.soap - com.springsource.javax.xml.soap - 1.3.0 - provided - - - - javax.faces - jsf-api - provided - - - - - javax.faces - jsf-impl - - - - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - generate-tld-assembly - package - - attached - - - - src/main/assembly/assembly.xml - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/assembly/assembly.xml b/jonas/modules/libraries/externals/javaee-api/src/main/assembly/assembly.xml deleted file mode 100644 index 2d9729a211..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/assembly/assembly.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - tld - - jar - - - - false - - - - - - - / - - true - true - - - **/*.tld - - - - org.mortbay.jetty:jsp-api-2.1 - javax.faces:jsf-impl - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/ContextFinder.java b/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/ContextFinder.java deleted file mode 100644 index 99495059be..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/ContextFinder.java +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package javax.xml.bind; - -import java.lang.reflect.Method; -import java.util.Map; -import java.util.Properties; -import java.io.IOException; -import java.io.InputStream; -import java.io.BufferedReader; -import java.io.InputStreamReader; - -/** - * Copied from artifact org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.1. - */ -class ContextFinder { - - private static final String PLATFORM_DEFAULT_FACTORY_CLASS = "com.sun.xml.bind.v2.ContextFactory"; - private static final String JAXB_CONTEXT_PROPERTY = JAXBContext.class.getName(); - private static final String JAXB_CONTEXT_FACTORY = JAXBContext.JAXB_CONTEXT_FACTORY; - - public static JAXBContext find(String contextPath, ClassLoader classLoader, Map properties) throws JAXBException { - String className = null; - // Patch for bug https://issues.apache.org/activemq/browse/SMX4-329 - if (contextPath == null || contextPath.length() == 0) { - throw new JAXBException("Invalid contextPath (empty or null)"); - } - String[] packages = contextPath.split(":"); - if (packages == null || packages.length == 0) { - throw new JAXBException("Invalid contextPath (no packages)"); - } - for (String pkg : packages) { - String url = pkg.replace('.', '/') + "/jaxb.properties"; - className = loadClassNameFromProperties(url, classLoader); - if (className != null) { - break; - } - } - if (className == null) { - className = System.getProperty(JAXB_CONTEXT_PROPERTY); - } - if (className == null) { - String url = "META-INF/services/" + JAXB_CONTEXT_PROPERTY; - className = loadClassName(url, classLoader); - } - if (className == null) { - className = PLATFORM_DEFAULT_FACTORY_CLASS; - } - Class spi = loadSpi(className, classLoader); - try { - Method m = spi.getMethod("createContext", new Class[] { String.class, ClassLoader.class, Map.class }); - return (JAXBContext) m.invoke(null, new Object[] { contextPath, classLoader, properties }); - } catch (Throwable t) { - // Ignored - } - // Fallback for JAXB 1.0 compatibility (at least JAXB TCK tests are using that feature) - try { - Method m = spi.getMethod("createContext", new Class[] { String.class, ClassLoader.class, }); - return (JAXBContext) m.invoke(null, new Object[] { contextPath, classLoader }); - } catch (Throwable t) { - throw new JAXBException("Unable to create context", t); - } - } - - - public static JAXBContext find(Class[] classes, Map properties) throws JAXBException { - String className = null; - for (Class cl : classes) { - Package pkg = cl.getPackage(); - if (pkg != null) { - String url = pkg.getName().replace('.', '/') + "/jaxb.properties"; - className = loadClassNameFromProperties(url, cl.getClassLoader()); - if (className != null) { - break; - } - } - } - if (className == null) { - className = System.getProperty(JAXB_CONTEXT_PROPERTY); - } - if (className == null) { - String url = "META-INF/services/" + JAXB_CONTEXT_PROPERTY; - className = loadClassName(url, Thread.currentThread().getContextClassLoader()); - } - if (className == null) { - className = PLATFORM_DEFAULT_FACTORY_CLASS; - } - Class spi = loadSpi(className, Thread.currentThread().getContextClassLoader()); - try { - Method m = spi.getMethod("createContext", new Class[] { Class[].class, Map.class }); - return (JAXBContext) m.invoke(null, new Object[] { classes, properties }); - } catch (Throwable t) { - throw new JAXBException("Unable to create context", t); - } - } - - private static String loadClassNameFromProperties(String url, ClassLoader classLoader) throws JAXBException { - try { - InputStream is; - if (classLoader != null) { - is = classLoader.getResourceAsStream(url); - } else { - is = ClassLoader.getSystemResourceAsStream(url); - } - if (is != null) { - try { - Properties props = new Properties(); - props.load(is); - String className = props.getProperty(JAXB_CONTEXT_FACTORY); - if (className == null) { - throw new JAXBException("jaxb.properties file " + url + " should contain a " + JAXB_CONTEXT_FACTORY + " property"); - } - return className.trim(); - } finally { - is.close(); - } - } else { - return null; - } - } catch (IOException e) { - throw new JAXBException(e); - } - } - - private static String loadClassName(String url, ClassLoader classLoader) throws JAXBException { - try { - InputStream is; - if (classLoader != null) { - is = classLoader.getResourceAsStream(url); - } else { - is = ClassLoader.getSystemResourceAsStream(url); - } - if (is != null) { - try { - BufferedReader r = new BufferedReader(new InputStreamReader(is, "UTF-8")); - return r.readLine().trim(); - } finally { - is.close(); - } - } - return null; - } catch (IOException e) { - throw new JAXBException(e); - } - } - - private static Class loadSpi(String className, ClassLoader classLoader) throws JAXBException { - Class spiClass; - try { - spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(JAXBContext.class.getName()); - if (spiClass != null) { - return spiClass; - } - } catch (Throwable t) { - } - try { - if (classLoader != null) { - spiClass = classLoader.loadClass(className); - } else { - spiClass = Class.forName(className); - } - } catch (ClassNotFoundException e) { - throw new JAXBException("Provider " + className + " not found", e); - } - return spiClass; - } - - -} diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/TypeConstraintException.java b/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/TypeConstraintException.java deleted file mode 100644 index ebc2ae0e4c..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/java/javax/xml/bind/TypeConstraintException.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package javax.xml.bind; - -import java.io.PrintStream; - -/** - * Copied from artifact org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.1. - */ -public class TypeConstraintException extends RuntimeException { - - private String errorCode; - private Throwable linkedException; - - public TypeConstraintException(String message) { - this(message, null, null); - } - - public TypeConstraintException(String message, String errorCode) { - this(message, errorCode, null); - } - - public TypeConstraintException(String message, String errorCode, Throwable cause) { - super(message); - this.errorCode = errorCode; - this.linkedException = cause; - } - - public TypeConstraintException(String message, Throwable cause) { - this(message, null, cause); - } - - public TypeConstraintException(Throwable cause) { - this(null, null, cause); - } - - public String getErrorCode() { - return errorCode; - } - - public Throwable getLinkedException() { - // Do not use getCause() as the cause was never initialized in the constructor - return linkedException; - } - - public synchronized void setLinkedException(Throwable linkedException) { - this.linkedException = linkedException; - } - - public String toString() { - return linkedException != null ? - super.toString() + "\n - with linked exception:\n[" + linkedException.toString() + "]" : - super.toString(); - } - - public void printStackTrace() { - printStackTrace(System.err); - } - - public void printStackTrace(PrintStream ps) { - if (this.linkedException != null) { - this.linkedException.printStackTrace(ps); - ps.println("--------------- linked to ------------------"); - } - super.printStackTrace(ps); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java b/jonas/modules/libraries/externals/javaee-api/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java deleted file mode 100644 index d09e2400d5..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java +++ /dev/null @@ -1,425 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. - * - * Portions Copyright Apache Software Foundation. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common Development - * and Distribution License("CDDL") (collectively, the "License"). You - * may not use this file except in compliance with the License. You can obtain - * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific - * language governing permissions and limitations under the License. - * - * When distributing the software, include this License Header Notice in each - * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. - * Sun designates this particular file as subject to the "Classpath" exception - * as provided by Sun in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the License - * Header, with the fields enclosed by brackets [] replaced by your own - * identifying information: "Portions Copyrighted [year] - * [name of copyright owner]" - * - * Contributor(s): - * - * If you wish your version of this file to be governed by only the CDDL or - * only the GPL Version 2, indicate your decision by adding "[Contributor] - * elects to include this software in this distribution under the [CDDL or GPL - * Version 2] license." If you don't indicate a single choice of license, a - * recipient has the option to distribute your version of this file under - * either the CDDL, the GPL Version 2 or to extend the choice of license to - * its licensees as provided above. However, if you add GPL Version 2 code - * and therefore, elected the GPL Version 2 license, then the option applies - * only if the new code is made subject to such option by the copyright - * holder. - */ - -package org.apache.taglibs.standard.tag.common.xml; - -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.io.StringReader; -import java.io.Writer; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspTagException; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.BodyTagSupport; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.URIResolver; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import org.apache.taglibs.standard.resources.Resources; -import org.apache.taglibs.standard.tag.common.core.ImportSupport; -import org.apache.taglibs.standard.tag.common.core.Util; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.XMLReaderFactory; - -/** - *

    - * Support for tag handlers for <transform>, the XML transformation tag. - *

    - * @author Shawn Bayern - */ -public abstract class TransformSupport extends BodyTagSupport { - - // ********************************************************************* - // Protected state - - protected Object xml; // attribute - - protected String xmlSystemId; // attribute - - protected Object xslt; // attribute - - protected String xsltSystemId; // attribute - - protected Result result; // attribute - - // ********************************************************************* - // Private state - - private String var; // 'var' attribute - - private int scope; // processed 'scope' attr - - private Transformer t; // actual Transformer - - private TransformerFactory tf; // reusable factory - - private DocumentBuilder db; // reusable factory - - private DocumentBuilderFactory dbf; // reusable factory - - // ********************************************************************* - // Constructor and initialization - - public TransformSupport() { - super(); - init(); - } - - private void init() { - xml = xslt = null; - xmlSystemId = xsltSystemId = null; - var = null; - result = null; - tf = null; - scope = PageContext.PAGE_SCOPE; - } - - // ********************************************************************* - // Tag logic - - @Override - public int doStartTag() throws JspException { - /* - * We can set up our Transformer here, so we do so, and we let it - * receive parameters directly from subtags (instead of caching them. - */ - try { - - // ************************************ - // Initialize - - // set up our DocumentBuilderFactory if necessary - if (dbf == null) { - dbf = DocumentBuilderFactory.newInstance(); - dbf.setNamespaceAware(true); - dbf.setValidating(false); - } - if (db == null) { - db = dbf.newDocumentBuilder(); - } - - // set up the TransformerFactory if necessary - if (tf == null) { - tf = TransformerFactory.newInstance(); - } - - // ************************************ - // Produce transformer - - Source s; - if (xslt != null) { - if (!(xslt instanceof String) && !(xslt instanceof Reader) && !(xslt instanceof javax.xml.transform.Source)) { - throw new JspTagException(Resources.getMessage("TRANSFORM_XSLT_UNRECOGNIZED")); - } - s = getSource(xslt, xsltSystemId); - } else { - throw new JspTagException(Resources.getMessage("TRANSFORM_NO_TRANSFORMER")); - } - tf.setURIResolver(new JstlUriResolver(pageContext)); - t = tf.newTransformer(s); - - // ############################################### - // Patch for xalan 2.7.0 - // The method newTransformer(s) should throw a - // TransformerConfigurationException if the XSLT source is not valid - // instead of returning an object Transformer null - if (t == null) { - throw new TransformerConfigurationException(); - } - // ############################################### - - return EVAL_BODY_BUFFERED; - - } catch (SAXException ex) { - throw new JspException(ex); - } catch (ParserConfigurationException ex) { - throw new JspException(ex); - } catch (IOException ex) { - throw new JspException(ex); - } catch (TransformerConfigurationException ex) { - throw new JspException(ex); - } - } - - // parse 'xml' or body, transform via our Transformer, - // and store as 'var' or through 'result' - @Override - public int doEndTag() throws JspException { - try { - - // ************************************ - // Determine source XML - - // if we haven't gotten a source, use the body (which may be empty) - Object xml = this.xml; - if (xml == null) { - if (bodyContent != null && bodyContent.getString() != null) { - xml = bodyContent.getString().trim(); - } else { - xml = ""; - } - } - - // let the Source be with you - Source source = getSource(xml, xmlSystemId); - - // ************************************ - // Conduct the transformation - - // we can assume at most one of 'var' or 'result' is specified - if (result != null) { - // we can write directly to the Result - t.transform(source, result); - } else if (var != null) { - // we need a Document - Document d = db.newDocument(); - Result doc = new DOMResult(d); - t.transform(source, doc); - pageContext.setAttribute(var, d, scope); - } else { - Result page = new StreamResult(new SafeWriter(pageContext.getOut())); - t.transform(source, page); - } - - return EVAL_PAGE; - } catch (SAXException ex) { - throw new JspException(ex); - } catch (ParserConfigurationException ex) { - throw new JspException(ex); - } catch (IOException ex) { - throw new JspException(ex); - } catch (TransformerException ex) { - throw new JspException(ex); - } - } - - // Releases any resources we may have (or inherit) - @Override - public void release() { - init(); - } - - // ********************************************************************* - // Public methods for subtags - - /** Sets (adds) a transformation parameter on our transformer. */ - public void addParameter(final String name, final Object value) { - t.setParameter(name, value); - } - - // ********************************************************************* - // Utility methods - - /** - * Wraps systemId with a "jstl:" prefix to prevent the parser from thinking - * that the URI is truly relative and resolving it against the current - * directory in the filesystem. - */ - private static String wrapSystemId(final String systemId) { - if (systemId == null) { - return "jstl:"; - } else if (ImportSupport.isAbsoluteUrl(systemId)) { - return systemId; - } else { - return ("jstl:" + systemId); - } - } - - /** - * Retrieves a Source from the given Object, whether it be a String, Reader, - * Node, or other supported types (even a Source already). If 'url' is true, - * then we must be passed a String and will interpret it as a URL. A null - * input always results in a null output. - */ - private Source getSource(final Object o, final String systemId) throws SAXException, ParserConfigurationException, - IOException { - if (o == null) { - return null; - } else if (o instanceof Source) { - return (Source) o; - } else if (o instanceof String) { - // if we've got a string, chain to Reader below - return getSource(new StringReader((String) o), systemId); - } else if (o instanceof Reader) { - // explicitly go through SAX to maintain control - // over how relative external entities resolve - XMLReader xr = XMLReaderFactory.createXMLReader(); - xr.setEntityResolver(new ParseSupport.JstlEntityResolver(pageContext)); - InputSource s = new InputSource((Reader) o); - s.setSystemId(wrapSystemId(systemId)); - Source result = new SAXSource(xr, s); - result.setSystemId(wrapSystemId(systemId)); - return result; - } else if (o instanceof Node) { - return new DOMSource((Node) o); - } else if (o instanceof List) { - // support 1-item List because our XPath processor outputs them - List l = (List) o; - if (l.size() == 1) { - return getSource(l.get(0), systemId); // unwrap List - } else { - throw new IllegalArgumentException(Resources.getMessage("TRANSFORM_SOURCE_INVALID_LIST")); - } - } else { - throw new IllegalArgumentException(Resources.getMessage("TRANSFORM_SOURCE_UNRECOGNIZED") + o.getClass()); - } - } - - // ********************************************************************* - // Tag attributes - - public void setVar(final String var) { - this.var = var; - } - - public void setScope(final String scope) { - this.scope = Util.getScope(scope); - } - - // ********************************************************************* - // Private utility classes - - /** - * A Writer based on a wrapped Writer but ignoring requests to close() and - * flush() it. (Someone must have wrapped the toilet in my office - * similarly...) - */ - private static class SafeWriter extends Writer { - private Writer w; - - public SafeWriter(final Writer w) { - this.w = w; - } - - @Override - public void close() { - } - - @Override - public void flush() { - } - - @Override - public void write(final char[] cbuf, final int off, final int len) throws IOException { - w.write(cbuf, off, len); - } - } - - // ********************************************************************* - // JSTL-specific URIResolver class - - /** Lets us resolve relative external entities. */ - private static class JstlUriResolver implements URIResolver { - private final PageContext ctx; - - public JstlUriResolver(final PageContext ctx) { - this.ctx = ctx; - } - - public Source resolve(final String href, String base) throws TransformerException { - - // pass if we don't have a systemId - if (href == null) { - return null; - } - - // remove "jstl" marker from 'base' - // NOTE: how 'base' is determined varies among different Xalan - // xsltc implementations - int index; - if (base != null && (index = base.indexOf("jstl:")) != -1) { - base = base.substring(index + 5); - } - - // we're only concerned with relative URLs - if (ImportSupport.isAbsoluteUrl(href) || (base != null && ImportSupport.isAbsoluteUrl(base))) { - return null; - } - - // base is relative; remove everything after trailing '/' - if (base == null || base.lastIndexOf("/") == -1) { - base = ""; - } else { - base = base.substring(0, base.lastIndexOf("/") + 1); - } - - // concatenate to produce the real URL we're interested in - String target = base + href; - - // for relative URLs, load and wrap the resource. - // don't bother checking for 'null' since we specifically want - // the parser to fail if the resource doesn't exist - InputStream s; - if (target.startsWith("/")) { - s = ctx.getServletContext().getResourceAsStream(target); - if (s == null) { - throw new TransformerException(Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", href)); - } - } else { - String pagePath = ((HttpServletRequest) ctx.getRequest()).getServletPath(); - String basePath = pagePath.substring(0, pagePath.lastIndexOf("/")); - s = ctx.getServletContext().getResourceAsStream(basePath + "/" + target); - if (s == null) { - throw new TransformerException(Resources.getMessage("UNABLE_TO_RESOLVE_ENTITY", href)); - } - } - return new StreamSource(s); - } - } - -} diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/META-INF/javaee-api.bnd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/META-INF/javaee-api.bnd deleted file mode 100644 index 2adc740a8c..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/META-INF/javaee-api.bnd +++ /dev/null @@ -1,79 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007-2011 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# javax.xml.namespace got from the JDK. -# com.ibm , ..not needed (?) -# Ensure consistency by forcing import on interceptor 1.0 (if 1.1 is here, -# wire will be created between this bundle and the interceptor 1.1 bundle) -Import-Package !javax.activation.*,\ - !com.sun.org.apache.*,\ - !com.ibm.*,\ - javax.interceptor.*;version=1.0,\ - javax.xml.namespace,\ - * - -# These resources must be present. They cannot be exported. -Include-Resource @mail-1.4.jar!/META-INF/javamail.default.providers, \ - @mail-1.4.jar!/META-INF/javamail.default.address.map, \ - @mail-1.4.jar!/META-INF/javamail.charset.map, \ - @mail-1.4.jar!/META-INF/mailcap - -# List of packages exported by the bundle. -# TODO mail and activation implementations should be in jonas-mail -Export-Package com.ibm.wsdl.*,\ - com.sun.activation.*,\ - com.sun.mail.*,\ - javax.activation.*;version=1.1,\ - javax.annotation.*;version=1.0,\ - javax.faces.*;version=1.2;-split-package:=merge-first,\ - javax.ejb.*;version=3.0,\ - javax.el.*;version=2.1,\ - javax.enterprise.deploy.*;version=1.2,\ - javax.interceptor;version=1.0,\ - javax.jms.*;version=1.1,\ - javax.jws.*;version=2.0,\ - javax.mail.*;version=1.4,\ - javax.management.j2ee.*;version=1.2,\ - javax.persistence.*;version=1.0,\ - javax.resource.*;version=1.5,\ - javax.security.jacc;version=1.1,\ - javax.servlet.jsp.*;version=2.1,\ - javax.servlet.*;version=2.5,\ - javax.transaction.*;version=1.1.0,\ - javax.wsdl.*;version=1.2,\ - javax.xml.bind.*;version=2.1;-split-package:=merge-first,\ - javax.xml.rpc.*;version=1.1,\ - javax.xml.soap.*;version=1.3,\ - javax.xml.stream.*;version=1.0,\ - javax.xml.transform.stax;version=1.0, \ - javax.xml.ws.*;version=2.1,\ - javax.*;-split-package:=merge-first,\ - org.apache.taglibs.*;version=2.1;-split-package:=merge-first - -# Private package (Some OSGi utility to help SPI loading) -Private-Package org.apache.servicemix.specs.locator - -Bundle-Activator org.apache.servicemix.specs.locator.Activator - -# JSTL Taglib may import JDBC Drivers and we don't know the name of the JDBC Driver, so we need the wildcard. -DynamicImport-Package * diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_0.xsd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_0.xsd deleted file mode 100644 index a27f3bc7b7..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_0.xsd +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - @(#)jsp_2_0.xsds 1.17 03/18/03 - - - - - - - This is the XML Schema for the JSP 2.0 deployment descriptor - types. The JSP 2.0 schema contains all the special - structures and datatypes that are necessary to use JSP files - from a web application. - - The contents of this schema is used by the web-app_2_4.xsd - file to define JSP specific content. - - - - - - - - The following conventions apply to all J2EE - deployment descriptor elements unless indicated otherwise. - - - In elements that specify a pathname to a file within the - same JAR file, relative filenames (i.e., those not - starting with "/") are considered relative to the root of - the JAR file's namespace. Absolute filenames (i.e., those - starting with "/") also specify names in the root of the - JAR file's namespace. In general, relative names are - preferred. The exception is .war files where absolute - names are preferred for consistency with the Servlet API. - - - - - - - - - - - - - - The jsp-configType is used to provide global configuration - information for the JSP files in a web application. It has - two subelements, taglib and jsp-property-group. - - - - - - - - - - - - - - - - - - The jsp-file element contains the full path to a JSP file - within the web application beginning with a `/'. - - - - - - - - - - - - - - - - The jsp-property-groupType is used to group a number of - files so they can be given global property information. - All files so described are deemed to be JSP files. The - following additional properties can be described: - - - Control whether EL is ignored - - Control whether scripting elements are invalid - - Indicate pageEncoding information. - - Indicate that a resource is a JSP document (XML) - - Prelude and Coda automatic includes. - - - - - - - - - - - - Can be used to easily set the isELIgnored - property of a group of JSP pages. By default, the - EL evaluation is enabled for Web Applications using - a Servlet 2.4 or greater web.xml, and disabled - otherwise. - - - - - - - - - The valid values of page-encoding are those of the - pageEncoding page directive. It is a - translation-time error to name different encodings - in the pageEncoding attribute of the page directive - of a JSP page and in a JSP configuration element - matching the page. It is also a translation-time - error to name different encodings in the prolog - or text declaration of a document in XML syntax and - in a JSP configuration element matching the document. - It is legal to name the same encoding through - mulitple mechanisms. - - - - - - - - - Can be used to easily disable scripting in a - group of JSP pages. By default, scripting is - enabled. - - - - - - - - - If true, denotes that the group of resources - that match the URL pattern are JSP documents, - and thus must be interpreted as XML documents. - If false, the resources are assumed to not - be JSP documents, unless there is another - property group that indicates otherwise. - - - - - - - - - The include-prelude element is a context-relative - path that must correspond to an element in the - Web Application. When the element is present, - the given path will be automatically included (as - in an include directive) at the beginning of each - JSP page in this jsp-property-group. - - - - - - - - - The include-coda element is a context-relative - path that must correspond to an element in the - Web Application. When the element is present, - the given path will be automatically included (as - in an include directive) at the end of each - JSP page in this jsp-property-group. - - - - - - - - - - - - - - - The taglibType defines the syntax for declaring in - the deployment descriptor that a tag library is - available to the application. This can be done - to override implicit map entries from TLD files and - from the container. - - - - - - - - - - A taglib-uri element describes a URI identifying a - tag library used in the web application. The body - of the taglib-uri element may be either an - absolute URI specification, or a relative URI. - There should be no entries in web.xml with the - same taglib-uri value. - - - - - - - - - - the taglib-location element contains the location - (as a resource relative to the root of the web - application) where to find the Tag Library - Description file for the tag library. - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_1.xsd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_1.xsd deleted file mode 100644 index 1f4f8ff2f6..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jsp_2_1.xsd +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.dtd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.dtd deleted file mode 100644 index 5d8515d492..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.dtd +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.xsd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.xsd deleted file mode 100644 index 2532dc4aa7..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/jspxml.xsd +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - - - - - - - - - - -]> - - - - - - - - - XML Schema for JSP 2.0. - - This schema is based upon the recent (May 5th, 2001) - W3C recommendation for XML Schema. - - A JSP translator should reject an XML-format file that is - not strictly valid according to this schema or does not observe - the constraints documented here. A translator is not required - to use this schema for validation or to use a validating parser. - - - - - - - - - - Body defines the "top-level" elements in root and beanInfo. - There are probably other elements that should use it. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A request-time expression value - - - - - - - - - - - Bool would be boolean except it does not accept 1 and 0. - - - - - - - - - - - - - - Identifier is an unqualified Java identifier. - - - - - - - - - - - TypeName is one or more Java identifiers separated by dots - with no whitespace. - - - - - - - - - - - ImportList is one or more typeNames separated by commas. - Whitespace is allowed before and after the comma. - - - - - - - - - - - SetProp is an Identifier or *. - - - - - - - - - - - RelativeURL is a uriReference with no colon character - before the first /, ? or #, if any (RFC2396). - - - - - - - - - - - - - - - Length is nn or nn%. - - - - - - - - - - - - Buffer Size with an explicit value - - - - - - - - - - - Buffer Size with a "none" value - - - - - - - - - - - Buffer size is xkb or none. - - - - - - - - - Content type and character encoding for this page. - - - - - - - - - - - Page Encoding for this page. - - - - - - - - - - - valid scope values - - - - - - - - - - - - - - valid values for a plugin type - - - - - - - - - - - - Buffer size is xkb. - - - - - - - - - - - - - - - - - The root element of all JSP documents is named root. - - Authors may, if they wish, include schema location information. - If specified, the information may appear as attributes of - the root element as follows: - - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/JSP/Page xsd-file-location" - - Documents should not specify the system identifier of a DTD - in a DOCTYPE declaration. - - - - - - - - - - - - - - - directive.page is the "page directive". - - - - - - - - - - - - - - - - - - - - - - - directive.include is the "include directive". - This element does not appear on XML views of JSP pages. - - - - - - - - - - - The representation of a scriplet. - - - - - - - - The reprsentation of a declaration. - - - - - - - - The representation of an expression. - - - - - - - - Verbatim template text. - - - - - - - - useBean instantiates or accesses a bean in the specified scope. - - Constraint: The allowed combinations of attributes are: - - class [type] | type [( class | beanName)] - - - - - - - - - - - - - - - - - - - - setProperty changes the value of an object property. - - Constraint: The object named by the name must have been - "introduced" to the JSP processor using either the - jsp:useBean action or a custom action with an associated - VariableInfo entry for this name. - - Exact valid combinations are not expressable in XML Schema. - They are: - - name="Identifier" property="*" - name="Identifier" property="Identfiier" param="string" - name="Identifier" property="Identifier" value="string" - - - - - - - - - - - - - - - getProperty obtains the value of an object property. - - Constraint: The object named by the name must have been - "introduced" to the JSP processor using either the - jsp:useBean action or a custom action with an associated - VariableInfo entry for this name. - - ???The spec is interpreted as restricting the values of - property to Identifier. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd deleted file mode 100644 index cd15422dec..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd deleted file mode 100644 index a3e39f54f3..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd deleted file mode 100644 index 447394adef..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd +++ /dev/null @@ -1,989 +0,0 @@ - - - - - - - %W% %G% - - - - - - ... - - - The instance documents may indicate the published - version of the schema using xsi:schemaLocation attribute - for J2EE namespace with the following location: - - http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd - - ]]> - - - - - - - - - - - - - - The taglib tag is the document root. - The definition of taglib is provided - by the tldTaglibType. - - - - - - - - The taglib element contains, among other things, tag and - tag-file elements. - The name subelements of these elements must each be unique. - - - - - - - - - - - - The taglib element contains function elements. - The name subelements of these elements must each be unique. - - - - - - - - - - - - - - - - - Specifies the type of body that is valid for a tag. - This value is used by the JSP container to validate - that a tag invocation has the correct body syntax and - by page composition tools to assist the page author - in providing a valid tag body. - - There are currently four values specified: - - tagdependent The body of the tag is interpreted by the tag - implementation itself, and is most likely - in a different "language", e.g embedded SQL - statements. - - JSP The body of the tag contains nested JSP - syntax. - - empty The body must be empty - - scriptless The body accepts only template text, EL - Expressions, and JSP action elements. No - scripting elements are allowed. - - - - - - - - - - - - - - - - - - - - - The extensibleType is an abstract base type that is used to - define the type of extension-elements. Instance documents - must substitute a known type to define the extension by - using xsi:type attribute to define the actual type of - extension-elements. - - - - - - - - - - - - - The function element is used to provide information on each - function in the tag library that is to be exposed to the EL. - - The function element may have several subelements defining: - - description Optional tag-specific information - - display-name A short name that is intended to be - displayed by tools - - icon Optional icon element that can be used - by tools - - name A unique name for this function - - function-class Provides the name of the Java class that - implements the function - - function-signature Provides the signature, as in the Java - Language Specification, of the Java - method that is to be used to implement - the function. - - example Optional informal description of an - example of a use of this function - - function-extension Zero or more extensions that provide extra - information about this function, for tool - consumption - - - - - - - - - - - A unique name for this function. - - - - - - - - - Provides the fully-qualified class name of the Java - class containing the static method that implements - the function. - - - - - - - - - - Provides the signature, of the static Java method that is - to be used to implement the function. The syntax of the - function-signature element is as follows: - - FunctionSignature ::= ReturnType S MethodName S? - '(' S? Parameters? S? ')' - - ReturnType ::= Type - - MethodName ::= Identifier - - Parameters ::= Parameter - | ( Parameter S? ',' S? Parameters ) - - Parameter ::= Type - - Where: - - * Type is a basic type or a fully qualified Java class name - (including package name), as per the 'Type' production - in the Java Language Specification, Second Edition, - Chapter 18. - - * Identifier is a Java identifier, as per the 'Identifier' - production in the Java Language Specification, Second - Edition, Chapter 18. - - Example: - - java.lang.String nickName( java.lang.String, int ) - - - - - - - - - - The example element contains an informal description - of an example of the use of this function. - - - - - - - - - - Function extensions are for tool use only and must not affect - the behavior of a container. - - - - - - - - - - - - - - - Defines an action in this tag library that is implemented - as a .tag file. - - The tag-file element has two required subelements: - - description Optional tag-specific information - - display-name A short name that is intended to be - displayed by tools - - icon Optional icon element that can be used - by tools - - name The unique action name - - path Where to find the .tag file implementing this - action, relative to the root of the web - application or the root of the JAR file for a - tag library packaged in a JAR. This must - begin with /WEB-INF/tags if the .tag file - resides in the WAR, or /META-INF/tags if the - .tag file resides in a JAR. - - example Optional informal description of an - example of a use of this tag - - tag-extension Zero or more extensions that provide extra - information about this tag, for tool - consumption - - - - - - - - - - - - - The example element contains an informal description - of an example of the use of a tag. - - - - - - - - - - Tag extensions are for tool use only and must not affect - the behavior of a container. - - - - - - - - - - - - - - - The tag defines a unique tag in this tag library. It has one - attribute, id. - - The tag element may have several subelements defining: - - description Optional tag-specific information - - display-name A short name that is intended to be - displayed by tools - - icon Optional icon element that can be used - by tools - - name The unique action name - - tag-class The tag handler class implementing - javax.servlet.jsp.tagext.JspTag - - tei-class An optional subclass of - javax.servlet.jsp.tagext.TagExtraInfo - - body-content The body content type - - variable Optional scripting variable information - - attribute All attributes of this action that are - evaluated prior to invocation. - - dynamic-attributes Whether this tag supports additional - attributes with dynamic names. If - true, the tag-class must implement the - javax.servlet.jsp.tagext.DynamicAttributes - interface. Defaults to false. - - example Optional informal description of an - example of a use of this tag - - tag-extension Zero or more extensions that provide extra - information about this tag, for tool - consumption - - - - - - - - - - - - Defines the subclass of javax.serlvet.jsp.tagext.JspTag - that implements the request time semantics for - this tag. (required) - - - - - - - - - - Defines the subclass of javax.servlet.jsp.tagext.TagExtraInfo - for this tag. (optional) - - If this is not given, the class is not consulted at - translation time. - - - - - - - - - Specifies the format for the body of this tag. - The default in JSP 1.2 was "JSP" but because this - is an invalid setting for simple tag handlers, there - is no longer a default in JSP 2.0. A reasonable - default for simple tag handlers is "scriptless" if - the tag can have a body. - - - - - - - - - - - - The example element contains an informal description - of an example of the use of a tag. - - - - - - - - - - Tag extensions are for tool use only and must not affect - the behavior of a container. - - - - - - - - - - - - - - - The attribute element defines an attribute for the nesting - tag. The attributre element may have several subelements - defining: - - description a description of the attribute - - name the name of the attribute - - required whether the attribute is required or - optional - - rtexprvalue whether the attribute is a runtime attribute - - type the type of the attributes - - fragment whether this attribute is a fragment - - - - - - - - - - - Defines if the nesting attribute is required or - optional. - - If not present then the default is "false", i.e - the attribute is optional. - - - - - - - - - - - - Defines if the nesting attribute can have scriptlet - expressions as a value, i.e the value of the - attribute may be dynamically calculated at request - time, as opposed to a static value determined at - translation time. - - If not present then the default is "false", i.e the - attribute has a static value - - - - - - - - - - Defines the Java type of the attributes value. For - static values (those determined at translation time) - the type is always java.lang.String. - - - - - - - - - - "true" if this attribute is of type - javax.jsp.tagext.JspFragment, representing dynamic - content that can be re-evaluated as many times - as needed by the tag handler. If omitted or "false", - the default is still type="java.lang.String" - - - - - - - - - - - - - - - - - Defines the canonical name of a tag or attribute being - defined. - - The name must conform to the lexical rules for an NMTOKEN. - - - - - - - - - - - - - - - - The tld-extensionType is used to indicate - extensions to a specific TLD element. - - It is used by elements to designate an extension block - that is targeted to a specific extension designated by - a set of extension elements that are declared by a - namespace. The namespace identifies the extension to - the tool that processes the extension. - - The type of the extension-element is abstract. Therefore, - a concrete type must be specified by the TLD using - xsi:type attribute for each extension-element. - - - - - - - - - - - - - - - - - - - - The taglib tag is the document root, it defines: - - description a simple string describing the "use" of this taglib, - should be user discernable - - display-name the display-name element contains a - short name that is intended to be displayed - by tools - - icon optional icon that can be used by tools - - tlib-version the version of the tag library implementation - - short-name a simple default short name that could be - used by a JSP authoring tool to create - names with a mnemonic value; for example, - the it may be used as the prefered prefix - value in taglib directives - - uri a uri uniquely identifying this taglib - - validator optional TagLibraryValidator information - - listener optional event listener specification - - tag tags in this tag library - - tag-file tag files in this tag library - - function zero or more EL functions defined in this - tag library - - taglib-extension zero or more extensions that provide extra - information about this taglib, for tool - consumption - - - - - - - - - - Describes this version (number) of the taglibrary. - It is described as a dewey decimal. - - - - - - - - - - - Defines a simple default name that could be used by - a JSP authoring tool to create names with a - mnemonicvalue; for example, it may be used as the - preferred prefix value in taglib directives. Do - not use white space, and do not start with digits - or underscore. - - - - - - - - - - Defines a public URI that uniquely identifies this - version of the taglibrary. Leave it empty if it - does not apply. - - - - - - - - - - - - - - - - - Taglib extensions are for tool use only and must not affect - the behavior of a container. - - - - - - - - - - Describes the JSP version (number) this taglibrary - requires in order to function (dewey decimal) - - - - - - - - - - - - - - - A validator that can be used to validate - the conformance of a JSP page to using this tag library is - defined by a validatorType. - - - - - - - - - - - Defines the TagLibraryValidator class that can be used - to validate the conformance of a JSP page to using this - tag library. - - - - - - - - - The init-param element contains a name/value pair as an - initialization param. - - - - - - - - - - - - - - - - - This type defines scope of the scripting variable. See - TagExtraInfo for details. The allowed values are, - "NESTED", "AT_BEGIN" and "AT_END". - - - - - - - - - - - - - - - - - - - - The variableType provides information on the scripting - variables defined by using this tag. It is a (translation - time) error for a tag that has one or more variable - subelements to have a TagExtraInfo class that returns a - non-null value from a call to getVariableInfo(). - - The subelements of variableType are of the form: - - description Optional description of this - variable - - name-given The variable name as a constant - - name-from-attribute The name of an attribute whose - (translation time) value will - give the name of the - variable. One of name-given or - name-from-attribute is required. - - variable-class Name of the class of the variable. - java.lang.String is default. - - declare Whether the variable is declared - or not. True is the default. - - scope The scope of the scripting varaible - defined. NESTED is default. - - - - - - - - - - - - The name for the scripting variable. - - - - - - - - - - The name of an attribute whose - (translation-time) value will give the name of - the variable. - - - - - - - - - - The optional name of the class for the scripting - variable. The default is java.lang.String. - - - - - - - - - - - - Whether the scripting variable is to be defined - or not. See TagExtraInfo for details. This - element is optional and "true" is the default. - - - - - - - - - The element is optional and "NESTED" is the default. - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd b/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd deleted file mode 100644 index 46b89222bf..0000000000 --- a/jonas/modules/libraries/externals/javaee-api/src/main/resources/javax/servlet/jsp/resources/web-jsptaglibrary_2_1.xsd +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/externals/jaxp-ri/pom.xml b/jonas/modules/libraries/externals/jaxp-ri/pom.xml deleted file mode 100644 index 8d12bfbe0b..0000000000 --- a/jonas/modules/libraries/externals/jaxp-ri/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - jaxp-ri - bundle - JOnAS :: Libraries :: Externals :: JAXP-RI - - - 1.4.2 - - - - - com.sun.xml.parsers - jaxp-ri - ${jaxp-ri.version} - - - - diff --git a/jonas/modules/libraries/externals/jaxp-ri/src/main/resources/META-INF/jaxp-ri.bnd b/jonas/modules/libraries/externals/jaxp-ri/src/main/resources/META-INF/jaxp-ri.bnd deleted file mode 100644 index 0844b487ba..0000000000 --- a/jonas/modules/libraries/externals/jaxp-ri/src/main/resources/META-INF/jaxp-ri.bnd +++ /dev/null @@ -1,36 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id: javaee-api.bnd 13444 2008-03-28 15:57:28Z benoitf $ -# --------------------------------------------------------------------------- - -# List of packages exported by the bundle. -# For now, export only some packages of JAXP-RI dependency --exportcontents com.sun.org.apache.xalan.internal.*;version=${jaxp-ri.version}, \ - com.sun.org.apache.xerces.internal.*;version=${jaxp-ri.version}, \ - com.sun.org.apache.xml.internal.*;version=${jaxp-ri.version}, \ - com.sun.org.apache.xpath.internal.*;version=${jaxp-ri.version} - -Private-Package !* - -Import-Package !com.sun.java_cup.internal, \ - * - -Embed-Dependency jaxp-ri;inline=true diff --git a/jonas/modules/libraries/externals/monolog/pom.xml b/jonas/modules/libraries/externals/monolog/pom.xml deleted file mode 100644 index 1a0d1a962c..0000000000 --- a/jonas/modules/libraries/externals/monolog/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - monolog - bundle - JOnAS :: Libraries :: Externals :: Monolog Pack - - - - org.objectweb.monolog - monolog - ${monolog.version} - - - \ No newline at end of file diff --git a/jonas/modules/libraries/externals/monolog/src/main/resources/META-INF/monolog.bnd b/jonas/modules/libraries/externals/monolog/src/main/resources/META-INF/monolog.bnd deleted file mode 100644 index 38d1917296..0000000000 --- a/jonas/modules/libraries/externals/monolog/src/main/resources/META-INF/monolog.bnd +++ /dev/null @@ -1,49 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Empty export package list -Export-Package - -# FIXME Reduce exported packages list --exportcontents org.objectweb.util.monolog.api.*,\ - org.objectweb.util.monolog.file.*,\ - org.objectweb.util.monolog.wrapper.printwriter,\ - org.objectweb.util.monolog.wrapper.p6spy,\ - org.objectweb.util.monolog.wrapper.javaLog,\ - org.objectweb.util.monolog.wrapper.velocity,\ - org.objectweb.util.monolog - -# Just to clear some warnings -Private-Package !* - -# P6Spy and Log4J are optional -Import-Package com.p6spy.*;resolution:=optional,\ - org.apache.*;resolution:=optional,\ - org.objectweb.util.monolog.wrapper.log4jMini;resolution:=optional,\ - * - -Embed-Dependency monolog;inline=true - -# Allow to resolve P6Spy/Velocity and Log4J if bundles are provided after the start of the Monolog Bundle -DynamicImport-Package com.p6spy.*,\ - org.apache.* diff --git a/jonas/modules/libraries/externals/neethi/pom.xml b/jonas/modules/libraries/externals/neethi/pom.xml deleted file mode 100755 index 85771670af..0000000000 --- a/jonas/modules/libraries/externals/neethi/pom.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - neethi - bundle - JOnAS :: Libraries :: Externals :: Neethi - - - - 2.0.4 - 1.2.7 - - - - - org.apache.neethi - neethi - ${neethi.version} - - - - org.apache.ws.commons.axiom - axiom-api - ${axiom.version} - - - org.apache.ws.commons.axiom - axiom-impl - ${axiom.version} - - - diff --git a/jonas/modules/libraries/externals/neethi/src/main/resources/META-INF/neethi.bnd b/jonas/modules/libraries/externals/neethi/src/main/resources/META-INF/neethi.bnd deleted file mode 100755 index 330cc68cf2..0000000000 --- a/jonas/modules/libraries/externals/neethi/src/main/resources/META-INF/neethi.bnd +++ /dev/null @@ -1,32 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008-2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id: javaee-api.bnd 13444 2008-03-28 15:57:28Z benoitf $ -# --------------------------------------------------------------------------- - -# List of packages exported by the bundle. -Export-Package org.apache.neethi.*;version=${neethi.version} - -Import-Package org.jaxen.*;resolution:=optional,\ - * - -# Axiom as Private-Package -Embed-Dependency axiom-api;inline=true,\ - axiom-impl;inline=true diff --git a/jonas/modules/libraries/externals/pom.xml b/jonas/modules/libraries/externals/pom.xml deleted file mode 100644 index 62a5f6e8df..0000000000 --- a/jonas/modules/libraries/externals/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - jonas-externals - pom - JOnAS :: Libraries :: Externals - - - asm - javaee-api - jaxp-ri - saaj-ri - monolog - ws-security - neethi - xmlbeans - - - diff --git a/jonas/modules/libraries/externals/saaj-ri/pom.xml b/jonas/modules/libraries/externals/saaj-ri/pom.xml deleted file mode 100644 index b2aa993311..0000000000 --- a/jonas/modules/libraries/externals/saaj-ri/pom.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - saaj-ri - bundle - JOnAS :: Libraries :: Externals :: SAAJ-RI - - - 1.3.2 - - - - - com.sun.xml.messaging.saaj - saaj-impl - ${saaj-ri.version} - - - javax.xml.soap - saaj-api - - - - - org.apache.geronimo.specs - geronimo-saaj_1.3_spec - provided - - - javax.activation - activation - 1.1 - provided - - - - diff --git a/jonas/modules/libraries/externals/saaj-ri/src/main/java/com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.java b/jonas/modules/libraries/externals/saaj-ri/src/main/java/com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.java deleted file mode 100644 index 743b2fd317..0000000000 --- a/jonas/modules/libraries/externals/saaj-ri/src/main/java/com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.java +++ /dev/null @@ -1,814 +0,0 @@ -/* - * The contents of this file are subject to the terms - * of the Common Development and Distribution License - * (the "License"). You may not use this file except - * in compliance with the License. - * - * You can obtain a copy of the license at - * https://jwsdp.dev.java.net/CDDLv1.0.html - * See the License for the specific language governing - * permissions and limitations under the License. - * - * When distributing Covered Code, include this CDDL - * HEADER in each file and include the License file at - * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable, - * add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your - * own identifying information: Portions Copyright [yyyy] - * [name of copyright owner] - */ -/* - * $Id$ - * $Revision: 1.7 $ - * $Date: 2008/09/29 06:48:21 $ - */ - -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common Development - * and Distribution License("CDDL") (collectively, the "License"). You - * may not use this file except in compliance with the License. You can obtain - * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific - * language governing permissions and limitations under the License. - * - * When distributing the software, include this License Header Notice in each - * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. - * Sun designates this particular file as subject to the "Classpath" exception - * as provided by Sun in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the License - * Header, with the fields enclosed by brackets [] replaced by your own - * identifying information: "Portions Copyrighted [year] - * [name of copyright owner]" - * - * Contributor(s): - * - * If you wish your version of this file to be governed by only the CDDL or - * only the GPL Version 2, indicate your decision by adding "[Contributor] - * elects to include this software in this distribution under the [CDDL or GPL - * Version 2] license." If you don't indicate a single choice of license, a - * recipient has the option to distribute your version of this file under - * either the CDDL, the GPL Version 2 or to extend the choice of license to - * its licensees as provided above. However, if you add GPL Version 2 code - * and therefore, elected the GPL Version 2 license, then the option applies - * only if the new code is made subject to such option by the copyright - * holder. - */ -package com.sun.xml.messaging.saaj.client.p2p; - -import com.sun.xml.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl; -import com.sun.xml.messaging.saaj.util.Base64; -import com.sun.xml.messaging.saaj.util.ByteInputStream; -import com.sun.xml.messaging.saaj.util.JaxmURI; -import com.sun.xml.messaging.saaj.util.LogDomainConstants; -import com.sun.xml.messaging.saaj.util.ParseUtil; - -import javax.xml.soap.MessageFactory; -import javax.xml.soap.MimeHeader; -import javax.xml.soap.MimeHeaders; -import javax.xml.soap.SOAPConnection; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.reflect.Method; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.AccessController; -import java.security.PrivilegedExceptionAction; -import java.security.Provider; -import java.security.Security; -import java.util.Iterator; -import java.util.StringTokenizer; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * This represents a "connection" to the simple HTTP-based provider. - * - * @author Anil Vijendran (akv@eng.sun.com) - * @author Rajiv Mordani (rajiv.mordani@sun.com) - * @author Manveen Kaur (manveen.kaur@sun.com) - * - */ -public class HttpSOAPConnection extends SOAPConnection { - - public static final String vmVendor = System.getProperty("java.vendor.url"); - private static final String sunVmVendor = "http://java.sun.com/"; - private static final String ibmVmVendor = "http://www.ibm.com/"; - private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false; - private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false; - private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint"; - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN, - "com.sun.xml.messaging.saaj.client.p2p.LocalStrings"); - - private static final String defaultProxyHost = null; - private static final int defaultProxyPort = -1; - - MessageFactory messageFactory = null; - - boolean closed = false; - - public HttpSOAPConnection() throws SOAPException { - proxyHost = defaultProxyHost; - proxyPort = defaultProxyPort; - - try { - messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL); - } catch (NoSuchMethodError ex) { - //fallback to default SOAP 1.1 in this case for backward compatibility - messageFactory = MessageFactory.newInstance(); - } catch (Exception ex) { - log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex); - throw new SOAPExceptionImpl("Unable to create message factory", ex); - } - } - - public void close() throws SOAPException { - if (closed) { - log.severe("SAAJ0002.p2p.close.already.closed.conn"); - throw new SOAPExceptionImpl("Connection already closed"); - } - - messageFactory = null; - closed = true; - } - - public SOAPMessage call(SOAPMessage message, Object endPoint) - throws SOAPException { - if (closed) { - log.severe("SAAJ0003.p2p.call.already.closed.conn"); - throw new SOAPExceptionImpl("Connection is closed"); - } - - Class urlEndpointClass = null; - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - try { - if (loader != null) { - urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT); - } else { - urlEndpointClass = Class.forName(JAXM_URLENDPOINT); - } - } catch (ClassNotFoundException ex) { - //Do nothing. URLEndpoint is available only when JAXM is there. - log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM"); - } - - if (urlEndpointClass != null) { - if (urlEndpointClass.isInstance(endPoint)) { - String url = null; - - try { - Method m = urlEndpointClass.getMethod("getURL", (Class[])null); - url = (String) m.invoke(endPoint, (Object[])null); - } catch (Exception ex) { - // TBD -- exception chaining - log.log(Level.SEVERE,"SAAJ0004.p2p.internal.err",ex); - throw new SOAPExceptionImpl( - "Internal error: " + ex.getMessage()); - } - try { - endPoint = new URL(url); - } catch (MalformedURLException mex) { - log.log(Level.SEVERE,"SAAJ0005.p2p.", mex); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - } - - if (endPoint instanceof String) { - try { - endPoint = new URL((String) endPoint); - } catch (MalformedURLException mex) { - log.log(Level.SEVERE, "SAAJ0006.p2p.bad.URL", mex); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - - if (endPoint instanceof URL) - try { - PriviledgedPost pp = - new PriviledgedPost(this, message, (URL) endPoint); - SOAPMessage response = - (SOAPMessage) AccessController.doPrivileged(pp); - - return response; - } catch (Exception ex) { - // TBD -- chaining? - throw new SOAPExceptionImpl(ex); - } else { - log.severe("SAAJ0007.p2p.bad.endPoint.type"); - throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); - } - } - - static class PriviledgedPost implements PrivilegedExceptionAction { - - HttpSOAPConnection c; - SOAPMessage message; - URL endPoint; - - PriviledgedPost( - HttpSOAPConnection c, - SOAPMessage message, - URL endPoint) { - this.c = c; - this.message = message; - this.endPoint = endPoint; - } - - public Object run() throws Exception { - return c.post(message, endPoint); - } - } - - // TBD - // Fix this to do things better. - - private String proxyHost = null; - - static class PriviledgedSetProxyAction implements PrivilegedExceptionAction { - - String proxyHost = null; - int proxyPort = 0; - - PriviledgedSetProxyAction(String host, int port) { - this.proxyHost = host; - this.proxyPort = port; - } - - public Object run() throws Exception { - System.setProperty("http.proxyHost", proxyHost); - System.setProperty("http.proxyPort", new Integer(proxyPort).toString()); - log.log(Level.FINE, "SAAJ0050.p2p.proxy.host", - new String[] { proxyHost }); - log.log(Level.FINE, "SAAJ0051.p2p.proxy.port", - new String[] { new Integer(proxyPort).toString() }); - return proxyHost; - } - } - - - public void setProxy(String host, int port) { - try { - proxyPort = port; - PriviledgedSetProxyAction ps = new PriviledgedSetProxyAction(host, port); - proxyHost = (String) AccessController.doPrivileged(ps); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public String getProxyHost() { - return proxyHost; - } - - private int proxyPort = -1; - - public int getProxyPort() { - return proxyPort; - } - - SOAPMessage post(SOAPMessage message, URL endPoint) throws SOAPException { - boolean isFailure = false; - - URL url = null; - HttpURLConnection httpConnection = null; - - int responseCode = 0; - try { - if (endPoint.getProtocol().equals("https")) - //if(!setHttps) - initHttps(); - // Process the URL - JaxmURI uri = new JaxmURI(endPoint.toString()); - String userInfo = uri.getUserinfo(); - - url = endPoint; - - if (dL > 0) - d("uri: " + userInfo + " " + url + " " + uri); - - // TBD - // Will deal with https later. - if (!url.getProtocol().equalsIgnoreCase("http") - && !url.getProtocol().equalsIgnoreCase("https")) { - log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); - throw new IllegalArgumentException( - "Protocol " - + url.getProtocol() - + " not supported in URL " - + url); - } - httpConnection = (HttpURLConnection) createConnection(url); - - httpConnection.setRequestMethod("POST"); - - httpConnection.setDoOutput(true); - httpConnection.setDoInput(true); - httpConnection.setUseCaches(false); - HttpURLConnection.setFollowRedirects(true); - - if (message.saveRequired()) - message.saveChanges(); - - MimeHeaders headers = message.getMimeHeaders(); - - // JOnAS Start Change - // ------------------------------------------------------------- - // If there is still no SOAPAction header just before writing the - // SOAPMessage, add a default one (only for SOAP 1.1). - // ------------------------------------------------------------- - if(message instanceof Message1_1Impl) { - if (headers.getHeader("SOAPAction") == null) { - // Set the default SOAPAction header: "" - headers.addHeader("SOAPAction", "\"\""); - } - } - // ------------------------------------------------------------- - // JOnAS End Change - - Iterator it = headers.getAllHeaders(); - boolean hasAuth = false; // true if we find explicit Auth header - while (it.hasNext()) { - MimeHeader header = (MimeHeader) it.next(); - - String[] values = headers.getHeader(header.getName()); - - if (values.length == 1) - httpConnection.setRequestProperty( - header.getName(), - header.getValue()); - else { - StringBuffer concat = new StringBuffer(); - int i = 0; - while (i < values.length) { - if (i != 0) - concat.append(','); - concat.append(values[i]); - i++; - } - - httpConnection.setRequestProperty( - header.getName(), - concat.toString()); - } - - if ("Authorization".equals(header.getName())) { - hasAuth = true; - log.fine("SAAJ0091.p2p.https.auth.in.POST.true"); - } - } - - if (!hasAuth && userInfo != null) { - initAuthUserInfo(httpConnection, userInfo); - } - - OutputStream out = httpConnection.getOutputStream(); - message.writeTo(out); - - out.flush(); - out.close(); - - httpConnection.connect(); - - try { - - responseCode = httpConnection.getResponseCode(); - - // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } - //else if (responseCode != HttpURLConnection.HTTP_OK) - //else if (!(responseCode >= HttpURLConnection.HTTP_OK && responseCode < 207)) - else if ((responseCode / 100) != 2) { - log.log(Level.SEVERE, - "SAAJ0008.p2p.bad.response", - new String[] {httpConnection.getResponseMessage()}); - throw new SOAPExceptionImpl( - "Bad response: (" - + responseCode - + httpConnection.getResponseMessage()); - - } - } catch (IOException e) { - // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! - responseCode = httpConnection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else { - throw e; - } - - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.severe("SAAJ0009.p2p.msg.send.failed"); - throw new SOAPExceptionImpl("Message send failed", ex); - } - - SOAPMessage response = null; - if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { - try { - MimeHeaders headers = new MimeHeaders(); - - String key, value; - - // Header field 0 is the status line so we skip it. - - int i = 1; - - while (true) { - key = httpConnection.getHeaderFieldKey(i); - value = httpConnection.getHeaderField(i); - - if (key == null && value == null) - break; - - if (key != null) { - StringTokenizer values = - new StringTokenizer(value, ","); - while (values.hasMoreTokens()) - headers.addHeader(key, values.nextToken().trim()); - } - i++; - } - - InputStream httpIn = - (isFailure - ? httpConnection.getErrorStream() - : httpConnection.getInputStream()); - - byte[] bytes = readFully(httpIn); - - int length = - httpConnection.getContentLength() == -1 - ? bytes.length - : httpConnection.getContentLength(); - - // If no reply message is returned, - // content-Length header field value is expected to be zero. - if (length == 0) { - response = null; - log.warning("SAAJ0014.p2p.content.zero"); - } else { - ByteInputStream in = new ByteInputStream(bytes, length); - response = messageFactory.createMessage(headers, in); - } - - httpIn.close(); - httpConnection.disconnect(); - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.log(Level.SEVERE,"SAAJ0010.p2p.cannot.read.resp", ex); - throw new SOAPExceptionImpl( - "Unable to read response: " + ex.getMessage()); - } - } - return response; - } - - // Object identifies where the request should be sent. - // It is required to support objects of type String and java.net.URL. - - public SOAPMessage get(Object endPoint) throws SOAPException { - if (closed) { - log.severe("SAAJ0011.p2p.get.already.closed.conn"); - throw new SOAPExceptionImpl("Connection is closed"); - } - Class urlEndpointClass = null; - - try { - urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint"); - } catch (Exception ex) { - //Do nothing. URLEndpoint is available only when JAXM is there. - } - - if (urlEndpointClass != null) { - if (urlEndpointClass.isInstance(endPoint)) { - String url = null; - - try { - Method m = urlEndpointClass.getMethod("getURL", (Class[])null); - url = (String) m.invoke(endPoint, (Object[])null); - } catch (Exception ex) { - log.severe("SAAJ0004.p2p.internal.err"); - throw new SOAPExceptionImpl( - "Internal error: " + ex.getMessage()); - } - try { - endPoint = new URL(url); - } catch (MalformedURLException mex) { - log.severe("SAAJ0005.p2p."); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - } - - if (endPoint instanceof String) { - try { - endPoint = new URL((String) endPoint); - } catch (MalformedURLException mex) { - log.severe("SAAJ0006.p2p.bad.URL"); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - - if (endPoint instanceof URL) - try { - PriviledgedGet pg = new PriviledgedGet(this, (URL) endPoint); - SOAPMessage response = - (SOAPMessage) AccessController.doPrivileged(pg); - - return response; - } catch (Exception ex) { - throw new SOAPExceptionImpl(ex); - } else - throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); - } - - static class PriviledgedGet implements PrivilegedExceptionAction { - - HttpSOAPConnection c; - URL endPoint; - - PriviledgedGet(HttpSOAPConnection c, URL endPoint) { - this.c = c; - this.endPoint = endPoint; - } - - public Object run() throws Exception { - return c.get(endPoint); - } - } - - SOAPMessage get(URL endPoint) throws SOAPException { - boolean isFailure = false; - - URL url = null; - HttpURLConnection httpConnection = null; - - int responseCode = 0; - try { - /// Is https GET allowed?? - if (endPoint.getProtocol().equals("https")) - initHttps(); - // Process the URL - JaxmURI uri = new JaxmURI(endPoint.toString()); - String userInfo = uri.getUserinfo(); - - url = endPoint; - - if (dL > 0) - d("uri: " + userInfo + " " + url + " " + uri); - - // TBD - // Will deal with https later. - if (!url.getProtocol().equalsIgnoreCase("http") - && !url.getProtocol().equalsIgnoreCase("https")) { - log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); - throw new IllegalArgumentException( - "Protocol " - + url.getProtocol() - + " not supported in URL " - + url); - } - httpConnection = (HttpURLConnection) createConnection(url); - - httpConnection.setRequestMethod("GET"); - - httpConnection.setDoOutput(true); - httpConnection.setDoInput(true); - httpConnection.setUseCaches(false); - HttpURLConnection.setFollowRedirects(true); - - httpConnection.connect(); - - try { - - responseCode = httpConnection.getResponseCode(); - - // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else if ((responseCode / 100) != 2) { - log.log(Level.SEVERE, - "SAAJ0008.p2p.bad.response", - new String[] { httpConnection.getResponseMessage()}); - throw new SOAPExceptionImpl( - "Bad response: (" - + responseCode - + httpConnection.getResponseMessage()); - - } - } catch (IOException e) { - // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! - responseCode = httpConnection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else { - throw e; - } - - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.severe("SAAJ0012.p2p.get.failed"); - throw new SOAPExceptionImpl("Get failed", ex); - } - - SOAPMessage response = null; - if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { - try { - MimeHeaders headers = new MimeHeaders(); - - String key, value; - - // Header field 0 is the status line so we skip it. - - int i = 1; - - while (true) { - key = httpConnection.getHeaderFieldKey(i); - value = httpConnection.getHeaderField(i); - - if (key == null && value == null) - break; - - if (key != null) { - StringTokenizer values = - new StringTokenizer(value, ","); - while (values.hasMoreTokens()) - headers.addHeader(key, values.nextToken().trim()); - } - i++; - } - - InputStream httpIn = - (isFailure - ? httpConnection.getErrorStream() - : httpConnection.getInputStream()); - - byte[] bytes = readFully(httpIn); - - int length = - httpConnection.getContentLength() == -1 - ? bytes.length - : httpConnection.getContentLength(); - - // If no reply message is returned, - // content-Length header field value is expected to be zero. - if (length == 0) { - response = null; - log.warning("SAAJ0014.p2p.content.zero"); - } else { - - ByteInputStream in = new ByteInputStream(bytes, length); - response = messageFactory.createMessage(headers, in); - } - - httpIn.close(); - httpConnection.disconnect(); - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.log(Level.SEVERE, - "SAAJ0010.p2p.cannot.read.resp", - ex); - throw new SOAPExceptionImpl( - "Unable to read response: " + ex.getMessage()); - } - } - return response; - } - - private byte[] readFully(InputStream istream) throws IOException { - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - byte[] buf = new byte[1024]; - int num = 0; - - while ((num = istream.read(buf)) != -1) { - bout.write(buf, 0, num); - } - - byte[] ret = bout.toByteArray(); - - return ret; - } - - //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; - //private static String SSL_PROVIDER = - // "com.sun.net.ssl.internal.ssl.Provider"; - private static final String SSL_PKG; - private static final String SSL_PROVIDER; - - static { - if (isIBMVM) { - SSL_PKG ="com.ibm.net.ssl.internal.www.protocol"; - SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider"; - } else { - //if not IBM VM default to Sun. - SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; - SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider"; - } - } - - private void initHttps() { - //if(!setHttps) { - String pkgs = System.getProperty("java.protocol.handler.pkgs"); - log.log(Level.FINE, - "SAAJ0053.p2p.providers", - new String[] { pkgs }); - - if (pkgs == null || pkgs.indexOf(SSL_PKG) < 0) { - if (pkgs == null) - pkgs = SSL_PKG; - else - pkgs = pkgs + "|" + SSL_PKG; - System.setProperty("java.protocol.handler.pkgs", pkgs); - log.log(Level.FINE, - "SAAJ0054.p2p.set.providers", - new String[] { pkgs }); - try { - Class c = Class.forName(SSL_PROVIDER); - Provider p = (Provider) c.newInstance(); - Security.addProvider(p); - log.log(Level.FINE, - "SAAJ0055.p2p.added.ssl.provider", - new String[] { SSL_PROVIDER }); - //System.out.println("Added SSL_PROVIDER " + SSL_PROVIDER); - //setHttps = true; - } catch (Exception ex) { - } - } - //} - } - - private void initAuthUserInfo(HttpURLConnection conn, String userInfo) { - String user; - String password; - if (userInfo != null) { // get the user and password - //System.out.println("UserInfo= " + userInfo ); - int delimiter = userInfo.indexOf(':'); - if (delimiter == -1) { - user = ParseUtil.decode(userInfo); - password = null; - } else { - user = ParseUtil.decode(userInfo.substring(0, delimiter++)); - password = ParseUtil.decode(userInfo.substring(delimiter)); - } - - String plain = user + ":"; - byte[] nameBytes = plain.getBytes(); - byte[] passwdBytes = password.getBytes(); - - // concatenate user name and password bytes and encode them - byte[] concat = new byte[nameBytes.length + passwdBytes.length]; - - System.arraycopy(nameBytes, 0, concat, 0, nameBytes.length); - System.arraycopy( - passwdBytes, - 0, - concat, - nameBytes.length, - passwdBytes.length); - String auth = "Basic " + new String(Base64.encode(concat)); - conn.setRequestProperty("Authorization", auth); - if (dL > 0) - d("Adding auth " + auth); - } - } - - private static final int dL = 0; - private void d(String s) { - log.log(Level.SEVERE, - "SAAJ0013.p2p.HttpSOAPConnection", - new String[] { s }); - System.err.println("HttpSOAPConnection: " + s); - } - - private HttpURLConnection createConnection(URL endpoint) - throws IOException { - return (HttpURLConnection) endpoint.openConnection(); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/externals/saaj-ri/src/main/resources/META-INF/saaj-ri.bnd b/jonas/modules/libraries/externals/saaj-ri/src/main/resources/META-INF/saaj-ri.bnd deleted file mode 100644 index f3d9d4498b..0000000000 --- a/jonas/modules/libraries/externals/saaj-ri/src/main/resources/META-INF/saaj-ri.bnd +++ /dev/null @@ -1,30 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id: javaee-api.bnd 13444 2008-03-28 15:57:28Z benoitf $ -# --------------------------------------------------------------------------- - -Import-Package !com.sun.*, \ - !org.jvnet.fastinfoset, \ - * - - -# List of packages exported by the bundle. -Export-Package com.sun.xml.messaging.saaj.*;version=${saaj-ri.version};-split-package:=merge-first diff --git a/jonas/modules/libraries/externals/ws-security/pom.xml b/jonas/modules/libraries/externals/ws-security/pom.xml deleted file mode 100644 index 0c05031db6..0000000000 --- a/jonas/modules/libraries/externals/ws-security/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - ws-security - bundle - JOnAS :: Libraries :: Externals :: WS-Security - - - - - central-legacy - Legacy (Maven1) Central Repository - http://repo1.maven.org/maven - legacy - - - - - - xfire - opensaml - 1.0.1 - - - xml-security - xmlsec - 1.3.0 - - - org.apache.axis - addressing - 1.0 - - - wss4j - wss4j - 1.1.0-jonas-patch - - - bouncycastle - bcprov-jdk15 - 136 - - - \ No newline at end of file diff --git a/jonas/modules/libraries/externals/ws-security/src/main/resources/META-INF/ws-security.bnd b/jonas/modules/libraries/externals/ws-security/src/main/resources/META-INF/ws-security.bnd deleted file mode 100644 index 609462a3e8..0000000000 --- a/jonas/modules/libraries/externals/ws-security/src/main/resources/META-INF/ws-security.bnd +++ /dev/null @@ -1,40 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Export class from boucycastle because the jar contains also other files to not include -Export-Package org.bouncycastle.* - -Import-Package javax.xml.transform,\ - org.apache.xpath,\ - org.apache.xpath.compiler,\ - org.apache.xpath.functions,\ - org.apache.xpath.objects,\ - org.apache.xml.utils,\ - *;resolution:=optional - -Private-Package !* - --exportcontents org.apache.ws.security,\ - org.apache.ws.security.handler - -Embed-Dependency *;scope=compile|runtime;inline=true;artifactId=!bcprov-jdk15 \ No newline at end of file diff --git a/jonas/modules/libraries/externals/xmlbeans/pom.xml b/jonas/modules/libraries/externals/xmlbeans/pom.xml deleted file mode 100644 index 45a5d10c84..0000000000 --- a/jonas/modules/libraries/externals/xmlbeans/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - org.ow2.jonas.osgi - jonas-externals - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.osgi - xmlbeans - bundle - JOnAS :: Libraries :: Externals :: XmlBeans - - - 2.4.0 - - - - - org.apache.xmlbeans - xmlbeans - ${xmlbeans.version} - - - - diff --git a/jonas/modules/libraries/externals/xmlbeans/src/main/resources/META-INF/xmlbeans.bnd b/jonas/modules/libraries/externals/xmlbeans/src/main/resources/META-INF/xmlbeans.bnd deleted file mode 100644 index 94e30368be..0000000000 --- a/jonas/modules/libraries/externals/xmlbeans/src/main/resources/META-INF/xmlbeans.bnd +++ /dev/null @@ -1,34 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2009 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id: javaee-api.bnd 13444 2008-03-28 15:57:28Z benoitf $ -# --------------------------------------------------------------------------- - --exportcontents org.apache.xmlbeans.*;version=${xmlbeans.version} - -Import-Package !com.sun.*,\ - !org.apache.tools.ant.*,\ - !org.apache.xml.resolver.*,\ - org.w3c.dom,\ - * - -Private-Package !* - -Embed-Dependency xmlbeans;inline=true diff --git a/jonas/modules/libraries/jonas-audit-jms/pom.xml b/jonas/modules/libraries/jonas-audit-jms/pom.xml deleted file mode 100644 index 39dd8983d5..0000000000 --- a/jonas/modules/libraries/jonas-audit-jms/pom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-audit-jms - bundle - JOnAS :: Libraries :: JOnAS Audit JMS interceptor - - - - org.objectweb.joram - joram-client-jms - ${joram.version} - provided - - - org.ow2.bundles - ow2-audit-report - ${ow2-bundles.version} - provided - - - diff --git a/jonas/modules/libraries/jonas-audit-jms/src/main/java/org/ow2/jonas/audit/jms/interceptor/JMSClientInterceptor.java b/jonas/modules/libraries/jonas-audit-jms/src/main/java/org/ow2/jonas/audit/jms/interceptor/JMSClientInterceptor.java deleted file mode 100644 index 9191627d61..0000000000 --- a/jonas/modules/libraries/jonas-audit-jms/src/main/java/org/ow2/jonas/audit/jms/interceptor/JMSClientInterceptor.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * JOnAS - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.audit.jms.interceptor; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.Session; - -import org.objectweb.joram.client.jms.MessageInterceptor; -import org.ow2.util.auditreport.api.IAuditID; -import org.ow2.util.auditreport.api.ICurrentInvocationID; -import org.ow2.util.auditreport.impl.CurrentInvocationID; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; - -/** - * Client Interceptor. - * @author Florent Benoit - */ -public class JMSClientInterceptor implements MessageInterceptor { - - /** - * Logger. - */ - private Log logger = LogFactory.getLog(JMSClientInterceptor.class); - - /** - * Handle the given message. - * @param msg the given message - * @param session the JMS Session - */ - public void handle(final Message msg, final Session session) { - - // Get current ID - ICurrentInvocationID currentInvocationID = CurrentInvocationID.getInstance(); - - // Existing ID ? - IAuditID localID = currentInvocationID.getAuditID(); - - // If there is an ID, propagate it - if (localID != null) { - localID.increment(); - - // Store it in the message - try { - msg.setStringProperty(IAuditID.class.getName(), localID.getID()); - } catch (JMSException e) { - // Unable to set the property - logger.warn("Unable to set the property ''{0}'' on the message", IAuditID.class.getName(), e); - } - - } - } - -} diff --git a/jonas/modules/libraries/jonas-audit-jms/src/main/resources/META-INF/jonas-audit-jms.bnd b/jonas/modules/libraries/jonas-audit-jms/src/main/resources/META-INF/jonas-audit-jms.bnd deleted file mode 100644 index 6ea4771d17..0000000000 --- a/jonas/modules/libraries/jonas-audit-jms/src/main/resources/META-INF/jonas-audit-jms.bnd +++ /dev/null @@ -1,24 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2010 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.audit.jms.interceptor diff --git a/jonas/modules/libraries/jonas-bootstrap-loader/pom.xml b/jonas/modules/libraries/jonas-bootstrap-loader/pom.xml deleted file mode 100644 index 42b823eaf5..0000000000 --- a/jonas/modules/libraries/jonas-bootstrap-loader/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-bootstrap-loader - - bundle - - JOnAS :: Libraries :: Bootstrap :: Loader - - - - diff --git a/jonas/modules/libraries/jonas-bootstrap-loader/src/main/java/org/ow2/jonas/lib/bootstrap/loader/JClassLoader.java b/jonas/modules/libraries/jonas-bootstrap-loader/src/main/java/org/ow2/jonas/lib/bootstrap/loader/JClassLoader.java deleted file mode 100644 index fc9db55eef..0000000000 --- a/jonas/modules/libraries/jonas-bootstrap-loader/src/main/java/org/ow2/jonas/lib/bootstrap/loader/JClassLoader.java +++ /dev/null @@ -1,204 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:JClassLoader.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap.loader; - -import java.io.File; -import java.net.URL; -import java.net.URLClassLoader; - -/** - * This class implements a URLClassLoader, that permits to add some URLs in it. - * @author Ludovic Bert - * @author Florent Benoit - */ -public class JClassLoader extends URLClassLoader { - - /** - * JClassLoader name - */ - private String name = null; - - /** - * Need to recompute toString() value ? (urls have changed) - * True by default (not done). - * Then, compute is done only when required and if needed - */ - private boolean recomputeToString = true; - - /** - * Need to recompute getClassPath() value ? (urls have changed) - * True by default (not done). - * Then, compute is done only when required and if needed - */ - private boolean recomputeClassPath = true; - - /** - * String representation used by toString() method - */ - private String toStringValue = null; - - /** - * Classpath value - */ - private String classpath = null; - - /** - * Constructs a new ClassLoader with the specified URLs. - * @param name ClassLoader name (used for Display) - * @param urls the URLs to add at the ClassLoader creation. - * @param parent parent ClassLoader, null if no parent. - */ - public JClassLoader(String name, URL[] urls, ClassLoader parent) { - super(urls, parent); - this.name = name; - this.recomputeToString = true; - this.recomputeClassPath = true; - } - - /** - * Constructs a new ClassLoader with the specified URLs. - * Uses the default delegation parent classloader. - * @param name ClassLoader name (used for Display) - * @param urls the URLs to add at the ClassLoader creation. - */ - public JClassLoader(String name, URL[] urls) { - super(urls, Thread.currentThread().getContextClassLoader()); - this.name = name; - this.recomputeToString = true; - this.recomputeClassPath = true; - } - - /** - * Add the specified URL to this ClassLoader. - * @param url the URL to add to this ClassLoader. - */ - public void addURL(URL url) { - if (url != null) { - super.addURL(url); - } - this.recomputeToString = true; - this.recomputeClassPath = true; - } - - /** - * Add the specified URLs to this ClassLoader. - * @param urls the URLs to add to this ClassLoader. - */ - public void addURLs(URL[] urls) { - if (urls != null) { - for (int i = 0; i < urls.length; i++) { - if (urls[i] != null) { - super.addURL(urls[i]); - } - } - } - this.recomputeToString = true; - this.recomputeClassPath = true; - } - - /** - * Display all the URLs from the class loader - */ - public void printURLs() { - System.out.println(name + " ClassLoader :"); - URL[] urls = super.getURLs(); - for (int i = 0; i < urls.length; i++) { - System.out.println("url=" + (new File(urls[i].getFile())).getAbsolutePath()); - } - // display parent classloader - if (getParent() != null && getParent() instanceof JClassLoader) { - System.out.println("parent :"); - ((JClassLoader) getParent()).printURLs(); - } - } - - /** - * Get the class path of this classloader - * @return the class path of this classloader - */ - public String getClassPath() { - // urls have changed, need to build value - if (recomputeClassPath) { - computeClassPath(); - } - return classpath; - } - - /** - * Displays useful information - * @return information - */ - public String toString() { - // urls have changed, need to build value - if (recomputeToString) { - computeToString(); - } - return toStringValue; - } - - /** - * Compute a string representation used by toString() method - */ - private void computeToString() { - StringBuffer sb = new StringBuffer(); - sb.append(this.getClass().getName()); - sb.append("["); - sb.append(name); - sb.append(", urls="); - URL[] urls = getURLs(); - for (int u = 0; u < urls.length; u++) { - sb.append(urls[u]); - if (u != urls.length - 1) { - sb.append(";"); - } - } - sb.append("]"); - toStringValue = sb.toString(); - - // value is updated, no need to do it again. - recomputeToString = false; - } - - /** - * Compute classpath value - */ - private void computeClassPath() { - String cp = ""; - // add parent classpath before - if (getParent() != null && getParent() instanceof JClassLoader) { - cp += ((JClassLoader) getParent()).getClassPath(); - } - URL[] urls = super.getURLs(); - for (int i = 0; i < urls.length; i++) { - cp = cp + File.pathSeparator + (new File(urls[i].getFile())).getAbsolutePath(); - } - classpath = cp; - // update value - recomputeClassPath = false; - } - - -} diff --git a/jonas/modules/libraries/jonas-bootstrap-loader/src/main/resources/META-INF/jonas-bootstrap-loader.bnd b/jonas/modules/libraries/jonas-bootstrap-loader/src/main/resources/META-INF/jonas-bootstrap-loader.bnd deleted file mode 100644 index e6f4e4ce1b..0000000000 --- a/jonas/modules/libraries/jonas-bootstrap-loader/src/main/resources/META-INF/jonas-bootstrap-loader.bnd +++ /dev/null @@ -1,25 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2008 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Import-Package !* -Export-Package org.ow2.jonas.lib.bootstrap.loader diff --git a/jonas/modules/libraries/jonas-commons/pom.xml b/jonas/modules/libraries/jonas-commons/pom.xml deleted file mode 100644 index 89e0eae6d3..0000000000 --- a/jonas/modules/libraries/jonas-commons/pom.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-commons - bundle - JOnAS :: Libraries :: Commons - - - org.ow2.carol - carol - provided - - - org.ow2.jonas - jonas-version - ${project.version} - - - org.ow2.jonas - jonas-services-api - ${project.version} - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - compile - - - org.objectweb.monolog - monolog-api - ${monolog.version} - - - org.objectweb.monolog - monolog-core - ${monolog.version} - - - org.objectweb.monolog - monolog-wrapper-p6spy - ${monolog.version} - - - org.ow2.bundles - ow2-util-log - - - - - p6spy - p6spy - - - org.ow2.bundles - ow2-util-file - - - org.ow2.bundles - ow2-util-url - - - org.ow2.bundles - ow2-util-xmlconfig - ${ow2-bundles.version} - provided - - - org.ow2.jonas - jonas-bootstrap-loader - ${project.version} - - - org.ow2.jonas - jonas-management-javaee - ${project.version} - provided - - - org.testng - testng - test - - - org.hamcrest - hamcrest-all - 1.1 - test - - - diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/Bootstrap.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/Bootstrap.java deleted file mode 100644 index 15cc5eb26e..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/Bootstrap.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:Bootstrap.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; - - -/** - * This class load all the jars needed to start JOnAS and after this, it launch - * the JOnAS server (Server class). - * @author Ludovic Bert (initial developer) - * @author Florent Benoit (initial developer) - * @author Philippe Durieux (new jonas jar files architecture) - */ -public class Bootstrap { - - /** - * Required JVM version - */ - private static final String REQUIRED_JVM_VERSION = "1.5"; - - /** - * Empty, private Constructor for Utility Class - */ - private Bootstrap() { - } - - /** - * Server main routine (Load all the jars needed to start jonas) - * @param args the list of the args to give to the bootstrap class. - */ - public static void main(final String[] args) { - String classToRun = args[0]; - - // JDK 1.5 or higher is required - String specVersion = System.getProperty("java.specification.version"); - if (specVersion.compareTo(REQUIRED_JVM_VERSION) < 0) { - String implVersion = System.getProperty("java.vm.version"); - System.err.println("A '" + REQUIRED_JVM_VERSION + "' JVM version or higher is required for JOnAS. Current JVM implementation version is '" - + implVersion + "' with specification '" + specVersion + "'"); - System.exit(0); - } - - try { - - LoaderManager lm = LoaderManager.getInstance(); - JClassLoader jonasLoader = null; - - jonasLoader = lm.getExternalLoader(); - - Thread.currentThread().setContextClassLoader(jonasLoader); - - //jonasLoader.printURLs(); // DEBUG - - // Launch the "class_to_run" by using our classloader. - Class clazz = jonasLoader.loadClass(classToRun); - Class[] argList = new Class[] {args.getClass()}; - Method meth = clazz.getMethod("main", argList); - String[] newArgs = new String[args.length - 1]; - System.arraycopy(args, 1, newArgs, 0, newArgs.length); - meth.invoke(null, new Object[] {newArgs}); - } catch (InvocationTargetException ite) { - Throwable t = ite.getTargetException(); - String message = t.getMessage(); - if (t instanceof Error) { - System.err.println("Error during execution of " + classToRun + " : " + message); - } else if (t instanceof Exception) { - System.err.println("Exception during execution of " + classToRun + " : " + message); - } - t.printStackTrace(System.err); - System.exit(2); - } catch (Exception e) { - System.err.println(classToRun + " reflection error : " + e); - e.printStackTrace(); - System.exit(2); - } - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JFileFilter.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JFileFilter.java deleted file mode 100644 index 84afef4b1d..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JFileFilter.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id:JFileFilter.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap; - -//import java -import java.util.StringTokenizer; -import java.io.File; -import java.io.FileFilter; - -/** - * This class implements a FileFilter, used to list files of a directory. - * @author Ludovic Bert - * @author Florent Benoit - */ -public class JFileFilter implements FileFilter { - - /** - * The extensions that match in the file filter. - */ - private String[] extensions = null; - - /** - * Contruct a new JFileFilter with the specified filter. - * @param filter the filter to use. A comma-separated list of the allowed - * extensions. For instance ".jar,.dtd", note that ".*" is allowed. - */ - public JFileFilter(String filter) { - StringTokenizer st = new StringTokenizer(filter, ","); - int tokenCount = st.countTokens(); - extensions = new String[tokenCount]; - for (int i = 0; i < tokenCount; i++) { - extensions[i] = st.nextToken(); - } - } - - /** - * Tests whether or not the specified abstract pathname should be included - * in a pathname list. - * @param pathname the abstract pathname to be tested. - * @return true if and only if pathname should be included. - */ - public boolean accept(File pathname) { - if (pathname.isDirectory()) { - return true; - } else { - for (int i = 0; i < extensions.length; i++) { - if (extensions[i].equals(".*")) { - return true; - } else { - if (pathname.getName().endsWith(extensions[i])) { - return true; - } - } - } - return false; - } - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JProp.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JProp.java deleted file mode 100644 index c74f6eb36c..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JProp.java +++ /dev/null @@ -1,747 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): Adriana Danes - * - * -------------------------------------------------------------------------- - * $Id:JProp.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.lib.bootstrap; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Properties; -import java.util.StringTokenizer; - -import javax.naming.Context; - -import org.ow2.jonas.lib.util.ConfigurationConstants; -import org.ow2.jonas.properties.ServerProperties; - - -/** - * This class manages configuration properties for a JOnAS Server. - * It adopts the singleton design-pattern. Configuration parameters - * are read from .properties file (jonas.properties or resource.properties). - * In order to support dynamically created resources, JProp also allows for - * a .properties file generation using a java.lang.Properties object content - * @author jonas-team - * @author Adriana Danes - * @author Florent Benoit - *
      - *
    • - * ../03/2003 Adriana Danes - *
        - *
      1. Manage unique instances for resource.properties - *
      2. Replace 'config' with 'conf' - *
      3. Change initial configuration policy : read properties file in a sole location : JONAS_BASE/CONFIG_DIR/ - *
      4. Replace method name getFilesEnv to getConfigFileEnv - *
      - *
    • - * 05/05/2003 Adriana Danes. Support JProp instance creation for dynamically created resources. - *
    - * 05/2003 Florent Benoit. Add support of xml files and checkstyle - */ -public class JProp implements ServerProperties { - - /** - * Domain name. - */ - public static final String DOMAIN_NAME = "domain.name"; - - /** - * -Djonas.base property. - */ - public static final String JONAS_BASE = "jonas.base"; - - /** - * jonas.master property. - */ - public static final String JONAS_MASTER = "jonas.master"; - - /** - * jonas.development property. - */ - public static final String JONAS_DEVELOPMENT = "jonas.development"; - - /** - * configuration directory name. - */ - private static final String CONFIG_DIR = "conf"; - - /** - * Repositories directory name. - */ - private static final String REPOSITORIES_DIR = "repositories"; - - /** - * System properties. - */ - private static Properties systEnv = System.getProperties(); - - /** - * JONAS_ROOT. - */ - private static String jonasRoot = systEnv.getProperty("jonas.root"); - - /** - * JONAS_BASE. - */ - private static String jonasBase = systEnv.getProperty(JONAS_BASE); - - /** - * Separator of file. - */ - private static String fileSeparator = systEnv.getProperty("file.separator"); - - /** - * Content of the file (xml). - */ - private String configFileXml = null; - - /** - * Content of a text file (may be a .properties file. - */ - private String versionFileContent = null; - - /** - * Properties of the config file. - */ - private Properties configFileEnv = new Properties(); - - /** - * System properties + properties of the file. - */ - private Properties allEnv = null; - - /** - * Name of the property file. - */ - private String propFileName = null; - - /** - * The JProp singleton for jonas.properties file. - */ - private static JProp unique = null; - - /** - * The multiple JProp objects for the resources configuration files (resource.properties) - * the keys are the configuration file names and the values, the JProp objects. - */ - private static Hashtable multiple = new Hashtable(); - - /** - * Default master value. - */ - private boolean master = false; - - /** - * Default execution mode value set to development. - */ - private boolean development = true; - - /** - * Private constructor which reads a resource.properties file. - * @param fileName the file name to read (the resource name) - */ - private JProp(final String fileName) { - readFile(fileName); - } - - /** - * Public constructor which reads the JONAS properties file (jonas.properties). - */ - public JProp() { - readFile(ConfigurationConstants.DEFAULT_JONAS_PREFIX); - } - - /** - * private constructor which writes properties in the provided file. - * @param fileName the file name in which configuration properties are written - * @param props configuration properties used to initialize the resource - */ - private JProp(final String fileName, final Properties props) { - writePropsToFile(fileName, props); - } - - /** - * private constructor which writes text in the provided file. - * @param fileName the file name in which configuration is written - * @param txt xml configuration for this resource - */ - private JProp(final String fileName, final String txt) { - writeXmlToFile(fileName, txt); - } - - /** - * Get the unique instance corresponding to the JOnAS server. - * Create it at first call. - * @return unique instance corresponding to the JOnAS server. - */ - public static JProp getInstance() { - if (unique == null) { - unique = new JProp(); - } - return unique; - } - - /** - * Get one of the multiple instances corresponding to a given resource. - * Create it at first call with a given configuration file name - * @param fileName the name of the configuration file which is given by the resource name - * @return one of the multiple instances corresponding to a given resource. - */ - public static JProp getInstance(final String fileName) { - if (!multiple.containsKey(fileName)) { - multiple.put(fileName, new JProp(fileName)); - } - return multiple.get(fileName); - } - - /** - * Get one of the multiple instances corresponding to a given resource. - * Create it at first call with a given configuration file name - * @param fileName the name of the configuration file - * @param props the content of the configuration file to be written in fileName - * @return one of the multiple instances corresponding to a given resource. - */ - public static JProp getInstance(final String fileName, final Properties props) { - if (!multiple.containsKey(fileName)) { - multiple.put(fileName, new JProp(fileName, props)); - } - return multiple.get(fileName); - } - - /** - * Remove the JProp instance corresponding to the given file name from the 'multiple' - * data structure. - * @param fileName file name corresponding to the name of the resource to be removed - */ - public static void removeInstance(final String fileName) { - if (multiple.containsKey(fileName)) { - multiple.remove(fileName); - } - } - - /** - * Remove the JProp instance corresponding to the given file name from the 'multiple' - * data structure and delete the file. - * @param fileName file name corresponding to the name of the resource to be removed - * and deleted from the file system - */ - public static void deleteInstance(final String fileName) { - if (multiple.containsKey(fileName)) { - multiple.remove(fileName); - // Check the JONAS_BASE environment property - if (jonasBase == null) { - return; - } - jonasBase = jonasBase.trim(); - - // JONAS_BASE/conf/fileName - String propFileName = jonasBase + fileSeparator + CONFIG_DIR + fileSeparator + fileName + ".properties"; - File del = new File(propFileName); - del.delete(); - } - } - - /** - * Write configuration properties in file getProperty(JONAS_BASE)/conf/fileName - * @param fileName name of the configuration file to write - * @param props Properties to register in the fileName file - * @throws Exception if it can't write to the specified file - */ - private void writePropsToFile(final String fileName, final Properties props) { - - // Check the JONAS_BASE environment property - if (jonasBase == null) { - throw new RuntimeException("JOnAS configuration error: environment property jonas.base not set!"); - } - jonasBase = jonasBase.trim(); - if (jonasBase.length() <= 0) { - throw new RuntimeException("JOnAS configuration error: jonas.base is null"); - } - - // JONAS_BASE/conf/fileName - propFileName = jonasBase + fileSeparator + CONFIG_DIR + fileSeparator + fileName + ".properties"; - - try { - FileOutputStream os = new FileOutputStream(propFileName); - props.store(os, "This file is generated by JOnAS"); - os.close(); - } catch (FileNotFoundException e) { - // File propFileName could not be opened - propFileName = null; - throw new RuntimeException("Cannot write config file :" + e); - } catch (IOException e) { - throw new RuntimeException("Cannot write config file :" + e); - } - configFileEnv = (Properties) props.clone(); - allEnv = configFileEnv; - } - - - /** - * Write xml configuration in file getProperty(JONAS_BASE)/conf/fileName - * @param fileName name of the configuration file to write - * @param txt text to write - * @throws Exception if it can't write to the specified file - */ - private void writeXmlToFile(final String fileName, final String txt) { - - // Check the JONAS_BASE environment property - if (jonasBase == null) { - throw new RuntimeException("JOnAS configuration error: environment property jonas.base not set!"); - } - jonasBase = jonasBase.trim(); - - // JONAS_BASE/conf/fileName - propFileName = jonasBase + fileSeparator + CONFIG_DIR + fileSeparator + fileName + ".properties"; - - try { - BufferedWriter out = new BufferedWriter(new FileWriter(new File(propFileName))); - out.write(txt); - out.flush(); - out.close(); - } catch (FileNotFoundException e) { - // File propFileName could not be opened - propFileName = null; - throw new RuntimeException("Cannot write xml configuration file:" + e); - } catch (IOException e) { - throw new RuntimeException("Cannot write xml configuration file:" + e); - } - } - - - /** - * Read the content of the specified file. It can be an xml or properties file - * @param fileName name of the properties configuration file to read - * @throws Exception if it fails - */ - private void readFile(final String fileName) { - // Check the JONAS_BASE environment property - if (jonasBase == null) { - throw new RuntimeException("JOnAS configuration error: environment property jonas.base not set!"); - } - jonasBase = jonasBase.trim(); - if (jonasBase.length() <= 0) { - throw new RuntimeException("JOnAS configuration error: jonas.base is null"); - } - - - if (fileName.equals(ConfigurationConstants.DEFAULT_JONAS_VERSIONS)) { - readVersionFile(); - return; - } - - // JONAS_BASE/conf/fileName - String fileFullPathname = jonasBase + fileSeparator + CONFIG_DIR + fileSeparator + fileName; - - if (fileFullPathname.toLowerCase().endsWith(".xml")) { - readXmlFile(fileFullPathname); - } else { - readPropsFile(fileFullPathname); - } - } - - private void readVersionFile() { - String fileFullPathname = jonasRoot + fileSeparator + ConfigurationConstants.DEFAULT_JONAS_VERSIONS; - try { - File f = new File(fileFullPathname); - int length = (int) f.length(); - FileInputStream fis = new FileInputStream(f); - byte[] buffer = new byte[length]; - fis.read(buffer); - fis.close(); - versionFileContent = new String(buffer); - } catch (FileNotFoundException e) { - throw new RuntimeException("Cannot find file " + fileFullPathname); - } catch (IOException e) { - throw new RuntimeException("Cannot read file " + fileFullPathname); - } - } - - /** - * Read initial configuration properties in file getProperty(JONAS_BASE)/conf/fileName - * These properties may be overridden by system properties, provided on the java command line. - * @param fileName name of the configuration file to read - * @throws Exception if it fails - */ - private void readPropsFile(final String fileName) { - - // Update filename of this JProp - this.propFileName = fileName; - - if (!fileName.endsWith(".properties")) { - propFileName += ".properties"; - } - - File f = null; - try { - f = new File(propFileName); - FileInputStream is = new FileInputStream(f); - configFileEnv.load(is); - } catch (FileNotFoundException e) { - throw new RuntimeException("Cannot find properties for " + propFileName); - } catch (IOException e) { - throw new RuntimeException("Cannot load properties for " + propFileName); - } - - allEnv = (Properties) configFileEnv.clone(); - // Overriddes with syst properties - if (f.getName().equalsIgnoreCase("jonas.properties")) { - for (Enumeration e = systEnv.keys(); e.hasMoreElements();) { - Object key = e.nextElement(); - String value = ((String) systEnv.get(key)).trim(); - allEnv.put(key, value); - } - - String serverName; - // If no system properties is set for the server name and that the - // property is missing in the jonas.properties file, use the - // default value - if (!systEnv.containsKey(ConfigurationConstants.JONAS_NAME_PROP)) { - if (!configFileEnv.containsKey(ConfigurationConstants.JONAS_NAME_PROP)) { - allEnv.put(ConfigurationConstants.JONAS_NAME_PROP, ConfigurationConstants.DEFAULT_JONAS_NAME); - } else { - allEnv.put(ConfigurationConstants.JONAS_NAME_PROP, configFileEnv.getProperty(ConfigurationConstants.JONAS_NAME_PROP)); - } - } - serverName = ((String) allEnv.get(ConfigurationConstants.JONAS_NAME_PROP)).trim(); - - // If no system properties is set for the domain name and that the - // property is missing in the jonas.properties file, use the - // server name as default value - if (!allEnv.containsKey(ConfigurationConstants.DOMAIN_NAME_PROP) && !systEnv.containsKey(ConfigurationConstants.DOMAIN_NAME_PROP)) { - if (!configFileEnv.containsKey(ConfigurationConstants.DOMAIN_NAME_PROP)) { - allEnv.put(ConfigurationConstants.DOMAIN_NAME_PROP, serverName); - } else { - allEnv.put(ConfigurationConstants.DOMAIN_NAME_PROP, configFileEnv.getProperty(ConfigurationConstants.DOMAIN_NAME_PROP)); - } - } - } - - if (allEnv.containsKey(JONAS_MASTER)) { - if(Boolean.parseBoolean(allEnv.getProperty(JONAS_MASTER))) { - setMaster(true); - } - } - - if (allEnv.containsKey(JONAS_DEVELOPMENT)) { - if(!Boolean.parseBoolean(allEnv.getProperty(JONAS_DEVELOPMENT))) { - setDevelopment(false); - } - } - } - - /** - * Read initial configuration in file getProperty(JONAS_BASE)/conf/fileName - * @param fileName name of the xml configuration file to read - */ - private void readXmlFile(final String fileName) { - - // Update filename of this JProp - this.propFileName = fileName; - - try { - File f = new File(propFileName); - int length = (int) f.length(); - FileInputStream fis = new FileInputStream(f); - byte[] buffer = new byte[length]; - fis.read(buffer); - fis.close(); - configFileXml = new String(buffer); - } catch (FileNotFoundException e) { - throw new RuntimeException("Cannot find file " + propFileName); - } catch (IOException e) { - throw new RuntimeException("Cannot read file " + propFileName); - } - } - - /** - * Static method which return the jonas.root property - * @return the jonas.root property - */ - public static String getJonasRoot() { - return jonasRoot; - } - - /** - * Static method which return the jonas.base property - * @return the jonas.base property - */ - public static String getJonasBase() { - return jonasBase; - } - - /** - * Static method which returns the configuration directory in jonas.base - * @return The configuration directory in jonas.base - */ - public static String getConfDir() { - return jonasBase + File.separator + CONFIG_DIR; - } - - /** - * Static method which returns the repositories directory in jonas.root - * @return The repositories directory in jonas.root - */ - public static String getRepositoriesRootDir() { - return jonasRoot + File.separator + REPOSITORIES_DIR; - } - - /** - * Static method which returns the repositories directory in jonas.base - * @return The repositories directory in jonas.base - */ - public static String getRepositoriesBaseDir() { - return jonasBase + File.separator + REPOSITORIES_DIR; - } - - /** - * Returns properties filename - * - * @return JOnAS properties filename - */ - public String getPropFile() { - return propFileName; - } - - /** - * Returns JOnAS environment as configured with configuration file properties content and - * system properties. - * @return JOnAS properties - */ - public Properties getEnv() { - return allEnv; - } - - /** - * Returns JOnAS environment as configured with files properties only. - * - * @return JOnAS properties - */ - public Properties getConfigFileEnv() { - return configFileEnv; - } - - public String getPropFileName() { - return propFileName; - } - /** - * Returns xml content of the resource file. - * - * @return xml content of the resource file - */ - public String getConfigFileXml() { - return configFileXml; - } - - public String getVersionFile() { - return versionFileContent; - } - - /** - * Returns the value of the related property. With default values. - * @param key the search key - * @param defaultVal if the key is not found return this default value - * @return property value - */ - public String getValue(final String key, final String defaultVal) { - String retProperty = allEnv.getProperty(key, defaultVal); - return retProperty.trim(); - } - - /** - * Returns the value of the related property. - * The method returns null if the property is not found. - * @param key the wanted key - * @return property value, null if not exist - */ - public String getValue(final String key) { - - String retProperty = allEnv.getProperty(key); - if (retProperty != null) { - retProperty = retProperty.trim(); - } - return retProperty; - } - - /** - * Returns the value of the related property as boolean. - * @param key the wanted key - * @param def default run if not found - * @return property value, true or false. - */ - public boolean getValueAsBoolean(final String key, final boolean def) { - boolean ret = def; - String value = this.getValue(key); - if (value != null && value.equalsIgnoreCase("true")) { - ret = true; - } - return ret; - } - - /** - * Returns the value of the related property as String []. - * The method returns null if the property is not found. - * @param key the wanted key - * @return property value, null if not exist - */ - public String[] getValueAsArray(final String key) { - - String [] res = null; - String value = this.getValue(key); - if (value != null) { - StringTokenizer st = new StringTokenizer(value, ","); - res = new String [st.countTokens()]; - int i = 0; - while (st.hasMoreTokens()) { - res[i++] = st.nextToken().trim(); - } - } - return res; - } - - /** - * String representation of the object for trace purpose - * @return String representation of this object - */ - @Override - public String toString() { - String s = new String(); - for (Enumeration e = this.configFileEnv.keys(); e.hasMoreElements();) { - Object key = e.nextElement(); - Object value = this.configFileEnv.get(key); - s = s.concat(" " + key + " = " + value + "\n"); - } - if (s.length() > 0) { - // take of the last '\n' - s = s.substring(0, s.length() - 1); - } - return s; - } - - /** - * Bind all the properties found in file properties in a naming context - * the naming context must be allocated by the caller - * @param ctx given context for bindings properties - * @throws Exception if it fails - */ - public void env2Ctx(final Context ctx) throws Exception { - Enumeration e = configFileEnv.propertyNames(); - String key = null; - while (e.hasMoreElements()) { - key = (String) e.nextElement(); - ctx.bind(key, configFileEnv.getProperty(key, "")); - } - } - - /** - * Displays the JOnAS properties values, as they are set by the - * different property files. - * @param args the arguments for launching this program - */ - public static void main(final String args[]) { - - JProp jonasProperties = null; - try { - jonasProperties = JProp.getInstance(); - } catch (Exception e) { - System.err.println(e); - System.exit(2); - } - for (Enumeration e = jonasProperties.configFileEnv.keys(); e.hasMoreElements();) { - Object key = e.nextElement(); - Object value = jonasProperties.configFileEnv.get(key); - System.out.println(key.toString() + "=" + value.toString()); - } - } - - // ----------------------------------------------------------------------------- - // Implementation of ServerProperties - // ----------------------------------------------------------------------------- - - /** - * @return The Domain Name - */ - public String getDomainName() { - return getValue(ConfigurationConstants.DOMAIN_NAME_PROP, null); - } - - /** - * @return the Server Name - */ - public String getServerName() { - return getValue(ConfigurationConstants.JONAS_NAME_PROP, null); - } - - /** - * @return the VERSIONS file content as a String. - */ - public String getVersionsFile() { - JProp jp = JProp.getInstance(ConfigurationConstants.DEFAULT_JONAS_VERSIONS); - return jp.versionFileContent; - } - - public boolean isMaster() { - return master; - } - - public void setMaster(final boolean master) { - this.master = master; - } - - public boolean isDevelopment() { - return development; - } - - public void setDevelopment(final boolean development) { - this.development = development; - } - - /** - * @return work directory - */ - public String getWorkDirectory() { - String workDirProperty = getValue(ConfigurationConstants.WORK_DIRECTORY_PROP, - ConfigurationConstants.DEFAULT_WORK_DIRECTORY); - - // If absolute, no JONAS_BASE prefix - File f = new File(workDirProperty); - if (f.isAbsolute()) { - return workDirProperty; - } - // Else, prefix it with JONAS_BASE - return jonasBase + File.separator + workDirProperty; - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JURLs.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JURLs.java deleted file mode 100644 index fc65d3f8c9..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/JURLs.java +++ /dev/null @@ -1,239 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id:JURLs.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap; - -import java.util.Enumeration; -import java.util.Vector; -import java.io.File; -import java.net.URL; -import java.net.MalformedURLException; - -/** - * This implements an utility class that list the URLs of the jars to load at - * the launch time of the JOnAS server. - * @author Ludovic Bert - * @author Florent Benoit - */ -public class JURLs extends Vector { - - /** - * Construct an empty JURLs. - */ - public JURLs() { - super(); - } - - /** - * Add the specified file or directory to this JURLs. Note that in the case - * of a directory this method add only the content of this one. - * @param file the specified file or directory to add to this JURLs. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void add(File file) throws MalformedURLException { - add(file, null, null, null); - } - - /** - * Add the specified directory to this JURLs. Note that this method add the - * URL of the specified directory and not the content of this directory. - * @param file the directory to add to this JURLs. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void addDir(File file) throws MalformedURLException { - if (!file.exists() || !file.isDirectory()) { - String err = "Warning: Resource " + file.getName(); - err += " cannot be loaded : The directory does not exist"; - System.out.println(err); - } else { - if (!contains(file.toURL())) { - add(file.toURL()); - } - } - } - - /** - * Add the content of the specified directory to this JURLs, by using the - * specified filter. - * @param file the directory to add to this JURLs. - * @param filter the filter to use to add the content of this directory, - * null if not use the filter. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void add(File file, String filter) throws MalformedURLException { - if (file.isDirectory()) { - add(file, filter, null, null); - } else { - String err = "Warning: Resource " + file.getName(); - err += " cannot be loaded : It is not a directory"; - System.out.println(err); - } - } - - /** - * Add the content of the specified directory to this JURLs if the contained - * file not starts with the specified prefix. - * @param file the directory to add to this JURLs. - * @param prefix the prefix to ignore, null if not use the prefix. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void addNotStartWith(File file, String prefix) throws MalformedURLException { - - if (file.isDirectory()) { - add(file, null, prefix, null); - } else { - String err = "Warning: Resource " + file.getName(); - err += " cannot be loaded : It is not a directory"; - System.out.println(err); - } - } - - /** - * Add the content of the specified directory to this JURLs if the contained - * file not ends with the specified suffix. - * @param file the directory to add to this JURLs. - * @param suffix the suffix to ignore, null if not use the suffix. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void addNotEndWith(File file, String suffix) throws MalformedURLException { - - if (file.isDirectory()) { - add(file, null, null, suffix); - } else { - String err = "Warning: Resource " + file.getName(); - err += " cannot be loaded : It is not a directory"; - System.out.println(err); - } - } - - /** - * Add the content of the specified directory to this JURLs by using a file - * filter and if the contained file not starts with the prefix and not ends - * with the suffix. - * @param file the directory to add to this JURLs. - * @param filter the filter to use to add the content of this directory, - * null if not use the filter. - * @param prefix the prefix to ignore, null if not use the prefix. - * @param suffix the suffix to ignore, null if not use the suffix. - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void add(File file, String filter, String prefix, String suffix) throws MalformedURLException { - if (!file.exists()) { - String err = "Warning: Resource " + file.getPath(); - err += " cannot be loaded : The file or directory does not exist"; - err += "(Check your environment variable)"; - System.out.println(err); - } else { - if (file.isFile()) { - if (!isMatching(file, prefix, suffix) && !contains(file.toURL())) { - // System.out.println("Adding URL "+file.toURL()); // DEBUG - add(file.toURL()); - } - } else { - File[] childrenFiles = null; - if (filter != null) { - childrenFiles = file.listFiles(new JFileFilter(filter)); - } else { - childrenFiles = file.listFiles(); - } - for (int i = 0; i < childrenFiles.length; i++) { - add(childrenFiles[i], filter, prefix, suffix); - } - } - } - } - - /** - * Return true if only if the file starts with the specified prefix or ends - * with the specified suffix. - * @param file the file to match. - * @param prefix the prefix to use for the matching, null if do not use the - * prefix. - * @param suffix the suffix to use for the matching, null if do not use the - * suffix. - * @return true if only if the file starts with the specified prefix or ends - * with the specified suffix. - */ - private boolean isMatching(File file, String prefix, String suffix) { - String fileName = file.getName(); - if (prefix == null) { - if (suffix == null) { - return false; - } else { - return fileName.endsWith(suffix); - } - } else { - if (suffix == null) { - return fileName.startsWith(prefix); - } else { - return fileName.startsWith(prefix) || fileName.endsWith(suffix); - } - } - } - - /** - * Merge the specified JURls to this JURLs. - * @param jurl the JURls to merge with this JURLs. - */ - public void merge(JURLs jurl) { - for (Enumeration e = jurl.elements(); e.hasMoreElements();) { - URL url = (URL) e.nextElement(); - if (!contains(url)) { - add(url); - } - } - } - - /** - * Remove the specified file of this JURLs - * @param file the file to be removed - * @throws MalformedURLException to indicate that a malformed URL has - * occured. - */ - public void remove(File file) throws MalformedURLException { - if (file.exists()) { - remove(file.toURL()); - } else { - String err = "Warning: Resource " + file.getName(); - err += " cannot be removed : It doesn't exist"; - System.out.println(err); - } - } - - /** - * Return an array containing all the URLs of this JURLs. - * @return an array containing all the URLs of this JURLs. - */ - public URL[] toURLs() { - return (URL[]) super.toArray(new URL[elementCount]); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/LoaderManager.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/LoaderManager.java deleted file mode 100644 index 299e13602c..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/LoaderManager.java +++ /dev/null @@ -1,177 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:LoaderManager.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap; - -import java.io.File; -import java.net.URL; - -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; -import org.ow2.jonas.lib.loader.FilteringClassLoader; -import org.ow2.jonas.lib.loader.OSGiClassLoader; -import org.ow2.util.url.URLUtils; - -/** - * This class create all the ClassLoader necessary for JOnAS. - * @author Guillaume Sauthier - * @author Francois Fornaciari - */ -public final class LoaderManager { - - /** - * LoaderManager unique instance. - */ - private static LoaderManager instance = null; - - /** - * External ClassLoader. - */ - private JClassLoader externalClassLoader = null; - - /** - * $JONAS_ROOT. - */ - private String jonasRoot = null; - - /** - * $JONAS_BASE. - */ - private String jonasBase = null; - - /** - * $JONAS_ROOT/lib. - */ - private File jonasRootLib = null; - - /** - * $JONAS_ROOT/lib/ext. - */ - private File jonasRootLibExt = null; - - /** - * Relative library path. - */ - private static final String LIB = "lib"; - - /** - * Relative external library path : ext. - */ - private static final String EXTERNAL_FOLDER = "ext"; - - /** - * Relative external library path : lib/ext. - */ - private static final String LIB_EXTERNAL = LIB + File.separator + "ext"; - - /** - * Relative external library path : ext. - */ - private static final String TLD_FOLDER = "internal-ee-tld"; - - /** - * Initialize main directories. - */ - private LoaderManager() { - jonasRoot = JProp.getJonasRoot(); - jonasBase = JProp.getJonasBase(); - jonasRootLib = new File(jonasRoot, LIB); - jonasRootLibExt = new File(jonasRootLib, EXTERNAL_FOLDER); - } - - /** - * @return Returns the unique instance of LoaderManager. - */ - public static LoaderManager getInstance() { - if (instance == null) { - instance = new LoaderManager(); - } - return instance; - } - - /** - * @return Returns the External ClassLoader which contains user libraries. - * @throws Exception When ClassLoader cannot be created. - */ - public JClassLoader getExternalLoader() throws Exception { - if (externalClassLoader == null) { - externalClassLoader = createExternalClassLoader(); - } - return externalClassLoader; - } - - /** - * Constructs the External ClassLoader. - * - * @return Returns the External ClassLoader. - * @throws Exception When ClassLoader cannot be created from CLASSPATH or resources cannot be added to URLs List. - */ - private JClassLoader createExternalClassLoader() throws Exception { - JURLs jurls = new JURLs(); - - // Add TLD Java EE file - jurls.add(new File(jonasRootLib, TLD_FOLDER), "javaee-tld.jar"); - - // Load $JONAS_ROOT/lib/ext/*.jar - jurls.add(jonasRootLibExt, ".jar"); - - // Add $JONAS_BASE/lib/ext only if $JONAS_BASE != $JONAS_ROOT - // $JONAS_BASE/lib/ext is added before $JONAS_ROOT/lib/ext - if (!jonasRoot.toLowerCase().equals(jonasBase.toLowerCase())) { - File jonasBaseLibExt = new File(jonasBase, LIB_EXTERNAL); - if (jonasBaseLibExt.exists()) { - jurls.add(jonasBaseLibExt, ".jar"); - } - } - - return new JClassLoader("External", - jurls.toURLs(), - createSystemFilteringClassLoader()); - } - - /** - * Creates a {@code FilteringClassLoader} instance delegating to its parent - * {@code OSGiClassLoader}. - * Filters are loaded from the {@code $[jonas.base]/conf/classloader-default-filtering.xml}. - * If no XML definition file is found, it returns a non-filtrant loader. - * @return a configured FilteringClassLoader - */ - private FilteringClassLoader createSystemFilteringClassLoader() { - - // OSGiClassLoader delegates class loading to the bundle ClassLoader - // so we can benefit of OSGi properties (Dynamic-Import, ...) - FilteringClassLoader loader = new FilteringClassLoader(new OSGiClassLoader()); - - File xmlConfigFile = new File(new File(JProp.getConfDir()), - FilteringClassLoader.XML_FILE); - if (xmlConfigFile.isFile()) { - URL systemDefinitionUrl = URLUtils.fileToURL(xmlConfigFile); - loader.setDefinitionUrl(systemDefinitionUrl); - } // else will be a transparent ClassLoader (no filters) - - loader.start(); - - return loader; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/RemoteClassLoaderSpi.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/RemoteClassLoaderSpi.java deleted file mode 100644 index fffd5f6f4a..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/bootstrap/RemoteClassLoaderSpi.java +++ /dev/null @@ -1,256 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2008 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:RemoteClassLoaderSpi.java 10822 2007-07-04 08:26:06Z durieuxp $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.bootstrap; - -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLClassLoader; -import java.rmi.server.RMIClassLoader; -import java.rmi.server.RMIClassLoaderSpi; -import java.util.StringTokenizer; - -import org.ow2.carol.util.configuration.CarolDefaultValues; -import org.ow2.jonas.lib.bootstrap.loader.JClassLoader; - -/** - * Class RemoteClassLoaderSpi is the CAROL JRMP CLass Loader SPI - * for serialization performances. - * @author Guillaume Riviere (Guillaume.Riviere@inrialpes.fr) - * @author S. Ali Tokmen - */ -public class RemoteClassLoaderSpi extends RMIClassLoaderSpi { - - /** - * Carol was already initialized - */ - private static boolean carolIsInitialized = false; - - /** - * Local call optimization is set - */ - private static boolean carolIsOptimized = false; - - /** - * Current provider - */ - private final RMIClassLoaderSpi defaultProvider = RMIClassLoader.getDefaultProviderInstance(); - - /** - * Loads a class from a codebase URL path, optionally using the supplied - * loader. - * @param codebase the list of URLs (separated by spaces) to load the class - * from, or null - * @param name the name of the class to load - * @param defaultLoader additional contextual class loader to use, or - * null - * @return the Class object representing the loaded class - * @throws MalformedURLException if codebase is non-null - * and contains an invalid URL, or if codebase is - * null and the system property - * java.rmi.server.codebase contains an invalid URL - * @throws ClassNotFoundException if a definition for the class could not be - * found at the specified location - */ - public Class loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, - ClassNotFoundException { - return defaultProvider.loadClass(normalizeCodebase(codebase), name, defaultLoader); - } - - /** - * Loads a dynamic proxy class (see {@link java.lang.reflect.Proxy} that - * implements a set of interfaces with the given names from a codebase URL - * path, optionally using the supplied loader. - * @param codebase the list of URLs (space-separated) to load classes from, - * or null - * @param interfaces the names of the interfaces for the proxy class to - * implement - * @return a dynamic proxy class that implements the named interfaces - * @param defaultLoader additional contextual class loader to use, or - * null - * @throws MalformedURLException if codebase is non-null - * and contains an invalid URL, or if codebase is - * null and the system property - * java.rmi.server.codebase contains an invalid URL - * @throws ClassNotFoundException if a definition for one of the named - * interfaces could not be found at the specified location, or if - * creation of the dynamic proxy class failed (such as if - * {@link java.lang.reflect.Proxy#getProxyClass(ClassLoader,Class[])} - * would throw an IllegalArgumentException for the - * given interface list) - */ - public Class loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) - throws MalformedURLException, ClassNotFoundException { - return defaultProvider.loadProxyClass(normalizeCodebase(codebase), interfaces, defaultLoader); - } - - /** - * Returns a class loader that loads classes from the given codebase URL - * path. - * @param codebase the list of URLs (space-separated) from which the - * returned class loader will load classes from, or null - * @return a class loader that loads classes from the given codebase URL - * path - * @throws MalformedURLException if codebase is non-null - * and contains an invalid URL, or if codebase is - * null and the system property - * java.rmi.server.codebase contains an invalid URL - */ - public ClassLoader getClassLoader(String codebase) throws MalformedURLException { - return defaultProvider.getClassLoader(normalizeCodebase(codebase)); - } - - /** - * Returns the annotation string (representing a location for the class - * definition) that RMI will use to annotate the class descriptor when - * marshalling objects of the given class.
    - * By default, remove rmi annotations of JClassLoader class. Between two - * JOnAS, commons classes are the same, don't need t have a bigger - * annotation. When local call is set, always disable annotation. - * @param cl the class to obtain the annotation for - * @return a string to be used to annotate the given class when it gets - * marshalled, or null - */ - public String getClassAnnotation(Class cl) { - ClassLoader loader = cl.getClassLoader(); - - // Init values - if (!carolIsInitialized) { - String sValue = System.getProperty(CarolDefaultValues.LOCALREG_JRMP_PROPERTY, "init"); - if (!sValue.equals("init")) { - carolIsOptimized = new Boolean(sValue).booleanValue(); - carolIsInitialized = true; - } - } - - if (loader instanceof JClassLoader) { - return null; - } else if ((loader instanceof URLClassLoader) && (carolIsOptimized)) { - return null; - } else { - return defaultProvider.getClassAnnotation(cl); - } - } - - /** - * The standard separator between codebases is the space character and - * many operating systems use paths with spaces. One classical example - * would be C:\Program Files\JOnAS\ in Windows. - * - * This function does the necessary transformation in order the codebase to - * be separated correctly and the file:/C:/Program Files/JOnAS/ path - * not to be interpreted as two separate codebases (Namely, - * file:/C:/Program and /JOnAS/). It also successfully - * normalizes multiple paths in one codebase (for example, - * file:/C:/Program Files/foo.jar file:/C:/Program Files/bar.jar). - * - * @param input Codebase to normalize (may be null). - * - * @return Normalized codebase. - * - * @throws MalformedURLException If URL really is malformed. - */ - static String normalizeCodebase(final String input) throws MalformedURLException { - // null is a perfectly valid codebase - if (input == null) { - return null; - } - - StringBuffer codebase = new StringBuffer(); - StringBuffer current = new StringBuffer(); - StringTokenizer stok = new StringTokenizer(input, " \t\n\r\f", false); - - while (stok.hasMoreTokens()) { - String item = stok.nextToken(); - - // Ignore empty tokens - if (item.length() < 1) { - continue; - } - - if (item.indexOf(':') != -1) { - // This is the beginning of a new URL, - // therefore the end of an the previous URL - onGotURL(current, codebase); - } else { - // This is the inner part of a URL that contains a space - current.append(' '); - } - - current.append(item); - } - - // Make sure we don't miss the last URL - onGotURL(current, codebase); - - if (codebase.length() > 0) { - return codebase.toString(); - } else { - return null; - } - } - - /** - * Callback when the {@link RemoteClassLoaderSpi#normalizeCodebase(String)} - * method has recognized a URL. The URL (that may be empty) will be escaped - * using {@link java.net.URL} and added to the codebase. - * - * @param current Recognized URL. - * @param codebase Base to add the reformatted URL to. - * - * @throws MalformedURLException If URL current's content is invalid. - */ - static void onGotURL(final StringBuffer current, final StringBuffer codebase) throws MalformedURLException { - // Ignore empty recognitions - if (current.length() < 1) { - return; - } - - URL url; - String currentToString = current.toString(); - try { - // Check if the URL is valid, therefore already escaped correctly - url = new URI(new URL(currentToString).toString()).toURL(); - } catch (URISyntaxException e) { - try { - // Given URL wasn't escaped correctly, escape spaces - url = new URI(new URL(currentToString.replaceAll("\\ ", "%20")).toString()).toURL(); - } catch (URISyntaxException ie) { - // URL is really not valid - url = null; - } - } - - if (url != null) { - if (codebase.length() > 0) { - codebase.append(' '); - } - codebase.append(url.toString()); - current.setLength(0); - } - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManager.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManager.java deleted file mode 100644 index 582e7fcad2..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManager.java +++ /dev/null @@ -1,334 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.cpmanager; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.StringTokenizer; -import java.util.jar.Attributes; -import java.util.jar.JarFile; -import java.util.jar.Manifest; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.url.URLUtils; - -/** - * JOnAS Ear class path manager class. This class provides a way for managing - * the class-path dependency libraries. - * @author Florent Benoit - * @author Ludovic Bert - * @author Nicolas Van Caneghem Allow the - * deployment of an exploded ear - */ -public class EarClassPathManager { - - /** - * Logger for this service. - */ - private Logger logger = null; - - /** - * Urls of the class path manager. - */ - private URL[] urls = null; - - /** - * List of jars that must be parsed. - */ - private JarList toParse = null; - - /** - * List of jars that have been parsed. - */ - private JarList parsed = null; - - /** - * List of jars which are libraries. - */ - private JarList libraries = null; - - /** - * List of the ejb jars. - */ - private JarList ejbs = null; - - /** - * List of the war files. - */ - private JarList wars = null; - - /** - * List of the client jars. - */ - private JarList clients = null; - - /** - * Directory of the ear. - */ - private URL directory = null; - - /** - * Construct an instance of a EarClassPathManager. - * @param ejbs JarList of ejb-jar - * @param wars JarList of war - * @param directory URL of the directory - * @throws EarClassPathManagerException if we can't create the manager - */ - public EarClassPathManager(final JarList ejbs, final JarList wars, final URL directory) throws EarClassPathManagerException { - - //we init the logger - logger = Log.getLogger(Log.JONAS_EAR_PREFIX); - - if ((ejbs == null) || (wars == null) || (directory == null)) { - throw new EarClassPathManagerException("The constructor EarClassPathManager can't accept null parameters"); - } - - //check protocol - if (!directory.getProtocol().equalsIgnoreCase("file")) { - throw new EarClassPathManagerException("Only the file:/ URL can be used"); - } - this.ejbs = ejbs; - this.wars = wars; - this.clients = new JarList(); - this.directory = directory; - } - - /** - * Construct an instance of a EarClassPathManager. - * @param clients JarList of the clients - * @param directory URL of the directory - * @throws EarClassPathManagerException if we can't create the manager - */ - public EarClassPathManager(final JarList clients, final URL directory) throws EarClassPathManagerException { - - if ((clients == null) || (directory == null)) { - throw new EarClassPathManagerException("The constructor EarClassPathManager can't accept null parameters"); - } - - //check protocol - if (!directory.getProtocol().equalsIgnoreCase("file")) { - throw new EarClassPathManagerException("Only the file:/ URL can be used"); - } - this.ejbs = new JarList(); - this.wars = new JarList(); - this.clients = clients; - this.directory = directory; - } - - /** - * Get the class-path from the MANIFEST.MF file of the specified archive. - * @param url the URL of the JAR file which contains the MANIFEST file. - * @return the class-path from the MANIFEST.MF file of the specified - * archive. - * @throws IOException if creation of a file based upon the url failed - * @throws EarClassPathManagerException if it failed - */ - private JarList getManifestClassPath(final URL url) throws EarClassPathManagerException, IOException { - - if (url == null) { - throw new EarClassPathManagerException("JarList.getManifestClassPath : The url parameter can't be null"); - } - - Manifest manifest = null; - - if (new File(url.getFile()).isDirectory()) { - File manifestFile = new File(url.getFile() + File.separator + JarFile.MANIFEST_NAME); - if (manifestFile.exists()) { - InputStream is = null; - try { - is = new FileInputStream(manifestFile); - manifest = new Manifest(is); - } finally { - if (is != null) { - is.close(); - } - } - } - - } else { - //Construct a JarFile in order to access to the manifest - // IOException it if failed - JarFile jarFile = null; - - try { - jarFile = new JarFile(URLUtils.urlToFile(url)); - //get manifest from the jarFile - manifest = jarFile.getManifest(); - } finally { - if (jarFile != null) { - jarFile.close(); - } - } - - } - - //classpath - String classPath = null; - - //Only if a manifest is found - if (manifest != null) { - //get attributes (classpath) - Attributes attributes = manifest.getMainAttributes(); - classPath = attributes.getValue(Attributes.Name.CLASS_PATH); - } - - //New JarList - JarList jarList = null; - - //The jarList will be Empty if classpath is null or populate with - // classpath entries - if (classPath != null) { - jarList = new JarList(new StringTokenizer(classPath)); - } else { - jarList = new JarList(); - } - - //Return the list - return jarList; - } - - /** - * Get the list of the URLs. - * @return the list of the URLs. - * @throws EarClassPathManagerException if we can't resolve the path - */ - public URL[] getResolvedClassPath() throws EarClassPathManagerException { - - //If we don't have already compute - if (urls == null) { - resolveClassPath(); - } - - //return the cache - return urls; - } - - /** - * Resolve the class-path dependencies of WAR and JAR files. - * @throws EarClassPathManagerException if it failed - */ - private void resolveClassPath() throws EarClassPathManagerException { - - //Set the list to parsed - toParse = new JarList(); - - //Set the list already parsed - parsed = new JarList(); - - //Set the list of libraries - libraries = new JarList(); - - //add the ejbs, wars and clients to this list - toParse.merge(ejbs); - toParse.merge(wars); - toParse.merge(clients); - - //dependencies list - JarList lstOfFilesDep = new JarList(); - - //Url of the current filename - URL depUrl = null; - - //While there are elements to analyse - while (toParse.size() > 0) { - - //File to look for Manifest - String fileName = (String) toParse.firstElement(); - - if (fileName.endsWith("/")) { - throw new EarClassPathManagerException("In j2ee application, Class-Path with directory is forbidden. '" - + fileName + "' is not authorized."); - } - try { - //Get dependency entries - depUrl = new URL(directory.toExternalForm() + "/" + fileName); - lstOfFilesDep = getManifestClassPath(depUrl); - } catch (MalformedURLException mue) { - lstOfFilesDep.removeAllElements(); - logger.log(BasicLevel.ERROR, "Error while trying to get the url for " - + directory.toExternalForm() + File.separator + fileName + " : ", mue); - } catch (IOException ioe) { - lstOfFilesDep.removeAllElements(); - logger.log(BasicLevel.ERROR, "Error while reading manifest file from the file " + fileName - + " : ", ioe); - } - - String parentDir = new File(fileName).getParent(); - //subDirectory (the parent dir or "") - String subDir = null; - if (parentDir != null) { - subDir = parentDir; - } else { - subDir = ""; - } - - //Set the relative path of EAR / file - lstOfFilesDep.setRelativePath(subDir); - - //Merge the list - toParse.merge(lstOfFilesDep); - - //Add the parsed file - parsed.add(fileName); - - //Add to the libraries if it's not an EJB or a WEB application - if (isALibrary(fileName)) { - libraries.add(fileName); - } - - //Remove all the parsed files - toParse.remove(parsed); - - } - - //We've got the list of files, its the JarList : parsed - try { - urls = libraries.getURLs(directory.toExternalForm()); - } catch (JarListException e) { - throw new EarClassPathManagerException( - "Error while geting the URLs of the jars files which must be loaded at the EAR level"); - - } - - } - - /** - * Check if the file is a library , ie : - It's not an EJB Jar. - It's not a - * War. - * @param fileName name of the file to check - * @return true if it's not either an ejbjar either a war file. (a library). - */ - private boolean isALibrary(final String fileName) { - return (!ejbs.contains(fileName) && !wars.contains(fileName)); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManagerException.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManagerException.java deleted file mode 100644 index c3fcc08fb6..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/EarClassPathManagerException.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.cpmanager; - -/** - * The class EarClassPathManagerException indicates conditions - * that a reasonable application might want to catch. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class EarClassPathManagerException extends Exception { - - /** - * Constructs a new EarClassPathManagerException with no detail - * message. - */ - public EarClassPathManagerException() { - super(); - } - - /** - * Constructs a new EarClassPathManagerException with the specified - * message. - * @param message the detail message. - */ - public EarClassPathManagerException(String message) { - super(message); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarList.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarList.java deleted file mode 100644 index 8dc0e3c160..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarList.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:JarList.java 10672 2007-06-19 07:18:50Z sauthieg $ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.cpmanager; - -//java import -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.StringTokenizer; -import java.util.Vector; - -import org.ow2.util.url.URLUtils; - -/** - * JOnAS Jar list This class provides a way for managing the class-path - * dependency libraries. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class JarList extends Vector { - - /** - * Construct an instance of a JarList - */ - public JarList() { - super(); - } - - /** - * Construct an instance of a JarList - * @param st a String tokenizer - */ - public JarList(StringTokenizer st) { - super(); - - //add each entries - while (st.hasMoreTokens()) { - String fileName = st.nextToken(); - add(fileName); - } - } - - /** - * Construct an instance of a JarList - * @param strs an array of files - */ - public JarList(String[] strs) { - super(); - - for (int i = 0; i < strs.length; i++) { - add(strs[i]); - } - } - - /** - * Add the specified file to the current list. - * @param fileName the name of the file to add. - */ - public void add(String fileName) { - if (!contains(fileName) && !fileName.equals("")) { - super.add(fileName); - } - } - - /** - * Get the URLs of all the JAR file list append to dirName. - * @param dirName the name of the directory where we append the files (URL format). - * @return the absolute URLs of the JAR files. - * @throws JarListException if url are malformed - */ - public URL[] getURLs(String dirName) throws JarListException { - - List verifiedUrls = new ArrayList(); - for (int i = 0; i < elementCount; i++) { - String s = (String) elementData[i]; - try { - URL potentialUrl = new URL(dirName + File.separator + s); - File potentialFile = URLUtils.urlToFile(potentialUrl); - if (potentialFile.exists()) { - // Avoid incorporating an URL pointing to a non-existent file - URL verifiedUrl = URLUtils.fileToURL(potentialFile.getCanonicalFile()); - verifiedUrls.add(verifiedUrl); - } - } catch (IOException e) { - throw new JarListException("Error when trying to get the canonical form for the file " + elementData[i]); - } - } - return verifiedUrls.toArray(new URL[verifiedUrls.size()]); - } - - /** - * Merge the specified JarList to the current JarList without adding - * duplicate entry. - * @param jarList the list to merge. - */ - public void merge(JarList jarList) { - for (Enumeration e = jarList.elements(); e.hasMoreElements();) { - String s = (String) e.nextElement(); - //call add which call super.add - add(s); - } - } - - /** - * Remove all the entries contained in the jarList to the current jarList. - * @param jarList the jarList to remove. - */ - public void remove(JarList jarList) { - - for (Enumeration e = jarList.elements(); e.hasMoreElements();) { - String s = (String) e.nextElement(); - if (contains(s)) { - remove(s); - } - } - } - - /** - * Set the relative path of the current list. This is useful in the case of - * an EAR file because the class-path is relative to the JAR file and not - * the EAR file. - * @param path the path for set the relative path - */ - public void setRelativePath(String path) { - if (path.equals("")) { - return; - } - - for (int i = 0; i < elementCount; i++) { - elementData[i] = path + File.separator + elementData[i]; - } - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarListException.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarListException.java deleted file mode 100644 index 560d1f7689..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/cpmanager/JarListException.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.cpmanager; - -/** - * The class JarListException indicates conditions that a reasonable application - * might want to catch. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class JarListException extends Exception { - - /** - * Constructs a new JarListException with no detail message. - */ - public JarListException() { - super(); - } - - /** - * Constructs a new JarListException with the specified message. - * @param message the detail message. - */ - public JarListException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/ExecutionResult.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/ExecutionResult.java deleted file mode 100644 index 47b5b7a5e2..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/ExecutionResult.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.execution; - -/** - * Store the result of an {@link IExecution}. - * @param result object type. - * @author Guillaume Sauthier - */ -public class ExecutionResult { - - /** - * Object result of the execution. - */ - private T result; - - /** - * Exception (if any). - */ - private Exception exception; - - /** - * @return the result - */ - public T getResult() { - return result; - } - /** - * @param result the result to set - */ - public void setResult(final T result) { - this.result = result; - } - /** - * @return the exception - */ - public Exception getException() { - return exception; - } - /** - * @param exception the Exception to set - */ - public void setException(final Exception exception) { - this.exception = exception; - } - - /** - * @return true if errors were thrown during the execution. - */ - public boolean hasException() { - return exception != null; - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/IExecution.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/IExecution.java deleted file mode 100644 index 895cc1e500..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/IExecution.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -/** - * - */ -package org.ow2.jonas.lib.execution; - -/** - * Defines a job execution. - * @param returned type - * @author Guillaume Sauthier - */ -public interface IExecution { - - /** - * Execute some user's code. - * @return an Object instance if something has to be - * returned (null otherwise). - * @throws Exception may be thrown by the user code. - */ - T execute() throws Exception; -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/RunnableHelper.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/RunnableHelper.java deleted file mode 100644 index a6da4ee49e..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/execution/RunnableHelper.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.execution; - -import java.security.AccessController; -import java.security.PrivilegedAction; - -/** - * Helps to run blocks of code under a controlled environment. - * @author Guillaume Sauthier - */ -public final class RunnableHelper { - - /** - * Private empty constructor for utility class. - */ - private RunnableHelper() { } - - /** - * Run a code block in the context of a given ClassLoader. - * @param loader The {@link ClassLoader} to be used as TCCL. - * @param exec code block. - * @param execution result type. - * @return the result of this execution. - */ - public static ExecutionResult execute(final ClassLoader loader, - final IExecution exec) { - - ExecutionResult result = new ExecutionResult(); - - // Store the old loader - ClassLoader old = getThreadContextClassLader(); - try { - // Set the new one - Thread.currentThread().setContextClassLoader(loader); - - // Run the code and store the result - result.setResult(exec.execute()); - - } catch (Exception e) { - result.setException(e); - } finally { - // Revert to the previous loader - Thread.currentThread().setContextClassLoader(old); - } - - // return the result holder - return result; - } - - /** - * @return Return the current {@link Thread} context ClassLoader - * (using a priviledged block). - */ - public static ClassLoader getThreadContextClassLader() { - return AccessController.doPrivileged(new PrivilegedAction() { - public ClassLoader run() { - return Thread.currentThread().getContextClassLoader(); - } - }); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/AbsModuleClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/AbsModuleClassLoader.java deleted file mode 100644 index 808b52cd8a..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/AbsModuleClassLoader.java +++ /dev/null @@ -1,196 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.List; -import java.util.Iterator; - -import org.ow2.jonas.lib.loader.factory.URLFactory; -import org.ow2.jonas.lib.loader.locator.Locator; - - -/** - * The AbsModuleClassLoader class is used in JOnAS - * for loading web, ejbjars and client modules. - * - * @author Guillaume Sauthier - */ -public abstract class AbsModuleClassLoader extends URLClassLoader { - - /** factories used to create URLs for URLClassLoader. */ - private URLFactory[] factories; - - /** locators used to search jar/dir for files, directories, ... */ - private Locator[] locators; - - /** bases URLs. */ - private URL[] bases; - - /** - * Create a new AbsModuleClassLoader for a list of URLs. - * - * @param modules the list of URL to be used in the ClassLoader. - * - * @throws IOException when Initialization fails. - */ - public AbsModuleClassLoader(URL[] modules) throws IOException { - super(new URL[0]); - bases = modules; - init(); - } - - /** - * Create a new AbsModuleClassLoader for a list of URLs with a specified parent loader. - * - * @param modules the list of URL to be used in the ClassLoader. - * @param parent the parent ClassLoader to be used. - * - * @throws IOException when Initialization fails. - */ - public AbsModuleClassLoader(URL[] modules, ClassLoader parent) throws IOException { - super(new URL[0], parent); - bases = modules; - init(); - } - - /** - * Base Initialization of the ClassLoader, storage of URL list. - * - * @throws IOException when URL pointed file is not supported (not an jar nor a directory). - */ - protected void init() throws IOException { - factories = new URLFactory[bases.length]; - locators = new Locator[bases.length]; - - // Create factories and locator for each URL - for (int i = 0; i < bases.length; i++) { - - factories[i] = URLFactory.getFactory(bases[i]); - locators[i] = Locator.getLocator(bases[i]); - } - } - - /** - * Add specified location into the repository. - * If location is found in multiple URLs of the bases, new - * URLs will be added multiple times. - * - * @param location an entry name (for a jar) or a path name (for a directory) - * - * @throws IOException when constructed URL is malformed - */ - protected void addInRepository(String location) throws IOException { - // test existence in each base URL - for (int i = 0; i < bases.length; i++) { - if (locators[i].hasDirectory(location) - || locators[i].hasFile(location)) { - addURL(factories[i].getURL(location)); - } - } - } - - /** - * Add specified location childs into the repository. - * Search will be performed on the bases URLs. - * - * @param location an entry name (for a jar) or a path name (for a directory) - * - * @throws IOException When a directory content cannot be explored. - * - * TODO test existence is now done in AbsModuleClassLoader - */ - protected void addContentInRepository(String location) throws IOException { - // test existence in each base URL - for (int i = 0; i < bases.length; i++) { - List list = locators[i].listContent(location); - for (Iterator l = list.iterator(); l.hasNext();) { - // TODO Exclude non jar content ! - addURL(factories[i].getURL((String) l.next())); - } - } - } - - /** - * @return Returns a String representation of the AbsModuleClassLoader - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - - sb.append("classloader : " + getClass().getName() + "\n"); - sb.append("\tmodules bases (not in loader!) : \n"); - for (int i = 0; i < bases.length; i++) { - sb.append("\t\t -" + bases[i] + "\n"); - } - sb.append("\trepositories :\n"); - URL[] rep = getURLs(); - for (int i = 0; i < rep.length; i++) { - sb.append("\t\t -" + rep[i] + "\n"); - } - sb.append("\tparent : " + getParent() + "\n"); - - return sb.toString(); - } - - /** - * @return Returns the bases. - */ - public URL[] getBases() { - return bases; - } - - /** - * @return Returns a String representation of the classpath used by this classloader - */ - public String getClasspath() { - URL[] urls = getURLs(); - StringBuffer cp = new StringBuffer(); - for (int i = 0; i < urls.length; i++) { - String url = urls[i].getFile(); - // do not add URL with !/ inside - if (url.indexOf("!/") == -1) { - cp.append(File.pathSeparator + url); - } - } - if (getParent() instanceof AbsModuleClassLoader) { - AbsModuleClassLoader module = (AbsModuleClassLoader) getParent(); - cp.append(module.getClasspath()); - } - return cp.toString(); - } - - /** - * Appends the specified URL to the list of URLs to search for - * classes and resources. - * @param url the URL to be added to the search path of URLs - */ - public void addURL(URL url) { - super.addURL(url); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ClientClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ClientClassLoader.java deleted file mode 100644 index e271ce7251..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ClientClassLoader.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.IOException; -import java.net.URL; - -/** - * ClassLoader used for loading Client classes and resources - * - * @author Guillaume Sauthier - */ -public class ClientClassLoader extends AbsModuleClassLoader { - - /** classes are located in the module root */ - private static final String CLASSES_DIRECTORY = ""; - - /** WSDL files are located in META-INF/wsdl directory */ - private static final String WSDL_DIRECTORY = "META-INF/wsdl/"; - - /** - * Create a new ClientClassLoader with default parent ClassLoader - * - * @param module an URL of Client files - * - * @throws IOException if creation fails - */ - public ClientClassLoader(final URL module) throws IOException { - super(new URL[]{module}); - } - - /** - * Create a new ClientClassLoader with specified parent ClassLoader - * - * @param module an URL of Client files - * @param parent the parent ClassLoader to use - * - * @throws IOException if creation fails - */ - public ClientClassLoader(final URL module, final ClassLoader parent) throws IOException { - super(new URL[]{module}, parent); - } - - /** - * Create a new ClientClassLoader with specified parent ClassLoader - * - * @param modules an URL[] of Client files + dependencies - * @param parent the parent ClassLoader to use - * - * @throws IOException if creation fails - */ - public ClientClassLoader(final URL[] modules, final ClassLoader parent) throws IOException { - super(modules, parent); - } - - /** - * Add the directory and the content of - * META-INF/wsdl/ in the ClassLoader. - * - * @throws IOException When initialisation fails. - */ - @Override - protected void init() throws IOException { - super.init(); - addInRepository(CLASSES_DIRECTORY); - addInRepository(WSDL_DIRECTORY); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/EjbJarClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/EjbJarClassLoader.java deleted file mode 100644 index c2a382039f..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/EjbJarClassLoader.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.IOException; -import java.net.URL; - -/** - * ClassLoader used for loading EJB classes and resources - * - * @author Guillaume Sauthier - */ -public class EjbJarClassLoader extends AbsModuleClassLoader { - - /** classes are located in the module root */ - private static final String CLASSES_DIRECTORY = ""; - - /** WSDL files are located in META-INF/wsdl directory */ - private static final String WSDL_DIRECTORY = "META-INF/wsdl/"; - - /** - * Create a new EjbJarClassLoader with default parent ClassLoader - * - * @param modules an URL[] of EjbJar files - * - * @throws IOException if creation fails - */ - public EjbJarClassLoader(URL[] modules) throws IOException { - super(modules); - } - - /** - * Create a new EjbJarClassLoader with specified parent ClassLoader - * - * @param modules an URL[] of EjbJar files - * @param parent the parent ClassLoader to use - * - * @throws IOException if creation fails - */ - public EjbJarClassLoader(URL[] modules, ClassLoader parent) throws IOException { - super(modules, parent); - } - - /** - * Add the directory and the content of META-INF/wsdl/ in the ClassLoader - * - * @throws IOException When WEB-INF/classes and WEB-INF/wsdl directories cannot be added - * in loader - */ - protected void init() throws IOException { - super.init(); - addInRepository(CLASSES_DIRECTORY); - addInRepository(WSDL_DIRECTORY); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/FilteringClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/FilteringClassLoader.java deleted file mode 100644 index 3dedcf4c5f..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/FilteringClassLoader.java +++ /dev/null @@ -1,252 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009-2010 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.ow2.jonas.lib.loader.xml.FiltersDefinition; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; -import org.ow2.util.xmlconfig.XMLConfiguration; -import org.ow2.util.xmlconfig.XMLConfigurationException; -import org.ow2.util.xmlconfig.properties.SystemPropertyResolver; - - - -/** - * ClassLoader that allows to filter the classes or resources that are loaded.
    - * It is extending URLClassLoader as for example Tomcat is looking for getURLs() method, etc. - * @author Florent Benoit - */ -public class FilteringClassLoader extends URLClassLoader { - - /** - * Name of the XML file inside modules. - */ - public static final String CLASSLOADER_FILTERING_FILE = "classloader-filtering.xml"; - - /** - * Name of the XML file. - */ - public static final String XML_FILE = "classloader-default-filtering.xml"; - - /** - * Mapping file of the XML file. - */ - public static final String MAPPING_FILE = "classloader-default-filtering-mapping.xml"; - - - /** - * System property for disabling the Filtering. - */ - public static final String DISABLE_FILTERING_PROPERTY_NAME = "jonas-disable-filtering-class-loader"; - - /** - * Logger. - */ - private static Log logger = LogFactory.getLog(FilteringClassLoader.class); - - /** - * If transparent, there will be no filtering (by default: filtering enabled). - */ - private boolean transparent = false; - - /** - * Lock to inhibits any change after the loader has been started. - */ - private boolean started = false; - - /** - * Url of the filtering definition. - */ - private URL definitionUrl; - - /** - * List of default filters. - */ - private List filters = null; - - /** - * Build a new filtering classloader by using the given parent classloader. - * @param parentClassLoader the given parent classloader - */ - public FilteringClassLoader(final ClassLoader parentClassLoader) { - super(new URL[0], parentClassLoader); - } - - public boolean isTransparent() { - return transparent; - } - - public void setTransparent(final boolean transparent) { - if (!started) { - this.transparent = transparent; - } - } - - public URL getDefinitionUrl() { - return definitionUrl; - } - - public void setDefinitionUrl(final URL definitionUrl) { - if (!started) { - this.definitionUrl = definitionUrl; - } - } - - public void start() { - this.started = true; - - // Allow to disable this filtering by the admin - if (!transparent) { - if (Boolean.getBoolean(DISABLE_FILTERING_PROPERTY_NAME)) { - this.transparent = true; - logger.debug("FilteringClassLoader has been disabled."); - } - } - - // Load default filters if option is enabled - if (!transparent && (definitionUrl != null)) { - loadFilters(); - } - } - - /** - * Load the default filters. - */ - private void loadFilters() { - - // Parse with XML config - XMLConfiguration xmlConfiguration = new XMLConfiguration(MAPPING_FILE); - - // Set the source configuration(s) - xmlConfiguration.addConfigurationFile(definitionUrl); - - // Resolve properties as system properties - xmlConfiguration.setPropertyResolver(new SystemPropertyResolver()); - - // Use a map for some properties - Map contextualInstances = new HashMap(); - - // Sets the contextual instances - xmlConfiguration.setContextualInstances(contextualInstances); - - // Start configuration of this object - ClassLoader old = Thread.currentThread().getContextClassLoader(); - try { - Thread.currentThread().setContextClassLoader(FilteringClassLoader.class.getClassLoader()); - xmlConfiguration.configure(this); - } catch (XMLConfigurationException e) { - throw new IllegalArgumentException("Cannot configure the Filters inside the Filtering Classloader", e); - } finally { - Thread.currentThread().setContextClassLoader(old); - } - } - - /** - * Loads the class if it is not filtered. - * @param name the name of the class. - * @param resolve if true, resolve the class - * @return The resulting Class object - * @throws ClassNotFoundException If the class was not found or if it is - * filtered - */ - @Override - public Class loadClass(final String name, final boolean resolve) throws ClassNotFoundException { - - // If the class filtering is enabled and that the class is filtered, throws a CNFE exception - if (isFiltered(name)) { - throw new ClassNotFoundException("The class '" + name - + "' is a filtered class so it cannot be found in the Application Server classloader." - + " The class should be added into the application classloader."); - } - - return super.loadClass(name, resolve); - } - - /** - * Find the given resource specified by its name. - * @param name the resource name - * @return the URL if the resource has been found, else null - */ - @Override - public URL getResource(final String name) { - // If the resource filtering is enabled and that the resource is filtered, return null - if (isFiltered(name)) { - logger.debug("The resource ''{0}'' has been asked but as it is a filtered resource, return null", name); - return null; - } - - return super.getResource(name); - } - - /** - * Detects if the given class/resource should be filtered or not. - * @param name the name of the class - * @return true if it should be filtered, else false - */ - protected boolean isFiltered(final String name) { - if (transparent || name == null || filters == null) { - return false; - } - - // Finding a matching pattern - for (String pattern : filters) { - if (name.matches(pattern)) { - return true; - } - } - - // Not filtered ! - return false; - } - - /** - * @return a cloned filter list (so that it cannot be changed after the start-up). - */ - public List getFilters() { - List clone = new ArrayList(); - if (filters != null) { - clone.addAll(filters); - } - return clone; - } - - /** - * Sets the filters definition element. - * @param filters the filters definition element. - */ - public void setFiltersDefinition(final FiltersDefinition filters) { - this.filters = filters.getFilters(); - } - - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/OSGiClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/OSGiClassLoader.java deleted file mode 100644 index 07024a0bb9..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/OSGiClassLoader.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.InputStream; -import java.net.URL; -import java.net.URLClassLoader; - -/** - * {@link OSGiClassLoader} delegates class loading to the OSGi framework. - * @author Francois Fornaciari - */ -public class OSGiClassLoader extends URLClassLoader { - - /** - * This bundle's Bundle ClassLoader. - */ - private ClassLoader classLoader = null; - - /** - * Construct a new delegating ClassLoader. - */ - public OSGiClassLoader() { - super(new URL[0]); - this.classLoader = getClass().getClassLoader(); - } - - /** - * {@inheritDoc} - * @see java.lang.ClassLoader#loadClass(java.lang.String) - */ - @Override - public Class loadClass(final String name) throws ClassNotFoundException { - return classLoader.loadClass(name); - } - - /** - * {@inheritDoc} - * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean) - */ - @Override - public Class loadClass(final String name, final boolean flag) throws ClassNotFoundException { - return loadClass(name); - } - - /** - * {@inheritDoc} - * @see java.lang.ClassLoader#getResource(java.lang.String) - */ - @Override - public URL getResource(final String name) { - // First look if OSGi can find the resource we want - URL resource = null; - try { - resource = classLoader.getResource(name); - } catch (IllegalArgumentException e) { - // Fall-back: if not found, try the usual getResource() search mechanism. - // This will let our services to access properties file that are in JB/conf - try { - resource = super.getResource(name); - } catch (IllegalArgumentException e2) { - return resource; - } - - } - if (resource == null ) { - resource = super.getResource(name); - } - // Finally return the resource (may be null) - return resource; - } - - /** - * {@inheritDoc} - * @see java.lang.ClassLoader#getResourceAsStream(java.lang.String) - */ - @Override - public InputStream getResourceAsStream(final String name) { - // First look if OSGi can find the resource we want - InputStream is = classLoader.getResourceAsStream(name); - - // Fall-back: if not found, try the usual getResourceAsStream() search mechanism. - // This will let our services to access properties file that are in JB/conf - if (is == null) { - is = super.getResourceAsStream(name); - } - - // Finally return the resource (may be null) - return is; - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/SimpleWebappClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/SimpleWebappClassLoader.java deleted file mode 100644 index 14a217f4dc..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/SimpleWebappClassLoader.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.IOException; -import java.net.URL; - -/** - * ClassLoader specialized for WebApps. It add only the WEB-INF/wsdl/ directory - * of the war in the URL repository. Used because Catalina doesn't automatically - * add this resources in its own ClassLoader - * - * @author Guillaume Sauthier - */ -public class SimpleWebappClassLoader extends AbsModuleClassLoader { - - /** WSDL directory in a Web module */ - private static final String WSDL_DIRECTORY = "WEB-INF/wsdl/"; - - /** - * Create a new SimpleWebappClassLoader with default parent ClassLoader - * - * @param module an URL of Web file - * - * @throws IOException if creation fails - */ - public SimpleWebappClassLoader(URL module) throws IOException { - super(new URL[] {module}); - } - - /** - * Create a new SimpleWebappClassLoader with specified parent ClassLoader - * - * @param module an URL of Web file - * @param parent the parent ClassLoader - * - * @throws IOException if creation fails - */ - public SimpleWebappClassLoader(URL module, ClassLoader parent) throws IOException { - super(new URL[] {module}, parent); - } - - /** - * Add the WEB-INF/wsdl/ directory in the ClassLoader. - * - * @throws IOException if META-INF/wsdl and ejb-jar root directories cannot - * be inserted in loader - */ - protected void init() throws IOException { - super.init(); - addInRepository(WSDL_DIRECTORY); - addInRepository(""); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ThreadContextClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ThreadContextClassLoader.java deleted file mode 100644 index 7233f354c6..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/ThreadContextClassLoader.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.loader; - -import java.io.InputStream; -import java.net.URL; - -/** - * Delegate all call to the Thread context ClassLoader. - * @author Guillaume Sauthier - */ -public class ThreadContextClassLoader extends ClassLoader { - - /** - * - */ - public ThreadContextClassLoader() { - super(); - } - - /** - * @see java.lang.ClassLoader#clearAssertionStatus() - */ - public synchronized void clearAssertionStatus() { - getContextClassLoader().clearAssertionStatus(); - } - - /** - * @see java.lang.ClassLoader#getResource(java.lang.String) - */ - public URL getResource(String name) { - return getContextClassLoader().getResource(name); - } - - /** - * @see java.lang.ClassLoader#getResourceAsStream(java.lang.String) - */ - public InputStream getResourceAsStream(String name) { - return getContextClassLoader().getResourceAsStream(name); - } - - /** - * @see java.lang.ClassLoader#loadClass(java.lang.String) - */ - public Class loadClass(String name) throws ClassNotFoundException { - return getContextClassLoader().loadClass(name); - } - - /** - * @see java.lang.ClassLoader#setClassAssertionStatus(java.lang.String, - * boolean) - */ - public synchronized void setClassAssertionStatus(String className, boolean enabled) { - getContextClassLoader().setClassAssertionStatus(className, enabled); - } - - /** - * @see java.lang.ClassLoader#setDefaultAssertionStatus(boolean) - */ - public synchronized void setDefaultAssertionStatus(boolean enabled) { - getContextClassLoader().setDefaultAssertionStatus(enabled); - } - - /** - * @see java.lang.ClassLoader#setPackageAssertionStatus(java.lang.String, - * boolean) - */ - public synchronized void setPackageAssertionStatus(String packageName, boolean enabled) { - getContextClassLoader().setPackageAssertionStatus(packageName, enabled); - } - - /** - * @return Thread context ClassLoader - */ - private ClassLoader getContextClassLoader() { - return Thread.currentThread().getContextClassLoader(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/WebappClassLoader.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/WebappClassLoader.java deleted file mode 100644 index 0daf0f33c1..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/WebappClassLoader.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2003-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader; - -import java.io.IOException; -import java.net.URL; - -/** - * ClassLoader specialized for WebApps. It add the WEB-INF/wsdl/ directory - * of the war in the URL repository, the base URL of the jar file and the - * WEB-INF/classes/ directory. - * Used in WsGen. - * - * @author Guillaume Sauthier - */ -public class WebappClassLoader extends SimpleWebappClassLoader { - - /** Classes directory entry name in Web module */ - private static final String CLASSES_DIRECTORY = "WEB-INF/classes/"; - - /** Libraries directory entry name in Web module */ - private static final String LIB_DIRECTORY = "WEB-INF/lib/"; - - /** - * Create a new WebappClassLoader with default parent ClassLoader - * - * @param module an URL of Web file - * - * @throws IOException if creation fails - */ - public WebappClassLoader(URL module) throws IOException { - super(module); - } - - /** - * Create a new WebappClassLoader with specified parent ClassLoader - * - * @param module an URL of Web file - * @param parent the parent ClasLoader - * - * @throws IOException if creation fails - */ - public WebappClassLoader(URL module, ClassLoader parent) throws IOException { - super(module, parent); - } - - /** - * Add the WEB-INF/classes/ directory and the content of - * WEB-INF/lib/ in the ClassLoader - * - * @throws IOException if cannot add in repository specified paths - */ - protected void init() throws IOException { - super.init(); - addInRepository(CLASSES_DIRECTORY); - addContentInRepository(LIB_DIRECTORY); - } - - /** - * @return Returns the Base URL for this ClassLoader - */ - public URL getBaseURL() { - return getBases()[0]; - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/DirURLFactory.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/DirURLFactory.java deleted file mode 100644 index a3a880ac87..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/DirURLFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader.factory; - -import java.net.URL; -import java.io.IOException; - -/** - * A DirURLFactory is used to create URLs - * from an URL (pointing to a directory) and paths. - * Example :
    - * base : file:/path/
    - * path : META-INF/directory/
    - * results : file:/path/META-INF/directory/
    - * - * @author Guillaume Sauthier - */ -public class DirURLFactory extends URLFactory { - - /** the base URL */ - private URL base; - - /** - * Create a new DirURLFactory using the specified base URL. - * - * @param url the base url. (must be a directory) - */ - public DirURLFactory(URL url) { - base = url; - } - - /** - * Returns a new URL basically adding path to the base URL. - * - * @param path the path to add to the URL. (must not start with "/") - * - * @return a new URL of the form . - * - * @throws IOException when created URL is invalid. - */ - public URL getURL(String path) throws IOException { - return new URL(base + path); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/JarURLFactory.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/JarURLFactory.java deleted file mode 100644 index 6d62af2524..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/JarURLFactory.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader.factory; - -import java.net.URL; -import java.io.IOException; - -/** - * A JarURLFactory is used to create URLs - * from a JarURL (jar:XXX) and paths. - * Example :
    - * base : file:lib.jar
    - * path : META-INF/directory/
    - * results : jar:file:lib.jar!/META-INF/directory/
    - * - * @author Guillaume Sauthier - */ -public class JarURLFactory extends URLFactory { - - /** the base URL */ - private URL base; - - /** Jar URl prefix */ - private static final String JAR = "jar:"; - - /** - * Jar URL separator - */ - private static final String SEP = "!/"; - - /** - * Create a new JarURLFactory using the specified base URL. - * - * @param url the base url. (must be a Jar archive) - */ - public JarURLFactory(URL url) { - base = url; - } - - /** - * Returns a new URL basically adding path to the base URL. - * returns the base URL when "" is used as parameter. - * - * @param path the path to add to the URL. (must not start with "/") - * - * @return a new URL of the form jar:!/. - * - * @throws IOException when created URL is invalid. - */ - public URL getURL(String path) throws IOException { - if (path.equals("")) { - return base; - } else { - return new URL(JAR + base + SEP + path); - } - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/URLFactory.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/URLFactory.java deleted file mode 100644 index 61c7c2c51a..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/factory/URLFactory.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader.factory; - -import java.net.URL; -import java.io.IOException; - -/** - * An URLFactory is used to create a URL from a base URL. - * - * @author Guillaume Sauthier - */ -public abstract class URLFactory { - - /** - * Returns a new URL basically adding path to the base URL. - * - * @param path the path to add to the URL. - * - * @return a new URL. - * - * @throws IOException when created URL is invalid. - */ - public abstract URL getURL(String path) throws IOException; - - /** - * Return a new URLFactory in function of the URL type. - * an URL pointing to a jar file will return a JarURLFactory - * and an URL pointing to a directory file will return a DirURLFactory. - * - * @param url the base URL - * - * @return a new URLFactory in function of the URL type. - * - * @throws IOException when cannot find a specialized factory for the given URL. - */ - public static URLFactory getFactory(URL url) throws IOException { - - String path = url.getPath(); - if (path.matches(".*\\..ar")) { - // jar detected if path ends with .?ar (*.jar, *.war, *.ear) - return new JarURLFactory(url); - } else if (path.endsWith("/")) { - // directory detected if url ends with a separator / - return new DirURLFactory(url); - } else { - String err = "Unsupported URL '" + url + "' support " - + "only jar archive and directory"; - throw new IOException(err); - } - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/DirLocator.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/DirLocator.java deleted file mode 100644 index 3180771953..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/DirLocator.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.loader.locator; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.List; -import java.util.Vector; - -import org.ow2.util.url.URLUtils; - -/** - * A DirLocator is used to look up for a file - * inside a directory. - * - * @author Guillaume Sauthier - */ -public class DirLocator extends Locator { - - /** - * Wrapped File where search will be performed. - */ - private File file = null; - - /** - * Construct a new DirLocator from an URL pointing to a directory. - * - * @param jar URL pointing to a directory. - * - * @throws IOException When - */ - public DirLocator(final URL jar) throws IOException { - this.file = URLUtils.urlToFile(jar); - - if (!file.exists()) { - throw new IOException("File " + file + " does not exists."); - } - if (!file.isDirectory()) { - throw new IOException("File " + file + " is not a directory."); - } - } - - /** - * Returns true when file was found. - * - * @param path the path to the file to look up - * - * @return true when file was found, otherwise false. - */ - @Override - public boolean hasFile(final String path) { - - File child = new File(file, path); - return (child.exists() && child.isFile()); - } - - /** - * Returns true when directory was found. - * - * @param path the path to the directory to look up - * - * @return true when directory was found, otherwise false. - */ - @Override - public boolean hasDirectory(final String path) { - - File child = new File(file, path); - return (child.exists() && child.isDirectory()); - } - - /** - * Returns a list of filename stored in path. - * - * @param path the path to the directory where looking for files - * - * @return a list of filename stored in path. - */ - @Override - public List listContent(final String path) { - - File child = new File(file, path); - List libs = new Vector(); - // List directory content - if (child.isDirectory()) { - addContent(child, libs); - } - - return libs; - } - - /** - * Add only files in the given List. - * Recursive! - * - * @param f base directory to explore - * @param l file list to be filled - */ - private void addContent(final File f, final List l) { - File[] childs = f.listFiles(); - if (childs != null) { - for (int i = 0; i < childs.length; i++) { - if (childs[i].isDirectory()) { - addContent(childs[i], l); - } else if (childs[i].isFile()) { - l.add(childs[i].getPath().substring(file.getPath().length())); - } - } - } - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/JarFileLocator.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/JarFileLocator.java deleted file mode 100644 index 813c6f424e..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/JarFileLocator.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.loader.locator; - -import java.io.IOException; -import java.net.URL; -import java.util.Enumeration; -import java.util.List; -import java.util.Vector; -import java.util.jar.JarFile; -import java.util.zip.ZipEntry; - -/** - * A JarfileLocator is used to look up for a file inside a Jar - * archive. Works only for local jars. - * - * @author Guillaume Sauthier - */ -public class JarFileLocator extends Locator { - - /** - * Wrapped JarFile where searches will be performed. - */ - private JarFile file = null; - - /** - * Construct a new JarFileLocator from an URL representing a Jar. - * - * @param jar URL pointing to a Jar file - * - * @throws IOException When URL is not a JarFile. - */ - public JarFileLocator(final URL jar) throws IOException { - String filename = jar.getFile(); - file = new JarFile(filename); - } - - /** - * Returns true when file was found. - * - * @param path the path to the file to look up - * - * @return true when file was found, otherwise false. - */ - @Override - public boolean hasFile(final String path) { - - ZipEntry entry = file.getEntry(path); - return (entry != null); - } - - /** - * Returns true when directory was found. - * - * @param path the path to the directory to look up - * - * @return true when directory was found, otherwise false. - */ - @Override - public boolean hasDirectory(final String path) { - - boolean found = false; - for (Enumeration e = file.entries(); e.hasMoreElements() && !found;) { - ZipEntry entry = (ZipEntry) e.nextElement(); - if (entry.getName().startsWith(path)) { - return true; - } - } - - return false; - } - - /** - * Returns a list of filename stored in path. - * - * @param path the path to the directory where looking for files - * - * @return a list of filename stored in path. - */ - @Override - public List listContent(final String path) { - - List libs = new Vector(); - for (Enumeration e = file.entries(); e.hasMoreElements();) { - ZipEntry entry = (ZipEntry) e.nextElement(); - if (entry.getName().startsWith(path)) { - libs.add(entry.getName()); - } - } - - return libs; - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/Locator.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/Locator.java deleted file mode 100644 index 99de059b2d..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/locator/Locator.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume SAUTHIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader.locator; - -import java.io.IOException; -import java.net.URL; -import java.util.List; - -/** - * A Locator is used to hide System specific - * when looking for a file. - * - * @author Guillaume Sauthier - */ -public abstract class Locator { - - /** - * Returns true when file was found. - * - * @param path the path to the file to look up - * - * @return true when file was found, otherwise false. - */ - public abstract boolean hasFile(String path); - - /** - * Returns true when directory was found. - * - * @param path the path to the directory to look up - * - * @return true when directory was found, otherwise false. - */ - public abstract boolean hasDirectory(String path); - - /** - * Returns a list of filename stored in path. - * - * @param path the path to the directory where looking for files - * - * @return a list of filename stored in path. - */ - public abstract List listContent(String path); - - /** - * Return a new Locator in function of the URL type. - * an URL pointing to a jar file will return a JarFileLocator - * and an URL pointing to a directory file will return a DirFileLocator. - * - * @param url the base URL - * - * @return a new Locator in function of the URL type. - * - * @throws IOException when cannot find a specialized locator for the given URL. - */ - public static Locator getLocator(URL url) throws IOException { - - String path = url.getPath(); - if (path.matches(".*\\..ar")) { - // jar detected if path ends with .?ar (*.jar, *.war, *.ear) - return new JarFileLocator(url); - } else if (path.endsWith("/")) { - // directory detected if url ends with a separator / - return new DirLocator(url); - } else { - String err = "Unsupported URL '" + url + "' support " - + "only jar archive and directory"; - throw new IOException(err); - } - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/xml/FiltersDefinition.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/xml/FiltersDefinition.java deleted file mode 100644 index 5095fe26d3..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/loader/xml/FiltersDefinition.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.loader.xml; - -import java.util.ArrayList; -import java.util.List; - -/** - * A {@code FiltersDefinition} is the XML representation of the {@code <filters>} (or - * {@code <default-filters>}) elements.
    - * It defines a set of filter name. - * @author Florent Benoit - * - */ -public class FiltersDefinition { - - /** - * List of filters. - */ - private List filters = new ArrayList(); - - /** - * @return list of filters. - */ - public List getFilters() { - return filters; - } - - /** - * Sets the list of filters. - * @param filters the given value - */ - public void setFilters(final List filters) { - this.filters = filters; - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/service/AbsServiceImpl.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/service/AbsServiceImpl.java deleted file mode 100644 index f1ed7c83d2..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/service/AbsServiceImpl.java +++ /dev/null @@ -1,227 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.service; - -import java.util.ArrayList; -import java.util.List; - -import javax.naming.Context; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.lib.util.Log; -import org.ow2.jonas.properties.ServerProperties; -import org.ow2.jonas.service.Service; -import org.ow2.jonas.service.ServiceException; - -import org.ow2.jonas.lib.management.javaee.ManagedObject; -/** - * Abstract implementation of a {@link Service}. - */ -public abstract class AbsServiceImpl extends ManagedObject implements Service { - - /** - * Logger. - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.service"); - - /** - * service name. - */ - private String name = null; - - /** - * service status. - */ - private boolean started = false; - - /** - * Server Properties. - */ - private ServerProperties serverProps; - - /** - * Initialize the service. - * @param ctx configuration of the service - * @throws ServiceException service initialization failed - */ - public void init(final Context ctx) throws ServiceException { - // Only call doInit(Context) for old fashioned services - this.doInit(ctx); - } - - /** - * Get the Server Properties. - */ - public ServerProperties getServerProperties() { - return this.serverProps; - } - - /** - * Set the Server Properties. - * @param props {@link ServerProperties} instance - */ - public void setServerProperties(final ServerProperties props) { - this.serverProps = props; - } - - /** - * Start the service. - * @throws ServiceException service start-up failed - */ - public void start() throws ServiceException { - this.doStart(); - this.started = true; - } - - /** - * Stop the service. - * @throws ServiceException service stopping failed - */ - public void stop() throws ServiceException { - if (this.isStarted()) { - this.doStop(); - this.started = false; - } - } - - /** - * Returns true if the service is started, false otherwise. - * @return true if the service is started - */ - public boolean isStarted() { - return this.started; - } - - /** - * Returns the service's name. - * @return the service name - */ - public String getName() { - return this.name; - } - - /** - * Set the service's name. - * @param name the name to set - */ - public void setName(final String name) { - this.name = name; - } - - /** - * Return the domain's name of this service. - * @return the domain name - */ - public String getDomainName() { - return serverProps.getDomainName(); - } - - /** - * Return the JOnAS server's name of this service. - * @return the server name - */ - public String getJonasServerName() { - return serverProps.getServerName(); - } - - /** - * Default initialization method to be overridden by sub-classes. - * @param ctx configuration of the service - * @throws ServiceException service initialization failed - * @deprecated - */ - @Deprecated - protected void doInit(final Context ctx) throws ServiceException { - logger.log(BasicLevel.WARN, "Deprecated initialization method. New services must have setters."); - } - - /** - * Abstract start-up method to be implemented by sub-classes. - * @throws ServiceException service start-up failed - */ - protected abstract void doStart() throws ServiceException; - - /** - * Abstract method for service stopping to be implemented by sub-classes. - * @throws ServiceException service stopping failed - */ - protected abstract void doStop() throws ServiceException; - - /** - * @return a String representation of a given Service. - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return this.getClass().getSimpleName() + "[name:" + getName() + ", started:" + isStarted() + "]"; - } - - /** - * Utility Exception throwing method to identify the error source. - * @param message Descriptive requirement message. - * @throws ServiceException always. - */ - protected void throwRequirementException(final String message) throws ServiceException { - StringBuilder sb = new StringBuilder(); - sb.append("Service: '" + getName() + "' requires: "); - sb.append(message); - throw new ServiceException(sb.toString()); - } - - /** - * Utility method to convert a given String of comma-separated elements to a List. - * @param value String value - * @return List constructed from the given String - */ - protected static List convertToList(final String value) { - // only handle String list - // separator is the ',' - String[] values = value.split(","); - List injection = new ArrayList(); - - // We should have at least 1 real value - if (!((values.length == 1) && ("".equals(values[0])))) { - for (int i = 0; i < values.length; i++) { - String part = values[i]; - injection.add(part.trim()); - } - } - return injection; - } - - /** - * Value used as sequence number by reconfiguration notifications. - */ - private long sequenceNumber; - - /** - * Return a sequence number and increase this number. - * @return a sequence number - */ - public long getSequenceNumber() { - return ++sequenceNumber; - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Base64.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Base64.java deleted file mode 100644 index ca8251f45b..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Base64.java +++ /dev/null @@ -1,194 +0,0 @@ -/** - * Base64 - encode/decode data using the Base64 encoding scheme - * Copyright (c) 1998 by Kevin Kelley - * Contact: Kevin Kelley - * 30718 Rd. 28, La Junta, CO, 81050 USA. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - */ - -package org.ow2.jonas.lib.util; - -/** - * Provides encoding of raw bytes to base64-encoded characters, and - * decoding of base64 characters to raw bytes. - * - * @author Kevin Kelley (kelley@ruralnet.net) - * @version 1.3 - * @date 06 August 1998 - * @modified 14 February 2000 - * @modified 22 September 2000 - */ -public class Base64 { - - /** - * Default empty constructor for utility class. - */ - private Base64() {} - - /** - * code characters for values 0..63. - */ - private static char[] alphabet = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - .toCharArray(); - - /** - * lookup table for converting base64 characters to value in range 0..63. - */ - private static byte[] codes = new byte[256]; - - static { - for (int i = 0; i < 256; i++) { - codes[i] = -1; - } - for (int i = 'A'; i <= 'Z'; i++) { - codes[i] = (byte) (i - 'A'); - } - for (int i = 'a'; i <= 'z'; i++) { - codes[i] = (byte) (26 + i - 'a'); - } - for (int i = '0'; i <= '9'; i++) { - codes[i] = (byte) (52 + i - '0'); - } - codes['+'] = 62; - codes['/'] = 63; - } - - - - /** - * returns an array of base64-encoded characters to represent the - * passed data array. - * - * @param data the array of bytes to encode - * @return base64-coded character array. - */ - public static char[] encode(final byte[] data) { - char[] out = new char[((data.length + 2) / 3) * 4]; - - // - // 3 bytes encode to 4 chars. Output is always an even - // multiple of 4 characters. - // - for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { - boolean quad = false; - boolean trip = false; - - int val = (0xFF & (int) data[i]); - val <<= 8; - if ((i + 1) < data.length) { - val |= (0xFF & (int) data[i + 1]); - trip = true; - } - val <<= 8; - if ((i + 2) < data.length) { - val |= (0xFF & (int) data[i + 2]); - quad = true; - } - out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 1] = alphabet[val & 0x3F]; - val >>= 6; - out[index + 0] = alphabet[val & 0x3F]; - } - return out; - } - - /** - * Decodes a BASE-64 encoded stream to recover the original - * data. White space before and after will be trimmed away, - * but no other manipulation of the input will be performed. - * - * As of version 1.2 this method will properly handle input - * containing junk characters (newlines and the like) rather - * than throwing an error. It does this by pre-parsing the - * input and generating from that a count of VALID input - * characters. - * @param data BASE-64 encoded stream - * @return original data - **/ - public static byte[] decode(final char[] data) { - // as our input could contain non-BASE64 data (newlines, - // whitespace of any sort, whatever) we must first adjust - // our count of USABLE data so that... - // (a) we don't misallocate the output array, and - // (b) think that we miscalculated our data length - // just because of extraneous throw-away junk - - int tempLen = data.length; - for (int ix = 0; ix < data.length; ix++) { - if ((data[ix] > 255) || codes[ data[ix] ] < 0) { - --tempLen; // ignore non-valid chars and padding - } - } - // calculate required length: - // -- 3 bytes for every 4 valid base64 chars - // -- plus 2 bytes if there are 3 extra base64 chars, - // or plus 1 byte if there are 2 extra. - - int len = (tempLen / 4) * 3; - if ((tempLen % 4) == 3) { - len += 2; - } - if ((tempLen % 4) == 2) { - len += 1; - } - - byte[] out = new byte[len]; - - - - int shift = 0; // # of excess bits stored in accum - int accum = 0; // excess bits - int index = 0; - - // we now go through the entire array (NOT using the 'tempLen' value) - for (int ix = 0; ix < data.length; ix++) { - int value = (data[ix] > 255) ? -1 : codes[ data[ix] ]; - - if (value >= 0) { // skip over non-code - accum <<= 6; // bits shift up by 6 each time thru - shift += 6; // loop, with new bits being put in - accum |= value; // at the bottom. - if (shift >= 8) { // whenever there are 8 or more shifted in, - shift -= 8; // write them out (from the top, leaving any - out[index++] = // excess at the bottom for next iteration. - (byte) ((accum >> shift) & 0xff); - } - } - // we will also have skipped processing a padding null byte ('=') here; - // these are used ONLY for padding to an even length and do not legally - // occur as encoded data. for this reason we can ignore the fact that - // no index++ operation occurs in that special case: the out[] array is - // initialized to all-zero bytes to start with and that works to our - // advantage in this combination. - } - - // if there is STILL something wrong we just have to throw up now! - if (index != out.length) { - throw new Error("Miscalculated data length (wrote " + index + " instead of " + out.length + ")"); - } - - return out; - } - - - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/BeanNaming.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/BeanNaming.java deleted file mode 100644 index 911de16f51..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/BeanNaming.java +++ /dev/null @@ -1,180 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.lang.reflect.Method; -import java.util.StringTokenizer; - -import javax.security.jacc.EJBMethodPermission; - -/** - * This class is made for hiding Naming convention in all JOnAS framework.
    - * (Among other things, names of the implementation classes of the Enterprise - * Bean's Home and Enterprise Bean Remote interfaces generated by the GenIC - * tools.)
    - * It is used by the EJB generation tools and framework - * - * @author Helene Joanin - * @author Joe Gittings has proposed to code method signature in order to avoid same signature for inherited methods - * @author Christophe Ney [cney@batisseurs.com] - * @author Sebastien Chassande-Barrioz - */ -public class BeanNaming { - - /** - * returns the name of the package of the given full name - */ - public static String getPackageName(String name) { - if (name == null) { return null; } - int idx = name.lastIndexOf('.'); - return (idx == -1 ? "" : name.substring(0, idx)); - } - - /** - * return full name of a class for given package and class names - * - * @param packageName - * possibly empty package name - * @param name - * class name - * @return fully qualified class name - */ - public static String getClassName(String packageName, String name) { - return (packageName.length() == 0) ? name : packageName + "." + name; - } - - /** - * returns the basename of the given full name - */ - public static String getBaseName(String fullName) { - String baseName = null; - if (fullName != null) { - int idx = fullName.lastIndexOf('.'); - int len = fullName.length(); - if (idx == -1) { - baseName = fullName; - } else { - if (idx != (len - 1)) { - baseName = fullName.substring(idx + 1, len); - } else { - baseName = ""; - } - } - } - return baseName; - } - - /** - * returns the full path of the file name. mainly replace '.' by '/'. - */ - public static String getPath(String fullName) { - String pkg = new String(); - StringTokenizer stk = new StringTokenizer(fullName, "."); - int nb = stk.countTokens(); - for (int i = 0; i < nb; i++) { - pkg = pkg.concat(stk.nextToken()); - if (i < nb - 1) { - pkg = pkg + File.separatorChar; - } - } - return pkg; - } - - /** - * returns the given string with the first character converted to upper case - */ - public static String firstToUpperCase(String s) { - String value; - if (s.length() > 0) { - char c = Character.toUpperCase(s.charAt(0)); - value = new String(c + s.substring(1)); - } else { - value = new String(); - } - return (value); - } - - /** - * returns the name of the JOnAS specific deployment descriptor file's name - * corresponding to the given standard deployment descriptor file's name. - * (ex: returns "jonas-XXX.xml" for "XXX.xml" and "../../jonas-XXX.xml" for - * "../../XXX.xml") - */ - public static String getJonasXmlName(String stdXmlName) { - - String jonasXmlName = new String(); - File f = new File(stdXmlName); - String p = f.getParent(); - String n = f.getName(); - if (p != null) { - jonasXmlName = jonasXmlName.concat(p); - jonasXmlName = jonasXmlName.concat(File.separator); - } - jonasXmlName = jonasXmlName.concat("jonas-"); - jonasXmlName = jonasXmlName.concat(n); - - return (jonasXmlName); - } - - /** - * returns the name of the parent directory - */ - public static String getParentName(String fileName) { - File f = new File(fileName); - return f.getParent(); - } - - /** - * Gets a string that represents the signature of a method - * - * @param ejbName - * name of the ejb - * @param method - * Method on which the signature is required - * @return string that represents the signature of a method - */ - public static String getSignature(String ejbName, Method method) { - - Class clazz = method.getDeclaringClass(); - String methItf = ""; - - if (javax.ejb.EJBHome.class.isAssignableFrom(clazz)) { - methItf = "Home"; - } else if (javax.ejb.EJBObject.class.isAssignableFrom(clazz)) { - methItf = "Remote"; - } else if (javax.ejb.EJBLocalHome.class.isAssignableFrom(clazz)) { - methItf = "LocalHome"; - } else if (javax.ejb.EJBLocalObject.class.isAssignableFrom(clazz)) { - methItf = "Local"; - } else if (java.rmi.Remote.class.isAssignableFrom(clazz)) { - methItf = "ServiceEndpoint"; - } - - return new EJBMethodPermission(ejbName, methItf, method).getActions(); - } -} - diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Cmd.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Cmd.java deleted file mode 100644 index 13951671a0..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Cmd.java +++ /dev/null @@ -1,306 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.PrintStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * This class allows to run a command in sub-process. - * @author Helene Joanin : Initial developer - * @author Christophe Ney : Fix to handle arguments containing white spaces. - * @author Nozomi Matsumura : GenIC i18n problem. GenIC invoke javac and javac's output has non asc-ii characters, - * javac's output did not show collectly. - * @author Guillaume Tulloup : Invoke directly the com.sun.tools.javac.Main.compile() method to work around a limitation on Windows. - * (See bug #100587) - * @author Helene Joanin : Invoke directly the com.sun.tools.rmic.Main.compile() method to work around a limitation on Windows. - */ - -public class Cmd { - - /** - * Class name of the sun javac compiler - */ - private static final String COMPILER_CLASS_NAME = "com.sun.tools.javac.Main"; - /** - * Class name of the sun rmic compiler - */ - private static final String RMICOMPILER_CLASS_NAME = "sun.rmi.rmic.Main"; - - /** - * Command arguments list (included the command name) - */ - private Vector mCmd = new Vector(); - - /** - * Command environment variables - */ - private String[] mEnv = null; - - /** - * Invoke (or not) the compile method of the corresponding sun compiler class - */ - private boolean tryToInvoke = false; - - /** - * The Common Logger. - */ - private static final Logger logger = Log.getLogger("org.ow2.jonas.cmd"); - - /** - * Construtor method of Cmd class. - * @param cmd command - * @param invoke try to invoke directly the method of the java class of the - * command - */ - public Cmd(final String cmd, final boolean invoke) { - mCmd.addElement(cmd); - tryToInvoke = invoke; - } - - /** - * Construtor method of Cmd class. Equivalent to Cmd(cmd, false). - * @param cmd command - */ - public Cmd(final String cmd) { - this(cmd, false); - } - - /** - * Construtor method of Cmd class. - * @param cmd command - * @param env environment of the command - * @param invoke invoke the compile method of the class instead of execute the command - */ - public Cmd(final String cmd, final String[] env, final boolean invoke) { - this(cmd, invoke); - mEnv = env; - } - - /** - * Add a new argument to the command. - * @param arg argument added to the tail of the command argument list - */ - public void addArgument(final String arg) { - mCmd.addElement(arg); - } - - /** - * Add a new argument to the command. - * @param args argument added to the tail of the command argument list - */ - public void addArguments(final List args) { - for (Iterator it = args.iterator(); it.hasNext();) { - mCmd.addElement(it.next()); - } - } - - /** - * Execute the command. (In case of the exit value of the command is not 0, - * the output and error streams of the command is traced.) - * @return false if the command cannot be executed, or if its exit value is - * not 0. - */ - public boolean run() { - - if (tryToInvoke) { - File toolsJar = new File(System.getProperty("java.home") + File.separator + "lib" + File.separator + "tools.jar"); - if (toolsJar.exists()) { - ClassLoader classLoader = getClass().getClassLoader(); - try { - classLoader = new URLClassLoader(new URL[]{toolsJar.toURL()}, classLoader); - } catch (MalformedURLException e) { - logger.log(BasicLevel.WARN, "The tools.jar file was not found in "+ toolsJar.getParent() + "."); - } - - if ((((String) mCmd.get(0)).endsWith("javac"))) { - // Bug #100587 fixed to work around a limitation on Windows - return compile(classLoader); - } - if ((((String) mCmd.get(0)).endsWith("rmic"))) { - return rmicompile(classLoader); - } - } - } - - RunnableStreamListener out, err; - Process proc = null; - boolean val = true; - try { - String[] cmd = new String[mCmd.size()]; - mCmd.copyInto(cmd); - proc = Runtime.getRuntime().exec(cmd, mEnv); - } catch (IOException e) { - logger.log(BasicLevel.ERROR, "exception", e); - return (false); - } - out = new RunnableStreamListener(new BufferedReader(new InputStreamReader(proc.getInputStream())), System.out); - new Thread(out, "stdout listener for " + this.toString()).start(); - err = new RunnableStreamListener(new BufferedReader(new InputStreamReader(proc.getErrorStream())), System.err); - new Thread(err, "stderr listener for " + this.toString()).start(); - try { - val = proc.waitFor() == 0; - } catch (InterruptedException e) { - logger.log(BasicLevel.ERROR, "exception", e); - val = false; - } finally { - // destroy the process - if (proc != null) { - proc.destroy(); - } - } - - return (val); - } - - /** - * invoke the compile method of the compiler javac class - * @return false in error case - */ - private boolean compile(final ClassLoader classLoader) { - // first arg should not be added because it's the name of the command - String[] args = new String[mCmd.size() - 1]; - for (int i = 0; i < mCmd.size() - 1; i++) { - args[i] = (String) mCmd.get(i + 1); - } - - try { - // Use reflection - Class c = Class.forName(COMPILER_CLASS_NAME, false, classLoader); - Object compiler = c.newInstance(); - java.lang.reflect.Method compile = c.getMethod("compile", new Class[] {(new String[] {}).getClass()}); - int result = ((Integer) compile.invoke(compiler, new Object[] {args})).intValue(); - return (result == 0); - } catch (Exception e) { - logger.log(BasicLevel.ERROR, "exception", e); - return false; - } - } - - /** - * invoke the main method of the rmi compiler rmic class - * @return false in error case - */ - private boolean rmicompile(final ClassLoader classLoader) { - // first arg should not be added because it's the name of the command - String[] args = new String[mCmd.size() - 1]; - for (int i = 0; i < mCmd.size() - 1; i++) { - args[i] = (String) mCmd.get(i + 1); - } - - try { - // Use reflection - Class c = Class.forName(RMICOMPILER_CLASS_NAME, false, classLoader); - - Constructor cons = c.getConstructor(new Class[] { OutputStream.class, String.class }); - Object rmic = cons.newInstance(new Object[] { System.out, "rmic" }); - - Method doRmic = c.getMethod("compile", new Class[] { String[].class }); - Boolean result = (Boolean) doRmic.invoke(rmic, new Object[] { args }); - - return result; - } catch (Exception e) { - logger.log(BasicLevel.ERROR, "exception", e); - return false; - } - } - - /** - * @return iterator over the command line - */ - public Iterator getCommandLine() { - return mCmd.iterator(); - } - - /** - * @return the string representation of the object for UI purpose - */ - @Override - public String toString() { - StringBuffer buf = new StringBuffer(); - Enumeration e = mCmd.elements(); - while (e.hasMoreElements()) { - String arg = (String) e.nextElement(); - if (arg == null) { - arg = "null"; - } - for (int i = 0; i < arg.length(); i++) { - if (Character.isWhitespace(arg.charAt(i))) { - arg = "\"" + arg + "\""; - break; - } - } - buf.append(arg); - buf.append(' '); - } - return buf.toString().trim(); - } - -} - -/** - * To run the command happily, and to swallow the stdout from the process - */ -class RunnableStreamListener implements Runnable { - - BufferedReader in_; - - PrintStream stream_; - - RunnableStreamListener(final BufferedReader in, final PrintStream stream) { - in_ = in; - stream_ = stream; - } - - public void run() { - String line; - try { - while ((line = in_.readLine()) != null) { - stream_.println(line); - } - } catch (IOException e) { - stream_.println(e.toString()); - } - - } -} - diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ConfigurationConstants.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ConfigurationConstants.java deleted file mode 100644 index b28e8190ef..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ConfigurationConstants.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2008 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.util; - -/** - * @author eyindanga - * - */ -public interface ConfigurationConstants { - - /** - * JOnAS Development mode. - */ - String JONAS_PROPERTIES_PROP = "jonas.properties"; - - - /** - * System property name for JONAS_ROOT. - */ - String JONAS_ROOT_PROP = "jonas.root"; - - /** - * System property name for JONAS_BASE. - */ - String JONAS_BASE_PROP = "jonas.base"; - - /** - * JOnAS Development mode. - */ - String JONAS_DEVELOPER_PROP = "jonas.developer"; - - /** - * File name where JOnAS components versions are stored. - */ - String DEFAULT_JONAS_VERSIONS = "VERSIONS"; - - /** - * Prefix for jonas.properties file - */ - String DEFAULT_JONAS_PREFIX = "jonas"; - /** - * JOnAS server name - */ - String JONAS_NAME_PROP = "jonas.name"; - - /** - * jonas.master property - */ - String JONAS_MASTER_PROP = "jonas.master"; - - /** - * Work directory property. - */ - String WORK_DIRECTORY_PROP = "jonas.workdirectory"; - - /** - * Default work directory name. - */ - String DEFAULT_WORK_DIRECTORY = "work"; - - /** - * configuration directory name (changed from 'config' to 'conf' !!) - */ - String DEFAULT_CONFIG_DIR = "conf"; - - /** - * Default server name - */ - String DEFAULT_JONAS_NAME = "jonas"; - - /** - * Default server name - */ - String DEFAULT_DOMAIN_NAME = "jonas"; - - /** - * domain.name property - */ - String DOMAIN_NAME_PROP = "domain.name"; - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/DirFilter.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/DirFilter.java deleted file mode 100644 index d49fcb2e8e..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/DirFilter.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.io.FilenameFilter; - -/** - * Filter used to seek directories - * @author durieuxp - */ -public class DirFilter implements FilenameFilter { - - String prefix = null; - String suffix = null; - - public DirFilter(String p1, String s1) { - prefix = p1; - suffix = s1; - } - - public boolean accept(File dir, String name) { - if (name.endsWith("~")) { - return false; - } - if (suffix != null && ! name.endsWith(suffix)) { - return false; - } - if (prefix != null && ! name.startsWith(prefix)) { - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Env.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Env.java deleted file mode 100644 index f0988512da..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Env.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -/** - * This class manages global variables and properties used by EJB Server. A - * static design pattern is used. - */ -public class Env { - - /** - * No public constructor : utility class - */ - private Env() { - - } - - // Variables related to Java Version - public static final int JAVA_1_1_6 = 116; - - public static final int JAVA_1_1_7 = 117; - - public static final int JAVA_1_1_8 = 118; - - public static final int JAVA_1_2 = 120; - - public static final int JAVA_1_3 = 130; - - public static final int JAVA_1_4 = 140; - - private static int javaVersion = -1; - - /** - * @return true if the os.name starts with "Windows" - */ - public static boolean isOsWindows() { - String osName = System.getProperty("os.name", ""); - return (osName.startsWith("Windows")); - } - - /** - * @return true if the os.name starts with "Mac OS X" - */ - public static boolean isOsMacOsX() { - String osName = System.getProperty("os.name", ""); - return (osName.startsWith("Mac OS X")); - } - - /** - * Gets Java Version. - * @return javaVersion or -1 if error - */ - public static int getJavaVersion() { - - if (javaVersion == -1) { - // Sets Java Version - String strjv = System.getProperty("java.version", ""); - if (strjv.indexOf("1.1.6") == 0) { - javaVersion = JAVA_1_1_6; - } - if (strjv.indexOf("1.1.7") == 0) { - javaVersion = JAVA_1_1_7; - } - if (strjv.indexOf("1.1.8") == 0) { - javaVersion = JAVA_1_1_8; - } - if (strjv.indexOf("1.2") == 0) { - javaVersion = JAVA_1_2; - } - if (strjv.indexOf("1.3") == 0) { - javaVersion = JAVA_1_3; - } - if (strjv.indexOf("1.4") == 0) { - javaVersion = JAVA_1_4; - } - } - return javaVersion; - } - - /** - * @return true if JDK 1.2 or later - */ - public static boolean isJAVA2() { - return (getJavaVersion() >= JAVA_1_2); - } - - /** - * @return true if JDK 1.4 or later - */ - public static boolean isJAVA4() { - return (getJavaVersion() >= JAVA_1_4); - } -} - diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/I18n.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/I18n.java deleted file mode 100644 index 2d304e8ae0..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/I18n.java +++ /dev/null @@ -1,254 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.text.MessageFormat; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - - -/** - * This class defines the way for getting message with - * ResourceBundle for different language. - * Inspired from http://java.sun.com/docs/books/tutorial/i18n/ - * @author Florent Benoit - */ -public final class I18n { - - /** - * Name of the resource bundle to use. - */ - private static final String RESOURCE_BUNDLE_NAME = "I18n"; - - /** - * List of our I18n objects. - */ - private static Map bundles = null; - - /** - * Internal Resource Bundle. - */ - private ResourceBundle resourceBundle = null; - - /** - * Constructor (private access, use getInstance instead). - * @param packageName name of the package for the bundle - * @param cl the classloader used to load bundle - */ - private I18n(final String packageName, final ClassLoader cl) { - - String bundleName = packageName + "." + RESOURCE_BUNDLE_NAME; - - // Resource bundle is on the form packageName.I18n.properties - try { - Locale locale = Locale.getDefault(); - resourceBundle = ResourceBundle.getBundle(bundleName, locale, cl); - } catch (MissingResourceException mre) { - String err = "Error when trying to get a ResourceBundle for package '" + packageName + "' : " + mre.getMessage(); - throw new IllegalStateException(err); - } - } - - /** - * Gets the instance for a given class. - * @param c the class for which we want a bundle - * @return I18n object - */ - public static I18n getInstance(final Class c) { - return getInstance(c.getPackage().getName(), c.getClassLoader()); - } - - /** - * Gets the instance for a given class. - * @param c the class for which we want a bundle - * @param cl the classloader used to load bundle - * @return I18n object - */ - public static I18n getInstance(final Class c, final ClassLoader cl) { - return getInstance(c.getPackage().getName(), cl); - } - - /** - * Gets the instance for a given package. - * @param packageName the package for which we want a bundle - * @return I18n object - */ - public static I18n getInstance(final String packageName) { - return getInstance(packageName, Thread.currentThread().getContextClassLoader()); - } - - /** - * Gets the instance for a given package. - * @param packageName the package for which we want a bundle - * @param cl the classloader used to load bundle - * @return I18n object - */ - public static I18n getInstance(final String packageName, final ClassLoader cl) { - if (bundles == null) { - bundles = new HashMap(); - } - - I18n i18n = (I18n) bundles.get(packageName); - if (i18n != null) { - return i18n; - } - - - i18n = new I18n(packageName, cl); - bundles.put(packageName, i18n); - return i18n; - } - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param args the object arguments for the formatter - * @return the formatted string - */ - public String getMessage(final String key, final Object[] args) { - String value = getMessage(key); - return MessageFormat.format(value, args); - } - - - /** - * Gets the value of the given key. - * @param key the keystring to retrieve - * @return the value for the given key or the key if the value can not be found - */ - public String getMessage(final String key) { - String ret = null; - - // No bundle, return key - if (resourceBundle == null) { - return key; - } - - try { - ret = resourceBundle.getString(key); - } catch (MissingResourceException mre) { - // key not found, return the key - ret = key; - } - - return ret; - } - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj the object argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, final Object obj) { - return getMessage(key, new Object[] {obj}); - } - - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj1 the first object argument for the formatter - * @param obj2 the second object argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, final Object obj1, final Object obj2) { - return getMessage(key, new Object[] {obj1, obj2 }); - } - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj1 the first object argument for the formatter - * @param obj2 the second object argument for the formatter - * @param obj3 the third object argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, final Object obj1, final Object obj2, final Object obj3) { - return getMessage(key, new Object[] {obj1, obj2, obj3 }); - } - - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj1 argument for the formatter - * @param obj2 argument for the formatter - * @param obj3 argument for the formatter - * @param obj4 argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, final Object obj1, final Object obj2, final Object obj3, final Object obj4) { - return getMessage(key, new Object[] {obj1, obj2, obj3, obj4 }); - } - - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj1 argument for the formatter - * @param obj2 argument for the formatter - * @param obj3 argument for the formatter - * @param obj4 argument for the formatter - * @param obj5 argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, - final Object obj1, - final Object obj2, - final Object obj3, - final Object obj4, - final Object obj5) { - return getMessage(key, new Object[] {obj1, obj2, obj3, obj4, obj5 }); - } - - - /** - * Gets the formatted string with the given arguments. - * @param key the keystring on which to apply arguments - * @param obj1 argument for the formatter - * @param obj2 argument for the formatter - * @param obj3 argument for the formatter - * @param obj4 argument for the formatter - * @param obj5 argument for the formatter - * @param obj6 argument for the formatter - * @return the formatted string - */ - public String getMessage(final String key, - final Object obj1, - final Object obj2, - final Object obj3, - final Object obj4, - final Object obj5, - final Object obj6) { - return getMessage(key, new Object[] {obj1, obj2, obj3, obj4, obj5, obj6 }); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JJarFile.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JJarFile.java deleted file mode 100644 index 5ba8f3e0ef..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JJarFile.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.IOException; -import java.util.jar.JarFile; -import java.util.jar.JarEntry; - -/** - * This class implements a JarFile that adds a extract/write method. - * @author Eric Hardesty - */ -public class JJarFile extends JarFile { - - /** - * Size of the buffer. - */ - private static final int BUFFER_SIZE = 2048; - - /** - * Constructs a new JarFile with the specified File. - * @param file the jar file to be opened - */ - public JJarFile(File file) throws IOException { - super(file); - } - - /** - * Constructs a new JarFile with the specified File. - * @param file the jar file to be opened - * @param verity boolean to verify if the JarFile is signed - */ - public JJarFile(File file, boolean verify) throws IOException { - super(file, verify); - } - - /** - * Constructs a new JarFile with the specified File. - * @param file the jar file to be opened - * @param verity boolean to verify if the JarFile is signed - * @param mode int of the mode to open the jar - */ - public JJarFile(File file, boolean verify, int mode) throws IOException { - super(file, verify, mode); - } - - /** - * Constructs a new JarFile with the specified File. - * @param name the name of the jar file to be opened - */ - public JJarFile(String name) throws IOException { - super(name); - } - - /** - * Constructs a new JarFile with the specified File. - * @param name the name of the jar file to be opened - * @param verity boolean to verify if the JarFile is signed - */ - public JJarFile(String name, boolean verify) throws IOException { - super(name, verify); - } - - /** - * Extract the specified Jar Entry to the path given - * @param jEnt the JarEntry to extract - * @param filename the filename to write the extracted file - */ - public void extract(JarEntry jEnt, String filename) throws IOException { - - try { - //File output - FileOutputStream out = new FileOutputStream(filename); - InputStream jis = this.getInputStream(jEnt); - int n = 0; - try { - //buffer - byte buffer[] = new byte[BUFFER_SIZE]; - - while ((n = jis.read(buffer)) > 0) { - out.write(buffer, 0, n); - } - } finally { - out.close(); - jis.close(); - } - } catch (IOException e) { - throw new IOException("Error while uncompressing the file " + filename + ": " + e.getMessage()); - } - - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JModule.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JModule.java deleted file mode 100644 index f8f930567d..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JModule.java +++ /dev/null @@ -1,339 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id: - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Properties; - -import org.ow2.jonas.lib.bootstrap.JProp; - -/** - * This class implements utility methods for the manipulation of application modules. - * @author Adriana Danes - */ -public class JModule { - - /** - * file extension containing the different module types. - */ - public static final String EJBJAR_EXTENSION = "jar"; - public static final String RAR_EXTENSION = "rar"; - public static final String WAR_EXTENSION = "war"; - public static final String EAR_EXTENSION = "ear"; - - /** - * Child directory of a expanded container. - */ - public static final String EJBJAR_CHILD_DIR = "META-INF"; - public static final String RAR_CHILD_DIR = "META-INF"; - public static final String WAR_CHILD_DIR = "WEB-INF"; - public static final String EAR_CHILD_DIR = "META-INF"; - - /** - * xml file in a child directory of a expanded container. - */ - public static final String EJBJAR_CONFIRM_FILE = "ejb-jar.xml"; - public static final String RAR_CONFIRM_FILE = "ra.xml"; - public static final String WAR_CONFIRM_FILE = "web.xml"; - public static final String EAR_CONFIRM_FILE = "application.xml"; - - public static final String JONAS_BASE = JProp.getJonasBase(); - public static final String DEPLOY_DIR = JONAS_BASE + File.separator + "deploy"; - /** - * properties file extension. - */ - public static final String PROPS_EXTENSION = "properties"; - - - /** - * name of the directory containig configuration. - */ - public static final String CONF_DIR = "conf"; - - public static ArrayList getFilesInDir(final String dirName, final String extension) throws Exception { - ArrayList al = new ArrayList(); - File file = new File(dirName); - String[] files = file.list(); - int pos; - String fileName; - if (files != null) { - for (int i = 0; i < files.length; i++) { - file = new File(dirName, files[i]); - if (file.isFile()) { - fileName = file.getName().toLowerCase(); - pos = fileName.lastIndexOf(extension); - if (pos > -1) { - if (pos == (fileName.length() - extension.length())) { - al.add(file.getName()); - } - } - } - } - } - Collections.sort(al); - return al; - } - - public static ArrayList getDatasourcePropsInDir() throws Exception { - // Get all files include in configuration directory - ArrayList al = getFilesInDir(JProp.getJonasBase() + File.separator + CONF_DIR, PROPS_EXTENSION); - // Keep all datasources properties - String sPath; - Properties oProps = new Properties(); - boolean bDelete; - int i = 0; - while (i < al.size()) { - sPath = JProp.getJonasBase() + File.separator + CONF_DIR + File.separator - + al.get(i).toString(); - bDelete = true; - try { - oProps.clear(); - oProps.load(new FileInputStream(sPath)); - // Detect datasource property - if (oProps.getProperty("datasource.name") != null) { - // Remove Extension - int iPos = al.get(i).toString().toLowerCase().lastIndexOf(".properties"); - al.set(i, al.get(i).toString().substring(0, iPos)); - // Next - i++; - bDelete = false; - } - } catch (Exception e) { - // none - } finally { - // Remove no-datasource - if (bDelete) { - al.remove(i); - } - } - } - return al; - } - - public static ArrayList getMailFactoryPropsInDir(final String type) throws Exception { - // Get all files include in configuration directory - ArrayList al = getFilesInDir(JProp.getJonasBase() + File.separator + CONF_DIR, PROPS_EXTENSION); - // Keep all datasources properties - String sPath; - Properties oProps = new Properties(); - boolean bDelete; - int i = 0; - while (i < al.size()) { - sPath = JProp.getJonasBase() + File.separator + CONF_DIR + File.separator - + al.get(i).toString(); - bDelete = true; - try { - oProps.clear(); - oProps.load(new FileInputStream(sPath)); - // Detect mail factory property - if (oProps.getProperty("mail.factory.name") != null) { - boolean bToReturn; - if (type == null) { - // any type OK - bToReturn = true; - } else { - // Check type - if (oProps.getProperty("mail.factory.type").equals(type)) { - bToReturn = true; - } else { - bToReturn = false; - } - } - if (bToReturn) { - // Remove Extension - int iPos = al.get(i).toString().toLowerCase().lastIndexOf(".properties"); - al.set(i, al.get(i).toString().substring(0, iPos)); - // Next - i++; - bDelete = false; - } - } - } catch (Exception e) { - // none - } finally { - // Remove no-mail factory - if (bDelete) { - al.remove(i); - } - } - } - return al; - } - - public static ArrayList getMailFactoryPropsInDir() throws Exception { - return getMailFactoryPropsInDir(null); - } - - /** - * Return the URL list of files (possibly directories) having a given extension located in a given directory. - * @param dirName name of the directory to lookup - * @param extension extension to check - * @return list of URLs of the files/directories which were found - * @throws MalformedURLException If the path cannot be parsed as a URL - * @throws IOException If an I/O error occurs, which is possible because the - * construction of the canonical pathname may require - * file system queries - */ - public static ArrayList getInstalledFileInDir(final String dirName, final String extension) throws MalformedURLException, IOException { - ArrayList al = new ArrayList(); - // Search all files in directory - File oFile = new File(dirName); - String[] asFiles = oFile.list(); - if (asFiles != null) { - // Loop for each found file - for (int i = 0; i < asFiles.length; i++) { - oFile = new File(dirName, asFiles[i]); - // Detect extension - String sFilename = oFile.getName().toLowerCase(); - int iPos = sFilename.lastIndexOf(extension); - if (iPos > -1 && iPos == (sFilename.length() - extension.length())) { - URL url = oFile.getCanonicalFile().toURL(); - al.add(url); - } - } - } - return al; - } - - /** - * Return the list of all installed containers in a directory. - * The container may be :
    - * - a archive file container with a known extension : jar, war, ear, rar
    - * - a directory where the container is expanded
    - * To control if a directory contains a expanded container, it's necessary - * to provide the child directory and the xml file that confirm the expanded container.
    - * Parameter example to retrieve :
    - * - web application : war, WEB-INF, web.xml - * - application : ear, META-INF, application.xml - * - ejb container : jar, META-INF, ejb-jar.xml - * - resource : rar, META-INF, ra.xml - * - * @param p_DirName The name of the directory to find - * @param p_Extension The extension of container (jar, war, ear, rar) - * @param p_DirChildConfirm The child directory that confirm the container - * @param p_FileConfirm The xml file inside the child directory that confirm the container - * @return A list of absolute path container - * @throws Exception - */ - public static ArrayList getInstalledContainersInDir(final String p_DirName, - final String p_Extension, - final String p_DirChildConfirm, - final String p_FileConfirm) - throws Exception { - - // Return variable - ArrayList al = new ArrayList(); - // Variables used in loop - int iPos; - String sFilename; - File oDirChild; - File oFileConfirm; - // Search all files in directory - File oFile = new File(p_DirName); - String[] asFiles = oFile.list(); - - if (asFiles != null) { - // Loop for each found file - for (int i = 0; i < asFiles.length; i++) { - oFile = new File(p_DirName, asFiles[i]); - // Detect file with extension - if (oFile.isFile()) { - sFilename = oFile.getName().toLowerCase(); - iPos = sFilename.lastIndexOf(p_Extension); - if (iPos > -1) { - if (iPos == (sFilename.length() - p_Extension.length())) { - al.add(oFile.getCanonicalFile().toURL().getPath()); - } - } - } - // Detect directory of expanded container - else if (oFile.isDirectory()) { - oDirChild = new File(oFile, p_DirChildConfirm); - if (oDirChild.exists() && oDirChild.isDirectory()) { - oFileConfirm = new File(oDirChild, p_FileConfirm); - if (oFileConfirm.exists()) { - al.add(oFile.getCanonicalFile().toURL().getPath()); - } - } - } - } - } - return al; - } - - /** - * Return the list of all installed modules/apps in a directory. - * The container may be :
    - * - a archive file container with a known extension : jar, war, ear, rar
    - * - a directory where the container is expanded
    - * - * @param dirName The name of the directory to find - * @param extension The extension of container (jar, war, ear, rar) - * @return A list of absolute paths - * @throws Exception - */ - public static ArrayList getInstalledContainersInDir(final String dirName, final String extension) - throws Exception { - - // Return variable - ArrayList al = new ArrayList(); - // Variables used in loop - int iPos; - String sFilename; - // Search all files in directory - File oFile = new File(dirName); - String[] asFiles = oFile.list(); - - if (asFiles != null) { - // Loop for each found file - for (int i = 0; i < asFiles.length; i++) { - oFile = new File(dirName, asFiles[i]); - // Detect file with extension - if (oFile.isFile()) { - sFilename = oFile.getName().toLowerCase(); - iPos = sFilename.lastIndexOf(extension); - if (iPos > -1) { - if (iPos == (sFilename.length() - extension.length())) { - al.add(oFile.getCanonicalFile().toURL().getPath()); - } - } - } - // Detect directory of expanded container - else if (oFile.isDirectory()) { - // yet not support - } - } - } - return al; - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JNDIUtils.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JNDIUtils.java deleted file mode 100644 index 10ded06de9..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JNDIUtils.java +++ /dev/null @@ -1,220 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume Sauthier - * Contributor(s): - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.util; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -import javax.naming.BinaryRefAddr; -import javax.naming.RefAddr; -import javax.naming.Reference; -import javax.naming.StringRefAddr; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OptionalDataException; - -/** - * JNDIUtils groups all commonly used methods for JNDI. - * @author Guillaume Sauthier - */ -public class JNDIUtils { - - /** - * Private empty Constructor for Utility classes - */ - private JNDIUtils() { } - - /** - * Return an array of byte from a given object - * @param obj the object from which we must extract the bytes. - * @return the byte[] from an object - */ - public static byte[] getBytesFromObject(Object obj) { - return getBytesFromObject(obj, null); - } - - /** - * Return an array of byte from a given object - * @param obj the object from which we must extract the bytes. - * @param logger logger to log exceptions - * @return the byte[] from an object - */ - public static byte[] getBytesFromObject(Object obj, Logger logger) { - - if (obj == null) { - return null; - } - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - ObjectOutputStream oos = null; - byte[] bytes = null; - - try { - oos = new ObjectOutputStream(baos); - oos.writeObject(obj); - bytes = baos.toByteArray(); - } catch (Exception e) { - //Can't tranform - return null; - } finally { - try { - oos.close(); - baos.close(); - } catch (Exception e) { - if (logger != null) { - logger.log(BasicLevel.DEBUG, "Cannot close output streams : '" + e.getMessage() + "'"); - } - } - } - return bytes; - } - - /** - * Return an object from an array of bytes. Useful for BinaryRefAddr - * Useful for BinaryRefAddr - * @param bytes an array of bytes - * @return an object or null if there is an error of if it's empty - */ - public static Object getObjectFromBytes(byte[] bytes) { - return getObjectFromBytes(bytes, null); - } - - /** - * Return an object from an array of bytes. - * Useful for BinaryRefAddr - * @param bytes an array of bytes - * @param logger logger to log exceptions - * @return an object or null if there is an error of if it's empty - */ - public static Object getObjectFromBytes(byte[] bytes, Logger logger) { - //Declaration - ByteArrayInputStream bis = null; - ObjectInputStream ois = null; - Object obj = null; - - if (bytes == null) { - return null; - } - - bis = new ByteArrayInputStream(bytes); - try { - ois = new ObjectInputStream(bis); - obj = ois.readObject(); - - } catch (ClassNotFoundException cfe) { - if (logger != null) { - logger.log(BasicLevel.DEBUG, "Cannot get object from bytes : " + cfe.getMessage()); - } - } catch (OptionalDataException ode) { - if (logger != null) { - logger.log(BasicLevel.DEBUG, "Cannot get object from bytes : " + ode.getMessage()); - } - } catch (IOException ioe) { - if (logger != null) { - logger.log(BasicLevel.DEBUG, "Cannot get object from bytes : " + ioe.getMessage()); - } - } finally { - try { - bis.close(); - ois.close(); - } catch (Exception e) { - if (logger != null) { - logger.log(BasicLevel.DEBUG, "Cannot close input stream : " + e.getMessage()); - } - } - } - return obj; - } - - /** - * Insert a key/value String/String couple in the given Reference as a StringRefAddr. - * @param ref Reference to be modified - * @param key Address' key - * @param value Address' value - */ - public static void insertInto(final Reference ref, final String key, final String value) { - if (value != null) { - RefAddr addr = new StringRefAddr(key, value); - ref.add(addr); - } // else, print a debug message ? - } - - /** - * Insert a key/value String/Object couple in the given Reference after serialization of the value. - * @param ref Reference to be modified - * @param key Address' key - * @param value Object value (will be serialized) - */ - public static void insertInto(final Reference ref, final String key, final Object value) { - if (value != null) { - RefAddr addr = new BinaryRefAddr(key, getBytesFromObject(value)); - ref.add(addr); - } // else, print a debug message ? - } - - /** - * Extract a String value with the given key, from the Reference. - * @param ref Reference that holds the value within - * @param key Key of the value - * @return the String value - */ - public static String extractStringFrom(final Reference ref, final String key) { - StringRefAddr addr = (StringRefAddr) ref.get(key); - if (addr == null) { - return null; - } - return (String) addr.getContent(); - } - - /** - * Extract an Object from the Reference. Notice that this object have to - * be castable to the given Class parameter. The ClassLoader where this - * class live is used to deserialize the object. - * If it cannot load the requested class, a ClassLoading error will probably occur. - * @param ref Reference that holds the serialized version of the requested object - * @param key Object's key - * @param type Object's type (may be an interface) - * @return an Object casted with Class - */ - public static T extractObjectFrom(final Reference ref, - final String key, - final Class type) { - BinaryRefAddr addr = (BinaryRefAddr) ref.get(key); - if (addr == null) { - return null; - } - byte[] serialized = (byte[]) addr.getContent(); - Object result = getObjectFromBytes(serialized); - return type.cast(result); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JonasObjectName.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JonasObjectName.java deleted file mode 100644 index f67e3cccd0..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JonasObjectName.java +++ /dev/null @@ -1,855 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; - -/** - * A set of static classes used to build the names of proprietary MBeans used in JOnAS and in Joram. - * @author Bruno Michel - * @author Guillaume Riviere - * @author Florent Benoit - * @author Ludovic Bert - * @author Miroslav Halas - * @author Adriana Danes - */ -public class JonasObjectName { - - /** - * Create ObjectName for the JMX Connector Server which is an MBean inside the target MBeanServer. - * @param protocol used protocol - * @param connectorName name used to distinguish connector servers using the same protocol - * @return ObjectName for the JMX Connector Server MBean - */ - public static ObjectName jmxConnectorServer(final String protocol, final String connectorName) { - try { - return ObjectName.getInstance("connectors:protocol=" + protocol + ",name=" + connectorName); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName domain name - * @return ObjectName for reconfiguration manager MBean - */ - public static ObjectName serverConfig(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=management,name=reconfigManager"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for an web services - */ - public static ObjectName wsService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=WebService,*"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for the ejb service MBean - */ - public static ObjectName ejbService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=ejbContainers"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for the ejb3 service MBean - */ - public static ObjectName ejb3Service(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=ejb3"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for the validation service MBean - */ - public static ObjectName validationService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=validation"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the earService (Jmx). - * @param domainName the domain name - * @return the Ear service. - */ - public static ObjectName earService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=ear"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the deployableMonitorService (Jmx). - * @param domainName the domain name - * @return the DeployableMonitor service. - */ - public static ObjectName deployableMonitorService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=depmonitor"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the mailService (Jmx). - * @param domainName the domain name - * @return the Mail service. - */ - public static ObjectName mailService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=mail"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the JNDI Interceptors Object Name (Jmx). - * @param domainName the domain name - * @return the ObjectName of the JNDI Interceptor component. - */ - public static ObjectName jndiInterceptors(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=jndi-interceptors"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * ObjectName for a given context interceptor. - * @param domainName the JMX domain - * @param interceptorName the name of the interceptor - * @return the built object name - */ - public static ObjectName jndiContextInterceptor(final String domainName, final String interceptorName) { - try { - StringBuffer sb = new StringBuffer(domainName); - sb.append(":type=service"); - sb.append(",name=jndi-interceptors"); - sb.append(",interceptor="); - sb.append(interceptorName); - return new ObjectName(sb.toString()); - } catch (javax.management.MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - - - /** - * Return the webContainerService MBean ObjectName. - * @param domainName the domain name - * @return the web container service. - */ - public static ObjectName webContainerService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=webContainers"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the jaxrpcService MBean ObjectName - * @param domainName the domain name - * @return the JAX-RPC service. - */ - public static ObjectName jaxrpcService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=jaxrpc"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the jaxwsService MBean ObjectName - * @param domainName the domain name - * @return the JAX-WS service. - */ - public static ObjectName jaxwsService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=jaxws"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return the wsdlPublisher MBean ObjectName - * @param domainName the domain name - * @return the WSDL Publisher service. - */ - public static ObjectName wsdlPublisherService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=wsdl-publisher"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for dbm service MBean - */ - public static ObjectName databaseService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=database"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for resource service MBean - */ - public static ObjectName resourceService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=resource"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for jtm service MBean - */ - public static ObjectName transactionService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=jtm"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName domain name - * @return ObjectName for JOnAS logging MBeans - */ - public static ObjectName logService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=log"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - /** - * @return ObjectName for JOnAS logging MBeans - */ - public static ObjectName logService() { - try { - return ObjectName.getInstance("*:type=service,name=log"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Create ObjectName for the LogBuffer MBean - * @param domainName domain name - * @param name LogBuffer name - * @return ObjectName for the LogBuffer MBean - */ - public static ObjectName logBuffer(final String domainName, final String name) { - try { - return ObjectName.getInstance(domainName + ":type=LogBuffer,name=" + name); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Create ObjectName for the LogBuffer MBean - * @param domainName domain name - * @param name LogBuffer name - * @return ObjectName for the LogBuffer MBean - */ - public static ObjectName logBuffers(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=LogBuffer,*"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - /** - * Construct ObjectName for the discovery service MBean - * @param domainName the domain name - * @return ObjectName for the discovery service MBean - */ - public static ObjectName discoveryService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=discovery"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for jms service MBean - */ - public static ObjectName jmsService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=jms"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the domain name - * @return ObjectName for jtm service MBean - */ - public static ObjectName securityService(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=security"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @return ObjectName for jmx service MBean - */ - public static ObjectName jmxService() { - try { - return ObjectName.getInstance("JMImplementation:type=MBeanServerDelegate"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * War MBean ObjectName - * @param domainName domain name - * @param filename name of the file containing the war - * @return War MBean ObjectName - * @throws MalformedObjectNameException Could not construct ObjectName - */ - public static ObjectName war(final String domainName, final String filename) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=war,fname=" + fileNameForObjectName(filename)); - } - - /** - * Return an objectName for the WorkCleaner. - * @param domainName domain name - * @return an objectName for the WorkCleaner - */ - public static ObjectName workCleaner(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=workcleaner"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return an objectName for the versioning service. - * @param domainName domain name - * @return an objectName for the versioning service. - */ - public static ObjectName versioning(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=versioning"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return an objectName for the smartclient service. - * @param domainName domain name - * @return an objectName for the smartclient service. - */ - public static ObjectName smartclient(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=smartclient"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return an objectName for the WorkManager - * @param domainName domain name - * @return an objectName for the WorkManager - */ - public static ObjectName workManager(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=service,name=workmanager"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * Return an objectName for a Security memory factory. - * @param domainName the domain name - * @param name the name of the security memory factory - * @return an objectName for the security memory factory. - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName securityMemoryFactory(final String domainName, final String name) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=memory,name=" + name); - } - - /** - * Return an objectName for a Security datasource factory. - * @param domainName the domain name - * @param name the name of the security datasource factory - * @return an objectName for the security datasource factory. - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName securityDatasourceFactory(final String domainName, final String name) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=datasource,name=" + name); - } - - /** - * Return an objectName for a Security ldap factory. - * @param domainName the domain name - * @param name the name of the security ldap factory - * @return an objectName for the security ldap factory. - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName securityLdapFactory(final String domainName, final String name) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=ldap,name=" + name); - } - - /** - * Return an objectName for a user - * @param resource the name of the resource on which the user depends - * @param username the name of the user - * @param domainName the domain name - * @return an objectName for the user MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName user(final String domainName, final String resource, final String username) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=users,resource=" + resource - + ",name=" + username); - } - - /** - * Return an objectName for a group - * @param resource the name of the resource on which the group depends - * @param groupname the name of the group - * @param domainName the domain name - * @return an objectName for the group MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName group(final String domainName, final String resource, final String groupname) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=groups,resource=" + resource - + ",name=" + groupname); - } - - /** - * Return an objectName for a role - * @param resource the name of the resource on which the role depends - * @param rolename the name of the role - * @param domainName the domain name - * @return an objectName for the user MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName role(final String domainName, final String resource, final String rolename) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=roles,resource=" + resource - + ",name=" + rolename); - } - - /** - * ObjectName for all war MBeans in the domain - * @param domainName domain name - * @return ObjectName for all war MBeans in the domain - */ - public static ObjectName allWars(final String domainName) { - try { - return ObjectName.getInstance(domainName + ":type=war,*"); - } catch (MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - public static String getType(final ObjectName obj) { - return obj.getKeyProperty("type"); - } - - public static String fileNameForObjectName(final String fileName) { - return fileName.replace(':', '|'); - } - - /** - * Return an objectName for the Security factory name. - * @param domainName the domain name - * @return an objectName for the security factory name. - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allSecurityFactories(final String domainName) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,*"); - } - - /** - * Return an objectName for all the Security memory factories. - * @param domainName the domain name - * @return an objectName for all the security memory factories - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allSecurityMemoryFactories(final String domainName) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=memory,*"); - } - - /** - * Return an objectName for all the Security datasource factories. - * @param domainName the domain name - * @return an objectName for all the security datasource factories - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allSecurityDatasourceFactories(final String domainName) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=datasource,*"); - } - - /** - * Return an objectName for all the Security ldap factories. - * @param domainName the domain name - * @return an objectName for all the security ldap factories - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allSecurityLdapFactories(final String domainName) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=securityfactory,subtype=ldap,*"); - } - - /** - * Return an objectName for all users in a resource. - * @param domainName the management domain name - * @param pResource the name of the resource on which the user depends - * @return an objectName for the user MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allUsers(final String domainName, final String pResource) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=users,resource=" - + pResource + ",*"); - } - - /** - * Return an objectName for all roles in a resource. - * @param domainName the management domain name - * @param pResource the name of the resource on which the role depends - * @return an objectName for the user MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allRoles(final String domainName, final String pResource) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=roles,resource=" - + pResource + ",*"); - } - - /** - * Return an objectName for all groups in a resource. - * @param domainName the management domain name - * @param pResource the name of the resource on which the group depends - * @return an objectName for the user MBean - * @throws MalformedObjectNameException if the objectname can't be build - */ - public static ObjectName allGroups(final String domainName, final String pResource) - throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=security,subtype=groups,resource=" - + pResource + ",*"); - } - - /** - * A different implementation should allow returning a logical name. - * This is done currently in the invoke method of ManagementReprImpl/Mx4jManagementReprImpl classes. - * @return String representation of the ObjectName - */ - @Override - public String toString() { - return super.toString(); - } - - /** - * @return ObjectName for discovery manager MBean - * @param domainName the management domain name - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName discoveryManager(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=management,name=discoveryManager,server=JOnAS"); - } - - /** - * @return ObjectName for Jgroups discovery manager MBean - * @param domainName the management domain name - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName jgroupsDiscoveryManager(final String domainName, final String discoveryType, final String srvName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=management,name=discoveryManager"+discoveryType+",server="+srvName); - } - - /** - * @return ObjectName for discovery client MBean - * @param domainName the management domain name - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName discoveryClient(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=management,name=discoveryClient,server=JOnAS"); - } - /** - * @return ObjectName for discovery enroller MBean - * @param domainName the management domain name - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName discoveryEnroller(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=management,name=discoveryEnroller,server=JOnAS"); - } - - /** - * @return ObjectName for ServerProxy MBean - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName serverProxy(final String domainName, final String serverName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=ServerProxy,name=" + serverName); - } - - /** - * @return ObjectName for ServerProxy MBean - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName serverProxys(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=ServerProxy,*"); - } - - /** - * Build an ObjectName for a Cluster defined by its type and its name. - * @param name Name of the Cluster - * @param type Type: JkCluster, TomcatCluster, JoramCluster, EjbHaCluster, CmiCluster, ... - * @return ObjectName for a Cluster - * @throws MalformedObjectNameException - */ - public static ObjectName cluster(final String domainName, final String name, final String type) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=" + type + ",name=" + name); - } - - /** - * Build an ObjectName for a Cluster defined by its type only. - * @param type Type: JkCluster, TomcatCluster, JoramCluster, EjbHaCluster, CmiCluster, ... - * @return ObjectName for a Cluster - * @throws MalformedObjectNameException - */ - public static ObjectName clusters(final String domainName, final String type) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=" + type + ",*"); - } - - /** - * Build an ObjectName for a ClusterMember. - * All ClusterMember have the same type, regardless the cluster type. - * @param name Name of the ClusterMember - * @param type type of the cluster (ex: JkCluster or TomcatCluster) - * @param cluster Name of the Cluster - * @return ObjectName for a ClusterMember - * @throws MalformedObjectNameException - */ - public static ObjectName clusterMember(final String domainName, final String name, final String type, final String cluster) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=" + type + "Member,name=" + name + "," + type + "=" + cluster); - } - - public static ObjectName clusterDaemon(final String domainName) throws Exception { - return ObjectName.getInstance(domainName + ":type=ClusterDaemon"); - } - - /** - * @param name name of the ClusterDaemon - * @return - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName clusterDaemonProxy(final String domainName, final String name) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=ClusterDaemonProxy,name=" + name); - } - - /** - * @param name name of the ClusterDaemon - * @return - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName clusterDaemonProxys(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=ClusterDaemonProxy,*"); - } - - /** - * @param domainName the management domain name - * @return ObjectName for the generic archive configurationMBean - */ - public static ObjectName ArchiveConfig(final String domainName) { - try { - return new ObjectName(":type=archiveConfig,name=ArchiveConfigMBean"); - } catch (javax.management.MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName the management domain name - * @return ObjectName for RAR specific archive configuration MBean - */ - public static ObjectName RarConfig(final String domainName) { - try { - return new ObjectName(":type=archiveConfig,name=RarConfigMBean"); - } catch (javax.management.MalformedObjectNameException e) { - // this should never occur - return null; - } - } - - /** - * @param domainName - * @return - * @throws MalformedObjectNameException - */ - public static ObjectName jgroupsDiscoveryCommManager(final String domainName, final String discoveryType, final String srvName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=management,name=discoveryCommManager"+discoveryType+",server="+srvName); - } - - /** - * Build an ObjectName for the CMIClient MBean. - * @param domainName the management domain name - * @param serverName the managed server - * @return ObjectName for a CMIClient - * @throws MalformedObjectNameException if an ObjectName cannot be created with the given String - */ - public static ObjectName cmiClient(final String domainName, final String serverName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=cmi,name=CMIClient,J2EEServer=" + serverName); - } - - /** - * Build an ObjectName for the CMIServer MBean. - * @param domainName the management domain name - * @param serverName the managed server - * @return ObjectName for a CMIServer - * @throws MalformedObjectNameException if an ObjectName cannot be created with the given String - */ - public static ObjectName cmiServer(final String domainName, final String serverName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName + ":type=cmi,name=CMIServer,J2EEServer=" + serverName); - } - - /** - * Build an ObjectName for the Repository MBean. - * @param domainName the management domain name - * @return ObjectName for a Repository Service - * @throws MalformedObjectNameException if an ObjectName cannot be created with the given String - */ - public static ObjectName repository(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName +":type=deployment,name=repository"); - } - - /** - * Build an ObjectName for the DeploymentPlan MBean. - * @param domainName the management domain name - * @return ObjectName for a deploymentPlan Service - * @throws MalformedObjectNameException if an ObjectName cannot be created with the given String - */ - public static ObjectName deploymentPlan(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName +":type=deployment,name=deploymentPlan"); - } - - - /** - * Build an ObjectName for the ResourceMonitor MBean. - * @param domainName the management domain name - * @return ObjectName for a resource monitor Service - * @throws MalformedObjectNameException if an ObjectName cannot be created with the given String - */ - public static ObjectName resourceMonitor(final String domainName) throws MalformedObjectNameException { - return ObjectName.getInstance(domainName +":type=deployment,name=resourceMonitor"); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JoramObjectName.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JoramObjectName.java deleted file mode 100644 index 21c3675dc9..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/JoramObjectName.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; - -/** - * A set of static methods used to build the names of proprietary MBeans used in Joram. - * @author Adriana Danes - */ -public class JoramObjectName { - - /** - * JORAM MOM Domain. - */ - static final String JORAM_DOMAIN = "Joram"; - - /** - * JORAM Client Domain. - */ - static final String JORAM_CLIENT_DOMAIN = "joramClient"; - - /** - * @return Returns an ObjectName pattern for JORAM Client MBeans. - * @throws MalformedObjectNameException Could not create {@link ObjectName} - */ - public static ObjectName joramClientMBeans() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":*"); - } - - /** - * @return ObjectName for the current JoramAdapter MBean - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramAdapter() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=JoramAdapter"); - } - - /** - * Create ObjectName for a Joram managed queue. - * @param name queue name - * @return ObjectName for a Joram managed queue - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramQueue(final String name) throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Queue,name=" + name); - } - - /** - * Create ObjectName for all Joram managed queues - * @return ObjectName for a Joram managed queue - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramQueues() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Queue,*"); - } - - /** - * Create ObjectName for a Joram managed dead message queue. - * @param name queue name - * @return ObjectName for a Joram managed dead message queue - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramDmQueue(final String name) throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Queue.dmq,name=" + name); - } - /** - * Create ObjectName for all Joram managed dead message queues - * @return ObjectName for a Joram managed dead message queue - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramDmQueues() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Queue.dmq,*"); - } - - /** - * Create ObjectName for a Joram managed topic - * @param name topic name - * @return ObjectName for a Joram managed topic - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramTopic(final String name) throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Topic,name=" + name); - } - - /** - * Create ObjectName for all Joram managed topics - * @return ObjectName for a Joram managed topic - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramTopics() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=Topic,*"); - } - - /** - * Create ObjectName for a Joram managed user - * @param name user name - * @return ObjectName for a Joram managed user - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramUser(final String name) throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=User,name=" + name); - } - - /** - * Create ObjectName for all Joram managed users - * @return ObjectName for a Joram managed user - * @exception MalformedObjectNameException Could not create ObjectName with the given String - */ - public static ObjectName joramUsers() throws MalformedObjectNameException { - return ObjectName.getInstance(JORAM_CLIENT_DOMAIN + ":type=User,*"); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Log.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Log.java deleted file mode 100644 index d9f168c77f..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/Log.java +++ /dev/null @@ -1,493 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Enumeration; -import java.util.Properties; - -import org.objectweb.util.monolog.Monolog; -import org.objectweb.util.monolog.api.Handler; -import org.objectweb.util.monolog.api.HandlerFactory; -import org.objectweb.util.monolog.api.Level; -import org.objectweb.util.monolog.api.LevelFactory; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.LoggerFactory; -import org.objectweb.util.monolog.api.MonologFactory; -import org.objectweb.util.monolog.file.DottedStringTools; -import org.objectweb.util.monolog.file.monolog.PropertiesConfAccess; -import org.objectweb.util.monolog.wrapper.printwriter.PrintWriterImpl; -import org.ow2.jonas.lib.bootstrap.JProp; - -/** - * This class provides utility method for using Monolog. - * @author Philippe Coq. - * @author Sebastien Chassande-Barrioz sebastien.chassande@inrialpes.fr - * @author Philippe Durieux - * @author Florent Benoit & Ludovic Bert - * @author Adriana Danes : change MBean implementation model from inheritance to delegation - */ -public class Log { - - /** - * name of the config file - initialized by the configure method. - */ - private static String configFile = "trace"; - - /** - * This class is actually a wrapper on the unique loggerFactory - */ - private static LoggerFactory lf = null; - - /** - * Properties used for Logging system. - * Kept here mainly for debugging - */ - private static Properties props = null; - - /** - * Config file name for the Logging system. - */ - private static String configFileName = null; - - // List of topic used inside JOnAS - // This list may be not exhaustive since many topics can be added for - // different purposes or to refine debugging. - // To get the complete list, use "jonas admin -t" - public static final String JONAS_ADMIN_PREFIX = "org.ow2.jonas.admin"; - public static final String JONAS_BOOTSTRAP_PREFIX = "org.ow2.jonas.bootstrap"; - public static final String JONAS_CLUSTER_DAEMON = "org.ow2.jonas.cluster.daemon"; - public static final String JONAS_DB_PREFIX = "org.ow2.jonas.db"; - public static final String JONAS_DBM_PREFIX = "org.ow2.jonas.dbm"; - public static final String JONAS_DEPLOY_PREFIX = "org.ow2.jonas.deployment"; - public static final String JONAS_DISCOVERY_PREFIX = "org.ow2.jonas.discovery"; - public static final String JONAS_EAR_PREFIX = "org.ow2.jonas.ear"; - public static final String JONAS_EJB_PREFIX = "org.ow2.jonas.ejb"; - public static final String SPY_LOGGER_NAME = "org.ow2.jonas.ee.jdbc.sql"; - public static final String JONAS_JAXR_PREFIX = "org.ow2.jonas.ee.scout"; - public static final String JONAS_GENBASE_PREFIX = "org.ow2.jonas.generators.genbase"; - public static final String JONAS_GENIC_PREFIX = "org.ow2.jonas.generators.genic"; - public static final String JONAS_GENIC_VELOCITY_PREFIX = "org.ow2.jonas.generators.genic.velocity"; - public static final String JONAS_WSGEN_PREFIX = "org.ow2.jonas.generators.wsgen"; - public static final String JONAS_WSGEN_EWS_PREFIX = "org.ow2.jonas.generators.wsgen.ews"; - public static final String JONAS_JCA_PREFIX = "org.ow2.jonas.jca"; - public static final String JONAS_JMX_PREFIX = "org.ow2.jonas.jmx"; - public static final String JONAS_WORK_MGR_PREFIX = "org.ow2.jonas.lib.work"; - public static final String JONAS_LOADER_PREFIX = "org.ow2.jonas.loader"; - public static final String JONAS_MAIL_PREFIX = "org.ow2.jonas.mail"; - public static final String JONAS_MANAGEMENT_PREFIX = "org.ow2.jonas.management"; - public static final String JONAS_MANAGEMENT_EVENT_PREFIX = "org.ow2.jonas.management.event"; - public static final String JONAS_NAMING_PREFIX = "org.ow2.jonas.naming"; - public static final String JONAS_PROPCTX_PREFIX = "org.ow2.jonas.propagation"; - public static final String JONAS_REGISTRY_PREFIX = "org.ow2.jonas.registry"; - public static final String JONAS_SECURITY_PREFIX = "org.ow2.jonas.security"; - public static final String JONAS_CSIV2_SECURITY_PREFIX = "org.ow2.jonas.security.csiv2"; - public static final String JONAS_CSIV2_DETAILS_SECURITY_PREFIX = "org.ow2.jonas.security.csiv2_details"; - public static final String JONAS_JACC_SECURITY_PREFIX = "org.ow2.jonas.security.jacc"; - public static final String JONAS_WS_SECURITY_PREFIX = "org.ow2.jonas.security.ws"; - public static final String JONAS_SERVER_PREFIX = "org.ow2.jonas.server"; - public static final String JONAS_WEB_PREFIX = "org.ow2.jonas.web"; - public static final String JONAS_DEPLOY_WORK_PREFIX = "org.ow2.jonas.work"; - public static final String JONAS_TESTS_PREFIX = "org.ow2.jonas_tests"; - - /** - * Output tag for the handler - */ - private static final String HANDLER_OUTPUT_ATTRIBUTE = "output"; - - /** - * Output tag which must be replaced by JOnAS - */ - private static final String AUTOMATIC_CONFIG = "automatic"; - - /** - * Directory for the logs $JONAS_BASE/logs - */ - private static final String LOG_DIRECTORY = "logs"; - - /** - * Format of a timestamp log. - */ - private static final String TIMESTAMP_FORMAT = "-yyyy-MM-dd"; - - /** - * Suffix of a log file. - */ - private static final String SUFFIX_LOGFILE = "log"; - - /** - * Default logger factory - */ - private static final String DEFAULT_LOGGERFACTORY = "org.objectweb.util.monolog.wrapper.javaLog.LoggerFactory"; - - /** - * Is in ClientContainer ? - */ - private static boolean clientcontainer = false; - - /** - * JProp fully qualified Classname - */ - private static final String JPROP_CLASSNAME = "org.ow2.jonas.lib.bootstrap.JProp"; - - /** - * Default Private Constructor for utility classes - */ - private Log() { } - - /** - * Configure Logger. - * @param file The configuration file for monolog (usually: trace.properties) - */ - public static void configure(final String file) { - configFile = file; - getLoggerFactory(); - if (!clientcontainer) { - // TODO find a good place for this initialization - // to allow using Monolog when want traces of P6Spy usage in SQL requests - //P6SpyLogger.logger = lf.getLogger(SPY_LOGGER_NAME); - // ----------- - // Comment out call until JONAS uses Log4j - // TraceTm.configure(lf); - } - } - - - - /** - * Use a Monolog class ? - */ - private static String JMX_HANDLER_TYPE = "jmx"; - - /** - * @return a jmx handler. If several, return the first one. - * If none, return null; - */ - public static Handler getJmxHandler() { - Handler[] handlers = Monolog.getMonologFactory().getHandlers(); - for (int i = 0; i < handlers.length; i++) { - Handler handler = handlers[i]; - if (handler.getType().equals(JMX_HANDLER_TYPE)) { - return handler; - } - } - return null; - } - - /** - * Return a given Monolog handler - * @param handlerName the name of the handler - * @return the corresponding Monolog handler - */ - public static Handler getHandler(final String handlerName) { - Handler[] handlers = Monolog.getMonologFactory().getHandlers(); - for (int i = 0; i < handlers.length; i++) { - Handler handler = handlers[i]; - String handType = handler.getType(); - String handName = handler.getName(); - String[] attNames = handler.getAttributeNames(); - } - return Monolog.getMonologFactory().getHandler(handlerName); - - } - - /** - * It returns the unique LoggerFactory used in JOnAS. - * initialize it if not already done. - * @return the unique LoggerFactory used in JOnAS. - */ - public static synchronized LoggerFactory getLoggerFactory() { - if (lf == null) { - try { - // Detect client case = no JONAS_BASE - if (isClient()) { - clientcontainer = true; - InputStream is = null; - - // Is there a specific file to use instead the default name - String traceClient = System.getProperty("jonas.client.trace.file"); - if (traceClient != null) { - try { - is = new FileInputStream(new File(traceClient)); - } catch (FileNotFoundException fne) { - System.err.println("Can not init logger with the supplied file '" + traceClient + "'" + - ", this file doesn't exist. Init with default values."); - - } - } else { - //Client - //Is there a trace properties file in the classpath ? - is = Thread.currentThread().getContextClassLoader().getResourceAsStream("traceclient.properties"); - } - if (is == null) { - // no traceclient.properties found - // using a default configuration - props = new Properties(); - props.put("log.config.classname", DEFAULT_LOGGERFACTORY); - props.put("logger.root.level", "INFO"); - } else { - // use the configuration of the properties file. - props = new Properties(); - props.load(is); - } - lf = Monolog.getMonologFactory(props); - return lf; - } - // server case - // get jonas configuration properties - Object jProp = null; - try { - jProp = JProp.getInstance(); - // Run jonas - // Create a JProp object for the configFile - JProp.getInstance(configFile); - } catch (Exception e) { - System.err.println("Can't read jonas.properties. Check that you have defined a $JONAS_BASE variable"); - } - - - // load properties from config file - props = JProp.getInstance(configFile).getConfigFileEnv(); - configFileName = JProp.getInstance(configFile).getPropFileName(); - - String jonasBase = null; - String nameOfServer = null; - if (jProp != null) { - jonasBase = JProp.getJonasBase(); - nameOfServer = ((JProp) jProp).getValue("jonas.name", "jonas"); - } else { - // Set default - jonasBase = "."; - nameOfServer = "jonas"; - } - - // Before sending props, replace AUTOMATIC pattern by a file in $JONAS_BASE/logs/ - // File are named TIMESTAMP_FORMAT.SUFFIX_LOGFILE - File logDirFile = new File(jonasBase + File.separator + LOG_DIRECTORY); - - // Properties sent may be updated if AUTOMATIC_CONFIG is used - // Updated properties are in - Properties updatedProps = null; - - //Create a date format - SimpleDateFormat sdf = new SimpleDateFormat(TIMESTAMP_FORMAT); - String date = sdf.format(new Date()); - // How many AUTOMATIC field have been replaced - int nbAut = 0; - - File logFile = null; - for (Enumeration keys = props.keys(); keys.hasMoreElements();) { - String key = (String) keys.nextElement(); - if (key == null) { - continue; - } - - if (key.startsWith(PropertiesConfAccess.HANDLER_FIELD)) { - String temp = DottedStringTools.getFirst(key); - - if (temp == null) { - continue; - } - - temp = DottedStringTools.getEnd(key); - if (temp == null) { - continue; - } - - String handlerName = DottedStringTools.getBegin(temp); - - String stringType = props.getProperty(PropertiesConfAccess.HANDLER_FIELD + PropertiesConfAccess.DOT + handlerName + PropertiesConfAccess.DOT + PropertiesConfAccess.HANDLER_TYPE_ATTRIBUTE, null); - String stringOutput = props.getProperty(PropertiesConfAccess.HANDLER_FIELD + PropertiesConfAccess.DOT + handlerName + PropertiesConfAccess.DOT + HANDLER_OUTPUT_ATTRIBUTE, null); - // Got the type and the output - // --> Compare with the pattern AUTOMATIC_CONFIG for the FILE type. - if ((stringType != null) && (stringOutput != null)) { - if (PropertiesConfAccess.HANDLER_TYPE_ATTRIBUTE_FILE_VALUE.equalsIgnoreCase(stringType) - || (PropertiesConfAccess.HANDLER_TYPE_ATTRIBUTE_ROLLING_FILE_VALUE.equalsIgnoreCase(stringType))) { - if (stringOutput.equalsIgnoreCase(AUTOMATIC_CONFIG)) { - // OK, it's match - String fileName = null; - - if (nbAut > 0) { - // Add an unique entry by adding nbAut value. - fileName = nameOfServer + date + PropertiesConfAccess.DOT + nbAut + PropertiesConfAccess.DOT + SUFFIX_LOGFILE; - } else { - // this is the first occurence of AUTOMATIC_CONFIG, create updatedProps - updatedProps = (Properties) props.clone(); - fileName = nameOfServer + date + PropertiesConfAccess.DOT + SUFFIX_LOGFILE; - } - - // Create the directory if it doesn't exists - if (!logDirFile.exists()) { - logDirFile.mkdirs(); - } - logFile = new File(logDirFile, fileName); - - updatedProps.setProperty(PropertiesConfAccess.HANDLER_FIELD + PropertiesConfAccess.DOT + handlerName + PropertiesConfAccess.DOT + HANDLER_OUTPUT_ATTRIBUTE, logFile.getPath()); - nbAut++; - - } - else { - // not automatic -- change relative file name to be relative to JONAS_BASE/logs - logFile = new File(stringOutput); - if (!logFile.isAbsolute()) { - // file name is relative so try to create in JONAS_BASE/logs - // Create the directory if it doesn't exists - if (!logDirFile.exists()) { - logDirFile.mkdirs(); - } - logFile = new File(logDirFile, stringOutput); - if (nbAut == 0) { - updatedProps = (Properties) props.clone(); - nbAut++; - } - if (stringOutput.endsWith(".automatic") || - stringOutput.endsWith(".auto")) { - nbAut++; - String autoStr = logFile.getPath().substring(0, logFile.getPath().lastIndexOf('.')) + date + - PropertiesConfAccess.DOT + nbAut + PropertiesConfAccess.DOT + SUFFIX_LOGFILE; - logFile = new File(autoStr); - } - updatedProps.setProperty(PropertiesConfAccess.HANDLER_FIELD + PropertiesConfAccess.DOT + handlerName + PropertiesConfAccess.DOT + HANDLER_OUTPUT_ATTRIBUTE, logFile.getPath()); - } else { - File logFileParent = logFile.getParentFile(); - if (!logFileParent.exists()) { - logFileParent.mkdirs(); - } - } - } - } - } - } - } - - // Instanciate the LoggerFactory - String b = props.getProperty("log.config.classname", null); - if (b == null) { - System.err.println("Malformed configuration log file: log.config.classname not available"); - return null; - } - lf = (LoggerFactory) Class.forName(b).newInstance(); - - // Configure the LoggerFactory with the updated properties or the initial ones - if (updatedProps == null) { - PropertiesConfAccess.load(props, lf, (HandlerFactory) lf, (LevelFactory) lf); - } else { - PropertiesConfAccess.load(updatedProps, lf, (HandlerFactory) lf, (LevelFactory) lf); - } - //Register the monolog factory in Monolog - Monolog.monologFactory = (MonologFactory) lf; - } catch (Exception e) { - System.err.println("Cannot get LoggerFactory:" + e); - e.printStackTrace(); - } - } - return lf; - } - - /** - * @return Returns true if we are in a client context - */ - private static boolean isClient() { - boolean hasJonasBase = System.getProperty("jonas.base") != null; - boolean hasJonasRoot = System.getProperty("jonas.root") != null; - boolean hasJProp = true; - try { - Log.class.getClassLoader().loadClass(JPROP_CLASSNAME); - } catch (ClassNotFoundException cnfe) { - hasJProp = false; - } - // a server has the 3 params, all other case are clients case - return !(hasJProp && hasJonasBase && hasJonasRoot); - } - - /** - * Reset logger factory - */ - public static void reset() { - lf = null; - } - - /** - * Returns the standard PrintWriter associated to the logger defined by - * its topic. - * This is mainly used for DBM and Connectors. - */ - public static PrintWriter getLogWriter(final String topic) { - // TODO : should not create a new object at each call - return new PrintWriterImpl(getLogger(topic), getLoggerFactory()); - } - - /** - * Shortcut that returns the LevelFactory - */ - public static LevelFactory getLevelFactory() { - return (LevelFactory) getLoggerFactory(); - } - - /** - * Shortcut to get the Logger by its topic name. - * @param topic the topic of the returned logger - * @return always a logger instance (never null value). - */ - public static Logger getLogger(final String topic) { - return getLoggerFactory().getLogger(topic); - } - - public static Properties getProperties() { - return props; - } - - public static String getConfigFileName() { - return configFileName; - } - - public static void setConfigFileName(final String configFileName) { - Log.configFileName = configFileName; - } - - /** - * Set the given log level to the specified logger. - * @param loggerName name of the loger to be configured - * @param level target level - * @return the previous level of the logger - */ - public static Level setComponentLogLevel(final String loggerName, - final Level level) { - Logger log = Log.getLogger(loggerName); - Level old = log.getCurrentLevel(); - log.setLevel(level); - return old; - } - - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ModuleNamingUtils.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ModuleNamingUtils.java deleted file mode 100644 index f6800bcd99..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/ModuleNamingUtils.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.io.File; -import java.net.URL; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Utility class to build J2eeApplicationNames. - * @Deprecated Use Deployable.getModuleName() instead - */ -@Deprecated -public class ModuleNamingUtils { - - private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX); - - /** - * Build the J2EEApplication name. - * @param pUrl The URL of Ear file - * @return The J2EEApplication name - */ - public static String fromURL(final URL pUrl) { - String sName = null; - try { - sName = new File(pUrl.getFile()).getName(); - if ("file".equals(pUrl.getProtocol())) { - sName = fromFileName(sName); - } - } catch (NullPointerException e) { - logger.log(BasicLevel.DEBUG, "Can't build j2ee application", e); - } - return sName; - } - - /** - * Build the J2EEApplication name. - * @param pFilename The name of Ear file - * @return The J2EEApplication name - */ - public static String fromFileName(final String pFilename) { - String sName = null; - try { - sName = new File(pFilename).getName(); - int iPos = sName.lastIndexOf('.'); - if (iPos > -1) { - sName = sName.substring(0, iPos); - } - } catch (NullPointerException e) { - logger.log(BasicLevel.DEBUG, "Can't build j2ee application : " + e); - } - return sName; - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/NetUtils.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/NetUtils.java deleted file mode 100644 index 870d9fe9b0..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/NetUtils.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.util; - -import java.net.Inet4Address; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.util.Enumeration; - -/** - * {@link NetUtils} is meant to provide routine network related information to - * components of JONAS. One of the main purposes is to allow the server to - * extract it's own IP address correctly. This addresses a bug in java when - * dealing with Linux boxes on DHCP trying to extract their own IP addresses and - * always getting the loop back address instead of the external one. - * - * @link http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4060691 - * - * @author Vivek Lakshmanan - */ -public class NetUtils { - - /** - * IPv4 Loop back address. - */ - public static final String LOOP_BACK_ADDR = "127.0.0.1"; - - /** - * Get the string form of the local IP address and not naively assume - * InetAddress.getLocalHost().getHostAddress() is the - * correct value. See the class description above for details. - * - * @return A string representing the IPv4 localhost IP address. - * @throws UnknownHostException - */ - public static String getLocalAddress() throws UnknownHostException { - - InetAddress localhost = InetAddress.getLocalHost(); - // Check if the value of the localhost address is a loop back address. - if (localhost.getHostAddress().equals(LOOP_BACK_ADDR)) { - // If so, try to find a non-loop back address (IPv4 only) - try { - NetworkInterface inter = null; - InetAddress addr = null; - // Get all network interfaces on this machine. - Enumeration networkEnum = NetworkInterface.getNetworkInterfaces(); - while (networkEnum.hasMoreElements()) { - inter = (NetworkInterface) networkEnum.nextElement(); - Enumeration enumAddr = inter.getInetAddresses(); - // Check all addresses for this interface. - while (enumAddr.hasMoreElements()) { - addr = (InetAddress) enumAddr.nextElement(); - // Check only IP v4 addresses. - if (addr instanceof Inet4Address) { - if (!addr.isLoopbackAddress()) { - // Found a non-loop back address so return it. - return addr.getHostAddress(); - } - } - - } - } - - // No non-loop back IP v4 addresses found so return loop back - // address. - return localhost.getHostAddress(); - - } catch (SocketException e) { - return localhost.getHostAddress(); - } - } else { - // Got a non-loop back address so return it. - return localhost.getHostAddress(); - } - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/PropDump.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/PropDump.java deleted file mode 100644 index cf1e544795..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/PropDump.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.util; - -import java.util.Enumeration; -import java.util.Properties; -import org.objectweb.util.monolog.api.Logger; - -/** - * Used to print out properties - */ -public class PropDump { - - /** - * Prints out the {@link Properties}. - * @param header Display header - * @param props Properties to be printed - * @param logger {@link Logger} to use - * @param logLevel Log level - */ - public static void print(final String header, - final Properties props, - final Logger logger, - final int logLevel) { - - logger.log(logLevel, header); - logger.log(logLevel, "================================="); - String aName = null; - String aValue = null; - for (Enumeration pNames = props.propertyNames(); pNames.hasMoreElements();) { - aName = (String) pNames.nextElement(); - aValue = (String) props.getProperty(aName); - if (aValue != null) { - logger.log(logLevel, aName + " = " + aValue); - } - } - logger.log(logLevel, "================================="); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/XMLSerializer.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/XMLSerializer.java deleted file mode 100644 index b312cc490e..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/util/XMLSerializer.java +++ /dev/null @@ -1,127 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.lib.util; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.Writer; - -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.bootstrap.DOMImplementationRegistry; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.ls.LSSerializer; - - -/** - * Serialize a given DOM Document. - * Handle namespaces nicely. - * - * @author Guillaume Sauthier - */ -public class XMLSerializer { - - /** - * Default Line separator (unix). - */ - private static final String DEF_LINE_SEP = "\n"; - - /** - * Document to be formated and serialized - */ - private Document doc; - - /** - * DOM L3 Serializer. - */ - private LSSerializer serializer; - - /** - * DOM L3 output. - */ - private LSOutput output; - - /** - * Creates a new XMLSerializer object. - * @param doc Document to be serialized - */ - public XMLSerializer(Document doc) { - // Store the ref - this.doc = doc; - - // Create the LSSerializer and LSOutput instances - DOMImplementationRegistry registry; - try { - registry = DOMImplementationRegistry.newInstance(); - } catch (Exception e) { - throw new RuntimeException("Cannot get the system DOMImplementationRegistry", e); - } - DOMImplementation impl = registry.getDOMImplementation("LS 3.0"); - DOMImplementationLS factory = (DOMImplementationLS) impl; - - // Define the format for the xml document - serializer = factory.createLSSerializer(); - serializer.setNewLine(DEF_LINE_SEP); - output = factory.createLSOutput(); - output.setEncoding("UTF-8"); - - //DOMConfiguration dc = serializer.getDomConfig(); - //dc.setParameter("format-pretty-print", Boolean.TRUE); - //dc.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema"); - - } - - /** - * Serialize the encapsulated Document into the OutputStream - * - * @param os output stream - * - * @throws IOException When serialization fails - */ - public void serialize(OutputStream os) throws IOException { - output.setByteStream(os); - serialize(); - } - - /** - * Serialize the encapsulated Document into the Writer - * - * @param writer writer - * - * @throws IOException When serialization fails - */ - public void serialize(Writer writer) throws IOException { - output.setCharacterStream(writer); - serialize(); - } - - /** - * Serialize the wrapped Document. - */ - private void serialize() { - serializer.write(doc, output); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/windows/WinSysEnv.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/windows/WinSysEnv.java deleted file mode 100644 index 36c1ffb22c..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/windows/WinSysEnv.java +++ /dev/null @@ -1,139 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Francois Waeselynck - * Contributor(s): Benoit Pelletier - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.windows; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -//import java.util.Iterator; -import java.util.Properties; - -import org.ow2.jonas.lib.util.Log; -//import java.util.Map.Entry; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * This class provides some utilities for the windows environment - */ -public class WinSysEnv { - - /** - * Maintains an image of the environment - */ - private static Properties env = null; - - /** - * Logger - */ - private static Logger logger = Log.getLogger(WinSysEnv.class.getName()); - - - /** - * Get a variable from the windows env - * @param var variable name - * @return the variable value - */ - public static String get(String var) { - if (env == null) load(); - String value = null; - if (env != null) value = (String) env.getProperty(var); - return value; - } - - /** - * Get the windows env - * @return properties - */ - public static Properties getEnv() { - if (env == null) load(); - return env; - } - - /** - * Get the windows environment - * - */ - private static void load() { - - if (env == null) { - Properties props = new Properties(); - Runtime rt = Runtime.getRuntime(); - Process proc = null; - try { - proc = rt.exec("cmd /c SET"); - BufferedReader r = new BufferedReader(new InputStreamReader( - proc.getInputStream())); - String ln = null; - while ((ln = r.readLine()) != null) { - //System.out.println(ln); - int ix = ln.indexOf("="); - props.setProperty(ln.substring(0, ix), ln.substring(ix + 1)); - } - if (proc != null) - proc.waitFor(); - } catch (IOException e1) { - logger.log(BasicLevel.ERROR, "Cannot get System environment : " + e1); - } catch (InterruptedException e) { - // Do nothing - } - env = props; - } - } - - /** - * main - * For test purposes - * @param args - */ - /* - public static void main(String[] args) { - - Properties props = System.getProperties(); - - // props.list(System.out); - - Iterator it = props.entrySet().iterator(); - while (it.hasNext()) { - Entry p = (Entry) it.next(); - System.out.println(p.getKey() + "=" + p.getValue()); - - } - System.out.println("\n=========\nWinSysEnv\n========="); - System.out.println("SystemRoot="+WinSysEnv.get("SystemRoot")); - props = WinSysEnv.getEnv(); - it = props.entrySet().iterator(); - while (it.hasNext()) { - Entry p = (Entry) it.next(); - System.out.println(p.getKey() + "=" + p.getValue()); - } - } - */ - -} diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/AbsCleanTask.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/AbsCleanTask.java deleted file mode 100644 index dd36f99bbc..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/AbsCleanTask.java +++ /dev/null @@ -1,175 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2008 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Benoit PELLETIER - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.work; - -import java.io.File; -import java.util.Enumeration; -import java.util.Vector; - -import org.ow2.jonas.workcleaner.CleanTask; -import org.ow2.jonas.workcleaner.LogEntry; -import org.ow2.jonas.workcleaner.WorkCleanerException; -import org.ow2.util.file.FileUtils; -import org.ow2.util.file.FileUtilsException; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; - -/** - * Abstract Clean Task class which define a generic job executed by the cleaner thread. - * @author Benoit PELLETIER - */ -public abstract class AbsCleanTask implements CleanTask { - - /** - * Logger. - */ - private Log logger = LogFactory.getLog(AbsCleanTask.class); - - /** - * Default constructor : Construct a new cleaner. - */ - protected AbsCleanTask() { - } - - /** - * Check if the package pointed by the log entry is currently deploy. - * @param logEntry entry in a deploy log - * @return true if the package pointed by the log entry is currently deployed - * @throws WorkCleanerException If it fails - */ - protected abstract boolean isDeployedLogEntry(LogEntry logEntry) throws WorkCleanerException; - - /** - * Returns the {@link DeployerLog} of the task. - * @return The DeployerLog of the task - */ - public abstract DeployerLog getDeployerLog(); - - /** - * Return true if the work copy exists and is up to date. - * @param logEntry entry in a deploy log - * @return true if the work copy exists and is up to date - * @throws WorkCleanerException if it fails - */ - public boolean isValidLogEntry(final LogEntry logEntry) throws WorkCleanerException { - String lastModifiedFileName = null; - File logEntryFile = logEntry.getOriginal(); - String logEntryUnpackedDir = logEntry.getCopy().getName(); - - logger.debug("LogEntry <" + logEntryFile.getName() + "> exists :" + logEntryFile.exists()); - - // If the file doesn't exist, return - if (!logEntryFile.exists()) { - return false; - } - - // Get the file name containing the last modification date - try { - lastModifiedFileName = FileUtils.lastModifiedFileName(logEntryFile); - } catch (FileUtilsException e) { - logger.error("Cannot retrieve the working file name for the deployable '{0}'", logEntryFile); - } - - logger.debug("LogEntry lastModificationFileName :" + lastModifiedFileName); - logger.debug("LogEntry isValid :" + lastModifiedFileName.equalsIgnoreCase(logEntryUnpackedDir)); - - // Compare the two file names - return (lastModifiedFileName.equalsIgnoreCase(logEntryUnpackedDir)); - - } - - /** - * Run the clean task. - * @throws WorkCleanerException if it failed. - */ - public void execute() throws WorkCleanerException { - logger.debug("Execute called"); - - // Get the entries from the logger - Vector logEntries = getLogEntries(); - - // Check if the files in this vector exists - LogEntry logEntry = null; - - for (Enumeration e = logEntries.elements(); e.hasMoreElements();) { - logEntry = e.nextElement(); - logger.debug("LogEntry <" + logEntry.getOriginal().getName() + "," + logEntry.getCopy().getName() + ">"); - - // If the package is deployed, do nothing - if (isDeployedLogEntry(logEntry)) { - logger.debug("LogEntry currently deployed - > do nothing"); - continue; - } - - // If the source package file doesn't exists anymore or if the file is present but don't care the right last - // modification date - if (!isValidLogEntry(logEntry)) { - - // We try to remove the entry - if (removeLogEntry(logEntry)) { - // Enumeration is now inconsistent, so we 're restarting the loop - e = logEntries.elements(); - } - } - // Else last modification dates always the same - } - } - - /** - * Remove the work copy specified in the log entry and the log entry. - * @param logEntry entry in a deploy log - * @return true if the log entry has been removed successfully - * @throws WorkCleanerException if it fails - */ - public boolean removeLogEntry(final LogEntry logEntry) throws WorkCleanerException { - if (FileUtils.delete(logEntry.getCopy())) { - try { - getDeployerLog().removeEntry(logEntry); - return true; - } catch (DeployerLogException edle) { - throw new WorkCleanerException("Can't remove an entry" + edle.getMessage()); - } - } - return false; - } - - /** - * Gets the log entries. - * @return the log entries - */ - public Vector getLogEntries() { - return getDeployerLog().getEntries(); - } - - /** - * Get logger. - * @return the logger - */ - protected Log getLogger() { - return logger; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLog.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLog.java deleted file mode 100644 index 5d94f1d688..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLog.java +++ /dev/null @@ -1,262 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.work; - -//import java -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Enumeration; -import java.util.StringTokenizer; -import java.util.Vector; - -import org.ow2.jonas.workcleaner.LogEntry; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; - - -/** - * Class which permits to store or load the association between the name of a package and the timestamped work copy associated. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class DeployerLog { - - /** - * The logger. - */ - private Log logger = LogFactory.getLog(DeployerLog.class); - - /** - * Separator char of a entry in the log file. - */ - private static final String SEPARATOR_ENTRY = ";"; - - /** - * File for logging. - */ - private File logFile; - - /** - * The current entries of the logFile. - */ - private Vector logEntries = null; - - /** - * Constructor for the deployerLog. - * @param logFile the file which is used for read/write entries - * @throws DeployerLogException if the loadentries failed. - */ - public DeployerLog(final File logFile) throws DeployerLogException { - logger.debug("logfile=" + logFile.getName()); - - this.logFile = logFile; - logEntries = new Vector(); - loadEntries(); - } - - /** - * @return the logger - */ - protected Log getLogger() { - return logger; - } - - /** - * load the entries of the log file. - * @throws DeployerLogException if the load failed. - */ - private synchronized void loadEntries() throws DeployerLogException { - - BufferedReader br = null; - try { - br = new BufferedReader(new FileReader(logFile)); - } catch (FileNotFoundException e) { - throw new DeployerLogException("Can not read the " + logFile + " file"); - } - String line = null; - - String field = null; - File originalField = null; - File copyField = null; - StringTokenizer st = null; - - try { - //Read the text file - while ((line = br.readLine()) != null) { - - //parse the String - st = new StringTokenizer(line, SEPARATOR_ENTRY); - field = st.nextToken(); - if (field == null) { - throw new DeployerLogException("Inconsistent line in the file " + logFile); - } - originalField = new File(field); - - field = st.nextToken(); - if (field == null) { - throw new DeployerLogException("Inconsistent line in the file " + logFile); - } - - copyField = new File(field); - - logger.debug("Entry[originalField=" + originalField + ",copyField=" + copyField + "]"); - logEntries.add(new LogEntryImpl(originalField, copyField)); - } - // Close the input stream - br.close(); - } catch (IOException ioe) { - throw new DeployerLogException("Error while reading the log file " + logFile + " :" + ioe.getMessage()); - } - } - - /** - * Dump(save) the entries to the log file. - * @throws DeployerLogException if the save failed. - */ - private synchronized void saveEntries() throws DeployerLogException { - - PrintWriter pw = null; - try { - pw = new PrintWriter(new BufferedWriter(new FileWriter(logFile))); - } catch (IOException e) { - throw new DeployerLogException("Problem while trying to get an output stream for the " + logFile + " file"); - } - - LogEntry logEntry = null; - String original = null; - String copy = null; - String line = null; - for (Enumeration e = logEntries.elements(); e.hasMoreElements();) { - logEntry = e.nextElement(); - - //get the infos - - try { - original = logEntry.getOriginal().getCanonicalPath(); - copy = logEntry.getCopy().getCanonicalPath(); - } catch (IOException ioe) { - throw new DeployerLogException("Problem while trying to get files names "); - } - - //create the line - line = original + SEPARATOR_ENTRY + copy; - - //dump the line - pw.println(line); - } - // Close the stream - pw.close(); - } - - /** - * Return the entries of the file. - * @return a vector of LogEntry item. - */ - public synchronized Vector getEntries() { - return logEntries; - } - - /** - * Remove the given entry and return the entries of the file. - * @param entry the LogEntry which must be remove. - * @return the new vector of LogEntry item. - * @throws DeployerLogException if the remove can't be done - */ - public synchronized Vector removeEntry(final LogEntry entry) throws DeployerLogException { - if (logEntries == null) { - throw new DeployerLogException("Can not remove a entry, the vector is null"); - } - - if (!logEntries.contains(entry)) { - throw new DeployerLogException("Can not remove entry " + entry + ". There is no such entry"); - } - - //remove can be done - logEntries.remove(entry); - - //write to the file. - saveEntries(); - - //return the new vector - return logEntries; - } - - /** - * Add the entry and return the new entries. - * @param original the name of the file - * @param copy the copy of the file - * @return the new vector of LogEntry item. - * @throws DeployerLogException if the add can't be done - */ - public synchronized Vector addEntry(final File original, final File copy) throws DeployerLogException { - if (logEntries == null) { - throw new DeployerLogException("Can not add an entry, the vector is null"); - } - - //add only if it's not already present - LogEntry logEntry = null; - File originalEntry = null; - File copyEntry = null; - - boolean found = false; - Enumeration e = logEntries.elements(); - - //add only if the entry is not found - while (e.hasMoreElements() && !found) { - logEntry = e.nextElement(); - - originalEntry = logEntry.getOriginal(); - copyEntry = logEntry.getCopy(); - - if (originalEntry.getPath().equals(original.getPath()) && copyEntry.getPath().equals(copy.getPath())) { - found = true; - } - } - if (found) { - return logEntries; - } - - //add entry - logEntry = new LogEntryImpl(original, copy); - - //add can be done - logEntries.add(logEntry); - - //write to the file. - saveEntries(); - - //return the new vector - return logEntries; - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLogException.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLogException.java deleted file mode 100644 index 2738372190..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/DeployerLogException.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.work; - -/** - * The class DeployerLogException indicates conditions that a reasonable - * application might want to catch. - * @author Florent Benoit - * @author Ludovic Bert - */ - -public class DeployerLogException extends Exception { - - /** - * Constructs a new DeployerLogException with no detail message. - */ - public DeployerLogException() { - super(); - } - - /** - * Constructs a new DeployerLogException with the specified message. - * @param message the detail message. - */ - public DeployerLogException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/LogEntryImpl.java b/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/LogEntryImpl.java deleted file mode 100644 index 550e7b47b9..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/java/org/ow2/jonas/lib/work/LogEntryImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.lib.work; - -// import java -import java.io.File; - -import org.ow2.jonas.workcleaner.LogEntry; - -/** - * Class wich represent an entry in a log file : a original associate with its work copy. - * @author Florent Benoit - * @author Ludovic Bert - * @author Benoit PELLETIER - */ -public class LogEntryImpl implements LogEntry { - - /** - * The original file. - */ - private File original = null; - - /** - * The copy file / directory. - */ - private File copy = null; - - /** - * Constructor of a log entry. - * @param original the file to copy - * @param copy name of the copy - */ - public LogEntryImpl(final File original, final File copy) { - super(); - this.original = original; - this.copy = copy; - } - - /** - * Return the ear file of this ear log entry. - * @return the ear file of this ear log entry. - */ - public File getOriginal() { - return original; - } - - /** - * Return the unpacked directory. - * @return the unpacked directory. - */ - public File getCopy() { - return copy; - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-commons/src/main/resources/META-INF/jonas-commons.bnd b/jonas/modules/libraries/jonas-commons/src/main/resources/META-INF/jonas-commons.bnd deleted file mode 100644 index 8df47153d8..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/resources/META-INF/jonas-commons.bnd +++ /dev/null @@ -1,27 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@ow2.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -Export-Package org.ow2.jonas.lib.* --exportcontents org.ow2.jonas.lib.mapping - -DynamicImport-Package * diff --git a/jonas/modules/libraries/jonas-commons/src/main/resources/org/ow2/jonas/lib/loader/mapping/classloader-default-filtering-mapping.xml b/jonas/modules/libraries/jonas-commons/src/main/resources/org/ow2/jonas/lib/loader/mapping/classloader-default-filtering-mapping.xml deleted file mode 100644 index e3a9edde1f..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/main/resources/org/ow2/jonas/lib/loader/mapping/classloader-default-filtering-mapping.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - filters - default-filters - - - - - diff --git a/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/cpmanager/JarListTestCase.java b/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/cpmanager/JarListTestCase.java deleted file mode 100644 index eea2f92832..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/cpmanager/JarListTestCase.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.lib.cpmanager; - -import java.io.File; -import java.net.URL; - -import org.hamcrest.Matchers; -import org.ow2.util.url.URLUtils; -import org.testng.annotations.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -public class JarListTestCase { - - @Test - public void testReferenceToMissingArchiveIsOmitted() throws Exception { - JarList list = new JarList(); - list.add("$$$$non-existent.jar"); - - String userDir = System.getProperty("user.dir"); - File userDirFile = new File(userDir); - URL userDirUrl = URLUtils.fileToURL(userDirFile); - URL[] urls = list.getURLs(userDirUrl.toExternalForm()); - - assertThat(urls, is(Matchers.notNullValue())); - assertThat(urls.length, is(equalTo(0))); - } - -} diff --git a/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/loader/FilteringClassLoaderTestCase.java b/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/loader/FilteringClassLoaderTestCase.java deleted file mode 100644 index 32c06bf7df..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/test/java/org/ow2/jonas/lib/loader/FilteringClassLoaderTestCase.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.lib.loader; - -import java.net.URL; - -import org.testng.Assert; -import org.testng.annotations.Test; - -/** - * A {@code FilteringClassLoaderTestCase} is ... - * - * @author Guillaume Sauthier - */ -public class FilteringClassLoaderTestCase { - - private ClassLoader getParent() { - return FilteringClassLoaderTestCase.class.getClassLoader(); - } - - private URL getResource(String name) { - return FilteringClassLoaderTestCase.class.getResource(name); - } - - @Test - public void testAdminCanForceDisabledFiltering() throws Exception { - FilteringClassLoader loader = new FilteringClassLoader(getParent()); - loader.setTransparent(false); - loader.setDefinitionUrl(getResource("/test-default-filters.xml")); - System.setProperty(FilteringClassLoader.DISABLE_FILTERING_PROPERTY_NAME, "true"); - - loader.start(); - - Assert.assertTrue(loader.isTransparent(), "ClassLoader is not transparent"); - - System.getProperties().remove(FilteringClassLoader.DISABLE_FILTERING_PROPERTY_NAME); - - } - - @Test - public void testXmlParsingWithDefaultFiltersDefinition() throws Exception { - FilteringClassLoader loader = new FilteringClassLoader(getParent()); - loader.setDefinitionUrl(getResource("/test-default-filters.xml")); - - loader.start(); - - Assert.assertTrue(loader.getFilters().contains("the.system.filter.*"), - "ClassLoader has not the expected filtering content"); - } - - @Test - public void testXmlParsingWithFiltersDefinition() throws Exception { - FilteringClassLoader loader = new FilteringClassLoader(getParent()); - loader.setDefinitionUrl(getResource("/test-app-filters.xml")); - - loader.start(); - - Assert.assertTrue(loader.getFilters().contains("my.app.filter.*"), - "ClassLoader has not the expected filtering content"); - } -} diff --git a/jonas/modules/libraries/jonas-commons/src/test/resources/test-app-filters.xml b/jonas/modules/libraries/jonas-commons/src/test/resources/test-app-filters.xml deleted file mode 100644 index 04b67a3aae..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/test/resources/test-app-filters.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - my.app.filter.* - - diff --git a/jonas/modules/libraries/jonas-commons/src/test/resources/test-default-filters.xml b/jonas/modules/libraries/jonas-commons/src/test/resources/test-default-filters.xml deleted file mode 100644 index 08c2807426..0000000000 --- a/jonas/modules/libraries/jonas-commons/src/test/resources/test-default-filters.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - the.system.filter.* - - diff --git a/jonas/modules/libraries/jonas-datasources/binding/pom.xml b/jonas/modules/libraries/jonas-datasources/binding/pom.xml deleted file mode 100644 index 6cc7ed68f6..0000000000 --- a/jonas/modules/libraries/jonas-datasources/binding/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - org.ow2.jonas - jonas-datasource - 5.2.2-SNAPSHOT - ../pom.xml - - - - 4.0.0 - org.ow2.jonas - jonas-datasource-binding - JOnAS :: Libraries :: Datasource :: Binding - Binding for datasource - - - - - maven2-repository.dev.java.net - Java.net Maven 2 Repository - http://download.java.net/maven/2 - - - - - - maven2-repository.dev.java.net - Java.net Maven 2 Repository - http://download.java.net/maven/2 - - - - - - - src/main/resources - - *.xsd - - org/ow2/jonas/datasource/binding/schema/ - - - - - org.jvnet.jaxb2.maven2 - maven-jaxb2-plugin - 0.6.1 - - - schemas - - generate - - - org.ow2.jonas.datasource.binding - true - - - - - - - - diff --git a/jonas/modules/libraries/jonas-datasources/binding/src/main/resources/jonas-datasources-1.0.xsd b/jonas/modules/libraries/jonas-datasources/binding/src/main/resources/jonas-datasources-1.0.xsd deleted file mode 100644 index 3bfcc9b6f8..0000000000 --- a/jonas/modules/libraries/jonas-datasources/binding/src/main/resources/jonas-datasources-1.0.xsd +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - @(#)jonas-datasources-1.0.xsd 09/2010 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas/modules/libraries/jonas-datasources/deploy/api/pom.xml b/jonas/modules/libraries/jonas-datasources/deploy/api/pom.xml deleted file mode 100644 index 491580bf28..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/api/pom.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - org.ow2.jonas - jonas-datasource-deploy - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-datasource-deploy-api - jar - JOnAS :: Libraries :: Datasource :: Deploy :: API - API of the deployable part for the datasource - - - - org.ow2.jonas - jonas-dbm - ${project.version} - - - - org.ow2.util - util-ee-deploy-api - ${ow2-bundles.version} - - - org.ow2.util - util-plan-deploy-api - ${ow2-bundles.version} - - - org.ow2.jonas - jonas-datasource-binding - ${project.version} - - - diff --git a/jonas/modules/libraries/jonas-datasources/deploy/api/src/main/java/org/ow2/jonas/datasource/deploy/deployable/api/DatasourceDeployable.java b/jonas/modules/libraries/jonas-datasources/deploy/api/src/main/java/org/ow2/jonas/datasource/deploy/deployable/api/DatasourceDeployable.java deleted file mode 100644 index f04f840544..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/api/src/main/java/org/ow2/jonas/datasource/deploy/deployable/api/DatasourceDeployable.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.deploy.deployable.api; - -import org.ow2.jonas.datasource.binding.Datasources; -import org.ow2.util.plan.deploy.deployable.api.FileDeployable; - -/** - * Represents a Datasource deployable. - * @author meldja - */ -public interface DatasourceDeployable extends FileDeployable { - - /** - * Namespace for datasources. - */ - public static String NAMESPACE = "http://jonas.ow2.org/ns/datasource/1.0"; - -} diff --git a/jonas/modules/libraries/jonas-datasources/deploy/impl/pom.xml b/jonas/modules/libraries/jonas-datasources/deploy/impl/pom.xml deleted file mode 100644 index 409b7bc356..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/impl/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - org.ow2.jonas - jonas-datasource-deploy - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-datasource-deploy-impl - jar - JOnAS :: Libraries :: Datasource :: Deploy :: Impl - Implementation of the deployable part for the datasource - - - org.ow2.util - util-archive-api - ${ow2-util.version} - - - - org.ow2.util - util-ee-deploy-api - ${ow2-bundles.version} - - - - org.ow2.util - util-ee-deploy-impl - ${ow2-bundles.version} - - - - org.ow2.jonas - jonas-datasource-reader - ${project.version} - - - - org.ow2.jonas - jonas-datasource-deploy-api - ${project.version} - - - - - org.testng - testng - 5.1 - jdk15 - test - - - - org.ow2.util - util-plan-deploy-impl - ${ow2-bundles.version} - - - diff --git a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/main/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableImpl.java b/jonas/modules/libraries/jonas-datasources/deploy/impl/src/main/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableImpl.java deleted file mode 100644 index 17ee50703e..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/main/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.deploy.deployable.impl; - -import org.ow2.jonas.datasource.binding.Datasources; -import org.ow2.jonas.datasource.deploy.deployable.api.DatasourceDeployable; -import org.ow2.util.archive.api.IFileArchive; -import org.ow2.util.ee.deploy.impl.deployable.AbsDeployable; - -/** - * @author Djamel eddine ZABCHI - */ -public class DatasourceDeployableImpl extends AbsDeployable implements DatasourceDeployable { - - /** - * The attached DatasourceType object. - */ - private Datasources attachedDatasources = null; - - /** - * Defines and create a deployable for the given archive. - * @param archive the given archive. - */ - public DatasourceDeployableImpl(final IFileArchive archive) { - super(archive); - } - - public Datasources getAttachedData() { - return this.attachedDatasources; - } - - public void setAttachedData(final Datasources attachedData) { - this.attachedDatasources = attachedData; - - } - -} diff --git a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableTest.java b/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableTest.java deleted file mode 100644 index 5e3448468b..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/DatasourceDeployableTest.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.datasource.deploy.deployable.impl; - -import org.ow2.util.archive.api.IFileArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.plan.deploy.deployable.internal.xmlhelper.XmlHelper; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.testng.Assert; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -import java.io.File; - -public class DatasourceDeployableTest { - - /** - * Path to the test example for datasource. - */ - private static final String DATASOURCE_XML_PATH = - "src/test/resources/exemple-datasource.xml"; - - /** - * Datasource namespace. - */ - private static final String DATASOURCE_NS = - "http://jonas.ow2.org/ns/datasource/1.0"; - - /** - * Archive made from the datasource. - */ - private IFileArchive datasourceArchive = null; - - - /** - * xmlHelper - */ - private XmlHelper xmlHelper = null; - - /** - * DatasourceDeployableImpl - */ - DatasourceDeployableImpl dsDeployable = null; - - - - /** - * Prepares test data. - * @throws Exception - */ - @BeforeClass - public void init() throws Exception { - - datasourceArchive = (IFileArchive) ArchiveManager.getInstance() - .getArchive(new File(DATASOURCE_XML_PATH)); - Assert.assertNotNull(datasourceArchive); - xmlHelper = new XmlHelper(); - - } - - @Test - public void testDatasourceConstructor() throws Exception { - dsDeployable = new DatasourceDeployableImpl(datasourceArchive); - Assert.assertNotNull(dsDeployable); - } - - @Test - public void testRootElementNameSpace() throws Exception { - Assert.assertEquals(xmlHelper.getRootElementNameSpace( - datasourceArchive.getFile()), DATASOURCE_NS); - } -} diff --git a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/FileDeployableFactoryTest.java b/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/FileDeployableFactoryTest.java deleted file mode 100644 index 9ff42fa3d7..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/java/org/ow2/jonas/datasource/deploy/deployable/impl/FileDeployableFactoryTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.deploy.deployable.impl; - -import java.io.File; - -import org.ow2.util.archive.api.IFileArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelper; -import org.ow2.util.plan.deploy.deployable.api.FileDeployable; -import org.ow2.util.plan.deploy.deployable.api.factory.IFileDeployableFactoryManager; -import org.ow2.util.plan.deploy.deployable.api.factory.XmlFileDeployableFactory; -import org.ow2.util.plan.deploy.deployable.impl.factory.DefaultFileDeployableFactoryManager; -import org.ow2.util.plan.deploy.deployable.impl.factory.XmlFileDeployableFactoryImpl; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -/** - * Test class for the deployable factories. - * @author Alexis RENOUX - */ -public class FileDeployableFactoryTest { - - /** - * Path to the test example for datasource. - */ - private static final String DATASOURCE_XML_PATH = - "src/test/resources/exemple-datasource.xml"; - - /** - * Datasource namespace. - */ - private static final String DATASOURCE_NS = - "http://jonas.ow2.org/ns/datasource/1.0"; - - /** - * Archive made from the datasource. - */ - private IFileArchive datasourceArchive = null; - - /** - * The xml deployable factory. - */ - private XmlFileDeployableFactory factory = null; - - /** - * The deployable factory manager. - */ - private IFileDeployableFactoryManager manager = null; - - /** - * Prepares test data. - * @throws Exception - */ - @BeforeClass - public void init() throws Exception { - // ClassCastException - datasourceArchive = (IFileArchive) ArchiveManager.getInstance() - .getArchive(new File(DATASOURCE_XML_PATH)); - Assert.assertNotNull(datasourceArchive); - - factory = new XmlFileDeployableFactoryImpl(); - factory.registerFileDeployable( - DatasourceDeployableImpl.class, - DATASOURCE_NS); - - manager = new DefaultFileDeployableFactoryManager(); - manager.addFileDeployableFactory(factory); - } - - /** - * Test datasource conversion with the factory. - * @throws Exception - */ - @Test - public void convertDatasourceArchiveToDeployable() throws Exception { - FileDeployable fileDeployable = factory.getFileDeployable(datasourceArchive); - Assert.assertEquals(fileDeployable.getClass(),DatasourceDeployableImpl.class); - } - - /** - * Test datasource conversion with the manager. - * @throws Exception - */ - @Test - public void convertDatasourceArchiveWithManager() throws Exception { - FileDeployable fileDeployable = manager.getFileDeployable(datasourceArchive); - Assert.assertEquals(fileDeployable.getClass(),DatasourceDeployableImpl.class); - } - - - /** - * Test deployment plan conversion with the DeployableHelper+factory. - * @throws Exception - */ - @Test - public void convertWithDeployableHelper() throws Exception { - DeployableHelper.setFileDeployableFactory(factory); - IDeployable deployable = DeployableHelper.getDeployable(datasourceArchive); - Assert.assertEquals(deployable.getClass(), DatasourceDeployableImpl.class); - } - - /** - * Test deployment plan conversion with the DeployableHelper+manager. - * @throws Exception - */ - @Test - public void convertWithDeployableHelperAndManager() throws Exception { - DeployableHelper.setFileDeployableFactory(manager); - IDeployable deployable = DeployableHelper.getDeployable(datasourceArchive); - Assert.assertEquals(deployable.getClass(), DatasourceDeployableImpl.class); - } - -} diff --git a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/resources/exemple-datasource.xml b/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/resources/exemple-datasource.xml deleted file mode 100644 index c392ff4a94..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/impl/src/test/resources/exemple-datasource.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - jdbc_1 - jdbc:oacle:thin://localhost:1521/db_oracle - oracle.jdbc.driver.OracleDriver - jonasoracle - jonaspassoracle - rdb.oracle - - - 0 - 4167260737 - string - 5 - 10 - 100 - 899460641 - 394024595 - 150826366 - - - - - - jdbc_1 - jdbc:hsqldb:hsql://localhost:9001/db_jonas - org.hsqldb.jdbcDriver - jonas - jonas - rdb.hsql - - - 0 - 1448 - 60 - string - 15 - 100 - 577956569 - 5 - 100 - - - diff --git a/jonas/modules/libraries/jonas-datasources/deploy/pom.xml b/jonas/modules/libraries/jonas-datasources/deploy/pom.xml deleted file mode 100644 index a9d387883c..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deploy/pom.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - org.ow2.jonas - jonas-datasource - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-datasource-deploy - pom - JOnAS :: Libraries :: Datasource :: Deploy - Deployable part for the datasource - - - api - impl - - diff --git a/jonas/modules/libraries/jonas-datasources/deployer/pom.xml b/jonas/modules/libraries/jonas-datasources/deployer/pom.xml deleted file mode 100644 index 99a06be261..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/pom.xml +++ /dev/null @@ -1,179 +0,0 @@ - - - - - org.ow2.jonas - jonas-datasource - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-datasource-deployer - JOnAS :: Libraries :: Datasource :: Deployer - Deployer for datasource - - - ${basedir}/target - - - - - org.ow2.util - util-ee-deploy-api - ${ow2-bundles.version} - - - - org.ow2.util - util-archive-api - ${ow2-bundles.version} - - - - org.ow2.util - util-archive-impl - ${ow2-bundles.version} - - - - org.ow2.util - util-url - ${ow2-bundles.version} - - - - org.ow2.jonas - jonas-datasource-reader - ${project.version} - - - - org.ow2.jonas - jonas-datasource-deploy-api - ${project.version} - - - - org.ow2.jonas - jonas-version - ${project.version} - - - - org.ow2.jonas - jonas-commons - ${project.version} - - - - - org.testng - testng - 5.8 - jdk15 - test - - - org.ow2.jonas - jonas-generators-raconfig - ${project.version} - - - org.ow2.util - util-ee-deploy-impl - ${ow2-bundles.version} - - - org.ow2.jonas - jonas-datasource-binding - ${project.version} - - - - org.ow2.jonas - jonas-datasource-deploy-impl - ${project.version} - test - - - - org.ow2.jonas - jonas-jca-jdbc-dm - ${project.version} - rar - test - - - - - - - maven-dependency-plugin - - - copy rar - - copy - - generate-test-resources - - - - org.ow2.jonas - jonas-jca-jdbc-dm - rar - true - ${output.dir} - jonas-jca-jdbc-dm.rar - - - - - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - once - classes - 10 - - - rar.path - ${output.dir}/jonas-jca-jdbc-dm.rar - - - - - - - diff --git a/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/api/IDatasourceDeployer.java b/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/api/IDatasourceDeployer.java deleted file mode 100644 index 39125d62fc..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/api/IDatasourceDeployer.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.deployer.api; - -import org.ow2.util.ee.deploy.api.deployer.IDeployer; -import org.ow2.util.ee.deploy.api.deployer.IDeployerManager; - -/** - * Interface for deployment plans deployer. - * @author Alexis RENOUX - */ -public interface IDatasourceDeployer extends IDeployer { - - /** - * Returns the deployer manager. - * @return the deployer manager. - */ - IDeployerManager getDeployerManager(); - - /** - * Sets the deployer manager. - * @param deployerManager the new deployer manager. - */ - void setDeployerManager(IDeployerManager deployerManager); -} diff --git a/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/impl/DatasourceDeployer.java b/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/impl/DatasourceDeployer.java deleted file mode 100644 index 2f6daf8810..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/src/main/java/org/ow2/jonas/datasource/deployer/impl/DatasourceDeployer.java +++ /dev/null @@ -1,403 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.deployer.impl; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import org.ow2.jonas.datasource.binding.DatasourceType; -import org.ow2.jonas.datasource.binding.Datasources; -import org.ow2.jonas.datasource.deploy.deployable.api.DatasourceDeployable; -import org.ow2.jonas.datasource.deployer.api.IDatasourceDeployer; -import org.ow2.jonas.datasource.reader.DatasourceXmlReader; -import org.ow2.jonas.generators.raconfig.RAConfig; -import org.ow2.jonas.generators.raconfig.RAConfigException; -import org.ow2.jonas.lib.work.DeployerLog; -import org.ow2.jonas.properties.ServerProperties; -import org.ow2.util.archive.api.ArchiveException; -import org.ow2.util.archive.api.IArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.ow2.util.ee.deploy.api.deployer.DeployerException; -import org.ow2.util.ee.deploy.api.deployer.IDeployerManager; -import org.ow2.util.ee.deploy.api.deployer.UnsupportedDeployerException; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelper; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelperException; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; -import org.ow2.util.url.URLUtils; - -/** - * This deployer will deploy Datasource module. Generating .RAR files and deploy - * them. - * @author Alexis RENOUX - */ -public class DatasourceDeployer implements IDatasourceDeployer { - - /** - * Logger. - */ - private Log logger = LogFactory.getLog(DatasourceDeployer.class); - - /** - * The Deployer Manager that will be used to deploy RAR files. - */ - private IDeployerManager deployerManager = null; - - /** - * The datasourceReader that will be used to read the datasource XML file. - */ - private DatasourceXmlReader datasourceReader; - - /** - * The default RAR creation path. - */ - private static final String DEFAULT_ARCHIVE_PATH = "deployer" + File.separator +"datasources"; - - /** - * Working directory - */ - protected File archiveFile = null; - - /** - * The datasources that were deployed, and the generated RARs. - */ - private Map>> datasourceDeployables = new HashMap>>(); - - /** - * Server Properties. - */ - protected ServerProperties serverProps; - - /** - * Reference to the {@link DeployerLog} which is the class that manage the - * accesses to the log file (to remove the jar). - */ - protected DeployerLog deployerLog = null; - - /** - * Internal JDBC RAR used to build datasource RAR - */ - private String dmRar; - - /** - * Creates a new DatasourceDeployer. - */ - public DatasourceDeployer() throws IOException { - - } - - /** - * Resource service used by this deployer. - */ - // private ResourceService resourceService = null; - /** - * Undeploy the given Datasource. (Not implemented yet) - * @param datasourceDeployable the deployable to remove. - * @throws DeployerException if the Datasource is not undeployed. - */ - protected void undeployDatasource(final DatasourceDeployable datasourceDeployable) throws DeployerException { - logger.info("Undeploying {0}", datasourceDeployable); - - for (IDeployable rar : datasourceDeployables.get(datasourceDeployable)) { - // Undeploy the RAR file - try { - this.deployerManager.undeploy(rar); - } catch (DeployerException e) { - throw new DeployerException("Exception while undeploying deployable " + rar, e); - } catch (UnsupportedDeployerException e) { - throw new DeployerException("No deployer found for deployable " + rar, e); - } - } - - // Remove the entry deployment was succesful. - this.datasourceDeployables.remove(datasourceDeployable); - - } - - /** - * Deploy the given Datasource. - * @param deployable the deployable to add. - * @throws DeployerException if the Datasource is not deployed. - */ - protected void deployDatasource(final IDeployable deployable) throws DeployerException { - logger.debug("Request to deploy {0} received", deployable); - - if (deployable == null) { - throw new DeployerException("Null deployable"); - } - - if (!(DatasourceDeployable.class.isAssignableFrom(deployable.getClass()))) { - throw new DeployerException("Bad deployable type " + deployable.getClass()); - } - - logger.info("Deploying datasource {0}", deployable); - - DatasourceDeployable datasourceDeployable = DatasourceDeployable.class.cast(deployable); - - datasourceReader = new DatasourceXmlReader(); - if (datasourceReader == null) { - throw new DeployerException("Deployment aborted - The DatasourceReader is null"); - } - - File xmlfile = this.getFile(datasourceDeployable); - Datasources datasources = null; - - // Create java objects from XML file - try { - datasources = datasourceReader.extractDataSources(xmlfile); - } catch (Exception e) { - throw new DeployerException("Error while parsing file " + xmlfile + " - Deployment aborted", e); - } - - if (datasources == null) { - throw new DeployerException("The deployable " + deployable + " resolved in null datasource - Deployment aborted"); - } - - datasourceDeployable.setAttachedData(datasources); - List> generatedResourceAdapters = new ArrayList>(); - - for (DatasourceType ds : datasources.getDatasources()) { - DatasourceType dsInitialized = datasourceReader.initDataSource(ds); - // Get the Properties java object from datasourceType - Properties properties = datasourceReader.getProperties(dsInitialized); - String fileIn = null; - String fileOut = null; - String fileName = ""; - try { - fileName = "ds-" + dsInitialized.getDatasourceConfiguration().getName().replace('/', '_') + "-"; - fileOut = File.createTempFile(fileName, ".rar", archiveFile).getAbsolutePath(); - } catch (IOException e1) { - String msg = "Error while creating temp file <" + fileName + ".rar> in directory <" + archiveFile.getPath() + ">"; - throw new DeployerException(msg, e1); - } - - // Generate .rar (only DM are supported) - fileIn = dmRar; - - logger.info("Generate RAR {0} -> {1}", fileIn, fileOut); - - try { - RAConfig.generateRars(properties, "JOnASJDBC_DM", fileIn, fileOut); - } catch (RAConfigException e) { - logger.error("Failure to deploy datasource {0}", ds); - throw new DeployerException(e); - } - - /* - * Deploy .rar 1- Create IArchive 2- Create Deployable 3- Deploy - */ - - // Create an IArchive - File generatedFile = new File(fileOut); - - if (!generatedFile.exists()) { - logger.error("RAR was not generated with RAConfig- {0}", fileOut); - throw new DeployerException("RAR was not generated <" + fileOut + ">"); - } - - IArchive archiveRar = ArchiveManager.getInstance().getArchive(generatedFile); - if (archiveRar == null) { - throw new DeployerException("Null archive for file " + fileOut); - } - - // Create a Deployable - IDeployable rardeployable = null; - try { - rardeployable = DeployableHelper.getDeployable(archiveRar); - } catch (DeployableHelperException e) { - throw new DeployerException(e); - } - if (rardeployable == null) { - throw new DeployerException("Null deployable for archive " + archiveRar); - } - - // Deploy - try { - this.deployerManager.deploy(rardeployable); - } catch (DeployerException e) { - throw new DeployerException("Exception while deploying deployable " + rardeployable, e); - } catch (UnsupportedDeployerException e) { - throw new DeployerException("No deployer found for deployable " + rardeployable, e); - } - - // Here deployment was successful. - generatedResourceAdapters.add(rardeployable); - - try { - // The file is unpacked, so log it - if (deployerLog != null) { - File unpackedFile = URLUtils.urlToFile(datasourceDeployable.getArchive().getURL()); - deployerLog.addEntry(xmlfile, new File(fileOut)); - } - } catch (Exception e) { - throw new DeployerException("Cannot get the url of the initial deployable for the datasource Module '" + deployable - + "'.", e); - } - } - - this.datasourceDeployables.put(datasourceDeployable, generatedResourceAdapters); - - } - - /** - * Allows to get a File from the given DataSource Deployable. - * @param datasourceDeployable the given DataSource deployable. - * @return a File object of this deployable - * @throws DeployerException if the File can't be obtained. - */ - protected File getFile(final DatasourceDeployable datasourceDeployable) throws DeployerException { - // Get URL - URL datasourceURL = null; - try { - datasourceURL = datasourceDeployable.getArchive().getURL(); - } catch (ArchiveException e) { - throw new DeployerException("Cannot get URL from Datasource deployable '" + datasourceDeployable + "'.", e); - } - - // Get File - return URLUtils.urlToFile(datasourceURL); - } - - /** - * {@inheritDoc} - */ - public void deploy(final IDeployable deployable) throws DeployerException { - check(deployable); - - // Deploy the Datasource Deployable - - if (DatasourceDeployable.class.isAssignableFrom(deployable.getClass())) { - deployDatasource(deployable); - } - } - - /** - * {@inheritDoc} - */ - public boolean isDeployed(final IDeployable deployable) throws DeployerException { - if (this.supports(deployable)) { - return (this.datasourceDeployables.get(deployable) != null); - } else { - return false; - } - - } - - /** - * check if the RAR is currently deployed - */ - public boolean isDeployed(final String rarFileName) { - - return datasourceDeployables.containsValue(rarFileName); - - } - - /** - * {@inheritDoc} - */ - public boolean supports(final IDeployable deployable) { - return (DatasourceDeployable.class.isAssignableFrom(deployable.getClass())); - } - - /** - * {@inheritDoc} - */ - public void undeploy(final IDeployable deployable) throws DeployerException { - if (!this.supports(deployable)) { - throw new DeployerException("Cannot undeploy non-datasource deployable " + deployable + "."); - } - if (!this.isDeployed(deployable)) { - throw new DeployerException("Cannot undeploy datasource deployable " + deployable + " - it is not deployed."); - } - undeployDatasource(DatasourceDeployable.class.cast(deployable)); - } - - /** - * Check if the given deployable is deployable or not. - * @param deployable the deployable to check. - * @throws DeployerException if the deployable is not supported. - */ - private void check(final IDeployable deployable) throws DeployerException { - if (!supports(deployable)) { - throw new DeployerException("The deployment of the deployable'" + deployable - + "' is not supported by this deployer."); - } - } - - /** - * {@inheritDoc} - */ - public IDeployerManager getDeployerManager() { - return deployerManager; - } - - /** - * {@inheritDoc} - */ - public void setDeployerManager(final IDeployerManager deployerManager) { - this.deployerManager = deployerManager; - } - - /** - * Set the Server Properties. - * @param props {@link ServerProperties} instance - */ - public void setServerProperties(final ServerProperties props) { - this.serverProps = props; - } - - /** - * Create working directory for the deployer. - */ - protected void initWorkingDirectory() { - if (archiveFile == null) { - archiveFile = new File(serverProps.getWorkDirectory() + File.separator + DEFAULT_ARCHIVE_PATH + File.separator + serverProps.getServerName()); - archiveFile.mkdirs(); - } - } - - /** - * @return Get path to the DM rar - */ - public String getDmRar() { - return dmRar; - } - - /** - * set the DM RAR path - * @param dmRar path to rar file - */ - public void setDmRar(final String dmRar) { - this.dmRar = dmRar; - } - -} diff --git a/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestDatasourceDeployer.java b/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestDatasourceDeployer.java deleted file mode 100644 index 8264516a2e..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestDatasourceDeployer.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.datasource.deployer; - -import java.io.File; -import java.io.IOException; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -import org.ow2.jonas.datasource.deploy.deployable.api.DatasourceDeployable; -import org.ow2.jonas.datasource.deploy.deployable.impl.DatasourceDeployableImpl; -import org.ow2.jonas.datasource.deployer.impl.DatasourceDeployer; -import org.ow2.util.archive.api.IFileArchive; -import org.ow2.util.archive.impl.FileArchiveImpl; -import org.ow2.util.ee.deploy.api.deployer.DeployerException; -import org.ow2.util.ee.deploy.api.deployer.IDeployer; -import org.ow2.util.ee.deploy.impl.deployer.DeployerManager; -import org.testng.Assert; -import org.testng.FileAssert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.ow2.jonas.properties.ServerProperties; -import java.util.Properties; - - -/** - * Test class for the DatasourceDeployer. - * What needs to be tested : - * - Given a Datasource XML file, the deployer accepts to deploy it - * - a RAR file is generated - * - The jonas-rar.xml is inside and contains the required data - * - undeployment works - * @author Alexis Renoux. - * @author Mickaël LEDUQUE. - */ -public class TestDatasourceDeployer { - - /** - * The XML File. - */ - private File xmlfile = null; - - /** - * The archive. - */ - private IFileArchive archive = null; - - /** - * The deployable. - */ - private DatasourceDeployable deployable = null; - - /** - * The datasource deployer. - */ - private DatasourceDeployer datasourceDeployer; - - /** - * The directory to resources. - */ - private static final String TEST_XML_DIR = "src" + File.separator + "test" + File.separator + "resources"; - - /** - * The path to the datasource test file. - */ - private static final String TEST_XML_PATH = TEST_XML_DIR + File.separator + "datasources.xml"; - - /** - * The fake rar deployer. - */ - private TestRarDeployer rarDeployer; - - @BeforeClass - public void init() throws Exception { - xmlfile = new File(TEST_XML_PATH); - archive = new FileArchiveImpl(xmlfile); - datasourceDeployer = new DatasourceDeployer(); - datasourceDeployer.setServerProperties(new MyProperties()); - datasourceDeployer.setDmRar(System.getProperty("rar.path")); - deployable = new DatasourceDeployableImpl(archive); - DeployerManager deployerManager = new DeployerManager(); - rarDeployer = new TestRarDeployer(); - deployerManager.register(rarDeployer); - datasourceDeployer.setDeployerManager(deployerManager); - - } - - @Test() - public void deployerSupportsDeployable() { - Assert.assertTrue(datasourceDeployer.supports(deployable)); - } - - @Test(dependsOnMethods = {"deployerSupportsDeployable"}) - public void tryDeploy() throws Exception { - datasourceDeployer.deploy(deployable); - } - - @Test(dependsOnMethods = {"tryDeploy"}) - public void rarDeployed() throws DeployerException { - Assert.assertTrue(this.datasourceDeployer.isDeployed(deployable)); - Assert.assertEquals(this.rarDeployer.getDeployed().size(), 2); - } - - private class MyProperties implements ServerProperties { - - - public String getValue(String key) { - return System.getenv("JONAS_ROOT"); - } - - public String getValue(String key, String defaultVal) { - return defaultVal; - } - - public boolean getValueAsBoolean(String key, boolean def) { - return def; - } - - public String[] getValueAsArray(String key) { - String [] str = new String[5]; - return str; - } - - public String getDomainName() { - return "domain"; - } - - public String getServerName() { - return "server"; - } - - public String getPropFileName() { - return "file"; - } - - public Properties getConfigFileEnv() { - return new Properties(); - } - - public String getVersionsFile() { - return "file"; - } - - public boolean isMaster() { - return false; - } - - public boolean isDevelopment() { - return false; - } - - public String getWorkDirectory() { - return System.getProperty("java.io.tmpdir") ; - - } - - } -} diff --git a/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestRarDeployer.java b/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestRarDeployer.java deleted file mode 100644 index d3a5d95433..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/src/test/java/org/ow2/jonas/datasource/deployer/TestRarDeployer.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.datasource.deployer; - -import java.util.ArrayList; -import java.util.List; - -import org.ow2.util.ee.deploy.api.deployable.IDeployable; -import org.ow2.util.ee.deploy.api.deployable.RARDeployable; -import org.ow2.util.ee.deploy.api.deployer.DeployerException; -import org.ow2.util.ee.deploy.api.deployer.IDeployer; -import org.ow2.util.log.Log; -import org.ow2.util.log.LogFactory; - -/** - * Fake RAR deployer for the tests. - * @author mleduque - * - */ -public class TestRarDeployer implements IDeployer { - - /** - * The logger. - */ - private Log logger = LogFactory.getLog(TestRarDeployer.class); - - /** - * The deployed deployables. - */ - private List> deployed = new ArrayList>(); - - /** - * {@inheritDoc} - */ - public void deploy(final IDeployable deployable) throws DeployerException { - logger.info("Deploying deployable {0}", deployable); - if (deployable != null && supports(deployable)) { - logger.info("Deployable {0} supported by this deployer.", deployable); - this.deployed.add(deployable); - } - } - - /** - * {@inheritDoc} - */ - public boolean isDeployed(final IDeployable deployable) throws DeployerException { - logger.info("Deployed objects : {0}", this.deployed); - return (this.deployed.contains(deployable)); - } - - /** - * {@inheritDoc} - */ - public boolean supports(final IDeployable deployable) { - return (RARDeployable.class.isAssignableFrom(deployable.getClass())); - } - - /** - * {@inheritDoc} - */ - public void undeploy(final IDeployable deployable) throws DeployerException { - if (deployable != null && supports(deployable)) { - if (!isDeployed(deployable)) { - throw new DeployerException("Deplyable is not deployed."); - } - this.deployed.remove(deployable); - } else { - throw new DeployerException("Invalid deployable"); - } - } - - /** - * Returns the list of deployed objects. - * @return the list of deployed objects. - */ - public List> getDeployed() { - return this.deployed; - } - -} diff --git a/jonas/modules/libraries/jonas-datasources/deployer/src/test/resources/datasources.xml b/jonas/modules/libraries/jonas-datasources/deployer/src/test/resources/datasources.xml deleted file mode 100644 index 249d2c91f3..0000000000 --- a/jonas/modules/libraries/jonas-datasources/deployer/src/test/resources/datasources.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - jdbc_1 - jdbc:oracle:thin://localhost:1521/db_oracle - oracle.jdbc.driver.OracleDriver - jonasoracle - jonaspassoracle - rdb.oracle - - - 0 - 600 - select 1 - 5 - 100 - 100 - 50 - - - - - - jdbc_2 - jdbc:hsqldb:hsql://localhost:9001/db_jonas - org.hsqldb.jdbcDriver - jonas - jonas - rdb.hsql - - - 0 - 1448 - 60 - string - 1 - 10 - 100 - 30 - 5 - 100 - - - diff --git a/jonas/modules/libraries/jonas-datasources/pom.xml b/jonas/modules/libraries/jonas-datasources/pom.xml deleted file mode 100644 index 23d5709652..0000000000 --- a/jonas/modules/libraries/jonas-datasources/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-datasource - pom - JOnAS :: Libraries :: Datasource - Datasource modules - - - reader - deploy - deployer - binding - - - ${ow2-bundles.version} - - diff --git a/jonas/modules/libraries/jonas-datasources/reader/pom.xml b/jonas/modules/libraries/jonas-datasources/reader/pom.xml deleted file mode 100644 index 9264ac0afe..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - org.ow2.jonas - jonas-datasource - 5.2.2-SNAPSHOT - - 4.0.0 - org.ow2.jonas - jonas-datasource-reader - JOnAS :: Libraries :: Datasource :: Reader - Parser for datasource xml file - - - org.ow2.jonas - jonas-dbm - ${project.version} - - - - org.ow2.jonas - jonas-datasource-binding - ${project.version} - - - - - org.testng - testng - 5.8 - jdk15 - test - - - - diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceValidator.java b/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceValidator.java deleted file mode 100644 index 304519dc9c..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceValidator.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.reader; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.XMLConstants; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; -import javax.xml.validation.Validator; - -import org.xml.sax.SAXException; - -/** - * Class that does validation on a datasource. - * @author Tarik Ihadjadene - */ -public class DatasourceValidator { - - /** - * Private no-args constructor. - */ - @SuppressWarnings("unused") - private DatasourceValidator() { - } - - /** - * XML Schema for DataSources. - */ - private static final String DATASOURCE_XSD = "/org/ow2/jonas/datasource/binding/schema/jonas-datasources-1.0.xsd"; - - /** - * Gets the XML file and tries to validate it. - * @param xmlFile the file to validate. - * @throws SAXException if a SAX exception is triggered. - * @throws ParserConfigurationException if the parser couldn't be - * configured. - * @throws IOException if the file couldn't be read. - */ - public DatasourceValidator(final File xmlFile) throws SAXException, ParserConfigurationException, IOException { - - SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - InputStream is = getClass().getResourceAsStream(DATASOURCE_XSD); - if (is == null) { - System.out.println("is == null"); - } - Source source = new StreamSource(is); - if (source == null) { - System.out.println("source == null"); - } - Schema schema = schemaFactory.newSchema(source); - Validator validator = schema.newValidator(); - - Source xmlSource = new StreamSource(xmlFile); - - validator.validate(xmlSource); - } -} diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceXmlReader.java b/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceXmlReader.java deleted file mode 100644 index bd0f54633b..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/DatasourceXmlReader.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.reader; - -import java.io.File; -import java.math.BigInteger; -import java.util.Properties; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - -import org.ow2.jonas.datasource.binding.ConnectionManagerConfigurationType; -import org.ow2.jonas.datasource.binding.DatasourceConfigurationType; -import org.ow2.jonas.datasource.binding.DatasourceType; -import org.ow2.jonas.datasource.binding.Datasources; -import org.ow2.jonas.datasource.binding.ObjectFactory; -import org.ow2.jonas.dbm.internal.DBMConstants; - -/** - * This class is used to transform an XML file to java objects and then to - * generate Properties objects from java objects. - * @author Rodrigue SOUBEIGA - * @author Mickaël LEDUQUE - */ -public class DatasourceXmlReader implements IDatasourceXmlReader { - - /** - * {@inheritDoc} - */ - public boolean isXmlValid(final File xmlFile) { - try { - new DatasourceValidator(xmlFile); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - return true; - } - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public Datasources extractDataSources(final File xmlFile) throws JAXBException { - - if (!isXmlValid(xmlFile)) { - throw new JAXBException("XML file is not valid."); - } - - JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class); - Unmarshaller unmarshaller = jc.createUnmarshaller(); - Datasources theDatasources = (Datasources) unmarshaller.unmarshal(xmlFile); - - return theDatasources; - } - - /** - * {@inheritDoc} - */ - public DatasourceType initDataSource(final DatasourceType dataSource) { - - this.initConnectionManagerConfiguration(dataSource.getConnectionManagerConfiguration()); - this.initDatasourceConfiguration(dataSource.getDatasourceConfiguration()); - - return dataSource; - } - - /** - * {@inheritDoc} - */ - public Properties getProperties(final DatasourceType dataSource) { - // TODO use constants? (Mickaël) - // Yes, they are even defined in DBMConstants AFAIK - Properties props = new Properties(); - DatasourceConfigurationType dsConfig = dataSource.getDatasourceConfiguration(); - ConnectionManagerConfigurationType cmConfig = dataSource.getConnectionManagerConfiguration(); - - props.setProperty(DBMConstants.NAME, dsConfig.getName()); - props.setProperty(DBMConstants.URL, dsConfig.getUrl()); - props.setProperty(DBMConstants.CLASSNAME, dsConfig.getClassname()); - props.setProperty(DBMConstants.USERNAME, dsConfig.getUsername()); - props.setProperty(DBMConstants.PASSWORD, dsConfig.getPassword()); - props.setProperty(DBMConstants.MAPPERNAME, dsConfig.getMapper()); - props.setProperty(DBMConstants.DESCRIPTION, dsConfig.getDescription()); - props.setProperty(DBMConstants.ISOLATIONLEVEL, dsConfig.getIsolationlevel()); - - props.setProperty(DBMConstants.CONNCHECKLEVEL, String.valueOf(cmConfig.getConnchecklevel())); - props.setProperty(DBMConstants.CONNMAXAGE, String.valueOf(cmConfig.getConnmaxage())); - props.setProperty(DBMConstants.MAXOPENTIME, String.valueOf(cmConfig.getMaxopentime())); - props.setProperty(DBMConstants.CONNTESTSTMT, cmConfig.getConnteststmt()); - props.setProperty(DBMConstants.INITCONPOOL, String.valueOf(cmConfig.getInitconpool())); - props.setProperty(DBMConstants.MINCONPOOL, String.valueOf(cmConfig.getMinconpool())); - props.setProperty(DBMConstants.MAXCONPOOL, String.valueOf(cmConfig.getMaxconpool())); - props.setProperty(DBMConstants.SAMPLINGPERIOD, String.valueOf(cmConfig.getSamplingperiod())); - props.setProperty(DBMConstants.MAXWAITTIME, String.valueOf(cmConfig.getMaxwaittime())); - props.setProperty(DBMConstants.MAXWAITERS, String.valueOf(cmConfig.getMaxwaiters())); - props.setProperty(DBMConstants.PSTMTMAX, String.valueOf(cmConfig.getPstmtmax())); - - return props; - } - - /** - * This method is used to initialize the fields of a - * ConnectionmanagerConfigurationType. - * @param cmConfig the object which fields must be initialized. - */ - private void initConnectionManagerConfiguration(final ConnectionManagerConfigurationType cmConfig) { - String buffer; - - cmConfig.setConnchecklevel(Integer.valueOf(initParam(DBMConstants.DEF_CONNCHECKLEVEL, cmConfig.getConnchecklevel()))); - - buffer = initParam(DBMConstants.DEF_CONNMAXAGE, cmConfig.getConnmaxage()); - cmConfig.setConnmaxage(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_MAXOPENTIME, cmConfig.getMaxopentime()); - cmConfig.setMaxopentime(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_CONNTESTSTMT, cmConfig.getConnteststmt()); - cmConfig.setConnteststmt(buffer); - - buffer = initParam(DBMConstants.DEF_PSTMTMAX, cmConfig.getPstmtmax()); - cmConfig.setPstmtmax(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_INITCONPOOL, cmConfig.getInitconpool()); - cmConfig.setInitconpool(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_MINCONPOOL, cmConfig.getMinconpool()); - cmConfig.setMinconpool(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_MAXCONPOOL, cmConfig.getMaxconpool()); - cmConfig.setMaxconpool(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_MAXWAITTIME, cmConfig.getMaxwaittime()); - cmConfig.setMaxwaittime(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_MAXWAITERS, cmConfig.getMaxwaiters()); - cmConfig.setMaxwaiters(BigInteger.valueOf(Long.valueOf(buffer))); - - buffer = initParam(DBMConstants.DEF_SAMPLINGPERIOD, cmConfig.getSamplingperiod()); - cmConfig.setSamplingperiod(BigInteger.valueOf(Long.valueOf(buffer))); - } - - /** - * This method is used to initialize the fields of a - * DatasourceConfigurationType. - * @param dsConfig the object which fields must be initialized. - */ - private void initDatasourceConfiguration(final DatasourceConfigurationType dsConfig) { - String buffer; - - buffer = initParam(DBMConstants.NAME, dsConfig.getName()); - dsConfig.setName(buffer); - - buffer = initParam(DBMConstants.DEF_CLASSNAME, dsConfig.getClassname()); - dsConfig.setClassname(buffer); - - buffer = initParam(DBMConstants.DEF_URL, dsConfig.getUrl()); - dsConfig.setUrl(buffer); - - buffer = initParam(DBMConstants.DEF_DESCRIPTION, dsConfig.getDescription()); - dsConfig.setDescription(buffer); - - buffer = initParam(DBMConstants.DEF_USERNAME, dsConfig.getUsername()); - dsConfig.setUsername(buffer); - - buffer = initParam(DBMConstants.DEF_PASSWORD, dsConfig.getPassword()); - dsConfig.setPassword(buffer); - - buffer = initParam(DBMConstants.DEF_ISOLATIONLEVEL, dsConfig.getIsolationlevel()); - dsConfig.setIsolationlevel(buffer); - - buffer = initParam(DBMConstants.DEF_MAPPERNAME, dsConfig.getMapper()); - dsConfig.setMapper(buffer); - - } - - /** - * Returns the value of the parameter if it is not null or a default - * constant if not. - * @param paramDefaut represents the default constant value of the - * parameter. - * @param paramUser represents the old value of the parameter. - * @return a string which is the value of the parameter. - */ - private String initParam(final String paramDefaut, final Object paramUser) { - - if (paramUser == null) { - return paramDefaut; - } else { - return String.valueOf(paramUser); - } - - } -} diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/IDatasourceXmlReader.java b/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/IDatasourceXmlReader.java deleted file mode 100644 index a3779dea04..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/main/java/org/ow2/jonas/datasource/reader/IDatasourceXmlReader.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.reader; - -import java.io.File; -import java.util.Properties; - -import javax.xml.bind.JAXBException; - -import org.ow2.jonas.datasource.binding.DatasourceType; -import org.ow2.jonas.datasource.binding.Datasources; - -/** - * This is the interface which enable different operation on a XML file. - * @author Rodrigue SOUBEIGA - */ -public interface IDatasourceXmlReader { - - /** - * Initializes a DatasourceType object. - * @param dataSource which must be initialized. - * @return a DatasourceType object which is initialized - */ - DatasourceType initDataSource(DatasourceType dataSource); - - /** - * Returns a boolean which allows to know if the XML file is valid. - * @param xmlFile the XML file to analyze. - * @return a boolean which is true iff the XML file is valid. - */ - boolean isXmlValid(File xmlFile); - - /** - * Returns an list of datasourceType from an XML file. - * @param xmlFile the XML file which must be convert to java objects. - * @return a list of datasourceType - * @throws JAXBException if a problem occurs while creating the list of - * DatasourceType objects - */ - Datasources extractDataSources(File xmlFile) throws JAXBException; - - /** - * Converts a datasourceType object to a Properties object. - * @param datasource the DatasourceType object to convert. - * @return a Properties object from the conversion of a datasourceType - * object. - */ - Properties getProperties(final DatasourceType datasource); - -} diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceReaderTest.java b/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceReaderTest.java deleted file mode 100644 index 959bd57f59..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceReaderTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.reader; - -import java.io.File; -import java.util.List; - -import javax.xml.bind.JAXBException; - -import org.ow2.jonas.datasource.binding.DatasourceType; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -/** - * This is the class test of the XmlTransform class. - * @author Rodrigue SOUBEIGA - */ - -public class DatasourceReaderTest { - - /** - * Path to the valid xml file for datasource. - */ - private static final String DATASOURCE_VALID_XML_PATH = "src/test/resources/exemple-datasource-good.xml"; - - /** - * The list of DatasourceType provide by the xml file. - */ - private List datasourceList = null; - - /** - * The instance of XmlTransfor class it is used in order to test the - * differents method of the XmlTransform class. - */ - private DatasourceXmlReader classtransform; - - /** - * The file object created from the xmlFile. - */ - private File datasourceFile; - - /** - * The method used to initialise the different objects needed to execute - * tests methods. - */ - @BeforeClass - public void init() { - this.datasourceFile = new File(DATASOURCE_VALID_XML_PATH); - - this.classtransform = new DatasourceXmlReader(); - - } - - /** - * We test if the xml file exists. - */ - @Test - public void fileExist() { - Assert.assertTrue(datasourceFile.exists()); - } - - /** - * Test of the extraction of the datasourceType list from the xml file. - * @throws Exception - */ - - @Test - public void extractDataSourcesTest() throws Exception { - - datasourceList = classtransform.extractDataSources(datasourceFile).getDatasources(); - Assert.assertNotNull(datasourceList, "Datasources unmarshalling failed"); - - } - - /** - * Test of the DatasourceType initialisation. - */ - @Test(dependsOnMethods = {"datasoureConfigurationContentsTest"}) - public void initdataSourceTest() { - for (DatasourceType ds : datasourceList) { - ds.getConnectionManagerConfiguration().setConnteststmt(null); - ds = classtransform.initDataSource(ds); - String response = ds.getConnectionManagerConfiguration().getConnteststmt(); - Assert.assertNotNull(response, "Initialisation failure : connteststmt."); - - ds.getDatasourceConfiguration().setUsername(null); - ds = classtransform.initDataSource(ds); - response = ds.getDatasourceConfiguration().getUsername(); - Assert.assertNotNull(response, "Initialisation failure : username."); - - } - } - - /** - * Test of the DatasourceConfiguration initialisation with a specific xml - * file. - */ - @Test(dependsOnMethods = {"extractDataSourcesTest"}) - public void datasoureConfigurationContentsTest() { - // Check the first datasource - DatasourceType ds1 = datasourceList.get(0); - Assert.assertEquals(ds1.getDatasourceConfiguration().getName(), "jdbc_1"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getUrl(), "jdbc:oracle:thin://localhost:1521/db_oracle"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getClassname(), "oracle.jdbc.driver.OracleDriver"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getUsername(), "jonasoracle"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getPassword(), "jonaspassoracle"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getMapper(), "rdb.oracle"); - Assert.assertEquals(ds1.getDatasourceConfiguration().getDescription(), null); - Assert.assertEquals(ds1.getDatasourceConfiguration().getIsolationlevel(), null); - - // Check the second datasource - DatasourceType ds2 = datasourceList.get(1); - Assert.assertEquals(ds2.getDatasourceConfiguration().getName(), "jdbc_1"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getUrl(), "jdbc:hsqldb:hsql://localhost:9001/db_jonas"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getClassname(), "org.hsqldb.jdbcDriver"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getUsername(), "jonas"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getPassword(), "jonas"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getMapper(), "rdb.hsql"); - Assert.assertEquals(ds2.getDatasourceConfiguration().getDescription(), null); - Assert.assertEquals(ds2.getDatasourceConfiguration().getIsolationlevel(), null); - - } -} diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceValidatorTest.java b/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceValidatorTest.java deleted file mode 100644 index e40e6a2112..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/test/java/org/ow2/jonas/datasource/reader/DatasourceValidatorTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2010 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.datasource.reader; - -import java.io.File; -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.ExpectedExceptions; -import org.testng.annotations.Test; -import org.testng.Assert; - -import org.xml.sax.SAXException; - -public class DatasourceValidatorTest { - - /** - * Path to the valid xml file for datasource. - */ - private static final String DATASOURCE_VALID_XML_PATH = - "src/test/resources/exemple-datasource-good.xml"; - - /** - * Path to the invalide xml file for datasource. - */ - private static final String DATASOURCE_INVALID_XML_PATH = - "src/test/resources/exemple-datasource-bad.xml"; - - /** - * Valid XML File - */ - private File goodXML; - - - /** - * Invalid XML File - */ - private File badXML; - - @BeforeClass - public void init(){ - goodXML = new File(DATASOURCE_VALID_XML_PATH); - Assert.assertNotNull(goodXML); - - badXML = new File(DATASOURCE_INVALID_XML_PATH); - Assert.assertNotNull(badXML); - } - - @Test - public void testValidXmlFile() throws Exception { - DatasourceValidator xmlTest = null; - xmlTest = new DatasourceValidator(goodXML); - Assert.assertFalse(xmlTest == null); - } - - - @Test(expectedExceptions = {SAXException.class}) - public void testInvalidXmlFile() throws SAXException, ParserConfigurationException, IOException { - DatasourceValidator xmlTest = new DatasourceValidator(badXML); - - } -} diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-bad.xml b/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-bad.xml deleted file mode 100644 index 3ec0895f96..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-bad.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - incorrect - - diff --git a/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-good.xml b/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-good.xml deleted file mode 100644 index 5465e04820..0000000000 --- a/jonas/modules/libraries/jonas-datasources/reader/src/test/resources/exemple-datasource-good.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - jdbc_1 - jdbc:oracle:thin://localhost:1521/db_oracle - oracle.jdbc.driver.OracleDriver - jonasoracle - jonaspassoracle - rdb.oracle - - - 0 - 4167260737 - string - 5 - 10 - 100 - 899460641 - 394024595 - 150826366 - - - - - - jdbc_1 - jdbc:hsqldb:hsql://localhost:9001/db_jonas - org.hsqldb.jdbcDriver - jonas - jonas - rdb.hsql - - - 0 - 1448 - 60 - string - 15 - 100 - 577956569 - 5 - 100 - - - diff --git a/jonas/modules/libraries/jonas-deployment/pom.xml b/jonas/modules/libraries/jonas-deployment/pom.xml deleted file mode 100644 index 053739c346..0000000000 --- a/jonas/modules/libraries/jonas-deployment/pom.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - org.ow2.jonas - jonas-libraries - 5.2.2-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas - jonas-deployment - bundle - JOnAS :: Libraries :: Deployment - - - org.ow2.jonas - jonas-commons - ${project.version} - - - org.objectweb.monolog - monolog-api - ${monolog.version} - - - org.ow2.carol - carol - provided - - - org.apache.axis - axis-jaxrpc - - - org.apache.geronimo.specs - geronimo-corba_2.3_spec - - - commons-digester - commons-digester - - - commons-beanutils - commons-beanutils - - - wsdl4j - wsdl4j - 1.6.1 - - - org.apache.tomcat - servlet-api - - - org.ow2.jonas - jonas-services-api - ${project.version} - - - org.ow2.jonas - jonas-deployment-api - ${project.version} - - - org.ow2.bundles - ow2-util-ee-deploy-api - - - org.ow2.bundles - ow2-util-ee-deploy-impl - - - org.ow2.bundles - ow2-util-ee-metadata-war-impl - - - org.ow2.bundles - ow2-util-ee-metadata-car-api - - - org.ow2.bundles - ow2-util-ee-metadata-common-api - - - org.ow2.bundles - ow2-util-ee-metadata-common-impl - - - org.ow2.bundles - ow2-util-ee-metadata-car-impl - - - xml-apis - xml-apis - 1.0.b2 - - - - org.ow2.easybeans - easybeans-api - - - org.ow2.easybeans - easybeans-deployment - - - org.ow2.easybeans - easybeans-util - - - org.ow2.easybeans - easybeans-asm - 3.0 - - - org.ow2.easybeans - easybeans-asm-commons - 3.0 - - - org.ow2.easybeans - easybeans-asm-tree - 3.0 - - - org.ow2.bundles - ow2-util-event-impl - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientDTDs.java deleted file mode 100644 index db9ac9e1f4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientDTDs.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - - -import org.ow2.jonas.deployment.common.CommonsDTDs; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of DTDs for application-client.xml and jonas-client.xml. - * @author Florent Benoit - */ -public class AppClientDTDs extends CommonsDTDs { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(AppClientDTDs.class); - - /** - * List of application-client dtds. - */ - private static final String[] APPCLIENT_DTDS = new String[] { - PACKAGE + "application-client_1_2.dtd", - PACKAGE + "application-client_1_3.dtd" - }; - - /** - * List of application-client publicId. - */ - private static final String[] APPCLIENT_DTDS_PUBLIC_ID = new String[] { - "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.2//EN", - "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.3//EN" - }; - - - - - /** - * Build a new object for web.xml DTDs handling. - */ - public AppClientDTDs() { - super(); - addMapping(APPCLIENT_DTDS, APPCLIENT_DTDS_PUBLIC_ID); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientSchemas.java deleted file mode 100644 index 9cb2bb7413..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/AppClientSchemas.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for appliation-client.xml and jonas-client.xml. - * @author Philippe Coq - */ -public class AppClientSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(AppClientSchemas.class); - - /** - * List of schemas used for application-client.xml. - */ - private static final String[] APPCLIENT_SCHEMAS = new String[] { - PACKAGE + "application-client_1_4.xsd", - PACKAGE + "application-client_5.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public AppClientSchemas() { - super(); - addSchemas(APPCLIENT_SCHEMAS); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDesc.java deleted file mode 100644 index a99b228c18..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDesc.java +++ /dev/null @@ -1,288 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - - -// import java -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.api.IEnvEntryDesc; -import org.ow2.jonas.deployment.api.IMessageDestinationRefDesc; -import org.ow2.jonas.deployment.api.IPersistenceUnitRefDesc; -import org.ow2.jonas.deployment.api.IResourceEnvRefDesc; -import org.ow2.jonas.deployment.api.IResourceRefDesc; -import org.ow2.jonas.deployment.client.xml.ApplicationClient; -import org.ow2.jonas.deployment.client.xml.JonasClient; -import org.ow2.jonas.deployment.client.xml.JonasSecurity; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.JndiEnvRefsGroupDesc; -import org.ow2.util.ee.metadata.car.api.ICarDeployableMetadata; - - -/** - * This class do the parsing of the application-client.xml file and jonas-client.xml files and - * contruct a data structure associated to these two files. - * @author Florent Benoit - * @author Philippe Coq - */ -public class ClientContainerDeploymentDesc extends JndiEnvRefsGroupDesc { - - /** - * The name of the callback handler - */ - private String callbackHandler = null; - - /** - * The name of the jaas config file - */ - private String jaasFile = null; - - /** - * The name of the jaas entry - */ - private String jaasEntry = null; - - /** - * The username to use for the callback handler - */ - private String username = null; - - /** - * The password to use for the callback handler - */ - private String password = null; - - /** - * Xml content of the standard deployement descriptor file - */ - private String xmlContent = ""; - - /** - * Xml content of the JOnAS deployement descriptor file - */ - private String jonasXmlContent = ""; - - /** - * Application-Client archive metadatas. - */ - private ICarDeployableMetadata carDeployableMetadata; - - /** - * Construct an instance of a ClientContainerDeploymentDesc.
    - * Constructor is private, call one of the static getInstance - * method instead. - * @param classLoader the classloader for the classes. - * @param applicationClient the data structure of the application-client (application-client.xml) - * @param jonasClient the data structure of the jonas-client (jonas-client.xml) - * @throws DeploymentDescException if the deployment - * descriptors are corrupted. - */ - public ClientContainerDeploymentDesc(final ClassLoader classLoader, - final ApplicationClient applicationClient, - final JonasClient jonasClient) - throws DeploymentDescException { - super(classLoader, applicationClient, jonasClient, null); - - // callbackHandler - callbackHandler = null; - if (applicationClient.getCallbackHandler() != null) { - callbackHandler = applicationClient.getCallbackHandler(); - } - - JonasSecurity jonasSecurity = jonasClient.getJonasSecurity(); - if (jonasSecurity != null) { - // jaas config file - jaasFile = null; - if (jonasSecurity.getJaasfile() != null) { - jaasFile = jonasSecurity.getJaasfile(); - } - - // jaas entry - jaasEntry = null; - if (jonasSecurity.getJaasentry() != null) { - jaasEntry = jonasSecurity.getJaasentry(); - } - - // username - username = null; - if (jonasSecurity.getUsername() != null) { - username = jonasSecurity.getUsername(); - } - - // password - password = null; - if (jonasSecurity.getPassword() != null) { - password = jonasSecurity.getPassword(); - } - } - - - } - - /** - * Get the name of the jaas configuration file - * @return the name of the jaas configuration file - */ - public String getJaasFile() { - return jaasFile; - } - - /** - * Get the entry in the jaas configuration file - * @return the entry in the jaas configuration file - */ - public String getJaasEntry() { - return jaasEntry; - } - - /** - * Get the username used for a callback handler - * @return the username used for a callback handler - */ - public String getUsername() { - return username; - } - - /** - * Get the password used for a callback handler - * @return the password used for a callback handler - */ - public String getPassword() { - return password; - } - - /** - * Get the callback handler of this client application. - * @return the callback handler of this client application. - */ - public String getCallbackHandler() { - return callbackHandler; - } - - /** - * Return the content of the web.xml file - * @return the content of the web.xml file - */ - public String getXmlContent() { - return xmlContent; - } - - /** - * Return the content of the jonas-web.xml file - * @return the content of the jonas-web.xml file - */ - public String getJOnASXmlContent() { - return jonasXmlContent; - } - - /** - * @param xmlContent XML Content - */ - public void setXmlContent(final String xmlContent) { - this.xmlContent = xmlContent; - } - - /** - * @param jonasXmlContent XML Content - */ - public void setJOnASXmlContent(final String jonasXmlContent) { - this.jonasXmlContent = jonasXmlContent; - } - - /** - * Return a String representation of the ClientContainerDeploymentDesc. - * @return a String representation of the ClientContainerDeploymentDesc. - */ - @Override - public String toString() { - StringBuffer ret = new StringBuffer(); - - // Return the displayName - ret.append("\ngetDisplayName()=" + getDisplayName()); - - // Return the resource-env-ref - IResourceEnvRefDesc[] rer = getResourceEnvRefDesc(); - for (int i = 0; i < rer.length; i++) { - ret.append("\ngetResourceEnvRefDesc(" + i + ")=" + rer[i].getClass().getName()); - ret.append(rer[i].toString()); - } - - // Return the resource-ref - IResourceRefDesc[] resourceRefDesc = getResourceRefDesc(); - for (int i = 0; i < resourceRefDesc.length; i++) { - ret.append("\ngetResourceRefDesc(" + i + ")=" + resourceRefDesc[i].getClass().getName()); - ret.append(resourceRefDesc[i].toString()); - } - - // Return the env-entry - IEnvEntryDesc[] envEntries = getEnvEntryDesc(); - for (int i = 0; i < envEntries.length; i++) { - ret.append("\ngetEnvEntryDesc(" + i + ")=" + envEntries[i].getClass().getName()); - ret.append(envEntries[i].toString()); - } - - // Return the ejb-ref - IEJBRefDesc[] ejbRefDesc = getEjbRefDesc(); - for (int i = 0; i < ejbRefDesc.length; i++) { - ret.append("\ngetEjbRefDesc(" + i + ")=" + ejbRefDesc[i].getClass().getName()); - ret.append(ejbRefDesc[i].toString()); - } - - // Return the message-destination-ref - IMessageDestinationRefDesc[] mdRefDesc = getMessageDestinationRefDesc(); - for (int i = 0; i < mdRefDesc.length; i++) { - ret.append("\ngetMessageDestinationRefDesc(" + i + ")=" + mdRefDesc[i].getClass().getName()); - ret.append(mdRefDesc[i].toString()); - } - - // Return the persistence-unit-ref - IPersistenceUnitRefDesc[] persistUnitRefDesc = getPersistenceUnitRefs(); - for (int i = 0; i < persistUnitRefDesc.length; i++) { - ret.append("\ngetPersistenceUnitRefs(" + i + ")=" + persistUnitRefDesc[i].getClass().getName()); - ret.append(persistUnitRefDesc[i].toString()); - } - - // Return the callbackHandler - ret.append("\ngetCallbackHandler()=" + getCallbackHandler()); - - return ret.toString(); - } - - /** - * Store a reference to this application-client metadatas - * @param carDeployableMetadata application-client metadatas - */ - public void setCarMetadata(ICarDeployableMetadata carDeployableMetadata) { - this.carDeployableMetadata = carDeployableMetadata; - } - - /** - * @return this application-client metadatas. - */ - public ICarDeployableMetadata getCarDeployableMetadata() { - return this.carDeployableMetadata; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDescException.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDescException.java deleted file mode 100644 index eb21df0b49..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/ClientContainerDeploymentDescException.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer : Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - -import org.ow2.jonas.deployment.common.DeploymentDescException; - -/** - * This class ClientContainerDeploymentDescException indicates conditions - * that a reasonable application might want to catch. - * @author Florent Benoit - */ -public class ClientContainerDeploymentDescException - extends DeploymentDescException { - - /** - * Constructs a new ClientContainerDeploymentDescException with no detail - * message. - */ - public ClientContainerDeploymentDescException() { - super(); - } - - /** - * Constructs a new ClientContainerDeploymentDescException with the specified - * message. - * @param message the detail message. - */ - public ClientContainerDeploymentDescException(String message) { - super(message); - } - - /** - * Constructs a new ClientContainerDeploymentDescException with the specified - * message and cause. - * @param message the detail message. - * @param cause The error or exception that cause this exception. - */ - public ClientContainerDeploymentDescException(String message, - Throwable cause) { - super(message, cause); - } - - /** - * Construct an exception from a causing exception. - * @param cause The error or exception that cause this exception. - * The message will be take be this object's message. - */ - public ClientContainerDeploymentDescException(Throwable cause) { - super(cause); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientDTDs.java deleted file mode 100644 index 1e93a1c391..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientDTDs.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - -import org.ow2.jonas.deployment.common.CommonsDTDs; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of DTDs for jonas-client.xml. - * @author Florent Benoit - */ -public class JonasAppClientDTDs extends CommonsDTDs { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(JonasAppClientDTDs.class); - - /** - * List of jonas-client-app dtds. - */ - private static final String[] JONAS_APPCLIENT_DTDS = new String[] { - PACKAGE + "jonas-client_3_2.dtd" - - }; - - /** - * List of jonas-client-app publicId. - */ - private static final String[] JONAS_APPCLIENT_DTDS_PUBLIC_ID = new String[] { - "-//ObjectWeb//DTD JOnAS Client 3.2//EN" - }; - - - /** - * Build a new object for jonas-client.xml DTDs handling. - */ - public JonasAppClientDTDs() { - super(); - addMapping(JONAS_APPCLIENT_DTDS, JONAS_APPCLIENT_DTDS_PUBLIC_ID); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientSchemas.java deleted file mode 100644 index 318850d712..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/JonasAppClientSchemas.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for and jonas-web.xml. - * @author Philippe Coq - */ -public class JonasAppClientSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(JonasAppClientSchemas.class); - - /** - * List of schemas used for jonas-web.xml. - */ - private static final String[] JONAS_APPCLIENT_SCHEMAS = new String[] { - PACKAGE + "jonas-client_4_0.xsd", - PACKAGE + "jonas-client_4_1.xsd", - PACKAGE + "jonas-client_4_1_2.xsd", - PACKAGE + "jonas-client_4_1_4.xsd", - PACKAGE + "jonas-client_4_2.xsd", - PACKAGE + "jonas-client_5_0.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public JonasAppClientSchemas() { - super(); - addSchemas(JONAS_APPCLIENT_SCHEMAS); - } - - /** - * @return Returns the last Schema. - */ - public static String getLastSchema() { - return getLastSchema(JONAS_APPCLIENT_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/lib/ClientDeploymentDescManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/lib/ClientDeploymentDescManager.java deleted file mode 100644 index ba27be7c70..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/lib/ClientDeploymentDescManager.java +++ /dev/null @@ -1,1145 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.client.lib; - -//import java - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.rmi.RemoteException; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.List; -import java.util.StringTokenizer; -import java.util.jar.JarFile; -import java.util.zip.ZipEntry; - -import javax.annotation.Resource; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.easybeans.resolver.api.EZBJNDIBeanData; -import org.ow2.easybeans.resolver.api.EZBJNDIData; -import org.ow2.easybeans.resolver.api.EZBRemoteJNDIResolver; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.client.AppClientDTDs; -import org.ow2.jonas.deployment.client.AppClientSchemas; -import org.ow2.jonas.deployment.client.ClientContainerDeploymentDesc; -import org.ow2.jonas.deployment.client.ClientContainerDeploymentDescException; -import org.ow2.jonas.deployment.client.JonasAppClientDTDs; -import org.ow2.jonas.deployment.client.JonasAppClientSchemas; -import org.ow2.jonas.deployment.client.rules.ApplicationClientRuleSet; -import org.ow2.jonas.deployment.client.rules.JonasClientRuleSet; -import org.ow2.jonas.deployment.client.xml.ApplicationClient; -import org.ow2.jonas.deployment.client.xml.JonasClient; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.EjbRefDesc; -import org.ow2.jonas.deployment.common.MessageDestinationRefDesc; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.ow2.jonas.deployment.common.lib.AbsDeploymentDescManager; -import org.ow2.jonas.deployment.common.xml.EjbRef; -import org.ow2.jonas.deployment.common.xml.JonasEjbRef; -import org.ow2.jonas.deployment.common.xml.JonasMessageDestination; -import org.ow2.jonas.deployment.common.xml.JonasResource; -import org.ow2.jonas.deployment.common.xml.JonasServiceRef; -import org.ow2.jonas.deployment.common.xml.MessageDestinationRef; -import org.ow2.jonas.deployment.common.xml.PersistenceUnitRef; -import org.ow2.jonas.deployment.common.xml.ResourceRef; -import org.ow2.jonas.deployment.ejb.DeploymentDesc; -import org.ow2.jonas.deployment.ejb.lib.EjbDeploymentDescManager; -import org.ow2.jonas.deployment.ws.PortComponentDesc; -import org.ow2.jonas.deployment.ws.PortComponentRefDesc; -import org.ow2.jonas.deployment.ws.ServiceDesc; -import org.ow2.jonas.deployment.ws.WSDeploymentDesc; -import org.ow2.jonas.deployment.ws.lib.WSDeploymentDescManager; -import org.ow2.jonas.lib.loader.WebappClassLoader; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.archive.api.IArchive; -import org.ow2.util.archive.impl.ArchiveManager; -import org.ow2.util.ee.deploy.api.deployable.CARDeployable; -import org.ow2.util.ee.deploy.impl.helper.DeployableHelper; -import org.ow2.util.ee.deploy.impl.helper.UnpackDeployableHelper; -import org.ow2.util.ee.metadata.car.api.ICarDeployableMetadata; -import org.ow2.util.ee.metadata.car.impl.CarDeployableMetadataFactory; -import org.ow2.util.ee.metadata.car.impl.enc.CarENCBindingBuilder; -import org.ow2.util.ee.metadata.common.api.enc.IENCBinding; -import org.ow2.util.ee.metadata.common.api.enc.IENCBindingHolder; -import org.ow2.util.ee.metadata.common.api.struct.IJAnnotationResource; -import org.ow2.util.ee.metadata.common.api.struct.IJEjbEJB; -import org.ow2.util.ee.metadata.common.api.struct.IJavaxPersistenceUnit; -import org.ow2.util.ee.metadata.common.api.struct.IJaxwsWebServiceRef; -import org.ow2.util.ee.metadata.common.impl.enc.ENCBindingException; -import org.ow2.util.url.URLUtils; - - -/** - * This class provide a way for managing the ClientContainerDeploymentDesc. - * @author Florent Benoit - */ -public class ClientDeploymentDescManager extends AbsDeploymentDescManager { - - /** - * The unique instance of the ClientDeploymentDescManager. - */ - private static ClientDeploymentDescManager unique; - - /** - * Reference on the EjbDeploymentDescManager. - */ - private EjbDeploymentDescManager ejbDDManager = null; - - /** - * Associate a ear classLoader to an hashtable which contains association - * between Urls of wars and their optional alt-dd - */ - private Hashtable earCLAltDDBindings = null; - - /** - * The path to the application-client.xml file. - */ - public static final String CLIENT_FILE_NAME = "META-INF/application-client.xml"; - - /** - * The path to the jonas-client.xml file. - */ - public static final String JONAS_CLIENT_FILE_NAME = "META-INF/jonas-client.xml"; - - /** - * Digester used to parse application-client.xml - */ - private static JDigester appClientDigester = null; - - /** - * Digester use to parse jonas-client.xml - */ - private static JDigester jonasAppClientDigester = null; - - /** - * Flag for parser validation - */ - private static boolean parsingWithValidation = true; - - /** - * Rules to parse the application-client.xml - */ - private static ApplicationClientRuleSet appClientRuleSet = new ApplicationClientRuleSet(); - - /** - * Rules to parse the jonas-client.xml - */ - private static JonasClientRuleSet jonasAppClientRuleSet = new JonasClientRuleSet(); - - /** - * logger. - */ - private static Logger logger = Log.getLogger(ClientDeploymentDescManager.class.getName()); - - /** - * Contructs a unique ClientDeploymentDescManager - */ - private ClientDeploymentDescManager() { - ejbDDManager = EjbDeploymentDescManager.getInstance(); - earCLAltDDBindings = new Hashtable(); - } - - /** - * Get an instance of the ClientDeploymentDescManager. - * @return the instance of the ClientDeploymentDescManager. - */ - public static ClientDeploymentDescManager getInstance() { - if (unique == null) { - unique = new ClientDeploymentDescManager(); - } - return unique; - } - - /** - * Get the specified client deployment descriptor. - * @param url the url where to load xml deployment descriptors. - * @param loaderForCls classloader used to load client classes. - * @param earLoader the ear classloader. - * @return ClientContainerDeploymentDesc the client deployment descriptor. - * @throws DeploymentDescException when - * ClientContainerDeploymentDesc cannot be created with the given - * files. - */ - public ClientContainerDeploymentDesc getDeploymentDesc(final URL url, final ClassLoader loaderForCls, final ClassLoader earLoader) - throws DeploymentDescException { - - // Check if the jar exists ... - if (!URLUtils.urlToFile(url).exists()) { - String err = "Cannot get the deployment descriptor for "; - err = err + "'" + url.getFile() + "'. The file doesn't exist."; - throw new ClientContainerDeploymentDescException(err); - } - - //url used to load an alternate DDesc in the EAR case - URL altDDUrl = null; - - //check if it's an Ear case or not - Hashtable urlAltddBindings = null; - if (earLoader != null) { - //Mapping ? - urlAltddBindings = (Hashtable) earCLAltDDBindings.get(earLoader); - if (urlAltddBindings == null) { - //If there is no mapping, the setAltDD function was badly - // called - String err = "Cannot find if there is alt-dd for '" + url.getFile() - + "', the setAltDD function was badly called"; - throw new ClientContainerDeploymentDescException(err); - } - //Now we can get the optional alt-dd url file - altDDUrl = (URL) urlAltddBindings.get(url); - } - - // ... and get the instance of the ClientContainerDeploymentDesc. - // If there is an alternate url for the application-client.xml, call the - // method with this param. - ClientContainerDeploymentDesc clientDD = null; - try { - if (altDDUrl != null) { - clientDD = getInstance(URLUtils.urlToFile(url).getPath(), loaderForCls, altDDUrl.getFile()); - } else { - clientDD = getInstance(URLUtils.urlToFile(url).getPath(), loaderForCls); - } - } catch (org.ow2.jonas.deployment.common.DeploymentDescException dde) { - throw new ClientContainerDeploymentDescException(dde); - } - - // Resolve the ejb-link for ejb-ref - EjbRefDesc[] ejbRef = clientDD.getEjbRefDesc(); - for (int i = 0; i < ejbRef.length; i++) { - if (ejbRef[i].getJndiName() == null) { - String ejbLink = ejbRef[i].getEjbLink(); - String ejbRefType = ejbRef[i].getEjbRefType(); - String home = ejbRef[i].getHome(); - String remote = ejbRef[i].getRemote(); - if (ejbLink != null) { - if (earLoader == null) { - throw new ClientContainerDeploymentDescException( - "Ejb-link is not authorized from a single client jar. The client jar must be in an ear."); - } else { - String jndiName = null; - // First, try to get JNDI name through the manager before trying with the remote JNDI resolver. - try { - jndiName = getJndiName(url, ejbLink, earLoader, ejbRefType); - } catch (DeploymentDescException e) { - - // log first exception - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Unable to get JNDI name with the EJB DD manager", e); - } - - // Was not able to get a JNDI name, try with the remote object. - EZBRemoteJNDIResolver jndiResolver = null; - - // Get object - Object o = null; - try { - o = new InitialContext().lookup("EZB_Remote_JNDIResolver"); - } catch (NamingException ne) { - // No Remote JNDI resolver, so throw first exception - logger.log(BasicLevel.DEBUG, "No Remote EJB3 JNDI Resolver found"); - throw e; - } - - // Object is here, so we can cast it - jndiResolver = (EZBRemoteJNDIResolver) PortableRemoteObject.narrow(o, EZBRemoteJNDIResolver.class); - - // Ask the Resolver with interface name and bean name - String interfaceName = remote; - if (home != null && !"".equals(home)) { - interfaceName = home; - } - String beanName = ejbLink; - List jndiDataList = null; - try { - jndiDataList = jndiResolver.getEJBJNDINames(interfaceName, beanName); - } catch (RemoteException re) { - // No Remote JNDI resolver, so throw first exception - throw new DeploymentDescException("Unable to get EJB-LINK for interface'" + interfaceName + "' and beanName'" + beanName + "'", re); - } - - // Data is here, check if it is empty or not - if (jndiDataList.size() == 0) { - throw new DeploymentDescException("Unable to get EJB-LINK for interface'" + interfaceName + "' and beanName'" + beanName + "', no data was found on the remote side."); - } else if (jndiDataList.size() > 1) { - // too many entries - throw new DeploymentDescException("Unable to get EJB-LINK for interface'" + interfaceName + "' and beanName'" + beanName + "', too many answers : '" + jndiDataList + "'."); - } - - // Only one item found, so get JNDI Name from this object - EZBJNDIBeanData jndiData = jndiDataList.get(0); - // Update JNDI name - jndiName = jndiData.getName(); - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "Found JNDI Name '" + jndiName + "' for interface'" + interfaceName + "' and beanName'" + beanName + "', too many answers : '" + jndiDataList + "'."); - } - } - ejbRef[i].setJndiName(jndiName); - } - } - } - } - // Resolve the port-component-link for service-ref - IServiceRefDesc[] serviceRef = clientDD.getServiceRefDesc(); - - for (int i = 0; i < serviceRef.length; i++) { - - List pcRefs = serviceRef[i].getPortComponentRefs(); - for (int j = 0; j < pcRefs.size(); j++) { - // for each service portComponents : resolve links - PortComponentRefDesc pcr = (PortComponentRefDesc) pcRefs.get(j); - String pclink = pcr.getPortComponentLink(); - if (pclink != null) { - // a pc link is defined, we resolve it - PortComponentDesc pcDesc = getPCDesc(url, pclink, earLoader); - pcr.setPortComponentDesc(pcDesc); - } - } - } - - - // Resolve the message-destination-link for message-destination-ref - MessageDestinationRefDesc[] mdRef = clientDD.getMessageDestinationRefDesc(); - for (int i = 0; i < mdRef.length; i++) { - if (mdRef[i].getJndiName() == null) { - String jndiName = mdRef[i].getJndiName(); - String mdLink = mdRef[i].getMessageDestinationLink(); - String mdType = mdRef[i].getMessageDestinationType(); - String mdUsage = mdRef[i].getMessageDestinationUsage(); - if (mdLink != null) { - if (earLoader == null) { - throw new ClientContainerDeploymentDescException( - "Message-destination-link is not authorized from a single client jar. The client jar must be in an ear."); - } else { - jndiName = getMDJndiName(url, mdLink, mdType, mdUsage, earLoader); - // String jndiName = getMdJndiName(url, mdLink, - // earLoader, mdType); - mdRef[i].setJndiName(jndiName); - } - } - } - } - return clientDD; - } - /** - * Return the port component desc from the pcLink string. pcLink format : - * filename.[jar or war]#portComponentName in the same Ear File - * @param warURL the url of the war being parsed. This is needed because - * pcLink is relative. With the url and the pcLink, we can know where - * the file is locate. - * @param pcLink the pcLink tag of an port-component-ref. - * @param earLoader the classloader of the ear. - * @return the pcLink portComponent. - * @throws DeploymentDescException when it failed - */ - private PortComponentDesc getPCDesc(final URL warURL, final String pcLink, final ClassLoader earLoader) - throws DeploymentDescException { - - // Extract from the pc link - // - the name of the file - // - the name of the bean - String moduleLink = null; - String pcNameLink = null; - - // Check the format of the pc-link. It must contains .jar# or .war# - if ((pcLink.toLowerCase().indexOf(".war" + LINK_SEPARATOR) == -1) - && (pcLink.toLowerCase().indexOf(".jar" + LINK_SEPARATOR) == -1)) { - // the pc link is not in war or jar file - String err = "PC-link " + pcLink - + " has a bad format. Correct format : filename.(jar|war)#portComponentName"; - throw new DeploymentDescException(err); - } - StringTokenizer st = new StringTokenizer(pcLink, LINK_SEPARATOR); - - // We must have only two elements after this step, one for the fileName - // before the # and the name of the bean after the # char - if (st.countTokens() != 2 || pcLink.startsWith(LINK_SEPARATOR) || pcLink.endsWith(LINK_SEPARATOR)) { - String err = "PC-link " + pcLink - + " has a bad format. Correct format : filename.[jar or war]#portComponentName"; - throw new DeploymentDescException(err); - } - - //Get the token - moduleLink = st.nextToken(); - pcNameLink = st.nextToken(); - - // Now construct the URL from the absolute path from the url module and - // the relative path from moduleJarLink - URL moduleLinkUrl = null; - try { - moduleLinkUrl = new File(URLUtils.urlToFile(warURL).getParent() + File.separator + moduleLink) - .getCanonicalFile().toURL(); - } catch (MalformedURLException mue) { - String err = "Error when creating an url for the module filename. Error :" + mue.getMessage(); - throw new DeploymentDescException(err); - } catch (IOException ioe) { - String err = "Error when creating/accessing a file. Error :" + ioe.getMessage(); - throw new DeploymentDescException(err); - } - - // Check if the jar exist. - if (!new File(moduleLinkUrl.getFile()).exists()) { - String err = "Cannot get the deployment descriptor for '" + moduleLinkUrl.getFile() - + "'. The file doesn't exist."; - throw new DeploymentDescException(err); - } - - // We've got the url - // Now, We can ask the Deployment Descriptor of this url - ClassLoader loaderForCls = null; - ClassLoader current = Thread.currentThread().getContextClassLoader(); - if (moduleLink.toLowerCase().endsWith(".war")) { - try { - // webservice in webapp - loaderForCls = new WebappClassLoader(moduleLinkUrl, current); - } catch (IOException ioe) { - throw new DeploymentDescException("Unable to create Web ClassLoader", ioe); - } - } else { - // webservice in ejbjar - loaderForCls = current; - } - - WSDeploymentDesc wsDD = null; - - try { - wsDD = WSDeploymentDescManager.getInstance().getDeploymentDesc(moduleLinkUrl, loaderForCls, earLoader); - } catch (DeploymentDescException e) { - String err = "Cannot get the deployment descriptor for '" + moduleLinkUrl.getFile() + "'."; - throw new DeploymentDescException(err, e); - } - if (wsDD == null) { - // the module doesn't contain port components. - String err = "Port component link " + pcNameLink + " not found in " + moduleLinkUrl.getFile(); - throw new DeploymentDescException(err); - } - - //get port component desc //pcNameLink - List sdl = wsDD.getServiceDescs(); - boolean isFound = false; - PortComponentDesc pcd = null; - for (int i = 0; (i < sdl.size()) && !isFound; i++) { - if (sdl.get(i) != null) { - pcd = ((ServiceDesc) sdl.get(i)).getPortComponent(pcNameLink); - isFound = (pcd != null); - // we stop when we have found the good portComponent - } - } - if (!isFound) { - // the module doesn't contain port components. - String err = "the port component link " + pcNameLink + " doesn't exist in " + moduleLinkUrl.getFile(); - throw new DeploymentDescException(err); - } - - return pcd; - } - - - /** - * Get an instance of a Client deployment descriptor by parsing the - * application-client.xml and jonas-client.xml deployment descriptors. - * @param clientFileName the fileName of the client file for the deployment - * descriptors. - * @param classLoaderForCls the classloader for the classes. - * @return a Client deployment descriptor by parsing the - * application-client.xml and jonas-client.xml deployment - * descriptors. - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - public static ClientContainerDeploymentDesc getInstance(final String clientFileName, final ClassLoader classLoaderForCls) - throws DeploymentDescException { - - return getInstance(clientFileName, classLoaderForCls, null); - } - - /** - * Get an instance of a Client deployment descriptor by parsing the - * application-client.xml and jonas-client.xml deployment descriptors. - * @param clientFileName the fileName of the client file for the deployment - * descriptors. - * @param classLoaderForCls the classloader for the classes. - * @param altClientXmlFilename the fileName to the application-client.xml - * for the alt-dd tag in the Ear Case. This is used for specify an - * alternate DDesc file. - * @return a Client deployment descriptor by parsing the - * application-client.xml and jonas-client.xml deployment - * descriptors. - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - public static ClientContainerDeploymentDesc getInstance(final String clientFileName, final ClassLoader classLoaderForCls, - final String altClientXmlFilename) - - throws DeploymentDescException { - - // clientjar file - JarFile clientFile = null; - - // Input streams - InputStream applicationClientInputStream = null; - InputStream jonasClientInputStream = null; - - // ZipEntry - ZipEntry applicationClientZipEntry = null; - ZipEntry jonasClientZipEntry = null; - - // Clients - ApplicationClient applicationClient; - JonasClient jonasClient; - - // Init xml contents values; - String xmlContent = ""; - String jonasXmlContent = ""; - - // Build the file - File fClient = new File(clientFileName); - - //Check if the file exists. - if (!(fClient.exists())) { - String err = "' " + clientFileName + "' was not found."; - throw new ClientContainerDeploymentDescException(err); - } - - //Check if the Alt deploymentDesc file exists. - //But only if it's a non null value because it's optionnal. - if ((altClientXmlFilename != null) && (!new File(altClientXmlFilename).exists())) { - String err = "The file for the altdd tag for the EAR case '" + altClientXmlFilename + "' was not found."; - throw new ClientContainerDeploymentDescException(err); - } - - // load the application-client deployment descriptor data - // (META-INF/application-client.xml - // and META-INF/jonas-client.xml) - //No alt-dd case - if (altClientXmlFilename == null) { - try { - clientFile = new JarFile(clientFileName); - - //Lookup in the JAR - //Check the client entry - applicationClientZipEntry = clientFile.getEntry(CLIENT_FILE_NAME); - if (applicationClientZipEntry != null) { - //Get the stream - applicationClientInputStream = clientFile.getInputStream(applicationClientZipEntry); - xmlContent = xmlContent(applicationClientInputStream); - // necessary to have a not empty InputStream !!! - applicationClientInputStream = clientFile.getInputStream(applicationClientZipEntry); - } - } catch (Exception e) { - if (clientFile != null) { - try { - clientFile.close(); - } catch (IOException ioe) { - //We can't close the file - } - } - throw new ClientContainerDeploymentDescException( - "Can not read the XML deployment descriptors of the client jar file '" + clientFileName + "'.", - e); - } - } else { - try { - applicationClientInputStream = new FileInputStream(altClientXmlFilename); - xmlContent = xmlContent(applicationClientInputStream); - // necessary to have a not empty InputStream !!! - applicationClientInputStream = new FileInputStream(altClientXmlFilename); - } catch (FileNotFoundException ioe) { - throw new ClientContainerDeploymentDescException("The altDD file '" + altClientXmlFilename - + "' was not found."); - } catch (Exception e) { - if (applicationClientInputStream != null) { - try { - applicationClientInputStream.close(); - } catch (IOException ioe) { - // Can't close the file - } - } - throw new ClientContainerDeploymentDescException("Cannot read the XML deployment descriptors of the client jar file '" - + clientFileName + "'.", e); - } - } - - if (applicationClientInputStream != null) { - applicationClient = loadApplicationClient(new InputStreamReader(applicationClientInputStream), CLIENT_FILE_NAME); - } else { - applicationClient = new ApplicationClient(); - } - - try { - clientFile = new JarFile(clientFileName); - - // Lookup in the JAR - // Check the client entry - jonasClientZipEntry = clientFile.getEntry(JONAS_CLIENT_FILE_NAME); - if (jonasClientZipEntry != null) { - //Get the stream - jonasClientInputStream = clientFile.getInputStream(jonasClientZipEntry); - jonasXmlContent = xmlContent(jonasClientInputStream); - // necessary to have a not empty InputStream !!! - jonasClientInputStream = clientFile.getInputStream(jonasClientZipEntry); - } - } catch (Exception e) { - if (clientFile != null) { - try { - clientFile.close(); - } catch (IOException ioe) { - //We can't close the file - } - } - throw new ClientContainerDeploymentDescException( - "Can not read the XML deployment descriptors of the client jar file '" + clientFileName + "'.", e); - } - - // load jonas-client deployment descriptor data - // (META-INF/jonas-client.xml) - if (jonasClientInputStream != null) { - jonasClient = loadJonasClient(new InputStreamReader(jonasClientInputStream), JONAS_CLIENT_FILE_NAME); - try { - jonasClientInputStream.close(); - } catch (IOException e) { - // Nothing to do - } - } else { - jonasClient = new JonasClient(); - } - - // Compute Metadatas - ICarDeployableMetadata carDeployableMetadata = getCarMetadata(clientFileName, classLoaderForCls); - - - // Get Holder and complete metadata - IENCBindingHolder holder = completeClient(carDeployableMetadata, - applicationClient, - jonasClient, - classLoaderForCls); - - // instantiate client deployment descriptor - ClientContainerDeploymentDesc clientDD = new ClientContainerDeploymentDesc(classLoaderForCls, applicationClient, jonasClient); - clientDD.setXmlContent(xmlContent); - clientDD.setJOnASXmlContent(jonasXmlContent); - clientDD.setENCBindingHolder(holder); - - clientDD.setCarMetadata(carDeployableMetadata); - - return clientDD; - } - - /** - * Extract all the metadatas from the application client. - * @param clientFileName the client - * @param classLoader the classloader used for the client - * @return the metadata structure associated to this client - * @throws ClientContainerDeploymentDescException if an error occured during annotation/XML parsing - */ - public static ICarDeployableMetadata getCarMetadata(final String clientFileName, final ClassLoader classLoader) throws ClientContainerDeploymentDescException { - // Analyze metadata of the client - - File clientFile = new File(clientFileName); - - // First, get an archive - IArchive archive = ArchiveManager.getInstance().getArchive(clientFile); - - ICarDeployableMetadata carDeployableMetadata; - CARDeployable carDeployable; - try { - // Workaround for http://bugs.sun.com/view_bug.do?bug_id=6548436 - carDeployable = CARDeployable.class.cast(DeployableHelper.getDeployable(archive)); - // check if client is uncompressed - if (!clientFile.isDirectory()) { - carDeployable = UnpackDeployableHelper.unpack(carDeployable); - logger.log(BasicLevel.DEBUG, "Unpack an application-client to create metadata"); - } - carDeployableMetadata = new CarDeployableMetadataFactory().createDeployableMetadata(carDeployable, classLoader); - } catch (Exception e) { - throw new ClientContainerDeploymentDescException(e); - } - return carDeployableMetadata; - } - - /** - * Complete the given applicationClient object and jonasClient by reading annotations. - * @param carDeployableMetadata given war file to analyze - * @param applicationClient the web app struct - * @param jonasClient the jonas webapp struct - * @param classLoader the classloader used to get the classes - * @return the binding holder - * @throws ClientContainerDeploymentDescException if complete is not done - */ - public static IENCBindingHolder completeClient(final ICarDeployableMetadata carDeployableMetadata, - final ApplicationClient applicationClient, - final JonasClient jonasClient, - final ClassLoader classLoader) throws ClientContainerDeploymentDescException { - - // Complete the standard application-client object with the annotations found - IENCBindingHolder encBindingHolder = null; - try { - encBindingHolder = CarENCBindingBuilder.analyze(carDeployableMetadata); - } catch (ENCBindingException e) { - logger.log(BasicLevel.ERROR, "Unable to analyze metadata of '" + carDeployableMetadata + "'", e); - } - - // Get @PersistenceUnit annotations bindings - List> persistenceUnitBindings = encBindingHolder.getPersistenceUnitBindings(); - // Adds each binding as a persistence unit object - for (IENCBinding persistenceUnitBinding : persistenceUnitBindings) { - // get object - IJavaxPersistenceUnit annotationPersistenceUnit = persistenceUnitBinding.getValue(); - PersistenceUnitRef persistenceUnitRef = new PersistenceUnitRef(); - applicationClient.addPersistenceUnitRef(persistenceUnitRef); - // set the ref name - persistenceUnitRef.setPersistenceUnitRefName(annotationPersistenceUnit.getName()); - // set the unit name - persistenceUnitRef.setPersistenceUnitName(annotationPersistenceUnit.getUnitName()); - } - - // Get @Resource annotations bindings - List> resourcesBindings = encBindingHolder.getResourceBindings(); - // Adds each binding as a resource object - for (IENCBinding resourceBinding : resourcesBindings) { - - // get object - IJAnnotationResource annotationResource = resourceBinding.getValue(); - - // Build a new object and add it (if not a session context) - if ("javax.ejb.SessionContext".equals(annotationResource.getType())) { - continue; - } else if ("org.omg.CORBA.ORB".equals(annotationResource.getType())) { - continue; - } else if ("javax.transaction.UserTransaction".equals(annotationResource.getType())) { - continue; - } - - // Already present ? - String resourceName = resourceBinding.getName(); - if (containsResource(resourceName, applicationClient)) { - continue; - } - - String messageDestinationLink = annotationResource.getMessageDestinationLink(); - - // Resource ref - if (messageDestinationLink == null) { - ResourceRef resourceRef = new ResourceRef(); - applicationClient.addResourceRef(resourceRef); - - // Sets the name - resourceRef.setResRefName(resourceBinding.getName()); - - // Set auth - Resource.AuthenticationType authType = annotationResource.getAuthenticationType(); - if (authType.equals(Resource.AuthenticationType.CONTAINER)) { - resourceRef.setResAuth("Container"); - } else { - resourceRef.setResAuth("Application"); - } - - // Sets type - resourceRef.setResType(annotationResource.getType()); - - // if there is a mapped name, add a jonas-resource element - String mappedName = annotationResource.getMappedName(); - if (mappedName != null) { - JonasResource jonasResource = new JonasResource(); - jonasResource.setResRefName(annotationResource.getName()); - jonasResource.setJndiName(mappedName); - jonasClient.addJonasResource(jonasResource); - } - } else { - // Message destination ref - MessageDestinationRef messageDestinationRef = new MessageDestinationRef(); - applicationClient.addMessageDestinationRef(messageDestinationRef); - - // Sets the name - messageDestinationRef.setMessageDestinationRefName(resourceBinding.getName()); - - // Set auth - messageDestinationRef.setMessageDestinationLink(messageDestinationLink); - - // Sets type - messageDestinationRef.setMessageDestinationType(annotationResource.getType()); - - // if there is a mapped name, add a jonas-resource element - String mappedName = annotationResource.getMappedName(); - if (mappedName != null) { - JonasMessageDestination jonasMessageDestination = new JonasMessageDestination(); - jonasMessageDestination.setMessageDestinationName(annotationResource.getName()); - jonasMessageDestination.setJndiName(mappedName); - jonasClient.addJonasMessageDestination(jonasMessageDestination); - } - - } - - } - - // Get @EJB annotations bindings - List> ejbsBindings = encBindingHolder.getEJBBindings(); - - // Adds each binding as a resource object - for (IENCBinding ejbBinding : ejbsBindings) { - // Build a new object and add it - EjbRef ejbRef = new EjbRef(); - applicationClient.addEjbRef(ejbRef); - - // Sets the name - ejbRef.setEjbRefName(ejbBinding.getName()); - - // get object - IJEjbEJB jEJB = ejbBinding.getValue(); - - // if there is a mapped name, add a jonas-resource element - String mappedName = jEJB.getMappedName(); - if (mappedName != null) { - JonasEjbRef jonasEjbRef = new JonasEjbRef(); - jonasEjbRef.setEjbRefName(ejbBinding.getName()); - jonasEjbRef.setJndiName(mappedName); - jonasClient.addJonasEjbRef(jonasEjbRef); - } - } - - // Iterates on jonas-service-ref elements to see if there are some values to override - List> webServicesBindings = encBindingHolder.getWebServicesBindings(); - for (IENCBinding binding : webServicesBindings) { - IJaxwsWebServiceRef wsr = binding.getValue(); - JonasServiceRef jsr = findJonasServiceRef(jonasClient.getJonasServiceRefList(), wsr.getName()); - - // Found a matching jonas-service-ref - if (jsr != null) { - mergeWebServiceRef(jsr, wsr); - } - } - - return encBindingHolder; - } - - /** - * Load the application-client.xml file. - * @param reader the reader of the XML file. - * @param fileName the name of the file (application-client.xml). - * @return a structure containing the result of the application-client.xml - * parsing. - * @throws DeploymentDescException if the deployment descriptor is - * corrupted. - */ - public static ApplicationClient loadApplicationClient(final Reader reader, final String fileName) - throws DeploymentDescException { - - ApplicationClient appc = new ApplicationClient(); - - // No reader, return now the object - if (reader == null) { - return appc; - } - - // Create if null - if (appClientDigester == null) { - // Create and initialize the digester - appClientDigester = new JDigester(appClientRuleSet, getParsingWithValidation(), true, new AppClientDTDs(), - new AppClientSchemas()); - } - - try { - appClientDigester.parse(reader, fileName, appc); - } catch (DeploymentDescException e) { - throw e; - } finally { - appClientDigester.push(null); - } - return appc; - } - - /** - * Load the jonas-client.xml file. - * @param reader the stream of the XML file. - * @param fileName the name of the file (jonas-client.xml). - * @return a structure containing the result of the jonas-client.xml - * parsing. - * @throws DeploymentDescException if the deployment descriptor is - * corrupted. - */ - public static JonasClient loadJonasClient(final Reader reader, final String fileName) throws DeploymentDescException { - - JonasClient jc = new JonasClient(); - - // Create if null - if (jonasAppClientDigester == null) { - jonasAppClientDigester = new JDigester(jonasAppClientRuleSet, getParsingWithValidation(), true, - new JonasAppClientDTDs(), new JonasAppClientSchemas()); - } - - try { - jonasAppClientDigester.parse(reader, fileName, jc); - - } catch (DeploymentDescException e) { - throw e; - } finally { - jonasAppClientDigester.push(null); - } - return jc; - } - - /** - * Return the JNDI name from the ejbLink string. ejbLink format : - * filename.jar#beanName in the same Ear File - * @param clientURL the url of the jar being parsed. This is needed because - * ejbLink is relative. With the url and the ejbLink, we can know - * where the file is locate. - * @param ejbLink the ejbLink tag of an ejb-ref. - * @param earLoader the classloader of the ear. - * @param ejbType the type of the referenced ejb in the ejb-ref tag. - * @return the JNDI name if found, null otherwise - * @throws DeploymentDescException when it failed - */ - private String getJndiName(final URL clientURL, final String ejbLink, final ClassLoader earLoader, final String ejbType) - throws DeploymentDescException { - // Now ask EJB deployment Desc manager - // Last arg is always true as it is always ejb ref and not local ref from a client - return ejbDDManager.getJndiName(clientURL, ejbLink, earLoader, ejbType, null, true); - } - - /** - * Make a cleanup of the cache of deployment descriptor. This method must - * Return the JNDI name from the mdLink string. mdLink format : - * filename.jar#mdName in the same Ear File - * @param clientURL the url of the jar being parsed. This is needed because - * mdLink is relative. With the url and the mdLink, we can know where - * the file is locate. - * @param mdLink the mdLink tag of a message-destination-ref - * @param mdType the type of the referenced mdb in the - * message-destination-ref tag. - * @param mdUsage the usage of the referenced mdb in the - * message-destination-ref tag. - * @param earLoader the classloader of the ear. - * @return the JNDI name if found, null otherwise - * @throws ClientContainerDeploymentDescException when it failed - */ - private String getMDJndiName(final URL clientURL, final String mdLink, final String mdType, final String mdUsage, final ClassLoader earLoader) - throws ClientContainerDeploymentDescException { - - // Extract from the mdb link - // - the name of the file - // - the name of the destination - String ejbJarLink = null; - String destNameLink = null; - DeploymentDesc dd = null; - - JonasMessageDestination md = null; - // contains ejb-jar name - if (mdLink.indexOf("#") > 0) { - ejbJarLink = mdLink.split("#")[0]; - destNameLink = mdLink.split("#")[1]; - } else { - // ask for any jar - destNameLink = mdLink; - } - if (ejbJarLink != null) { - //Check if ejbJarLink is a jar or not - if (!ejbJarLink.endsWith(".jar")) { - String err = "Ejbjar filename " + ejbJarLink + " from the message-destination-link " + mdLink - + " has a bad format. Correct format : filename.jar"; - throw new ClientContainerDeploymentDescException(err); - } - // Now construct the URL from the absolute path from the url clientURL - // and - // the relative path from ejbJarLink - URL ejbJarLinkUrl = null; - try { - ejbJarLinkUrl = new File(new File(clientURL.getFile()).getParent() + File.separator + ejbJarLink) - .getCanonicalFile().toURL(); - } catch (MalformedURLException mue) { - String err = "Error when creating an url for the ejb jar filename. Error :" + mue.getMessage(); - throw new ClientContainerDeploymentDescException(err); - } catch (IOException ioe) { - String err = "Error when creating/accessing a file. Error :" + ioe.getMessage(); - throw new ClientContainerDeploymentDescException(err); - } - - // Check if the jar exist. - if (!new File(ejbJarLinkUrl.getFile()).exists()) { - String err = "Cannot get the deployment descriptor for '" + ejbJarLinkUrl.getFile() - + "'. The file doesn't exist."; - throw new ClientContainerDeploymentDescException(err); - } - - // We've got the url - // Now, We can ask the Deployment Descriptor of this url - URL[] ddURL = new URL[1]; - ddURL[0] = ejbJarLinkUrl; - URLClassLoader loaderForClsEjb = new URLClassLoader(ddURL, earLoader); - try { - dd = ejbDDManager.getDeploymentDesc(ejbJarLinkUrl, loaderForClsEjb, earLoader); - } catch (DeploymentDescException e) { - String err = "Cannot get the deployment descriptor for '" + ejbJarLinkUrl.getFile() + "'."; - throw new ClientContainerDeploymentDescException(err, e); - } - - md = dd.getJonasMessageDestination(mdLink); - } - if (md == null) { - - String err = "No message-destination-link was found for '" + mdLink + "' in the file " - + clientURL.getFile() + " specified."; - ClientContainerDeploymentDescException e = new ClientContainerDeploymentDescException(err); - - // Not found, try with the remote resolver - - // Was not able to get a JNDI name, try with the remote object. - EZBRemoteJNDIResolver jndiResolver = null; - - // Get object - Object o = null; - try { - o = new InitialContext().lookup("EZB_Remote_JNDIResolver"); - } catch (NamingException ne) { - // No Remote JNDI resolver, so throw first exception - logger.log(BasicLevel.DEBUG, "No Remote EJB3 JNDI Resolver found"); - throw e; - } - - // Object is here, so we can cast it - jndiResolver = (EZBRemoteJNDIResolver) PortableRemoteObject.narrow(o, EZBRemoteJNDIResolver.class); - - // Ask the Resolver - List jndiDataList = null; - try { - jndiDataList = jndiResolver.getMessageDestinationJNDINames(destNameLink); - } catch (RemoteException re) { - // No Remote JNDI resolver, so throw first exception - throw new ClientContainerDeploymentDescException("Unable to get EJB-LINK for destination '" + destNameLink + "'", re); - } - - // Data is here, check if it is empty or not - if (jndiDataList.size() == 0) { - throw new ClientContainerDeploymentDescException("Unable to get EJB-LINK for destination '" + destNameLink + "'"); - } else if (jndiDataList.size() > 1) { - // too many entries - throw new ClientContainerDeploymentDescException("Unable to get EJB-LINK for destination '" + destNameLink + "', too many answers : '" + jndiDataList + "'."); - } - - // Only one item found, so get JNDI Name from this object - EZBJNDIData jndiData = jndiDataList.get(0); - // Update JNDI name - return jndiData.getName(); - - } - - //Check if the type & usage of the message-destination-ref is correct. - //For now checkTypeUsage(clientURL, mdType, mdUsage, dd); - - return md.getJndiName(); - } - - /** - * Make a cleanup of the cache of deployment descriptor. This method must be - * invoked after the ear deployment by the EAR service. - * @param earClassLoader the ClassLoader of the ear application to remove - * from the cache. - */ - public void removeCache(final ClassLoader earClassLoader) { - //Remove the altdd mapping - earCLAltDDBindings.remove(earClassLoader); - - //Then remove the cache of the ejb dd manager - ejbDDManager.removeCache(earClassLoader); - } - - /** - * Set the alt deployment desc which are used instead of the web.xml file - * which is in the war file. The alt-dd tag is in the application.xml file - * of the ear files and is used ony in the EAR case. ie : deployment of wars - * packaged into EAR applications. alt-dd tag is optionnal - * @param earClassLoader the ear classloader which is used for mapped the - * URLs of the wars to the Alt dd. - * @param urls the urls of the wars - * @param altDDs the alt-dd name for the specified war URLs - */ - public void setAltDD(final ClassLoader earClassLoader, final URL[] urls, final URL[] altDDs) { - - //Associate an url to a altDD url - Hashtable urlAltddBindings = new Hashtable(); - - //Fill the hashtable for each url - for (int i = 0; i < urls.length; i++) { - if (altDDs[i] != null) { - urlAltddBindings.put(urls[i], altDDs[i]); - } - } - - //Bind the hashtable - earCLAltDDBindings.put(earClassLoader, urlAltddBindings); - - } - - /** - * Get the size of the cache (number of entries in the cache). This method - * is used only for the tests. - * @return the size of the cache (number of entries in the cache). - */ - public int getCacheSize() { - int bufferSize = 0; - - Enumeration keys = earCLAltDDBindings.keys(); - while (keys.hasMoreElements()) { - ClassLoader loader = (ClassLoader) keys.nextElement(); - Hashtable hashtab = (Hashtable) earCLAltDDBindings.get(loader); - bufferSize = bufferSize + hashtab.size(); - } - - return bufferSize; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @return if true, all external entities will be read. - */ - public static boolean getParsingWithValidation() { - return parsingWithValidation; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @param validation if true, all external entities will be read. - */ - public static void setParsingWithValidation(final boolean validation) { - ClientDeploymentDescManager.parsingWithValidation = validation; - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/ApplicationClientRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/ApplicationClientRuleSet.java deleted file mode 100644 index c8afb60b29..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/ApplicationClientRuleSet.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.rules; - -import org.ow2.jonas.deployment.common.rules.EnvironmentRuleSet; -import org.ow2.jonas.deployment.common.rules.IconRuleSet; -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; -import org.ow2.jonas.deployment.common.rules.MessageDestinationRuleSet; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element application-client - * - * @author jonas-team - */ -public class ApplicationClientRuleSet extends JRuleSetBase { - - /** - *

    RuleSet for processing the contents of a - *application-client definition element. - * - * @author jonas-team - */ - - /** - * Construct an object with a specific prefix - */ - public ApplicationClientRuleSet() { - super("application-client/"); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addRuleSet(new IconRuleSet(prefix)); - digester.addCallMethod(prefix + "display-name", - "setDisplayName", 0); - digester.addCallMethod(prefix + "description", - "setDescription", 0); - digester.addRuleSet(new EnvironmentRuleSet(prefix)); - digester.addCallMethod(prefix + "callback-handler", - "setCallbackHandler", 0); - digester.addRuleSet(new MessageDestinationRuleSet(prefix)); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasClientRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasClientRuleSet.java deleted file mode 100644 index 03c5d6e1f1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasClientRuleSet.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; -import org.ow2.jonas.deployment.common.rules.JonasEjbRefRuleSet; -import org.ow2.jonas.deployment.common.rules.JonasMessageDestinationRefRuleSet; -import org.ow2.jonas.deployment.common.rules.JonasMessageDestinationRuleSet; -import org.ow2.jonas.deployment.common.rules.JonasResourceEnvRuleSet; -import org.ow2.jonas.deployment.common.rules.JonasResourceRuleSet; -import org.ow2.jonas.deployment.common.rules.JonasServiceRefRuleSet; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element jonas-client - * - * @author jonas-team - */ - -public class JonasClientRuleSet extends JRuleSetBase { - - /** - *

    RuleSet for processing the contents of a - *jonas-client definition element. - * - * @author jonas-team - */ - - /** - * Construct an object with a specific prefix - */ - public JonasClientRuleSet() { - super("jonas-client/"); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addRuleSet(new JonasEjbRefRuleSet(prefix)); - digester.addRuleSet(new JonasResourceRuleSet(prefix)); - digester.addRuleSet(new JonasResourceEnvRuleSet(prefix)); - digester.addRuleSet(new JonasSecurityRuleSet(prefix)); - digester.addRuleSet(new JonasServiceRefRuleSet(prefix)); - digester.addRuleSet(new JonasMessageDestinationRefRuleSet(prefix)); - digester.addRuleSet(new JonasMessageDestinationRuleSet(prefix)); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasSecurityRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasSecurityRuleSet.java deleted file mode 100644 index 79eb69db73..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/rules/JonasSecurityRuleSet.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element jonas-security - * - * @author jonas-team - */ - -public class JonasSecurityRuleSet extends JRuleSetBase { - - /** - *

    RuleSet for processing the contents of a - *jonas-security definition element. - * - * @author jonas-team - */ - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasSecurityRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-security", - "org.ow2.jonas.deployment.client.xml.JonasSecurity"); - digester.addSetNext(prefix + "jonas-security", - "setJonasSecurity", - "org.ow2.jonas.deployment.client.xml.JonasSecurity"); - digester.addCallMethod(prefix + "jonas-security/jaasfile", - "setJaasfile", 0); - digester.addCallMethod(prefix + "jonas-security/jaasentry", - "setJaasentry", 0); - digester.addCallMethod(prefix + "jonas-security/username", - "setUsername", 0); - digester.addCallMethod(prefix + "jonas-security/password", - "setPassword", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/wrapper/ClientManagerWrapper.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/wrapper/ClientManagerWrapper.java deleted file mode 100644 index 529d35b2de..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/wrapper/ClientManagerWrapper.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Guillaume Sauthier - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.wrapper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.deployment.client.ClientContainerDeploymentDesc; -import org.ow2.jonas.deployment.client.ClientContainerDeploymentDescException; -import org.ow2.jonas.lib.bootstrap.LoaderManager; -import org.ow2.jonas.lib.util.Log; - -/** - * Wrap the call to ClientDeploymentDescManager during JOnAS runtime to solve - * classloader problem with Digester. - * - * @author Guillaume Sauthier - */ -public class ClientManagerWrapper { - - /** - * logger - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.deployment.client"); - - /** - * Private Empty constructor for utility class. - */ - private ClientManagerWrapper() { } - - /** - * Wrap the ClientDeploymentDescManager.getDeploymentDesc(URL, ClassLoader, - * ClassLoader). - * - * @param url URL of the client to deploy - * @param moduleCL ClassLoader of the Client - * @param earCL ClassLoader of the application wrapping the client. - * - * @return the ClientContainerDeploymentDesc found at the given URL. - * @throws ClientContainerDeploymentDescException When deployment fails. - */ - public static ClientContainerDeploymentDesc getDeploymentDesc(final URL url, final ClassLoader moduleCL, final ClassLoader earCL) - throws ClientContainerDeploymentDescException { - LoaderManager lm = LoaderManager.getInstance(); - ClientContainerDeploymentDesc ccDD = null; - - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass("org.ow2.jonas.deployment.client.lib.ClientDeploymentDescManager"); - Method m = manager.getDeclaredMethod("getInstance", new Class[] {}); - Object instance = m.invoke(null, new Object[] {}); - m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {URL.class, ClassLoader.class, - ClassLoader.class}); - ccDD = (ClientContainerDeploymentDesc) m.invoke(instance, new Object[] {url, moduleCL, earCL}); - } catch (InvocationTargetException ite) { - Throwable t = ite.getTargetException(); - if (ClientContainerDeploymentDescException.class.isInstance(t)) { - throw (ClientContainerDeploymentDescException) ite.getTargetException(); - } else { - throw new ClientContainerDeploymentDescException("ClientDeploymentDescManager.getDeploymentDesc fails", t); - } - } catch (Exception e) { - e.printStackTrace(); - // TODO add i18n here - throw new ClientContainerDeploymentDescException("Problems when using reflection on ClientDeploymentDescManager", e); - } - - return ccDD; - } - - /** - * Wrap the ClientDeploymentDescManager.getInstance().setAltDD(ClassLoader, URL[], URL[]) - * - * @param earClassLoader ClassLoader of the Application wrapping the Client - * @param clientUrls Array of ClientApplication URL - * @param clientsAltDDs Array of Client Alternative Deployment Desc URL - */ - public static void setAltDD(final URLClassLoader earClassLoader, final URL[] clientUrls, final URL[] clientsAltDDs) { - LoaderManager lm = LoaderManager.getInstance(); - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass("org.ow2.jonas.deployment.client.lib.ClientDeploymentDescManager"); - Method m = manager.getDeclaredMethod("getInstance", new Class[] {}); - Object instance = m.invoke(null, new Object[] {}); - m = manager.getDeclaredMethod("setAltDD", new Class[] {ClassLoader.class, URL[].class, URL[].class}); - m.invoke(instance, new Object[] {earClassLoader, clientUrls, clientsAltDDs}); - } catch (Exception e) { - // Should never occurs - logger.log(BasicLevel.ERROR, e); - } - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/ApplicationClient.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/ApplicationClient.java deleted file mode 100644 index 6e9039be8e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/ApplicationClient.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.xml; - -import org.ow2.jonas.deployment.common.xml.AbsEnvironmentElement; -import org.ow2.jonas.deployment.common.xml.JndiEnvRefsGroupXml; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; - -/** - * This class defines the implementation of the element application-client - * @author jonas-team - */ - -public class ApplicationClient extends AbsEnvironmentElement implements TopLevelElement, JndiEnvRefsGroupXml { - - /** - * callback-handler - */ - private String callbackHandler = null; - - /** - * Constructor - */ - public ApplicationClient() { - super(); - } - - /** - * @return the callback-handler - */ - public String getCallbackHandler() { - return callbackHandler; - } - - /** - * Set the callback-handler - * @param callbackHandler callbackHandler - */ - public void setCallbackHandler(final String callbackHandler) { - this.callbackHandler = callbackHandler; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - @Override - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // icon - sb.append(getIcon().toXML(indent)); - // display-name - sb.append(xmlElement(getDisplayName(), "display-name", indent)); - // description - sb.append(xmlElement(getDescription(), "description", indent)); - // env-entry - sb.append(getEnvEntryList().toXML(indent)); - // ejb-ref - sb.append(getEjbRefList().toXML(indent)); - // service-ref - sb.append(getServiceRefList().toXML(indent)); - // resource-ref - sb.append(getResourceRefList().toXML(indent)); - // resource-env-ref - sb.append(getResourceEnvRefList().toXML(indent)); - // message-destination-ref - sb.append(getMessageDestinationRefList().toXML(indent)); - // persistence-unit-ref - sb.append(getPersistenceUnitRefList().toXML(indent)); - // callback-handler - sb.append(xmlElement(callbackHandler, "callback-handler", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasClient.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasClient.java deleted file mode 100644 index 9bde26e3a0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasClient.java +++ /dev/null @@ -1,166 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.xml; - -import org.ow2.jonas.deployment.client.JonasAppClientSchemas; -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.xml.AbsJonasEnvironmentElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.JonasMessageDestination; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; - - - -/** - * This class defines the implementation of the element jonas-client - * @author jonas-team - */ - -public class JonasClient extends AbsJonasEnvironmentElement implements TopLevelElement { - - /** - * Header (with right XSD version) for XML - */ - private String header = null; - - /** - * jonas-security - */ - private JonasSecurity jonasSecurity = null; - - /** - * jonas-message-destination - */ - private JLinkedList jonasMessageDestinationList = null; - - /** - * jonas-client element XML header - */ - public static final String JONAS_CLIENT_ELEMENT = CommonsSchemas.getHeaderForElement("jonas-client", - JonasAppClientSchemas.getLastSchema()); - - /** - * Default constructor - */ - public JonasClient() { - super(); - jonasMessageDestinationList = new JLinkedList("jonas-message-destination"); - - header = JONAS_CLIENT_ELEMENT; - } - - /** - * @return the jonas-security - */ - public JonasSecurity getJonasSecurity() { - return jonasSecurity; - } - - /** - * Set the jonas-security - * @param jonasSecurity jonasSecurity - */ - public void setJonasSecurity(JonasSecurity jonasSecurity) { - this.jonasSecurity = jonasSecurity; - } - - /** - * @return the list of all jonas-message-destination elements - */ - public JLinkedList getJonasMessageDestinationList() { - return jonasMessageDestinationList; - } - - /** - * Set the jonas-message-destination - * @param jonasMessageDestinationList jonasMessageDestination - */ - public void setJonasMessageDestinationList(JLinkedList jonasMessageDestinationList) { - this.jonasMessageDestinationList = jonasMessageDestinationList; - } - - /** - * Add a new jonas-message-destination element to this object - * @param jonasMessageDestination the jonas-message-destination object - */ - public void addJonasMessageDestination(JonasMessageDestination jonasMessageDestination) { - jonasMessageDestinationList.add(jonasMessageDestination); - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - if (header != null) { - sb.append(header); - } else { - sb.append("\n"); - } - - indent += 2; - - // jonas-ejb-ref - sb.append(getJonasEjbRefList().toXML(indent)); - // jonas-resource - sb.append(getJonasResourceList().toXML(indent)); - // jonas-resource-env - sb.append(getJonasResourceEnvList().toXML(indent)); - // jonas-security - if (jonasSecurity != null) { - sb.append(jonasSecurity.toXML(indent)); - } - // jonas-service-ref - sb.append(getJonasServiceRefList().toXML(indent)); - // jonas-message-destination-ref - sb.append(getJonasMessageDestinationRefList().toXML(indent)); - // jonas-message-destination - sb.append(jonasMessageDestinationList.toXML(indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - /** - * @return the header. - */ - public String getHeader() { - return header; - } - - /** - * @param header The header to set. - */ - public void setHeader(String header) { - this.header = header; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasSecurity.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasSecurity.java deleted file mode 100644 index 57d8bbd97c..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/client/xml/JonasSecurity.java +++ /dev/null @@ -1,151 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.client.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; - -/** - * This class defines the implementation of the element jonas-security - * @author jonas-team - */ - -public class JonasSecurity extends AbsElement { - - /** - * jaasfile - */ - private String jaasfile = null; - - /** - * jaasentry - */ - private String jaasentry = null; - - /** - * username - */ - private String username = null; - - /** - * password - */ - private String password = null; - - /** - * Default constructor - */ - public JonasSecurity() { - super(); - } - - /** - * @return the jaasfile - */ - public String getJaasfile() { - return jaasfile; - } - - /** - * Set the jaasfile - * @param jaasfile jaasfile - */ - public void setJaasfile(String jaasfile) { - this.jaasfile = jaasfile; - } - - /** - * @return the jaasentry - */ - public String getJaasentry() { - return jaasentry; - } - - /** - * Set the jaasentry - * @param jaasentry jaasentry - */ - public void setJaasentry(String jaasentry) { - this.jaasentry = jaasentry; - } - - /** - * @return the username - */ - public String getUsername() { - return username; - } - - /** - * Set the username - * @param username username - */ - public void setUsername(String username) { - this.username = username; - } - - /** - * @return the password - */ - public String getPassword() { - return password; - } - - /** - * Set the password - * @param password password - */ - public void setPassword(String password) { - this.password = password; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // jaasfile - sb.append(xmlElement(jaasfile, "jaasfile", indent)); - // jaasentry - sb.append(xmlElement(jaasentry, "jaasentry", indent)); - // username - sb.append(xmlElement(username, "username", indent)); - // password - sb.append(xmlElement(password, "password", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfiguration.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfiguration.java deleted file mode 100644 index 5319240966..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfiguration.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.clusterd; - -import org.ow2.jonas.deployment.clusterd.xml.ClusterDaemon; -import org.ow2.jonas.deployment.common.AbsDeploymentDesc; - -/** - * This class provides a cluster daemon configuration structure as described by - * the description file. It extends the AbsDeploymentDesc which requires to - * implement toString() and provides getSAXMsg() method (displayName is not used - * by ClusterDaemonConfiguration). - * @author Benoit Pelletier - */ - -public class ClusterDaemonConfiguration extends AbsDeploymentDesc { - - /** - * The cluster daemon configuraton - */ - private ClusterDaemon clusterDaemon = null; - - /** - * Constructor - * @param clusterDaemon Cluster daemon - */ - public ClusterDaemonConfiguration(final ClusterDaemon clusterDaemon) { - - this.clusterDaemon = clusterDaemon; - - } - - /** - * Return a String representation of the ClusterDaemonConfiguration - * @return a String representation of the ClusterDaemonConfiguration - */ - @Override - public String toString() { - - return toXML(); - } - - /** - * @return Return a XML representation of the clusterDaemonConfiguration - */ - public String toXML() { - - StringBuffer sb = new StringBuffer(); - sb.append(clusterDaemon.toXML()); - return sb.toString(); - } - - /** - * @return the cluster daemon bean - */ - public ClusterDaemon getClusterDaemon() { - return clusterDaemon; - } - - /** - * Set the cluster daemon bean - * @param clusterDaemon cluster daemon - */ - public void setClusterDaemon(final ClusterDaemon clusterDaemon) { - this.clusterDaemon = clusterDaemon; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfigurationException.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfigurationException.java deleted file mode 100644 index c725db35cf..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonConfigurationException.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.clusterd; - -import org.ow2.jonas.deployment.common.DeploymentDescException; - -/** - * Cluster daemon exception when loading its configuration - * @author Benoit Pelletier - */ -public class ClusterDaemonConfigurationException extends DeploymentDescException { - - /** - * version UID - */ - private static final long serialVersionUID = 2734060670758309859L; - - /** - * Constructs a new ClusterDaemonConfigurationException with no detail - * message. - */ - public ClusterDaemonConfigurationException() { - super(); - } - - /** - * Constructs a new ClusterDaemonConfigurationException with the specified - * message. - * @param message the detail message. - */ - public ClusterDaemonConfigurationException(String message) { - super(message); - } - - /** - * Constructs a new ClusterDaemonConfigurationException with the specified - * error cause. - * @param cause the cause of the error. - */ - public ClusterDaemonConfigurationException(Throwable cause) { - super(cause); - } - - /** - * Constructs a new ClusterDaemonConfigurationException with the specified - * error cause. - * @param message the detail message. - * @param cause the cause of the error. - */ - public ClusterDaemonConfigurationException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonSchemas.java deleted file mode 100644 index 4ae84db5e2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/ClusterDaemonSchemas.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.clusterd; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for clusterd.xml file. - * @author Benoit Pelletier - */ -public class ClusterDaemonSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(ClusterDaemonSchemas.class); - - /** - * List of schemas used for clusterd.xml file. - */ - private static final String[] CLUSTER_DAEMON_SCHEMAS = new String[] { - PACKAGE + "jonas-clusterd_5_0.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public ClusterDaemonSchemas() { - super(); - addSchemas(CLUSTER_DAEMON_SCHEMAS); - } - - - /** - * @return Returns the last Schema. - */ - public static String getLastSchema() { - return getLastSchema(CLUSTER_DAEMON_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/lib/ClusterDaemonConfigurationManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/lib/ClusterDaemonConfigurationManager.java deleted file mode 100644 index 4a98a7b7cb..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/lib/ClusterDaemonConfigurationManager.java +++ /dev/null @@ -1,199 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.clusterd.lib; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; - -import org.ow2.jonas.deployment.clusterd.ClusterDaemonConfiguration; -import org.ow2.jonas.deployment.clusterd.ClusterDaemonConfigurationException; -import org.ow2.jonas.deployment.clusterd.ClusterDaemonSchemas; -import org.ow2.jonas.deployment.clusterd.rules.ClusterDaemonRuleSet; -import org.ow2.jonas.deployment.clusterd.xml.ClusterDaemon; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.ow2.jonas.deployment.common.lib.AbsDeploymentDescManager; -import org.ow2.jonas.lib.util.Log; - - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Description of the cluster daemon configuration - * @author Benoit Pelletier - */ -public class ClusterDaemonConfigurationManager extends AbsDeploymentDescManager { - - /** - * Path of the clusterd.xml configuration file - */ - public static final String CLUSTERD_FILE_NAME = "clusterd.xml"; - - /** - * Digester used to parse clusterd.xml - */ - private static JDigester clusterDaemonDigester = null; - - /** - * Rules to parse the application.xml - */ - private static ClusterDaemonRuleSet clusterDaemonRuleSet = new ClusterDaemonRuleSet(); - - /** - * logger - */ - private static Logger logger = Log.getLogger(Log.JONAS_CLUSTER_DAEMON); - - /** - * Flag for parser validation - */ - private static boolean parsingWithValidation = true; - /** - * Private Empty constructor for utility class - */ - private ClusterDaemonConfigurationManager() { - } - - /** - * Get an instance of a ClusterDaemonConfiguration by parsing the clusterd.xml configuration file. - * @param clusterDaemonFileName used when specific cluster daemon configuration file name has to be used - * @param classLoaderForCls the classloader for the classes. - * @return a ClusterDaemonConfiguration instance by parsing the clusterd.xml file - * @throws ClusterDaemonConfigurationException if the clusterd.xml file is corrupted. - */ - public static ClusterDaemonConfiguration getClusterDaemonConfiguration(String clusterDaemonFileName, ClassLoader classLoaderForCls) - throws ClusterDaemonConfigurationException { - - //Input Stream - InputStream is = null; - String fileName = null; - if (clusterDaemonFileName == null) { - // clusterd.xml in JONAS_BASE/conf - fileName = System.getProperty("jonas.base") + File.separator - + "conf" + File.separator - + CLUSTERD_FILE_NAME; - } else { - fileName = clusterDaemonFileName; - } - // load clusterd.xml - File clusterDaemonFile = new File(fileName); - if (!clusterDaemonFile.exists()) { - is = classLoaderForCls.getResourceAsStream(CLUSTERD_FILE_NAME); - if (is == null) { - throw new ClusterDaemonConfigurationException("Cannot read the " + fileName + " and " + CLUSTERD_FILE_NAME + " is not accessible in the classpath"); - } - } else { - try { - is = new FileInputStream(clusterDaemonFile); - } catch (Exception e) { - throw new ClusterDaemonConfigurationException("Cannot read the " + CLUSTERD_FILE_NAME, e); - } - } - ClusterDaemon clusterDaemon = loadClusterDaemon(new InputStreamReader(is), CLUSTERD_FILE_NAME); - try { - is.close(); - } catch (IOException e) { - // Can't close the file - logger.log(BasicLevel.WARN, "Cannot close InputStream for " + CLUSTERD_FILE_NAME); - } - - // instantiate the domain map - ClusterDaemonConfiguration clusterDaemonConfiguration = new ClusterDaemonConfiguration(clusterDaemon); - return clusterDaemonConfiguration; - } - /** - * Gets the cluster daemon config file. Default is clusterd.xml - * @param clusterDaemonFileName - * @return cluster daemon configuration file name. - */ - public static String getClusterDaemonFileName(String clusterDaemonFileName) { - String fileName = null; - if (clusterDaemonFileName == null) { - // clusterd.xml in JONAS_BASE/conf - fileName = System.getProperty("jonas.base") + File.separator - + "conf" + File.separator - + CLUSTERD_FILE_NAME; - } else { - fileName = clusterDaemonFileName; - } - return fileName; - - } - - /** - * Load the clusterd.xml file. - * @param reader the Reader of the XML file. - * @param fileName the name of the file (clusterd.xml). - * @throws ClusterDaemonConfigurationException if the file is corrupted. - * @return a ClusterDaemon object. - */ - public static ClusterDaemon loadClusterDaemon(Reader reader, String fileName) throws ClusterDaemonConfigurationException { - - ClusterDaemon clusterDaemon = new ClusterDaemon(); - // Create if domainDigester is null - if (clusterDaemonDigester == null) { - try { - // Create and initialize the digester - - clusterDaemonDigester = new JDigester(clusterDaemonRuleSet, getParsingWithValidation(), true, null, - new ClusterDaemonSchemas()); - } catch (DeploymentDescException e) { - throw new ClusterDaemonConfigurationException(e); - } - } - - try { - clusterDaemonDigester.parse(reader, fileName, clusterDaemon); - } catch (DeploymentDescException e) { - throw new ClusterDaemonConfigurationException(e); - } finally { - clusterDaemonDigester.push(null); - } - - return clusterDaemon; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @return if true, all external entities will be read. - */ - public static boolean getParsingWithValidation() { - return parsingWithValidation; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @param validation if true, all external entities will be read. - */ - public static void setParsingWithValidation(boolean validation) { - ClusterDaemonConfigurationManager.parsingWithValidation = validation; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ClusterDaemonRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ClusterDaemonRuleSet.java deleted file mode 100644 index 3f51838990..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ClusterDaemonRuleSet.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.clusterd.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the cluster-daemon element. - * - * @author Benoit Pelletier - * @author S. Ali Tokmen - */ - -public class ClusterDaemonRuleSet extends JRuleSetBase { - - /** - * Constructs an object with the prefix "cluster-daemon". - */ - public ClusterDaemonRuleSet() { - super("cluster-daemon/"); - } - - /** Add a set of rules to the digester object. - * @param digester Digester instance. - */ - public void addRuleInstances(final Digester digester) { - digester.addCallMethod(prefix + "name", "setName", 0); - digester.addCallMethod(prefix + "domain-name", "setDomainName", 0); - digester.addCallMethod(prefix + "jonas-interaction-mode", "setJonasInteractionMode", 0); - digester.addCallMethod(prefix + "jmx.secured", "setJmxSecured", 0); - digester.addCallMethod(prefix + "jmx.authentication.method", "setJmxAuthenticationMethod", 0); - digester.addCallMethod(prefix + "jmx.authentication.parameter", "setJmxAuthenticationParameter", 0); - digester.addCallMethod(prefix + "jmx.authorization.method", "setJmxAuthorizationMethod", 0); - digester.addCallMethod(prefix + "jmx.authorization.parameter", "setJmxAuthorizationParameter", 0); - digester.addRuleSet(new DiscoveryRuleSet(prefix)); - digester.addRuleSet(new ServerRuleSet(prefix)); - - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/DiscoveryRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/DiscoveryRuleSet.java deleted file mode 100644 index de804961f7..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/DiscoveryRuleSet.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.clusterd.rules; - -import org.apache.commons.digester.Digester; -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -public class DiscoveryRuleSet extends JRuleSetBase { - /** - * Construct an object with the prefix. - * @param prefix prefix for the rule set - */ - public DiscoveryRuleSet(String prefix) { - super(prefix); - } - - @Override - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "discovery", - "org.ow2.jonas.deployment.clusterd.xml.Discovery", "discovery"); - digester.addSetNext(prefix + "discovery", - "setDiscovery", - "org.ow2.jonas.deployment.clusterd.xml.Discovery"); - digester.addCallMethod(prefix + "discovery/group-name", "setDiscoveryGroupName", 0); - digester.addCallMethod(prefix + "discovery/stack-file", "setDiscoveryStackFile", 0); - digester.addCallMethod(prefix + "discovery/start-up", "setStartDiscovery", 0); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ServerRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ServerRuleSet.java deleted file mode 100644 index 056ced50ec..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/rules/ServerRuleSet.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.clusterd.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the server element. - * @author Benoit Pelletier. - */ -public class ServerRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix. - * @param prefix prefix for the rule set. - */ - public ServerRuleSet(final String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object. - * @param digester Digester instance. - */ - public void addRuleInstances(final Digester digester) { - digester.addObjectCreate(prefix + "server", - "org.ow2.jonas.deployment.clusterd.xml.Server"); - digester.addSetNext(prefix + "server", - "addServer", - "org.ow2.jonas.deployment.clusterd.xml.Server"); - digester.addCallMethod(prefix + "server/name", "setName", 0); - digester.addCallMethod(prefix + "server/description", "setDescription", 0); - digester.addCallMethod(prefix + "server/java-home", "setJavaHome", 0); - digester.addCallMethod(prefix + "server/jonas-root", "setJonasRoot", 0); - digester.addCallMethod(prefix + "server/jonas-base", "setJonasBase", 0); - digester.addCallMethod(prefix + "server/xprm", "setXprm", 0); - digester.addCallMethod(prefix + "server/auto-boot", "setAutoBoot", 0); - digester.addCallMethod(prefix + "server/jonas-cmd", "setJonasCmd", 0); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/ClusterDaemon.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/ClusterDaemon.java deleted file mode 100644 index 48e51fbdbe..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/ClusterDaemon.java +++ /dev/null @@ -1,356 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.clusterd.xml; - -import org.ow2.jonas.deployment.clusterd.ClusterDaemonSchemas; -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.xml.AbsDescriptionElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; - -/** - * This class defines the configuration of the cluster daemon - * - * @author Benoit Pelletier - * @author eyindanga (Added discovery configuration) - * @author S. Ali Tokmen (Added JMX security) - */ -public class ClusterDaemon extends AbsDescriptionElement implements TopLevelElement { - - /** - * Version UID. - */ - private static final long serialVersionUID = 3212755715938568244L; - - /** - * name. - */ - private String name = null; - - /** - * Domain name - */ - private String domainName = null; - - /** - * JOnAS interaction mode : loosely/tighly coupled. - */ - private String jonasInteractionMode = null; - - /** - * servers - */ - private JLinkedList serverList = null; - - /** - * Discovery configuration : stack file and group name. - */ - private Discovery discovery = null; - - /** - * Whether JMX is secured. - */ - private boolean jmxSecured = false; - - /** - * JMX authentication method. - */ - private String jmxAuthenticationMethod = null; - - /** - * JMX authentication method's parameter. - */ - private String jmxAuthenticationParameter = null; - - /** - * JMX authorization method. - */ - private String jmxAuthorizationMethod = null; - - /** - * JMX authorization method's parameter. - */ - private String jmxAuthorizationParameter = null; - - /** - * XML export header. - */ - private static final String header = CommonsSchemas.getHeaderForElement("cluster-daemon", - ClusterDaemonSchemas.getLastSchema()); - - /** - * Constructor - */ - public ClusterDaemon() { - super(); - serverList = new JLinkedList("server"); - } - - /** - * Add a new server element to this object - * @param server the Server object - */ - @SuppressWarnings("unchecked") - public void addServer(final Server server) { - serverList.add(server); - } - - /** - * @return Returns the serverList. - */ - public JLinkedList getServerList() { - return serverList; - } - - /** - * @param serverList The serverList to set. - */ - public void setServerList(final JLinkedList serverList) { - this.serverList = serverList; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prefixing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append(header); - indent += 2; - - // name - if (getName() != null) { - sb.append(xmlElement(getName(), "name", indent)); - } - - // domain-name - if (getDomainName() != null) { - sb.append(xmlElement(getDomainName(), "domain-name", indent)); - } - - // jonas-interaction-mode - if (getJonasInteractionMode() != null) { - sb.append(xmlElement(getJonasInteractionMode(), "jonas-interaction-mode", indent)); - } - - // JMX security - sb.append(xmlElement(getJmxSecured(), "jmx.secured", indent)); - sb.append(xmlElement(getJmxAuthenticationMethod(), "jmx.authentication.method", indent)); - sb.append(xmlElement(getJmxAuthenticationParameter(), "jmx.authentication.parameter", indent)); - sb.append(xmlElement(getJmxAuthorizationMethod(), "jmx.authorization.method", indent)); - sb.append(xmlElement(getJmxAuthorizationParameter(), "jmx.authorization.parameter", indent)); - - //discovery config - if (discovery != null) { - sb.append(discovery.toXML(indent)); - } - // servers - sb.append(getServerList().toXML(indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - /** - * - * @return the domain name - */ - public String getDomainName() { - return domainName; - } - - /** - * Sets the domain name - * @param domainName domain name - */ - public void setDomainName(final String domainName) { - this.domainName = domainName; - } - - /** - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * set the name - * @param name name - */ - public void setName(final String name) { - this.name = name; - } - - /** - * - * @return the interaction mode with JOnAS - */ - public String getJonasInteractionMode() { - return jonasInteractionMode; - } - - - /** - * set the interaction mode with JOnAS. - * @param jonasInteraction interaction mode - */ - public void setJonasInteractionMode(final String jonasInteractionMode) { - this.jonasInteractionMode = jonasInteractionMode; - } - - /** - * @return the discoveryStackFile - */ - public String getDiscoveryStackFile() { - return discovery.getDiscoveryStackFile(); - } - - /** - * @param discoveryStackFile the discoveryStackFile to set - */ - public void setDiscoveryStackFile(final String discoveryStackFile) { - this.discovery.setDiscoveryStackFile(discoveryStackFile); - } - - /** - * @return the discoveryGroupName - */ - public String getDiscoveryGroupName() { - return this.discovery.getDiscoveryGroupName(); - } - - /** - * @param discoveryGroupName the discoveryGroupName to set - */ - public void setDiscoveryGroupName(final String discoveryGroupName) { - this.discovery.setDiscoveryGroupName(discoveryGroupName); - } - - /** - * @return the discovery - */ - public Discovery getDiscovery() { - return discovery; - } - - /** - * @param discovery the discovery to set - */ - public void setDiscovery(Discovery discovery) { - this.discovery = discovery; - } - - /** - * @return Whether JMX is secured. - */ - public boolean isJmxSecured() { - return jmxSecured; - } - - /** - * @return Whether JMX is secured. - */ - public String getJmxSecured() { - return Boolean.toString(jmxSecured); - } - - /** - * @param jmxSecured Whether JMX is secured. - */ - public void setJmxSecured(boolean jmxSecured) { - this.jmxSecured = jmxSecured; - } - - /** - * @param jmxSecured Whether JMX is secured. - */ - public void setJmxSecured(String jmxSecured) { - this.jmxSecured = "true".equalsIgnoreCase(jmxSecured); - } - - /** - * @return JMX authentication method. - */ - public String getJmxAuthenticationMethod() { - return jmxAuthenticationMethod; - } - - /** - * @param jmxAuthenticationMethod JMX authentication method. - */ - public void setJmxAuthenticationMethod(String jmxAuthenticationMethod) { - this.jmxAuthenticationMethod = jmxAuthenticationMethod; - } - - /** - * @return JMX authentication method's parameter. - */ - public String getJmxAuthenticationParameter() { - return jmxAuthenticationParameter; - } - - /** - * @param jmxAuthenticationParameter JMX authentication method's parameter. - */ - public void setJmxAuthenticationParameter(String jmxAuthenticationParameter) { - this.jmxAuthenticationParameter = jmxAuthenticationParameter; - } - - /** - * @return JMX authorization method. - */ - public String getJmxAuthorizationMethod() { - return jmxAuthorizationMethod; - } - - /** - * @param jmxAuthorizationMethod JMX authorization method. - */ - public void setJmxAuthorizationMethod(String jmxAuthorizationMethod) { - this.jmxAuthorizationMethod = jmxAuthorizationMethod; - } - - /** - * @return JMX authentication method's parameter. - */ - public String getJmxAuthorizationParameter() { - return jmxAuthorizationParameter; - } - - /** - * @param jmxAuthorizationParameter JMX authentication method's parameter. - */ - public void setJmxAuthorizationParameter(String jmxAuthorizationParameter) { - this.jmxAuthorizationParameter = jmxAuthorizationParameter; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Discovery.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Discovery.java deleted file mode 100644 index 6051119283..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Discovery.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.clusterd.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; - -public class Discovery extends AbsElement { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * File name for JGroups discovery stack - */ - - private String discoveryStackFile = null; - - /** - * JGroups discovery will be connected to this group. - */ - private String discoveryGroupName = null; - - /** - * Set to true to start JGroups discovery. - */ - private boolean startDiscovery = false; - - /** - * @return the discoveryStackFile - */ - public String getDiscoveryStackFile() { - return discoveryStackFile; - } - - /** - * @param discoveryStackFile the discoveryStackFile to set - */ - public void setDiscoveryStackFile(final String discoveryStackFile) { - this.discoveryStackFile = discoveryStackFile; - } - - /** - * @return the discoveryGroupName - */ - public String getDiscoveryGroupName() { - return discoveryGroupName; - } - - /** - * @param discoveryGroupName the discoveryGroupName to set - */ - public void setDiscoveryGroupName(final String discoveryGroupName) { - this.discoveryGroupName = discoveryGroupName; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - @Override - public String toXML(final int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - sb.append(xmlElement(this.getDiscoveryGroupName(), "group-name", indent + 2)); - sb.append(xmlElement(this.getDiscoveryStackFile(), "stack-file", indent + 2)); - sb.append(xmlElement(String.valueOf(this.getStartDiscovery()), "start-up", indent + 2)); - sb.append(indent(indent)); - sb.append("\n"); - return sb.toString(); - } - - /** - * @return the startDiscovery - */ - public boolean getStartDiscovery() { - return startDiscovery; - } - - /** - * @param startDiscovery the startDiscovery to set - */ - public void setStartDiscovery(final String startDiscovery) { - this.startDiscovery = new Boolean(startDiscovery); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Server.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Server.java deleted file mode 100644 index d1d5feca78..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/clusterd/xml/Server.java +++ /dev/null @@ -1,264 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.clusterd.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; - -/** - * - * Server element - * @author pelletib - */ -public class Server extends AbsElement { - - /** - * Version UID - */ - private static final long serialVersionUID = -7044912860997997046L; - - /** - * JOnAS instance name - */ - private String name = null; - - /** - * description - */ - private String description = null; - - /** - * JAVA_HOME directory - */ - private String javaHome = null; - - /** - * JONAS_ROOT directory - */ - private String jonasRoot = null; - - /** - * JONAS_BASE directory - */ - private String jonasBase = null; - - /** - * Extra parameters for starting the JVM - */ - private String xprm = null; - - /** - * Automatic boot - */ - private String autoBoot = null; - - /** - * User command for controlling JOnAS (optional) - * If not set, use the JOnAS one - */ - private String jonasCmd = null; - - - /** - * Constructor - */ - public Server() { - super(); - } - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @param name The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the JAVA_HOME dir. - */ - public String getJavaHome() { - return javaHome; - } - - /** - * @param javaHome The JAVA_HOME to set. - */ - public void setJavaHome(String javaHome) { - this.javaHome = javaHome; - } - - /** - * @return Returns the JONAS_ROOT. - */ - public String getJonasRoot() { - return jonasRoot; - } - - /** - * @param jonasRoot The JONAS_ROOT to set. - */ - public void setJonasRoot(String jonasRoot) { - this.jonasRoot = jonasRoot; - } - - /** - * @return Returns the JONAS_BASE. - */ - public String getJonasBase() { - return jonasBase; - } - - /** - * @param jonasBase The JONAS_BASE to set. - */ - public void setJonasBase(String jonasBase) { - this.jonasBase = jonasBase; - } - - /** - * @return Returns the description. - */ - public String getDescription() { - return description; - } - - /** - * @param description The description to set. - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - if (name != null) { - sb.append(xmlElement(name, "name", indent)); - } - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - // javaHome - if (getJavaHome() != null) { - sb.append(xmlElement(getJavaHome(), "java-home", indent)); - } - // jonasRoot - if (getJonasRoot() != null) { - sb.append(xmlElement(getJonasRoot(), "jonas-root", indent)); - } - // jonasBase - if (getJonasBase() != null) { - sb.append(xmlElement(getJonasBase(), "jonas-base", indent)); - } - - // xprm - if (getXprm() != null) { - sb.append(xmlElement(getXprm(), "xprm", indent)); - } - - // autoBoot - sb.append(xmlElement(new Boolean(isAutoBoot()).toString(), "auto-boot", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - /** - * Set the auto boot for the server - * @param autoBoot true if automatic boot is set - */ - public void setAutoBoot(String autoBoot) { - this.autoBoot = autoBoot; - } - - /** - * @return true/false - */ - public String getAutoBoot() { - return this.autoBoot; - } - - /** - * - * @return true if the auto boot is set - */ - public boolean isAutoBoot() { - return new Boolean(getAutoBoot()).booleanValue(); - } - - - /** - * - * @return the extra parameters - */ - public String getXprm() { - return xprm; - } - - /** - * Set the extra parameters - * @param xprm extra parameters - */ - public void setXprm(String xprm) { - this.xprm = xprm; - } - - /** - * - * @return JOnAS command - */ - public String getJonasCmd() { - return jonasCmd; - } - - /** - * Set the JOnAS command - * @param jonasCmd user command - */ - public void setJonasCmd(String jonasCmd) { - this.jonasCmd = jonasCmd; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/AbsDeploymentDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/AbsDeploymentDesc.java deleted file mode 100644 index 6e2dba98e8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/AbsDeploymentDesc.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Ludovic BERT & Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.common; - -// SAX imports -import org.ow2.jonas.deployment.api.IDeploymentDesc; -import org.xml.sax.SAXParseException; - - -/** - * This class provides an abstract implementation of the - * DeploymentDescriptor interface of JOnAS - * @author Ludovic Bert - * @author Florent Benoit - */ - -public abstract class AbsDeploymentDesc implements IDeploymentDesc { - - - /** - * The displayName field - */ - protected String displayName = null; - - - /** - * Get the display name of the deployment descriptor. - * @return the display name of the deployment descriptor. - */ - public String getDisplayName() { - return displayName; - } - - /** - * Return a String representation of the DeploymentDesc. - * @return a String representation of the DeploymentDesc. - */ - public abstract String toString(); - - /** - * build a message from SAX Exception in a consistent style, consistent - * with emacs compile mode (same as grep, cc, javac, etc). - * @param fileName name of the file - * @param exception the SAX exception - * @param msg the string message - * @return a message which is in a consistent style - */ - protected static String getSAXMsg(String fileName, - SAXParseException exception, String msg) { - String ret = fileName + ":" + exception.getLineNumber() + ":" - + exception.getColumnNumber() + ": "; - ret += msg; - return ret; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsDTDs.java deleted file mode 100644 index d67ee6071e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsDTDs.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import org.ow2.jonas.deployment.api.DTDs; - - -/** - * This class defines the declarations of defaults DTDs used for J2EE 1.4 and less - * @author Florent Benoit - */ -public abstract class CommonsDTDs implements DTDs { - - /** - * Commons DTDs location. - */ - private static final String PACKAGE = "org/ow2/jonas/deployment/"; - - /** - * List of default dtds. - */ - private static final String[] DEFAULT_DTDS = new String[] { - PACKAGE + "XMLSchema.dtd", - PACKAGE + "datatypes.dtd" - }; - - /** - * List of default publicId. - */ - private static final String[] DEFAULT_DTDS_PUBLIC_ID = new String[] { - "-//W3C//DTD XMLSCHEMA 200102//EN", - "datatypes" - }; - - - /** - * Map where mapping publicId/dtds are stored. - */ - private static HashMap dtdsMapping = null; - - /** - * Build a new object for DTDs handling. - */ - public CommonsDTDs() { - dtdsMapping = new HashMap(); - addMapping(DEFAULT_DTDS, DEFAULT_DTDS_PUBLIC_ID); - } - - /** - * Gets the mapping between publicIds and DTDs. - * @return the mapping between publicIds and DTDs. - */ - public Map getMapping() { - return dtdsMapping; - } - - - - /** - * Add to the list of DTDS the given dtds/publicId. - * @param dtds array of dtds - * @param publicIds array of publicIds - */ - protected void addMapping(String[] dtds, String[] publicIds) { - if (dtds.length != publicIds.length) { - throw new IllegalStateException("SEVERE ERROR !!! Number of dtds is different of the number of PublicId !!! check the source code"); - } - - URL url = null; - for (int i = 0; i < dtds.length; i++) { - url = CommonsDTDs.class.getResource("/" + dtds[i]); - if (url == null) { - throw new IllegalStateException("'" + dtds[i] + "' was not found in the current classloader !"); - } - dtdsMapping.put(publicIds[i], url.toString()); - } - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsSchemas.java deleted file mode 100644 index 79099e0621..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/CommonsSchemas.java +++ /dev/null @@ -1,157 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - - -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import org.ow2.jonas.deployment.api.Schemas; - - -/** - * This class defines the declarations of the default Java EE 5 Schemas. - * @author Florent Benoit - */ -public abstract class CommonsSchemas implements Schemas { - - /** - * Commons XML Schemas location. - */ - private static final String PACKAGE = "org/ow2/jonas/deployment/"; - - /** - * List of schemas used by components. - */ - private static final String[] DEFAULT_SCHEMAS = new String[] { - PACKAGE + "javaee_6.xsd", - PACKAGE + "javaee_web_services_client_1_3.xsd", - PACKAGE + "javaee_5.xsd", - PACKAGE + "javaee_web_services_client_1_2.xsd", - PACKAGE + "j2ee_1_4.xsd", - PACKAGE + "j2ee_web_services_client_1_1.xsd", - PACKAGE + "xml.xsd", - PACKAGE + "jonas_j2ee_4_0.xsd", - PACKAGE + "jonas_j2ee_4_1.xsd", - PACKAGE + "jonas_j2ee_4_1_2.xsd", - PACKAGE + "jonas_j2ee_4_1_4.xsd", - PACKAGE + "jonas_j2ee_4_2.xsd" - }; - - - /** - * List where the local schemas URLs are stored. - */ - private static List localSchemas = null; - - - /** - * Build a new object for Schemas handling. - */ - public CommonsSchemas() { - localSchemas = new ArrayList(); - addSchemas(DEFAULT_SCHEMAS); - } - - /** - * Gets the URLs of the local schemas. - * @return the URLs of the local schemas - */ - public List getlocalSchemas() { - return localSchemas; - } - - - /** - * Add to our repository the given local schemas. - * @param schemas schemas to add to the repository - * @throws IllegalStateException if the dtds is not found as resource - */ - protected static void addSchemas(final String[] schemas) throws IllegalStateException { - URL url = null; - for (int i = 0; i < schemas.length; i++) { - url = CommonsSchemas.class.getResource("/" + schemas[i]); - if (url == null) { - throw new IllegalStateException("'" + schemas[i] + "' was not found in the current classloader !"); - } - localSchemas.add(url.toString()); - } - } - - /** - * @param element name of the root element (jonas-ejb-jar, ...) - * @param schema XML Schema - * @return a header for the right element with last element - */ - public static String getHeaderForElement(final String element, final String schema) { - StringBuffer header = new StringBuffer(); - header.append("\n"); - header.append("<"); - header.append(element); - header.append(" xmlns=\"http://www.objectweb.org/jonas/ns\"\n"); - header.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"); - header.append(" xsi:schemaLocation=\"http://www.objectweb.org/jonas/ns\n"); - header.append(" http://jonas.ow2.org/ns/"); - // add the schema - header.append(schema); - header.append("\" >\n"); - - return header.toString(); - } - - /** - * @param element name of the root element (jonas-ejb-jar, ...) - * @param schema XML Schema - * @return a header for the right element with last element - */ - public static String getHeaderForStandardElement(final String element, final String schema) { - StringBuffer header = new StringBuffer(); - header.append("\n"); - header.append("<"); - header.append(element); - header.append(" xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"); - header.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"); - header.append(" version=\"5\"\n"); - header.append(" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"); - header.append(" http://java.sun.com/xml/ns/javaee/"); - // add the schema - header.append(schema); - header.append("\" >\n"); - - return header.toString(); - } - - /** - * @param schemas array of schema locations - * @param packageName package name to remove from schema location. - * @return Returns the last Schema for a given set of schemas. - */ - protected static String getLastSchema(final String[] schemas, final String packageName) { - String schema = schemas[schemas.length - 1]; - return schema.substring(packageName.length()); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DeploymentDescException.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DeploymentDescException.java deleted file mode 100644 index 05a66a7013..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DeploymentDescException.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): Lutris Technologies Inc http://www.lutris.com - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- -*/ - - -package org.ow2.jonas.deployment.common; - -import java.io.PrintStream; -import java.io.PrintWriter; - -/** - * The DeploymentDesc exception uses the pattern defined by the Enhydra - * com.lutris.util.ChainedException - * The source has been temporary duplicated to prevent Jonas using - * from external dependencies. - * @author Christophe Ney - */ -public class DeploymentDescException extends Exception { - - /** - * Cause of the exception - */ - private Throwable cause; - - /** - * Construct an exception without anything - */ - public DeploymentDescException() { - super(); - cause = null; - } - - - /** - * Construct an exception without a specified cause. - * - * @param msg The message associated with the exception. - */ - public DeploymentDescException(String msg) { - super(msg); - cause = null; - } - - /** - * Construct an exception with an associated causing exception. - * - * @param msg The message associated with the exception. - * @param cause The error or exception that cause this - * exception. - */ - public DeploymentDescException(String msg, - Throwable cause) { - super(msg); - this.cause = cause; - } - - /** - * Construct an exception from a causing exception. - * - * @param cause The error or exception that cause this - * exception. The message will be take be this object's - * messasge. - */ - public DeploymentDescException(Throwable cause) { - super(cause.getMessage()); - this.cause = cause; - } - - /** - * @return the message associated with this exception. If causes - * are included, they will be appended to the message. - */ - public String getMessage() { - String msg = super.getMessage(); - if (cause == null) { - return msg; - } else { - return msg + ": " + cause.getMessage(); - } - } - - /** - * Gets the causing exception associated with this exception. - * @return The causing exception or null if no cause is specified. - */ - public Throwable getCause() { - return cause; - } - - /** - * Prints this DeploymentDescException and its backtrace, and the causes - * and their stack traces to the standard error stream. - */ - public void printStackTrace() { - super.printStackTrace(); - if (cause != null) { - System.err.println(); - System.err.println("*** Caused by:"); - cause.printStackTrace(); - } - } - - /** - * Prints this DeploymentDescException and its backtrace, and the causes - * and their stack traces to the e specified print stream. - * @param s print the trace on a specific print stream - */ - public void printStackTrace(PrintStream s) { - super.printStackTrace(s); - if (cause != null) { - s.println(); - s.println ("*** Caused by:"); - cause.printStackTrace(s); - } - } - - /** - * Prints this DeploymentDescException and its backtrace, and the causes - * and their stack traces to the e specified print writer. - * @param s print the trace on a specific print stream - */ - public void printStackTrace(PrintWriter s) { - super.printStackTrace(s); - if (cause != null) { - s.println(); - s.println("*** Caused by:"); - cause.printStackTrace(s); - } - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DescriptionGroupDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DescriptionGroupDesc.java deleted file mode 100644 index caede2cab8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/DescriptionGroupDesc.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.common; - -// SAX imports -import org.ow2.jonas.deployment.api.IDescriptionGroupDesc; -import org.xml.sax.SAXParseException; - - -/** - * This class is used to keep the usage of the contained description related - * elements consistent acoross J2EE deployment descriptors. - * Elements are "description", "display-name", "icon" - * used by application, connector, ejb-jar, webservices. - * - * @author Philippe Coq - * - */ - -public abstract class DescriptionGroupDesc implements IDescriptionGroupDesc { - - /** - * The description field - */ - protected String description = null; - - /** - * The displayName field - */ - protected String displayName = null; - - /** - * The small-icon field - */ - protected String smallIcon = null; - - /** - * The large-icon field - */ - protected String largeIcon = null; - - /** - * Get the display name of the deployment descriptor. - * @return the display name of the deployment descriptor. - */ - public String getDisplayName() { - return displayName; - } - - /** - * Get the description of the deployment descriptor. - * @return the description of the deployment descriptor. - */ - public String getDescription() { - return description; - } - - /** - * Get the small-icon of the deployment descriptor. - * @return the small-icon of the deployment descriptor. - */ - public String getSmallIcon() { - return smallIcon; - } - - /** - * Get the large-icon of the deployment descriptor. - * @return the large-icon of the deployment descriptor. - */ - public String getLargeIcon() { - return largeIcon; - } - - /** - * Return a String representation of the DeploymentDesc. - * @return a String representation of the DeploymentDesc. - */ - public abstract String toString(); - - /** - * build a message from SAX Exception in a consistent style, consistent - * with emacs compile mode (same as grep, cc, javac, etc). - * @param fileName name of the file - * @param exception the SAX exception - * @param msg the string message - * @return a message which is in a consistent style - */ - protected static String getSAXMsg(String fileName, - SAXParseException exception, String msg) { - String ret = fileName + ":" + exception.getLineNumber() + ":" - + exception.getColumnNumber() + ": "; - ret += msg; - return ret; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbLocalRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbLocalRefDesc.java deleted file mode 100644 index 2582347932..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbLocalRefDesc.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Christophe Ney - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IEJBLocalRefDesc; -import org.ow2.jonas.deployment.common.xml.EjbLocalRef; - - -/** - * This class represents the description of an EjblocalRef object - * @author Christophe Ney - * @author Florent Benoit - */ -public class EjbLocalRefDesc implements IEJBLocalRefDesc { - - /** - * The ejb local ref name. - */ - private String ejbRefName = null; - - /** - * The type of the ejb ref - */ - private String ejbRefType = null; - - /** - * The local home of the ejb local ref. - */ - private String localHome = null; - - /** - * The local interface name of the ejb local ref. - */ - private String local = null; - - /** - * The ejb link of the ejb local ref. - */ - private String ejbLink = null; - - /** - * The jndi name of the ejb local ref. - */ - private String jndiName = null; - - - /** - * Construct a descriptor for an ejb-local-ref tag. - * @param ejbLocalRef the ejb local ref resulting of the xml parsing. - * @throws DeploymentDescException when missing information for - * creating the EjbLocalRefDesc. - */ - public EjbLocalRefDesc(EjbLocalRef ejbLocalRef) throws DeploymentDescException { - ejbRefName = ejbLocalRef.getEjbRefName(); - ejbRefType = ejbLocalRef.getEjbRefType(); - localHome = ejbLocalRef.getLocalHome(); - local = ejbLocalRef.getLocal(); - if (ejbLocalRef.getEjbLink() == null) { - String err = "ejb-link missing for ejb-local-ref '" + ejbRefName + "'."; - throw new DeploymentDescException(err); - } - ejbLink = ejbLocalRef.getEjbLink(); - } - - /** - * Get the name of the ejb-ref - * @return String representation of the ejb-ref-name. - */ - public String getEjbRefName() { - return ejbRefName; - } - - /** - * Get the ejb-ref-type. - * @return String representation of the ejb-ref-type. - */ - public String getEjbRefType() { - return ejbRefType; - } - - /** - * Get the LocalHome class of the target bean - * @return String representation of the class. - */ - public String getLocalHome() { - return localHome; - } - - /** - * Get the Local class of the target bean - * @return String representation of the class. - */ - public String getLocal() { - return local; - } - - /** - * Get the ejb-link - * @return String representation of the ejb-link - */ - public String getEjbLink() { - return ejbLink; - } - - /** - * Get the jndi name of the ejb-local-ref. - * @return the string representation of the JNDI name - */ - public String getJndiLocalName() { - return jndiName; - } - - /** - * Set the jndi name of the ejb-local-ref. - * @param jndiName the string representation of the jndi name. - */ - public void setJndiLocalName(String jndiName) { - this.jndiName = jndiName; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetEjbRefName()=" + getEjbRefName()); - ret.append("\ngetEjbRefType()=" + getEjbRefType()); - ret.append("\ngetLocalHome()=" + getLocalHome()); - ret.append("\ngetLocal()=" + getLocal()); - ret.append("\ngetEjbLink()=" + getEjbLink()); - ret.append("\ngetJndiLocalName()=" + getJndiLocalName()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbRefDesc.java deleted file mode 100644 index 49d1433689..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EjbRefDesc.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.common.xml.EjbRef; -import org.ow2.jonas.deployment.common.xml.JonasEjbRef; - - -/** - * This class represents the description of an EjbRef object - * @author Christophe Ney - * @author Florent Benoit - */ -public class EjbRefDesc implements IEJBRefDesc { - - /** - * The ejb ref name. - */ - private String ejbRefName = null; - - /** - * The type of the ejb ref - */ - private String ejbRefType = null; - - /** - * Fully qualified name of the enterprise bean's home interface - */ - private String home = null; - - /** - * Fully qualified name of the enterprise bean's remote interface - */ - private String remote = null; - - /** - * The ejb link of the ejb local ref. - */ - private String ejbLink = null; - - /** - * The jndi name of the ejb local ref. - */ - private String jndiName = null; - - - /** - * Construct a descriptor for an ejb-ref tag. - * @param ejbRef the ejb ref resulting of the xml parsing. - * @param jonasEjbRef the jonas ejb ref resulting of the xml parsing. - */ - public EjbRefDesc(EjbRef ejbRef, JonasEjbRef jonasEjbRef) { - ejbRefName = ejbRef.getEjbRefName(); - ejbRefType = ejbRef.getEjbRefType(); - ejbLink = null; - if (ejbRef.getEjbLink() != null) { - ejbLink = ejbRef.getEjbLink(); - } - jndiName = null; - if (jonasEjbRef != null) { - jndiName = jonasEjbRef.getJndiName(); - } - this.home = ejbRef.getHome(); - this.remote = ejbRef.getRemote(); - - } - - public String getEjbRefName() { - return ejbRefName; - } - - public String getEjbRefType() { - return ejbRefType; - } - - public String getEjbLink() { - return ejbLink; - } - - - public String getJndiName() { - return jndiName; - } - - /** - * Set the jndi name of the ejb-ref. - * @param jndiName representation of the JNDI name - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetEjbRefName()=" + getEjbRefName()); - ret.append("\ngetEjbRefType()=" + getEjbRefType()); - ret.append("\ngetEjbLink()=" + getEjbLink()); - ret.append("\ngetJndiName()=" + getJndiName()); - return ret.toString(); - } - - public String getHome() { - return home; - } - - public String getRemote() { - return remote; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EnvEntryDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EnvEntryDesc.java deleted file mode 100644 index 4b31dab3a8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/EnvEntryDesc.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Christophe Ney - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IEnvEntryDesc; -import org.ow2.jonas.deployment.common.xml.EnvEntry; - - -/** - * This class represents the description of an EnvEntry object - * @author Christophe Ney - * @author Florent Benoit - */ -public class EnvEntryDesc implements IEnvEntryDesc { - - /** - * The env entry name. - */ - private String name; - - /** - * The env entry type. - */ - private Class type; - - /** - * The env entry value. - */ - private Object value; - - /** - * Construct a descriptor for an env-entry tag. - * @param env the env-entry resulting of the xml parsing. - * @throws DeploymentDescException when missing information for - * creating the EnvEntryDesc. - */ - public EnvEntryDesc(EnvEntry env) throws DeploymentDescException { - name = env.getEnvEntryName(); - String t = env.getEnvEntryType(); - String v = null; - if (env.getEnvEntryValue() != null) { - v = env.getEnvEntryValue(); - } - try { - if (t.equals(Boolean.class.getName())) { - type = Boolean.class; - if (v != null) { - if (v.equalsIgnoreCase("true")) { - value = Boolean.TRUE; - } else if (v.equalsIgnoreCase("false")) { - value = Boolean.FALSE; - } else { - throw new DeploymentDescException(v + " is not a valid value for env-entry " + name); - } - } else { - value = Boolean.FALSE; - } - - } else if (t.equals(String.class.getName())) { - type = String.class; - if (v != null) { - value = v; - } else { - value = new String(); - } - } else if (t.equals(Integer.class.getName())) { - type = Integer.class; - if (v != null) { - value = new Integer(v); - } else { - value = new Integer(0); - } - } else if (t.equals(Character.class.getName())) { - type = Character.class; - if (v != null) { - if (v.length() != 1) { - throw new DeploymentDescException("The value '" + v + "' is not a valid value for env-entry of type java.lang.Character."); - } - value = new Character(v.charAt(0)); - } else { - value = new Character("".charAt(0)); - } - } else if (t.equals(Double.class.getName())) { - type = Double.class; - if (v != null) { - value = new Double(v); - } else { - value = new Double(0); - } - } else if (t.equals(Byte.class.getName())) { - type = Byte.class; - if (v != null) { - value = new Byte(v); - } else { - value = new Byte(""); - } - } else if (t.equals(Short.class.getName())) { - type = Short.class; - if (v != null) { - value = new Short(v); - } else { - value = new Short(""); - } - } else if (t.equals(Long.class.getName())) { - type = Long.class; - if (v != null) { - value = new Long(v); - } else { - value = new Long(0); - } - } else if (t.equals(Float.class.getName())) { - type = Float.class; - if (v != null) { - value = new Float(v); - } else { - value = new Float(0); - } - } else { - throw new DeploymentDescException(t + " is not a valid type for env-entry " + name); - } - } catch (NumberFormatException e) { - throw new DeploymentDescException(v + " is not a valid value for env-entry " + name, e); - } - - } - - public String getName() { - return name; - } - - public Class getType() { - return type; - } - - public boolean hasValue() { - return value != null; - } - - public Object getValue() { - // An env-entry value is optional, so no error should be thrown - /* - * if (value == null) { - * throw new Error("Value not set for env-entry " + name); - * } - */ - return value; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName()=" + getName()); - ret.append("\ngetType()=" + getType()); - if (hasValue()) { - ret.append("\ngetValue()=" + getValue().toString()); - } - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/HandlerDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/HandlerDesc.java deleted file mode 100644 index 6e539e96c4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/HandlerDesc.java +++ /dev/null @@ -1,271 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial Developer : Delplanque Xavier & Sauthier Guillaume - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- -*/ - -package org.ow2.jonas.deployment.common; - -import java.util.List; -import java.util.Properties; -import java.util.Vector; - -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.xml.Handler; -import org.ow2.jonas.deployment.common.xml.InitParam; - - - -/** - * The Handler class describe both - * - a Handler reference to use on the client side of a Web Service, - * - and a Handler description. - * The difference is that the port-names attribute is present for a handler reference, - * and the port-names attribute does not exist for a handler description. - * - * @author Guillaume Sauthier - * @author Xavier Delplanque - * @author Helene Joanin - */ -public class HandlerDesc { - - /** The name of the handler (must be unique) */ - private String name; - - /** The classname of the Handler */ - private String className; - - /** The handler class */ - private Class clazz; - - /** Params needed to initialize the handler */ - private Properties params = new Properties(); - - /** The list of SOAP Headers the handler will access */ - private List headers = new Vector(); - - /** The list of SOAP actor the handler will play as a role */ - private List roles = new Vector(); - - /** List of port names the handler is associated with */ - private List portNames = new Vector(); - - /** - * Creates a new HandlerRef object. - * - * @param classLoader ejbjar classLoader - * @param handler contains informations defined in web deployment - * descriptor (service-ref) - * - * @throws DeploymentDescException When Construction fails. - */ - public HandlerDesc(ClassLoader classLoader, Handler handler) - throws DeploymentDescException { - - name = handler.getHandlerName(); - - className = handler.getHandlerClass(); - - try { - clazz = classLoader.loadClass(className); - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("handler class not found", e); - } - - // fill init params table - List iparams = handler.getInitParamList(); - try { - for (int i = 0; i < iparams.size(); i++) { - // add in params table each init parameter name and associated value - InitParam p = (InitParam) iparams.get(i); - - if (p != null) { - params.put(p.getParamName(), p.getParamValue()); - } - } - } catch (NullPointerException e) { - throw new DeploymentDescException("parameter name missing", e); - } - - // fill headers a list containing soap header QNames - List shl = handler.getSoapHeaderList(); - for (int i = 0; i < shl.size(); i++) { - // build qnames and add it in the table - org.ow2.jonas.deployment.common.xml.Qname sh = (org.ow2.jonas.deployment.common.xml.Qname) shl.get(i); - - if (sh != null) { - QName qn = sh.getQName(); - headers.add(qn); - } - } - - // fill roles a list containing soap role names - List srl = handler.getSoapRoleList(); - for (int i = 0; i < srl.size(); i++) { - String role = (String) srl.get(i); - if (role != null) { - roles.add(role); - } - } - - // fill portNames a list containing ports names - List pnl = handler.getPortNameList(); - for (int i = 0; i < pnl.size(); i++) { - String pn = (String) pnl.get(i); - if (pn != null) { - portNames.add(pn); - } - } - } - - /** - * Return the name of the Handler. - * - * @return the name of the Handler. - */ - public String getName() { - return name; - } - - - /** - * Return the name of class of the Handler. - * - * @return the name of class of the Handler. - */ - public String getHandlerClassName() { - return className; - } - - /** - * Return the Handler implementation class. - * - * @return the Handler class - */ - public Class getHandlerClass() { - return clazz; - } - - /** - * Return all the init-params of the Handler. - * - * @return the init-params of the Handler - */ - public Properties getInitParams() { - return params; - } - - /** - * Return the value of an init-param. - * - * @param pname The key of init-param map. - * - * @return the value of an init-param - */ - public String getInitParam(String pname) { - return params.getProperty(pname); - } - - /** - * Return the list of Headers the Handlers will access. - * - * @return the list of Headers the Handlers will access. - */ - public List getSOAPHeaders() { - return headers; - } - - /** - * Return the list of SOAP Actor Definitions the Handler will play as a - * role. - * - * @return the list of Role the Handler will play - */ - public List getSOAPRoles() { - return roles; - } - - /** - * Return the list of port name the Handler is associated with. The names - * match the localPart of the Port QName. - * - * @return the list of port name the Handler is associated with. - */ - public List getPortNames() { - return portNames; - } - - /** - * Test Equality between 2 Objects. - * - * @param other The object to compare. - * - * @return true if the objects are equals in value, else false. - */ - public boolean equals(Object other) { - if (other == null) { - return false; - } - if (!(other instanceof HandlerDesc)) { - return false; - } - HandlerDesc ref = (HandlerDesc) other; - if (!name.equals(ref.getName())) { - return false; - } - if (!clazz.getName().equals(ref.getHandlerClass().getName())) { - return false; - } - if (!params.equals(ref.getInitParams())) { - return false; - } - if (!headers.equals(ref.getSOAPHeaders())) { - return false; - } - if (!roles.equals(ref.getSOAPRoles())) { - return false; - } - if (!portNames.equals(ref.getPortNames())) { - return false; - } - // After all theses tests, the 2 objects are equals in value - return true; - } - - /** - * @return Returns a String representation of a HandlerDesc - */ - public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append("\n" + getClass().getName()); - sb.append("\ngetName()=" + getName()); - sb.append("\ngetClassname()=" + getHandlerClassName()); - sb.append("\ngetSOAPRoles()=" + getSOAPRoles()); - sb.append("\ngetSOAPHeaders()=" + getSOAPHeaders()); - sb.append("\ngetInitParams()=" + getInitParams()); - sb.append("\ngetPortNames()=" + getPortNames()); - return sb.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/JndiEnvRefsGroupDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/JndiEnvRefsGroupDesc.java deleted file mode 100644 index 695d0b24f4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/JndiEnvRefsGroupDesc.java +++ /dev/null @@ -1,555 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Vector; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.deployment.api.IEnvEntryDesc; -import org.ow2.jonas.deployment.api.IJNDIEnvRefsGroupDesc; -import org.ow2.jonas.deployment.api.IPersistenceUnitRefDesc; -import org.ow2.jonas.deployment.api.IResourceEnvRefDesc; -import org.ow2.jonas.deployment.api.IResourceRefDesc; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.common.xml.EjbLocalRef; -import org.ow2.jonas.deployment.common.xml.EjbRef; -import org.ow2.jonas.deployment.common.xml.EnvEntry; -import org.ow2.jonas.deployment.common.xml.JndiEnvRefsGroupXml; -import org.ow2.jonas.deployment.common.xml.JonasEjbRef; -import org.ow2.jonas.deployment.common.xml.JonasJndiEnvRefsGroupXml; -import org.ow2.jonas.deployment.common.xml.JonasMessageDestinationRef; -import org.ow2.jonas.deployment.common.xml.JonasResource; -import org.ow2.jonas.deployment.common.xml.JonasResourceEnv; -import org.ow2.jonas.deployment.common.xml.JonasServiceRef; -import org.ow2.jonas.deployment.common.xml.MessageDestinationRef; -import org.ow2.jonas.deployment.common.xml.PersistenceUnitRef; -import org.ow2.jonas.deployment.common.xml.ResourceEnvRef; -import org.ow2.jonas.deployment.common.xml.ResourceRef; -import org.ow2.jonas.deployment.common.xml.ServiceRef; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.deployment.ws.WSDeploymentDescException; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.ee.metadata.common.api.enc.IENCBindingHolder; -/** - * This class is used to keep the usage of containedJNDI environment - * regerence elements consistent across J2EE deployment descriptors - * Elements are "env-entry", "ejb-ref", "ejb-local-ref", "resource-ref", - * "resource-env-ref, "service-ref", "message-destination-ref" - * This class extends DescriptionGroupDesc and give access to elements - * "description", "display-name", "icon" - * used by entity, session, message-driven-bean, web-app, clientApp - * - * @author Philippe Coq - * - */ - -public abstract class JndiEnvRefsGroupDesc extends DescriptionGroupDesc implements IJNDIEnvRefsGroupDesc { - - /** - * List of resource env ref Descriptors. - */ - private Vector resourceEnvRefs = new Vector(); - - /** - * List of resource ref Descriptors.. - */ - private Vector resourceRefs = new Vector(); - - /** - * List of env-entry Descriptors. - */ - private Vector envEntries = new Vector(); - - /** - * List of service-ref Descriptors. - */ - private Vector serviceRefs = new Vector(); - - /** - * List of EJB ref Descriptors.. - */ - private Vector ejbRefs = new Vector(); - - /** - * List of local EJB ref Descriptors.. - */ - private Vector ejbLocalRefs = new Vector(); - - /** - * List of message destination ref Descriptors.. - */ - private Vector messageDestinationRefs = new Vector(); - - /** - * List of persistence-unit-ref elements. - */ - private Vector persistenceUnitRefs = new Vector(); - /** - * Keeps some annotations processing data. - */ - private IENCBindingHolder encBindingHolder = null; - - /** - * logger - */ - protected static Logger logger = Log.getLogger(Log.JONAS_DEPLOY_PREFIX); - - /** - * Construct an instance of a JndiEnvRefsGroupDesc.
    - * - * @param classLoader the classloader for the deployed module. - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @param fileName the file name of the module (useful only for service-ref) - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - protected JndiEnvRefsGroupDesc(final ClassLoader classLoader, - final JndiEnvRefsGroupXml app, - final JonasJndiEnvRefsGroupXml jonasApp, - final String fileName) - throws DeploymentDescException { - - // test classloader - if (classLoader == null) { - throw new DeploymentDescException("Classloader is null"); - } - // display name - displayName = null; - if (app.getDisplayName() != null) { - displayName = app.getDisplayName(); - } - - // resource-env-ref - processResourceEnvRef(classLoader, app, jonasApp); - - // resource-ref - processResourceRef(classLoader, app, jonasApp); - - // env-entry - processEnvEntry(app); - - // ejb-ref - processEjbRef(app, jonasApp); - - // ejb-local-ref - processEjbLocalRef(app); - - // service-ref - processServiceRef(classLoader, app, jonasApp, fileName); - - // message-destination-ref - processMessageDestinationRef(app, jonasApp); - - // persistence-unit-ref - processPersistenceUnitRef(app); - - } - - /** - * @param app the data structure of the J2EE application - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processEnvEntry(final JndiEnvRefsGroupXml app) throws DeploymentDescException { - // env-entry - for (Iterator i = app.getEnvEntryList().iterator(); i.hasNext();) { - IEnvEntryDesc envEntryDesc = new EnvEntryDesc((EnvEntry) i.next()); - envEntries.addElement(envEntryDesc); - } - } - - /** - * @param app the data structure containing the value of Xml elements of a JndiEnvRefsGroup - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processPersistenceUnitRef(final JndiEnvRefsGroupXml app) throws DeploymentDescException { - for (Iterator i = app.getPersistenceUnitRefList().iterator(); i.hasNext();) { - IPersistenceUnitRefDesc persistenceUnitRefDesc = new PersistenceUnitRefDesc((PersistenceUnitRef) i.next()); - persistenceUnitRefs.addElement(persistenceUnitRefDesc); - } - } - - /** - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processMessageDestinationRef(final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp) throws DeploymentDescException { - List messageDestinationRefList = app.getMessageDestinationRefList(); - List jonasMessageDestinationRefList = jonasApp.getJonasMessageDestinationRefList(); - - - HashMap messageDestinationRef = new HashMap(); - for (Iterator i = jonasMessageDestinationRefList.iterator(); i.hasNext();) { - JonasMessageDestinationRef jonasMessageDestinationRef = (JonasMessageDestinationRef) i.next(); - String mdrName = jonasMessageDestinationRef.getMessageDestinationRefName(); - boolean findMDRef = false; - for (Iterator j = messageDestinationRefList.iterator(); j.hasNext() && !findMDRef;) { - MessageDestinationRef mdRef = (MessageDestinationRef) j.next(); - if (mdrName.equals(mdRef.getMessageDestinationRefName())) { - findMDRef = true; - } - } - if (!findMDRef) { - throw new DeploymentDescException("message-destination-ref missing for jonas-message-destination-ref " + mdrName); - } - messageDestinationRef.put(mdrName, jonasMessageDestinationRef); - } - for (Iterator i = messageDestinationRefList.iterator(); i.hasNext();) { - MessageDestinationRef mdRef = (MessageDestinationRef) i.next(); - String mdrName = mdRef.getMessageDestinationRefName(); - JonasMessageDestinationRef jonasMessageDestinationRef = (JonasMessageDestinationRef) messageDestinationRef.get(mdrName); - if (jonasMessageDestinationRef == null) { - // The message-destination-link must be specified when there is no jonas-message-destination-ref - if ((mdRef.getMessageDestinationLink() == null)) { - // Ignore the message-destination-link syntax "product.jar#ProductMD" - throw new DeploymentDescException("message-destination-link missing for message-destination-ref-name " + mdrName); - } } - messageDestinationRefs.addElement(new MessageDestinationRefDesc(mdRef, jonasMessageDestinationRef)); - } - } - - /** - * @param classLoader the classloader for the deployed module. - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @param fileName the file name of the module (useful only for service-ref) - * @throws WSDeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processServiceRef(final ClassLoader classLoader, final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp, final String fileName) throws WSDeploymentDescException { - Map links = linksSR2JSR(app, jonasApp); - List serviceRefList = app.getServiceRefList(); - for (Iterator i = serviceRefList.iterator(); i.hasNext();) { - ServiceRef serviceRef = ((ServiceRef) i.next()); - JonasServiceRef jsr = (JonasServiceRef) links.get(serviceRef.getServiceRefName()); - serviceRefs.addElement(new ServiceRefDesc(classLoader, serviceRef, jsr, fileName)); - } - } - - /** - * @param app the data structure of the J2EE application - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processEjbLocalRef(final JndiEnvRefsGroupXml app) throws DeploymentDescException { - List ejbLocalRefList = app.getEjbLocalRefList(); - for (Iterator i = ejbLocalRefList.iterator(); i.hasNext();) { - EjbLocalRef ejbLocalRef = (EjbLocalRef) i.next(); - if ((ejbLocalRef.getEjbLink() == null)) { - throw new DeploymentDescException("ejb-link missing for ejb-ref-name " + ejbLocalRef.getEjbRefName()); - } - ejbLocalRefs.addElement(new EjbLocalRefDesc(ejbLocalRef)); - } - } - - /** - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processEjbRef(final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp) throws DeploymentDescException { - List ejbRefList = app.getEjbRefList(); - List jonasEjbRefList = jonasApp.getJonasEjbRefList(); - - HashMap ejbRef = new HashMap(); - for (Iterator i = jonasEjbRefList.iterator(); i.hasNext();) { - JonasEjbRef jonasEjbRef = (JonasEjbRef) i.next(); - String brName = jonasEjbRef.getEjbRefName(); - boolean findBRef = false; - for (Iterator j = ejbRefList.iterator(); j.hasNext() && !findBRef;) { - EjbRef eRef = (EjbRef) j.next(); - if (brName.equals(eRef.getEjbRefName())) { - findBRef = true; - } - } - if (!findBRef) { - throw new DeploymentDescException("ejb-ref missing for jonas-ejb-ref " + brName); - } - ejbRef.put(brName, jonasEjbRef); - } - for (Iterator i = ejbRefList.iterator(); i.hasNext();) { - EjbRef eRef = (EjbRef) i.next(); - String brName = eRef.getEjbRefName(); - JonasEjbRef jonasEjbRef = (JonasEjbRef) ejbRef.get(brName); - if (jonasEjbRef == null) { - // The ejb-link must be specified when there is no jonas-ejb-ref - if ((eRef.getEjbLink() == null)) { - // Ignore the ejb-link syntax "product.jar#ProductEJB" - // throw new DeploymentDescException("ejb-link missing for ejb-ref-name " + brName); - // FIXME gaellalire : get ejb3 compatibility - logger.log(BasicLevel.DEBUG, "Maybe the ejb-link is missing for ejb-ref-name " + brName); - continue; - } - } - ejbRefs.addElement(new EjbRefDesc(eRef, jonasEjbRef)); - } - } - - /** - * @param classLoader the classloader for the deployed module. - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processResourceRef(final ClassLoader classLoader, final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp) throws DeploymentDescException { - List resourceRefList = app.getResourceRefList(); - List jonasResourceList = jonasApp.getJonasResourceList(); - HashMap resource = new HashMap(); - for (Iterator i = jonasResourceList.iterator(); i.hasNext();) { - JonasResource jonasResource = ((JonasResource) i.next()); - String rName = jonasResource.getResRefName(); - boolean findResRef = false; - for (Iterator j = resourceRefList.iterator(); j.hasNext() && !findResRef;) { - if (rName.equals(((ResourceRef) j.next()).getResRefName())) { - findResRef = true; - } - } - - if (!findResRef) { - throw new DeploymentDescException("resource-ref missing for jonas-resource " + rName); - } - resource.put(rName, jonasResource); - } - - for (Iterator i = resourceRefList.iterator(); i.hasNext();) { - ResourceRef resourceRef = ((ResourceRef) i.next()); - String rName = resourceRef.getResRefName(); - - // Handle some special cases - String jndiName = null; - if ("org.omg.CORBA.ORB".equals(resourceRef.getResType())) { - jndiName = "java:comp/ORB"; - } else if ("javax.transaction.UserTransaction".equals(resourceRef.getResType())) { - jndiName = "java:comp/UserTransaction"; - } - if (jndiName != null) { - JonasResource jonasResource = new JonasResource(); - jonasResource.setResRefName(rName); - jonasResource.setJndiName(jndiName); - jonasResourceList.add(jonasResource); - resource.put(rName, jonasResource); - resourceRef.setResAuth("Container"); - } - - if (!resource.containsKey(rName)) { - throw new DeploymentDescException("jonas-resource missing for res-ref-name " + rName); - } - resourceRefs.addElement(new ResourceRefDesc(classLoader, resourceRef, (JonasResource) resource.get(rName))); - } - } - - /** - * @param classLoader the classloader for the deployed module. - * @param app the data structure of the J2EE application - * @param jonasApp the data structure of the jonas specific deployment - * descriptor - * @throws DeploymentDescException if the deployment descriptors are - * corrupted. - */ - private void processResourceEnvRef(final ClassLoader classLoader, final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp) throws DeploymentDescException { - List resourceEnvRefList = app.getResourceEnvRefList(); - List jonasResourceEnvList = jonasApp.getJonasResourceEnvList(); - HashMap resourceEnv = new HashMap(); - for (Iterator i = jonasResourceEnvList.iterator(); i.hasNext();) { - JonasResourceEnv jonasResourceEnv = (JonasResourceEnv) i.next(); - String rName = jonasResourceEnv.getResourceEnvRefName(); - boolean findResRef = false; - for (Iterator j = resourceEnvRefList.iterator(); j.hasNext() && !findResRef;) { - ResourceEnvRef resourceEnvRef = (ResourceEnvRef) j.next(); - if (rName.equals(resourceEnvRef.getResourceEnvRefName())) { - findResRef = true; - } - } - if (!findResRef) { - throw new DeploymentDescException("resource-env-ref missing for jonas-resource-env " + rName); - } - resourceEnv.put(rName, jonasResourceEnv); - } - for (Iterator i = resourceEnvRefList.iterator(); i.hasNext();) { - ResourceEnvRef resourceEnvRef = (ResourceEnvRef) i.next(); - String rName = resourceEnvRef.getResourceEnvRefName(); - if (!resourceEnv.containsKey(rName)) { - throw new DeploymentDescException("jonas-resource-env missing for resource-env-ref-name " + rName); - } - resourceEnvRefs.addElement(new ResourceEnvRefDesc(classLoader, resourceEnvRef, - (JonasResourceEnv) resourceEnv.get(rName))); - } - } - - /** - * @param app JndiEnvRefsGroupXml instance - * @param jonasApp linked JonasJndiEnvRefsGroupXml instance - * @return Returns a map associating the ServiceRef.name with the JonasServiceRef - */ - private Map linksSR2JSR(final JndiEnvRefsGroupXml app, final JonasJndiEnvRefsGroupXml jonasApp) { - Map res = new HashMap(); - // for each sr - for (Iterator i = app.getServiceRefList().iterator(); i.hasNext();) { - ServiceRef sr = (ServiceRef) i.next(); - res.put(sr.getServiceRefName(), null); - } - // jonas-.xml - if (jonasApp != null) { - - // get all ServiceRef.name - Set keys = res.keySet(); - - // for each jonas service ref - for (Iterator i = jonasApp.getJonasServiceRefList().iterator(); i.hasNext();) { - JonasServiceRef jsr = (JonasServiceRef) i.next(); - String srName = jsr.getServiceRefName(); - - if (keys.contains(srName)) { - // jonas-service-ref linked to service-ref - res.put(srName, jsr); - } else { - String err = "jonas-service-ref '" + srName + "' is not linked to any service-ref. It will be ignored."; //getI18n().getMessage("WSDeploymentDesc.wsdlDeclareUnknownPort", wsdlf.getName()); - logger.log(BasicLevel.WARN, err); - } - } - } - return res; - } - - /** - * Get resource environment references. - * - * @return array of resource environment reference descriptors - */ - public IResourceEnvRefDesc[] getResourceEnvRefDesc() { - IResourceEnvRefDesc[] ret = new IResourceEnvRefDesc[resourceEnvRefs.size()]; - resourceEnvRefs.copyInto(ret); - return ret; - } - - /** - * Get resource manager connection factory references. - * - * @return array of resource reference descriptors - */ - public IResourceRefDesc[] getResourceRefDesc() { - IResourceRefDesc[] ret = new ResourceRefDesc[resourceRefs.size()]; - resourceRefs.copyInto(ret); - return ret; - } - - /** - * Get environment entries. - * - * @return array of Env entries descriptors - */ - public IEnvEntryDesc[] getEnvEntryDesc() { - IEnvEntryDesc[] ret = new EnvEntryDesc[envEntries.size()]; - envEntries.copyInto(ret); - return ret; - } - - /** - * Get EJB references. - * - * @return array of EJB reference descriptors - */ - public EjbRefDesc[] getEjbRefDesc() { - EjbRefDesc[] ret = new EjbRefDesc[ejbRefs.size()]; - ejbRefs.copyInto(ret); - return ret; - } - - /** - * Get ejb local references. - * - * @return array of ejb local reference descriptors - */ - public EjbLocalRefDesc[] getEjbLocalRefDesc() { - EjbLocalRefDesc[] ret = new EjbLocalRefDesc[ejbLocalRefs.size()]; - ejbLocalRefs.copyInto(ret); - return ret; - } - - /** - * Get service references. - * - * @return array of service references descriptors - */ - public IServiceRefDesc[] getServiceRefDesc() { - IServiceRefDesc[] ret = new ServiceRefDesc[serviceRefs.size()]; - serviceRefs.copyInto(ret); - return ret; - } - - /** - * Get message-destination references. - * @return array of message-destination references descriptors - */ - public MessageDestinationRefDesc[] getMessageDestinationRefDesc() { - MessageDestinationRefDesc[] ret = new MessageDestinationRefDesc[messageDestinationRefs.size()]; - messageDestinationRefs.copyInto(ret); - return ret; - } - - /** - * @return the ENC Binding holder object. - */ - public IENCBindingHolder getENCBindingHolder() { - return encBindingHolder; - } - - /** - * Sets the given ENC binding holder. - * @param encBindingHolder the given environment holder. - */ - public void setENCBindingHolder(final IENCBindingHolder encBindingHolder) { - this.encBindingHolder = encBindingHolder; - } - - /** - * Get and array of the persistence-unit-refs. - * @return array of persistence unit refs - */ - public PersistenceUnitRefDesc[] getPersistenceUnitRefs() { - PersistenceUnitRefDesc[] ret = new PersistenceUnitRefDesc[persistenceUnitRefs.size()]; - persistenceUnitRefs.copyInto(ret); - return ret; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/MessageDestinationRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/MessageDestinationRefDesc.java deleted file mode 100644 index a5926aac03..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/MessageDestinationRefDesc.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IMessageDestinationRefDesc; -import org.ow2.jonas.deployment.common.xml.JonasMessageDestinationRef; -import org.ow2.jonas.deployment.common.xml.MessageDestinationRef; - - -/** - * This class represents the description of a MessageDestinationRef object - * @author Eric Hardesty - */ -public class MessageDestinationRefDesc implements IMessageDestinationRefDesc { - - /** - * The name of the message destination ref - */ - private String messageDestinationRefName = null; - - /** - * The type of the message destination ref - */ - private String messageDestinationType = null; - - /** - * The usage of the message destination ref. - */ - private String messageDestinationUsage = null; - - /** - * The link of the message destination ref. - */ - private String messageDestinationLink = null; - - /** - * The jndi name of the message destination ref. - */ - private String jndiName = null; - - - /** - * Construct a descriptor for an message-destination-ref tag. - * @param messageDestinationRef the messageDestination ref result of the xml parsing. - * @param jonasMessageDestinationRef the jonas messageDestinationRef result of the xml parsing. - * @throws DeploymentDescException when missing information for - * creating the MessageDestinationRefDesc. - */ - public MessageDestinationRefDesc(MessageDestinationRef messageDestinationRef, - JonasMessageDestinationRef jonasMessageDestinationRef) - throws DeploymentDescException { - messageDestinationRefName = messageDestinationRef.getMessageDestinationRefName(); - messageDestinationType = messageDestinationRef.getMessageDestinationType(); - messageDestinationUsage = messageDestinationRef.getMessageDestinationUsage(); - messageDestinationLink = messageDestinationRef.getMessageDestinationLink(); - jndiName = null; - if (jonasMessageDestinationRef != null) { - jndiName = jonasMessageDestinationRef.getJndiName(); - } - } - - public String getMessageDestinationRefName() { - return messageDestinationRefName; - } - - public String getMessageDestinationType() { - return messageDestinationType; - } - - public String getMessageDestinationUsage() { - return messageDestinationUsage; - } - - public String getMessageDestinationLink() { - return messageDestinationLink; - } - - - public String getJndiName() { - return jndiName; - } - - /** - * Set the jndi name of the messageDestination-ref. - * @param jndiName representation of the JNDI name - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetMessageDestinationRefName()=" + getMessageDestinationRefName()); - ret.append("\ngetMessageDestinationType()=" + getMessageDestinationType()); - ret.append("\ngetMessageDestinationUsage()=" + getMessageDestinationUsage()); - ret.append("\ngetMessageDestinationLink()=" + getMessageDestinationLink()); - ret.append("\ngetJndiName()=" + getJndiName()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/PersistenceUnitRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/PersistenceUnitRefDesc.java deleted file mode 100644 index 070d6a459a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/PersistenceUnitRefDesc.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2008 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IPersistenceUnitRefDesc; -import org.ow2.jonas.deployment.common.xml.PersistenceUnitRef; - -/** - * Class used to represent persistence-unit-ref elements in J2EE deployment descriptors. - * @author Adriana Danes - */ -public class PersistenceUnitRefDesc implements IPersistenceUnitRefDesc { - - /** - * optional description. - */ - private String description; - - /** - * persistence unit reference name. - */ - private String persistenceUnitRefName; - - /** - * persistence unit name. - */ - private String persistenceUnitName; - - - /** - * Construct a descriptor for an persistence-unit-ref tag. - * @param persistenceUnitRef the persistence-unit-ref resulting of the xml parsing. - * @throws DeploymentDescException when missing information for - * creating the PersistenceUnitRefDesc - */ - public PersistenceUnitRefDesc(final PersistenceUnitRef persistenceUnitRef) throws DeploymentDescException { - description = persistenceUnitRef.getDescription(); - persistenceUnitRefName = persistenceUnitRef.getPersistenceUnitRefName(); - persistenceUnitName = persistenceUnitRef.getPersistenceUnitName(); - if (persistenceUnitName == null) { - // set default value to "" - persistenceUnitName = ""; - } - } - - /** - * @return persistence unit reference description - */ - public String getDescription() { - return description; - } - - /** - * @return persistence unit name - */ - public String getName() { - return persistenceUnitName; - } - - /** - * @return persistence unit reference name - */ - public String getRefName() { - return persistenceUnitRefName; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceEnvRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceEnvRefDesc.java deleted file mode 100644 index 1e92a3efa0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceEnvRefDesc.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Christophe Ney - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IResourceEnvRefDesc; -import org.ow2.jonas.deployment.common.xml.JonasResourceEnv; -import org.ow2.jonas.deployment.common.xml.ResourceEnvRef; - - -/** - * This class represents the description of a ResourceEnvRef object - * @author Christophe Ney - * @author Florent Benoit - */ -public class ResourceEnvRefDesc implements IResourceEnvRefDesc { - - /** - * The resource env ref name. - */ - private String name; - - /** - * The resource env ref type. - */ - private Class type; - - /** - * The resource env ref jndi name. - */ - private String jndiName; - - /** - * Construct a descriptor for the resource-env-ref and jonas-resource-env - * tags. - * @param classLoader the classloader for the classes. - * @param res the resource-env-ref resulting of the web.xml parsing. - * @param jRes the jonas-resource-env resulting of the jonas-web.xml - * parsing. - * @throws DeploymentDescException when missing information for - * creating the ResourceEnvRefDesc. - */ - public ResourceEnvRefDesc(ClassLoader classLoader, ResourceEnvRef res, - JonasResourceEnv jRes) throws DeploymentDescException { - - name = res.getResourceEnvRefName(); - try { - type = classLoader.loadClass(res.getResourceEnvRefType()); - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("resource-env-ref-type class not found for resource-env-ref " + name, e); - } - jndiName = jRes.getJndiName(); - } - - public String getName() { - return name; - } - - public Class getType() { - return type; - } - - public String getJndiName() { - return jndiName; - } - - /** - * String representation of the object for test purpose. - * @return String representation of this object. - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName()=" + getName()); - ret.append("\ngetType()=" + getType()); - ret.append("\ngetJndiName()=" + getJndiName()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceRefDesc.java deleted file mode 100644 index 7db1c046df..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/ResourceRefDesc.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Christophe Ney - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import org.ow2.jonas.deployment.api.IResourceRefDesc; -import org.ow2.jonas.deployment.common.xml.JonasResource; -import org.ow2.jonas.deployment.common.xml.ResourceRef; - - - -/** - * This class represents the description of a ResourceRef object - * @author Christophe Ney - * @author Florent Benoit - */ -public class ResourceRefDesc implements IResourceRefDesc { - - /** - * List of all possible authentication. - */ - private static final String[] AUTH = {"APPLICATION_AUTH", "CONTAINER_AUTH"}; - - /** - * The resource ref name. - */ - private String name; - - /** - * The resource ref type name. - */ - private String typeName; - - /** - * The resource ref authentication. - */ - private int authentication; - - /** - * The resource ref jndi name. - */ - private String jndiName; - - /** - * Construct a descriptor for the resource-ref and jonas-resource tags. - * @param classLoader the classloader for the classes. - * @param res the resource-ref resulting of the web.xml parsing. - * @param jRes the jonas-resource resulting of the jonas-web.xml parsing. - * @throws DeploymentDescException when missing information for - * creating the ResourceRefDesc. - */ - public ResourceRefDesc(ClassLoader classLoader, - ResourceRef res, JonasResource jRes) - throws DeploymentDescException { - name = res.getResRefName(); - typeName = new String(res.getResType()); - String auth = res.getResAuth(); - - if (auth.equals("Application")) { - authentication = APPLICATION_AUTH; - } else if (auth.equals("Container")) { - authentication = CONTAINER_AUTH; - } else { - throw new DeploymentDescException("res-auth not valid for resource-ref " + name); - } - jndiName = jRes.getJndiName(); - } - - /* (non-Javadoc) - * @see org.ow2.jonas.deployment.api.IResourceRefDesc#getName() - */ - public String getName() { - return name; - } - - /* (non-Javadoc) - * @see org.ow2.jonas.deployment.api.IResourceRefDesc#getTypeName() - */ - public String getTypeName() { - return typeName; - } - - /* (non-Javadoc) - * @see org.ow2.jonas.deployment.api.IResourceRefDesc#getAuthentication() - */ - public int getAuthentication() { - return authentication; - } - - /* (non-Javadoc) - * @see org.ow2.jonas.deployment.api.IResourceRefDesc#isJdbc() - */ - public boolean isJdbc() { - return "javax.sql.DataSource".equals(typeName); - } - - /* (non-Javadoc) - * @see org.ow2.jonas.deployment.api.IResourceRefDesc#getJndiName() - */ - public String getJndiName() { - return jndiName; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName()=" + getName()); - ret.append("\ngetTypeName()=" + getTypeName()); - ret.append("\ngetAuthentication()=" + AUTH[getAuthentication()]); - ret.append("\nisJdbc()=" + new Boolean(isJdbc()).toString()); - ret.append("\ngetJndiName()=" + getJndiName()); - return ret.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/SecurityRoleRefDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/SecurityRoleRefDesc.java deleted file mode 100644 index b5a34b860b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/SecurityRoleRefDesc.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common; - -import java.security.Permission; - -import javax.security.jacc.EJBRoleRefPermission; -import javax.security.jacc.WebRoleRefPermission; - -import org.ow2.jonas.deployment.common.xml.SecurityRoleRef; - - -/** - * Defines a SecurityRoleRefDesc class for the management of - * EJBRoleRefPermissions and WebRoleRefPermissions in JACC - * @author Florent Benoit - */ -public class SecurityRoleRefDesc { - - /** - * EJBRoleRefPermission - */ - private EJBRoleRefPermission ejbRoleRefPermission = null; - - - /** - * WebRoleRefPermission - */ - private WebRoleRefPermission webRoleRefPermission = null; - - - /** - * role-link used for addToRole method on PolicyConfiguration - */ - private String roleLink = null; - - - /** - * role-name - */ - private String roleName = null; - - - /** - * Constructor for SecurityRoleRefDesc - * @param componentName name of the EJB or Servlet - * @param securityRoleRef the security role of the assembly descriptor - * @param isEjb indicate if the is a SecurityRoleRef for an EJB or a Web Component - */ - public SecurityRoleRefDesc(String componentName, SecurityRoleRef securityRoleRef, boolean isEjb) { - this.roleLink = securityRoleRef.getRoleLink(); - this.roleName = securityRoleRef.getRoleName(); - if (isEjb) { - this.ejbRoleRefPermission = new EJBRoleRefPermission(componentName, roleName); - } else { - this.webRoleRefPermission = new WebRoleRefPermission(componentName, roleName); - } - } - - - - /** - * Gets the role-name value - * @return role-name - */ - public String getRoleName() { - return roleName; - } - - - /** - * Gets the role-link value - * @return role-link - */ - public String getRoleLink() { - return roleLink; - } - - /** - * @return Returns the EJBRoleRefPermission - */ - public Permission getEJBRoleRefPermission() { - return ejbRoleRefPermission; - } - - /** - * @return Returns the WebRoleRefPermission - */ - public Permission getWebRoleRefPermission() { - return webRoleRefPermission; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JDigester.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JDigester.java deleted file mode 100644 index 26a90acab2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JDigester.java +++ /dev/null @@ -1,153 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.digester; - -import java.io.IOException; -import java.io.Reader; - -import org.ow2.jonas.deployment.api.DTDs; -import org.ow2.jonas.deployment.api.Schemas; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.lib.JEntityResolver; -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; - -import org.apache.commons.digester.Digester; - - -/** - * This class defines a Digester for the xml parsing of - * deployment descriptors standard and specific - * - * @author Philippe Coq - */ - -public class JDigester extends Digester { - - /** - * Construct an instance of a JDigester which is a Digester - * that is configured for parsing the deployment descriptors standards - * and specifics used in JOnAS application. - * the Digester contains the rules for the xml parsing - * By default the created digester is set with: - * useContextClassLoader = true - * @param ruleSet an object that extends JRuleSetBase - * @param parsingWithValidation flag for xmlvalidation - * @param namespaceAware must be true when schema is used - * @param dtds mapping between publicId and local Urls of DTDs - * @param schemas local urls for the schemas - * @throws DeploymentDescException if the deployment descriptors are corrupted. - */ - - public JDigester(JRuleSetBase ruleSet, - boolean parsingWithValidation, - boolean namespaceAware, - DTDs dtds, - Schemas schemas) - throws DeploymentDescException { - super(); - - - String packageName = ruleSet.getClass().getPackage().getName(); - String rootPackageName = packageName.substring(0, packageName.lastIndexOf('.')); - - - // Set the validation process - setNamespaceAware(namespaceAware); - setValidating(parsingWithValidation); - - // Define an error handler - setErrorHandler(new JErrorHandler()); - - // Register all Sun dtds/Schemas - JEntityResolver jEntityResolver = new JEntityResolverWithDigester(this); - jEntityResolver.addDtds(dtds); - jEntityResolver.addSchemas(schemas); - setEntityResolver(jEntityResolver); - - - // Set the schema that Digester must use - if (parsingWithValidation) { - try { - setFeature("http://apache.org/xml/features/validation/schema", - true); - } catch (Exception ee) { - throw new DeploymentDescException("Error setting feature", ee); - } - } - - org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(rootPackageName + ".digester"); - setLogger(log); - - // Set the encoding feature - try { - setFeature("http://apache.org/xml/features/allow-java-encodings", - true); - } catch (Exception ee) { - throw new DeploymentDescException("Error setting feature", ee); - } - - // Don't use ContextClassLoader - setUseContextClassLoader(false); - - // Add rules - addRuleSet(ruleSet); - } - - - /** - * Parse the deployment descriptor - * @param reader the Reader of the XML file. - * @param fileName the name of the file. - * @param element top level xml element - * which is a structure containing the result of the xml parsing. - * @throws DeploymentDescException if the deployment descriptor - * is corrupted. - */ - public void parse(Reader reader, - String fileName, - TopLevelElement element) - throws DeploymentDescException { - try { - clear(); - push(element); - parse(reader); - } catch (Exception ioe) { - throw new DeploymentDescException("Error when parsing XML document " + fileName, ioe); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (IOException ignored) { - getLogger().warn("Can't close '" + fileName + "'"); - } - } - push(null); - } - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JEntityResolverWithDigester.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JEntityResolverWithDigester.java deleted file mode 100644 index d489828775..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JEntityResolverWithDigester.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.digester; - - -import java.io.IOException; - -import org.ow2.jonas.deployment.common.lib.JEntityResolver; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * This class defines the entity resolver used to resolve DTDs/Schemas during - * the xml parsing. It extends the JEntityResolver - * in order to allow for that parser to be used without having the digester classes. - */ -public class JEntityResolverWithDigester extends JEntityResolver implements EntityResolver { - - /** - * JDigester Object associated - */ - private JDigester jDigester = null; - - - /** - * Constructor - * - * @param jd linked JDigester object - */ - public JEntityResolverWithDigester(JDigester jd) { - super(); - jDigester = jd; - } - - /** - * The Parser will call this method before opening any external entity except - * the top-level document entity. - * @param publicId The public identifier of the external entity being referenced, - * or null if none was supplied. - * @param systemId The system identifier of the external entity being referenced. - * @return An InputSource object describing the new input source, or null to request that - * the parser open a regular URI connection to the system identifier. - * @throws SAXException Any SAX exception, possibly wrapping another exception. - * @throws IOException A Java-specific IO exception, possibly the result of creating - * a new InputStream or Reader for the InputSource. - */ - public InputSource resolveEntity(String publicId, String systemId) - throws IOException, SAXException { - - if (jDigester != null) { - jDigester.setPublicId(publicId); - } - - return super.resolveEntity(publicId, systemId); - } -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JErrorHandler.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JErrorHandler.java deleted file mode 100644 index 75e02bf177..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/digester/JErrorHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.digester; - -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -/** - * Define an error handler which throw an exception as Digester not (only print - * stack trace). This handler is use for throwing/catching in a convenient way - * the xml parsing error of xml file. - */ -public class JErrorHandler implements ErrorHandler { - - /** - * Receive notification of a warning. - * - * @param exception exception to throw - * @throws SAXException if an error is thrown - */ - public void warning(SAXParseException exception) throws SAXException { - - } - - /** - * Receive notification of a recoverable error. - * - * @param exception exception to throw - * @throws SAXException if an error is thrown - */ - public void error(SAXParseException exception) throws SAXException { - throw new SAXException("Parse Fatal Error at line " + exception.getLineNumber() + " column " - + exception.getColumnNumber() + ": " + exception.getMessage()); - } - - /** - * Receive notification of a non-recoverable error. - * - * @param exception exception to throw - * @throws SAXException if an error is thrown - */ - public void fatalError(SAXParseException exception) throws SAXException { - throw new SAXException("Parse Fatal Error at line " + exception.getLineNumber() + " column " - + exception.getColumnNumber() + ": " + exception.getMessage()); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/AbsDeploymentDescManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/AbsDeploymentDescManager.java deleted file mode 100644 index 8e328dfa50..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/AbsDeploymentDescManager.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.lib; - -import org.ow2.jonas.deployment.common.xml.JonasServiceRef; -import org.ow2.jonas.deployment.common.xml.ResourceRef; -import org.ow2.jonas.deployment.common.xml.ResourceEnvRef; -import org.ow2.jonas.deployment.common.xml.AbsEnvironmentElement; -import org.ow2.jonas.deployment.common.xml.JonasPortComponentRef; -import org.ow2.jonas.deployment.common.xml.JonasStubProperty; -import org.ow2.jonas.deployment.client.xml.ApplicationClient; -import org.ow2.util.ee.metadata.common.api.struct.IJaxwsWebServiceRef; -import org.ow2.util.ee.metadata.common.api.xml.struct.IPortComponentRef; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.List; -import java.util.Iterator; - -/** - * Abstract class of DeploymentDesc manager. Use for common methods. - * @author Florent Benoit - */ -public abstract class AbsDeploymentDescManager implements DeploymentDescManager { - - /** - * Char separator in a link. - */ - public static final String LINK_SEPARATOR = "#"; - - /** - * Utility class, no public constructor - */ - protected AbsDeploymentDescManager() { - - } - - /** - * Return the content of the inut stream - * @param in the given input stream - * @return the content of the inut stream - * @throws IOException if the file can't be read - */ - protected static String xmlContent(InputStream in) throws IOException { - - StringBuffer sb = new StringBuffer(); - String line; - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - // loop until the end - while ((line = br.readLine()) != null) { - sb.append(line); - sb.append("\n"); - } - return sb.toString(); - } - - /** - * Find a jonas-service-ref element with a given name. - * @param jonasServiceRefList the list of elements to search in - * @param name the name - * @return a jonas-service-ref element matching the given name or null if not found - */ - protected static JonasServiceRef findJonasServiceRef(final List jonasServiceRefList, - final String name) { - JonasServiceRef found = null; - for (Iterator i = jonasServiceRefList.iterator(); i.hasNext() && found == null;) { - JonasServiceRef element = (JonasServiceRef) i.next(); - if (name.equals(element.getServiceRefName())) { - found = element; - } - } - - return found; - } - - /** - * @return true if the resource name is already present as a resource-ref or resource-env-ref - */ - public static boolean containsResource(final String resourceName, final AbsEnvironmentElement env) { - List resourceRefList = env.getResourceRefList(); - for (ResourceRef resourceRef : resourceRefList) { - if (resourceName.equals(resourceRef.getResRefName())) { - return true; - } - } - - List resourceEnvRefList = env.getResourceEnvRefList(); - for (ResourceEnvRef resourceEnvRef : resourceEnvRefList) { - if (resourceName.equals(resourceEnvRef.getResourceEnvRefName())) { - return true; - } - } - - // not found - return false; - } - - /** - * Merge into the Jax WS service ref some data from the jonas-xxx.xml files - * @param jsr the XML struct of the JOnAS service ref - * @param wsr the JAX WS metadata which has been merged - */ - protected static void mergeWebServiceRef(JonasServiceRef jsr, IJaxwsWebServiceRef wsr) { - // Override wsdl-location value if specified - if (jsr.getAltWsdl() != null) { - wsr.setWsdlLocation(jsr.getAltWsdl()); - } - - List portComponentRefList = jsr.getJonasPortComponentRefList(); - for (JonasPortComponentRef jonasPortComponentRef : portComponentRefList) { - // Get SEI - String serviceEndpointInterface = jonasPortComponentRef.getServiceEndpointInterface(); - - // matching port component ? - IPortComponentRef portComponentRef = wsr.getPortComponentRef(serviceEndpointInterface); - if (portComponentRef == null) { - // no, needs to add one - portComponentRef = new org.ow2.util.ee.metadata.common.impl.xml.struct.PortComponentRef(); - portComponentRef.setServiceEndpointInterface(serviceEndpointInterface); - List wsrPortcomponentRefs = wsr.getPortComponentRefs(); - wsrPortcomponentRefs.add(portComponentRef); - wsr.setPortComponentRefs(wsrPortcomponentRefs); - } - // add stub properties - List jonasStubProperties = jonasPortComponentRef.getJonasStubPropertyList(); - for (JonasStubProperty jonasStubProperty : jonasStubProperties) { - portComponentRef.getStubProperties().put(jonasStubProperty.getParamName(), jonasStubProperty.getParamValue()); - } - - } - - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/DeploymentDescManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/DeploymentDescManager.java deleted file mode 100644 index 0d08304d1a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/DeploymentDescManager.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.lib; - - -/** - * Defines an interface for all Deployment Desc manager - * @author Florent Benoit - */ -public interface DeploymentDescManager { - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JEntityResolver.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JEntityResolver.java deleted file mode 100644 index d07a81ecc6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JEntityResolver.java +++ /dev/null @@ -1,157 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.lib; - - -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.ow2.jonas.deployment.api.DTDs; -import org.ow2.jonas.deployment.api.Schemas; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - - -/** - * This class defines the entity resolver used to resolve DTDs/Schemas during - * the xml parsing - * @author Florent Benoit - */ -public class JEntityResolver implements EntityResolver { - - /** - * Map which contains DTDs and Schemas available in local - */ - private HashMap entries = new HashMap(); - - /** - * Constructor without JDigester instance (used in WsGen only) - */ - public JEntityResolver() { - super(); - } - - /** - * Add a local schema to the known entries - * @param path path to a local schema - */ - private void addSchema(String path) { - String id = path.substring(path.lastIndexOf('/') + 1); - entries.put(id, path); - } - - - - /** - * The Parser will call this method before opening any external entity except - * the top-level document entity. - * @param publicId The public identifier of the external entity being referenced, - * or null if none was supplied. - * @param systemId The system identifier of the external entity being referenced. - * @return An InputSource object describing the new input source, or null to request that - * the parser open a regular URI connection to the system identifier. - * @throws SAXException Any SAX exception, possibly wrapping another exception. - * @throws IOException A Java-specific IO exception, possibly the result of creating - * a new InputStream or Reader for the InputSource. - */ - public InputSource resolveEntity(String publicId, String systemId) - throws IOException, SAXException { - - // DTD : check if we got this entry - String localPath = null; - if (publicId != null) { - localPath = (String) entries.get(publicId); - } else if (systemId != null) { - // Can be a schema - if (systemId.toLowerCase().endsWith(".xsd")) { - // Retrieve basename - String baseName = systemId.substring(systemId.lastIndexOf('/') + 1); - - // Registred ? - localPath = (String) entries.get(baseName); - } - } - - if (localPath == null) { - // This DTD/Schema was not added to this DTD/Schame local repository - return null; - } - - // Return the local path source - return (new InputSource(localPath)); - } - - - /** - * Add the mapping between a public Id and the local path of the DTD - * @param dtds Object containing the mapping PublicId --> Local URL - */ - public void addDtds(DTDs dtds) { - if (dtds != null) { - Map dtdsMapping = dtds.getMapping(); - if (dtdsMapping != null) { - for (Iterator it = dtdsMapping.entrySet().iterator(); it.hasNext();) { - Map.Entry entry = (Map.Entry) it.next(); - String publicId = (String) entry.getKey(); - String localURL = (String) entry.getValue(); - entries.put(publicId, localURL); - } - } - } - } - - - /** - * Add the given Schemas to the schemas available for this resolver - * @param schemas Definition of the schemas to add to this resolver - */ - public void addSchemas(Schemas schemas) { - // no schemas - if (schemas == null) { - return; - } - - List localSchemas = schemas.getlocalSchemas(); - - // there are schemas - if (localSchemas != null) { - for (Iterator it = localSchemas.iterator(); it.hasNext();) { - String schema = (String) it.next(); - addSchema(schema); - } - } - } - - - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSInput.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSInput.java deleted file mode 100644 index 9b71abd71e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSInput.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.lib; - -import java.io.InputStream; -import java.io.Reader; - -import org.w3c.dom.ls.LSInput; -import org.xml.sax.InputSource; - -/** - * A wrapper around the InputSource class returned by EntityResolver - * to be returned by the ResourceResolver class. - * - * @author Patrick Smith - * @author Greg Lapouchnian - */ -public class JLSInput implements LSInput { - - /** - * The InputSource that this class is wrapping. - */ - private InputSource source; - - /** - * Creates a wrapper around the given InputSource object. - * @param source - */ - public JLSInput(InputSource source) { - this.source = source; - } - - /** - * Return the character stream representation of the resource. - * @return character stream representation of the resource - */ - public Reader getCharacterStream() { - return source.getCharacterStream(); - } - - public void setCharacterStream(Reader arg0) {} - - /** - * Return the byte stream representation of the resource. - * @return byte stream representation of the resource - */ - public InputStream getByteStream() { - return source.getByteStream(); - } - - public void setByteStream(InputStream arg0) {} - - public String getStringData() { - // No corresponding method in InputSource - return null; - } - - public void setStringData(String arg0) {} - - /** - * Returns the System ID of the resource. - * @return the system ID of the resource - */ - public String getSystemId() { - return source.getSystemId(); - } - - public void setSystemId(String id) {} - - /** - * Returns the Public ID of the resource. - * @return the public ID of the resource - */ - public String getPublicId() { - return source.getPublicId(); - } - - public void setPublicId(String id) {} - - public String getBaseURI() { - return null; - } - - public void setBaseURI(String arg0) {} - - /** - * Returns the encoding of the resource. - * @return the encoding of the resource - */ - public String getEncoding() { - return source.getEncoding(); - } - - public void setEncoding(String arg0) {} - - public boolean getCertifiedText() { - return false; - } - - public void setCertifiedText(boolean arg0) {} - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSResourceResolver.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSResourceResolver.java deleted file mode 100644 index 35cc194d7e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JLSResourceResolver.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.lib; - -import org.w3c.dom.ls.LSInput; -import org.w3c.dom.ls.LSResourceResolver; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; - -/** - * A custom ResourceResolver to use in SchemaFactory. It uses the JEntityResolver - * to resolve system IDs for DTDs and Schemas to local copies of those files. - * - * @author Patrick Smith - * @author Greg Lapouchnian - */ -public class JLSResourceResolver implements LSResourceResolver { - - /** - * The entity resolver to use for lookups. - */ - EntityResolver er; - - /** - * - * @param er the EntityResolver to use for resolving external - * resources - */ - public JLSResourceResolver(EntityResolver er) { - this.er = er; - } - - /** - * Uses the EntityResolver to resolve an external resource. - */ - public LSInput resolveResource(String type, String namespaceURI, - String publicId, String systemId, - String baseURI) { - try { - InputSource source = er.resolveEntity(publicId, systemId); - return new JLSInput(source); - - } catch (Exception e) { - return null; - } - } - } - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JavaType.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JavaType.java deleted file mode 100644 index d54950d0b3..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/lib/JavaType.java +++ /dev/null @@ -1,442 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.common.lib; - -import java.util.Hashtable; - -/** - * This class implements methods which permit to get informations about Java Types: - *

      - *
    • - * the JDBC Types associated - *
    • - * the ResultSet.getXXX() methods associated - *
    • - * the PreparedStatement.setXXX() methods associated - *
    - *
    - * (The Java Type may be or not a primitive type) - * - * @author Helene Joanin : Initial developer - * @author ico.Hoogervorst@nl.compuware.com : Support for BigInteger and avoid cast exceptions with rs.getObject() - */ -public class JavaType { - - // Default values for Java primitive type - private static Hashtable tableDefaultValues = new Hashtable(); - static { - tableDefaultValues.put(java.lang.Boolean.TYPE, "false"); - tableDefaultValues.put(java.lang.Character.TYPE, "'\u0000'"); - tableDefaultValues.put(java.lang.Byte.TYPE, "(byte)0"); - tableDefaultValues.put(java.lang.Short.TYPE, "(short)0"); - tableDefaultValues.put(java.lang.Integer.TYPE, "0"); - tableDefaultValues.put(java.lang.Long.TYPE, "0L"); - tableDefaultValues.put(java.lang.Float.TYPE, "0.0f"); - tableDefaultValues.put(java.lang.Double.TYPE, "0.0d"); - } - - private static Hashtable tableWrapperType = new Hashtable(); - static { - tableWrapperType.put(java.lang.Boolean.TYPE, "java.lang.Boolean"); - tableWrapperType.put(java.lang.Character.TYPE, "java.lang.Character"); - tableWrapperType.put(java.lang.Byte.TYPE, "java.lang.Byte"); - tableWrapperType.put(java.lang.Short.TYPE, "java.lang.Short"); - tableWrapperType.put(java.lang.Integer.TYPE, "java.lang.Integer"); - tableWrapperType.put(java.lang.Long.TYPE, "java.lang.Long"); - tableWrapperType.put(java.lang.Float.TYPE, "java.lang.Float"); - tableWrapperType.put(java.lang.Double.TYPE, "java.lang.Double"); - } - - - /** - * Returns true if the given type is the type 'void' - */ - public static boolean isVoid(Class c) { - return (c.equals(java.lang.Void.TYPE)); - } - - /** - * Returns the name of the given type - */ - public static String getName(Class c) { - String name; - if (c.isArray()) { - name = getName(c.getComponentType()) + "[]"; - } else { - // The '$' in the name of a inner class is no more allowed since JDK 1.4.2 - name = c.getName().replace('$', '.'); - } - return (name); - } - - /** - * Returns true if the given class is a Serializable Java Type, - * false otherwise. - */ - public static boolean isSerializable(Class c) { - boolean isSerializable = false; - if (c.isArray()) { - isSerializable = isSerializable(c.getComponentType()); - } else if (c.isPrimitive()) { - isSerializable = true; - } else { - isSerializable = java.io.Serializable.class.isAssignableFrom(c); - } - return (isSerializable); - } - - /** - * Returns true if the given class is a valid type for RMI, - * false otherwise. - * Valid types for RMI are primitive types, remote objects, - * and non-remote objects that implement the java.io.Serializable interface - */ - public static boolean isValidForRmi(Class c) { - return (JavaType.isSerializable(c) || java.rmi.Remote.class.isAssignableFrom(c)); - } - - /** - * Returns true if the given class implements java.uti.Collection or java.util.Enumeration - * false otherwise. - */ - public static boolean isCollecOrEnum(Class c) { - return (java.util.Collection.class.isAssignableFrom(c) || java.util.Enumeration.class.isAssignableFrom(c)); - } - - /** - * Returns the name of the getXXX method associated with the given type in - * java.sql.ResultSet. - * @param c the class object for a Java type. - * @return a string representing the name of the get method, null in error case - */ - public static String getSQLGetMethod(Class c) { - return (JavaTypesForSQL.getSQLGetMethod(c)); - } - - /** - * Returns the name of the setXXX method associated with the given type in - * java.sql.ResultSet. - * @param c the class object for a Java type. - * @return a string representing the name of the set method, null in error case - */ - public static String getSQLSetMethod(Class c) { - return (JavaTypesForSQL.getSQLSetMethod(c)); - } - - /** - * Returns true if the given method name is getObject() or setObject() - */ - public static boolean isXxxObjectMethod(String name) { - return (name.equals("getObject") || name.equals("setObject")); - } - - /** - * Returns the SQL Type mapping the given Java Type. - * @param c the class object for a Java type. - * @return the SQL Type mapping the given Java Type, (Types.OTHER in error case) - */ - public static String getSQLType(Class c) { - return (JavaTypesForSQL.getSQLType(c)); - } - - /** - * Returns the default value of the given Java Type. - * @param c the class object for a Java type. - * @return the default value of the given Java Type - */ - public static String getDefaultValue(Class c) { - String val = null; - if (c.isPrimitive()) { - val = (String) tableDefaultValues.get(c); - } else { - val = new String("null"); - } - if (val == null) { - throw new Error("JavaType ERROR: No default value for the class " + c.getName()); - } - return (val); - } - - /** - * Returns the wrapper type of the given Java Type. - * @param c the class object for a Java type. - * @return the wrapper type of the given Java Type. Empty String for non primitive classes - */ - public static String getWrapperType(Class c) { - String val = null; - if (c.isPrimitive()) { - val = (String) tableWrapperType.get(c); - } else { - val = new String(""); - } - if (val == null) { - throw new Error("JavaType ERROR: No wrapper type for the class " + c.getName()); - } - return (val); - } - - public static Boolean toObject(boolean val) { - return new Boolean(val); - } - public static Byte toObject(byte val) { - return new Byte(val); - } - public static Short toObject(short val) { - return new Short(val); - } - public static Integer toObject(int val) { - return new Integer(val); - } - public static Long toObject(long val) { - return new Long(val); - } - public static Float toObject(float val) { - return new Float(val); - } - public static Double toObject(double val) { - return new Double(val); - } - public static Character toObject(char val) { - return new Character(val); - } - public static Object toObject(Object val) { - return val; - } - - /** - * If it is a primitive type, return a new Object constructor, - * else return the same object. - * There are nine predefined Class objects to represent the eight - * primitive types and void. These are created by the Java Virtual Machine, - * and have the same names as the primitive types that they represent, - * namely boolean, byte, char, short, int, long, float, and double. - * @param name name of the var - * @param val the object value - * @return new object - */ - public static String toStringObject(String name, Class c) { - if (c.isPrimitive()) { - if (c == Boolean.TYPE) { - return "Boolean.valueOf(" + name + ")"; - } else if (c == Byte.TYPE) { - return "new Byte(" + name + ")"; - } else if (c == Character.TYPE) { - return "new Character(" + name + ")"; - } else if (c == Short.TYPE) { - return "new Short(" + name + ")"; - } else if (c == Integer.TYPE) { - return "new Integer(" + name + ")"; - } else if (c == Long.TYPE) { - return "new Long(" + name + ")"; - } else if (c == Float.TYPE) { - return "new Float(" + name + ")"; - } else if (c == Double.TYPE) { - return "new Double(" + name + ")"; - } else { - return name; - } - } else { - return name; - } - } - - -} - - -/** - * This inner class allows to calculate, for a given Java Type: - * - the corresponding SQL type, - * - the corresponding set method of the java.sql.PreparedStatement, - * - the corresponding get method of the java.sql.ResultSet. - */ -class JavaTypesForSQL { - - private static JavaTypesForSQL mTypesForSQL = new JavaTypesForSQL(); - private static Hashtable mGets; - private static Hashtable mSets; - private static Hashtable mSQLTypes; - - private JavaTypesForSQL() { - - mGets = new Hashtable(); - mSets = new Hashtable(); - mSQLTypes = new Hashtable(); - - mGets.put(java.lang.Boolean.TYPE, "getBoolean"); - mSets.put(java.lang.Boolean.TYPE, "setBoolean"); - mSQLTypes.put(java.lang.Boolean.TYPE, "Types.BIT"); - mGets.put(java.lang.Byte.TYPE, "getByte"); - mSets.put(java.lang.Byte.TYPE, "setByte"); - mSQLTypes.put(java.lang.Byte.TYPE, "Types.TINYINT"); - mGets.put(java.lang.Short.TYPE, "getShort"); - mSets.put(java.lang.Short.TYPE, "setShort"); - mSQLTypes.put(java.lang.Short.TYPE, "Types.SMALLINT"); - mGets.put(java.lang.Integer.TYPE, "getInt"); - mSets.put(java.lang.Integer.TYPE, "setInt"); - mSQLTypes.put(java.lang.Integer.TYPE, "Types.INTEGER"); - mGets.put(java.lang.Long.TYPE, "getLong"); - mSets.put(java.lang.Long.TYPE, "setLong"); - mSQLTypes.put(java.lang.Long.TYPE, "Types.BIGINT"); - mGets.put(java.lang.Float.TYPE, "getFloat"); - mSets.put(java.lang.Float.TYPE, "setFloat"); - mSQLTypes.put(java.lang.Float.TYPE, "Types.FLOAT"); - mGets.put(java.lang.Double.TYPE, "getDouble"); - mSets.put(java.lang.Double.TYPE, "setDouble"); - mSQLTypes.put(java.lang.Double.TYPE, "Types.DOUBLE"); - //mGets.put(java.lang.Character.TYPE, "????"); - //mSets.put(java.lang.Character.TYPE, "????"); - //mSQLTypes.put(java.lang.Character.TYPE, "???"); - mGets.put(java.lang.String.class, "getString"); - mSets.put(java.lang.String.class, "setString"); - mSQLTypes.put(java.lang.String.class, "Types.VARCHAR"); - mGets.put(java.sql.Date.class, "getDate"); - mSets.put(java.sql.Date.class, "setDate"); - mSQLTypes.put(java.sql.Date.class, "Types.DATE"); - mGets.put(java.sql.Time.class, "getTime"); - mSets.put(java.sql.Time.class, "setTime"); - mSQLTypes.put(java.sql.Time.class, "Types.TIME"); - mGets.put(java.sql.Timestamp.class, "getTimestamp"); - mSets.put(java.sql.Timestamp.class, "setTimestamp"); - mSQLTypes.put(java.sql.Timestamp.class, "Types.TIMESTAMP"); - mGets.put(java.lang.Boolean.class, "getBoolean"); - mSets.put(java.lang.Boolean.class, "setObject"); - mSQLTypes.put(java.lang.Boolean.class, "Types.BIT"); - mGets.put(java.lang.Integer.class, "getInt"); - mSets.put(java.lang.Integer.class, "setObject"); - mSQLTypes.put(java.lang.Integer.class, "Types.INTEGER"); - mGets.put(java.lang.Long.class, "getLong"); - mSets.put(java.lang.Long.class, "setObject"); - mSQLTypes.put(java.lang.Long.class, "Types.BIGINT"); - mGets.put(java.lang.Float.class, "getFloat"); - mSets.put(java.lang.Float.class, "setObject"); - mSQLTypes.put(java.lang.Float.class, "Types.REAL"); - mGets.put(java.lang.Double.class, "getDouble"); - mSets.put(java.lang.Double.class, "setObject"); - mSQLTypes.put(java.lang.Double.class, "Types.DOUBLE"); - mGets.put(java.lang.Byte.class, "getByte"); - mSets.put(java.lang.Byte.class, "setObject"); - mSQLTypes.put(java.lang.Byte.class, "Types.TINYINT"); - mGets.put(java.lang.Short.class, "getShort"); - mSets.put(java.lang.Short.class, "setObject"); - mSQLTypes.put(java.lang.Short.class, "Types.SMALLINT"); - mGets.put(java.math.BigDecimal.class, "getBigDecimal"); - mSets.put(java.math.BigDecimal.class, "setObject"); - mSQLTypes.put(java.math.BigDecimal.class, "Types.NUMERIC"); - mGets.put(java.math.BigInteger.class, "getBigDecimal"); - mSets.put(java.math.BigInteger.class, "setObject"); - mSQLTypes.put(java.math.BigInteger.class, "Types.NUMERIC"); - } - - /** - * Returns the name of the getXXX method associated with the given type - * in java.sql.ResultSet. - * @param c the class object for a Java type. - * @return a string representing the name of the get method, null in error case - */ - static String getSQLGetMethod(Class c) { - String val = null; - val = (String) mGets.get(c); - if (val == null) { - if (c.isArray()) { - // See if c is byte[] or serializable[] - Class component = c.getComponentType(); - if (component != null) { - if (component.equals(java.lang.Byte.TYPE)) { - val = new String("getBytes"); - } else if (JavaType.isSerializable(component)) { - val = new String("getSerializable"); - } - } - } else if (JavaType.isSerializable(c)) { - // See if c is serializable - val = new String("getSerializable"); - } - } - return (val); - } - - /** - * Returns the name of the setXXX method associated with the given type - * in java.sql.PreparedStatement. - * @param c the class object for a Java type. - * @return a string representing the name of the set method, null in error case - */ - static String getSQLSetMethod(Class c) { - String val = null; - val = (String) mSets.get(c); - if (val == null) { - if (c.isArray()) { - // See if c is byte[] or serializable[] - Class component = c.getComponentType(); - if (component != null) { - if (component.equals(java.lang.Byte.TYPE)) { - val = new String("setBytes"); - } else if (JavaType.isSerializable(component)) { - val = new String("setSerializable"); - } - } - } else if (JavaType.isSerializable(c)) { - // See if c is serializable - val = new String("setSerializable"); - } - } - return (val); - } - - /** - * Returns the SQL Type mapping the given Java Type. - * @param c the class object for a Java type. - * @return the SQL Type mapping the given Java Type, (Types.OTHER in error case) - */ - static String getSQLType(Class c) { - String val = null; - val = (String) mSQLTypes.get(c); - if (val == null) { - val = new String("Types.OTHER"); - if (c.isArray()) { - // See if c is byte[] or serializable[] - Class component = c.getComponentType(); - if (component != null) { - if (component.equals(java.lang.Byte.TYPE)) { - val = new String("Types.VARBINARY"); - } else if (JavaType.isSerializable(component)) { - val = new String("Types.VARBINARY"); - } - } - } else if (JavaType.isSerializable(c)) { - // See if c is serializable - val = new String("Types.VARBINARY"); - } - } - return (val); - } - -} - - - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/AnonymousQNameRule.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/AnonymousQNameRule.java deleted file mode 100644 index 553e78fc30..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/AnonymousQNameRule.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.rules; - -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.xml.Qname; - - - -/** - * Rule that create a new QName object for anonymous-type-qname in jaxrpc mapping file. - * @author Guillaume Sauthier - */ -public class AnonymousQNameRule extends QNameRule { - - /** - * This method is called when the body of a matching XML element is - * encountered. If the element has no body, this method is not called at - * all. The default implementation delegates to the deprecated method - * body without the namespace and name parameters, to retain backwards - * compatibility. - * @param namespace the namespace URI of the matching element, - * or an empty string if the parser is not namespace - * aware or the element has no namespace - * @param name the local name if the parser is namespace aware, - * or just the element name otherwise - * @param text The text of the body of this element - */ - public void body(String namespace, String name, String text) { - - // Check that there the value of the element is not null - if (text == null) { - throw new IllegalArgumentException("No QName found in the body of the tag " + name); - } - - // Extract namespace and localpart - int colonIndex = text.lastIndexOf(":"); - if (colonIndex == -1) { - throw new IllegalArgumentException("QName must be on the form namespace:localpart for element " + name); - } - String namespaceURI = text.substring(0, colonIndex); - String localPart = text.substring(colonIndex + 1, text.length()); - - // Build QName - QName qName = new QName(namespaceURI, localPart); - - // Add this QName to the element at the top of the stack - Qname qNameObject = (Qname) digester.peek(); - qNameObject.setName(name); - qNameObject.setQName(qName); - - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbLocalRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbLocalRefRuleSet.java deleted file mode 100644 index 366dde5535..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbLocalRefRuleSet.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze ejb-local-ref - * @author Florent Benoit - */ -public class EjbLocalRefRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public EjbLocalRefRuleSet(String prefix) { - super(prefix); - } - - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "ejb-local-ref", - "org.ow2.jonas.deployment.common.xml.EjbLocalRef"); - digester.addSetNext(prefix + "ejb-local-ref", - "addEjbLocalRef", - "org.ow2.jonas.deployment.common.xml.EjbLocalRef"); - - digester.addCallMethod(prefix + "ejb-local-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "ejb-local-ref/ejb-ref-name", - "setEjbRefName", 0); - digester.addCallMethod(prefix + "ejb-local-ref/ejb-ref-type", - "setEjbRefType", 0); - digester.addCallMethod(prefix + "ejb-local-ref/local-home", - "setLocalHome", 0); - digester.addCallMethod(prefix + "ejb-local-ref/local", - "setLocal", 0); - digester.addCallMethod(prefix + "ejb-local-ref/ejb-link", - "setEjbLink", 0); - - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbRefRuleSet.java deleted file mode 100644 index b17b2ef349..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EjbRefRuleSet.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze ejb-ref - * @author Florent Benoit - */ -public class EjbRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public EjbRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "ejb-ref", - "org.ow2.jonas.deployment.common.xml.EjbRef"); - digester.addSetNext(prefix + "ejb-ref", - "addEjbRef", - "org.ow2.jonas.deployment.common.xml.EjbRef"); - - digester.addCallMethod(prefix + "ejb-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "ejb-ref/ejb-ref-name", - "setEjbRefName", 0); - digester.addCallMethod(prefix + "ejb-ref/ejb-ref-type", - "setEjbRefType", 0); - digester.addCallMethod(prefix + "ejb-ref/home", - "setHome", 0); - digester.addCallMethod(prefix + "ejb-ref/remote", - "setRemote", 0); - digester.addCallMethod(prefix + "ejb-ref/ejb-link", - "setEjbLink", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvEntryRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvEntryRuleSet.java deleted file mode 100644 index ffb0a368b5..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvEntryRuleSet.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze environment entries - * @author Florent Benoit - */ -public class EnvEntryRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public EnvEntryRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "env-entry", - "org.ow2.jonas.deployment.common.xml.EnvEntry"); - - digester.addSetNext(prefix + "env-entry", - "addEnvEntry", - "org.ow2.jonas.deployment.common.xml.EnvEntry"); - digester.addCallMethod(prefix + "env-entry/description", - "setDescription", 0); - digester.addCallMethod(prefix + "env-entry/env-entry-name", - "setEnvEntryName", 0); - digester.addCallMethod(prefix + "env-entry/env-entry-value", - "setEnvEntryValue", 0); - digester.addCallMethod(prefix + "env-entry/env-entry-type", - "setEnvEntryType", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvironmentRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvironmentRuleSet.java deleted file mode 100644 index 4478115611..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/EnvironmentRuleSet.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze environment of bean, web app, client, etc - * @author Florent Benoit - */ -public class EnvironmentRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public EnvironmentRuleSet(String prefix) { - super(prefix); - } - - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addRuleSet(new ResourceEnvRefRuleSet(prefix)); - digester.addRuleSet(new ResourceRefRuleSet(prefix)); - digester.addRuleSet(new EnvEntryRuleSet(prefix)); - digester.addRuleSet(new EjbRefRuleSet(prefix)); - digester.addRuleSet(new EjbLocalRefRuleSet(prefix)); - digester.addRuleSet(new ServiceRefRuleSet(prefix)); - digester.addRuleSet(new MessageDestinationRefRuleSet(prefix)); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/HandlerRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/HandlerRuleSet.java deleted file mode 100644 index 0a7a3572d1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/HandlerRuleSet.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze handler - * @author Florent Benoit - */ -public class HandlerRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public HandlerRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "handler", - "org.ow2.jonas.deployment.common.xml.Handler"); - - digester.addSetNext(prefix + "handler", - "addHandler", - "org.ow2.jonas.deployment.common.xml.Handler"); - - digester.addCallMethod(prefix + "handler/handler-name", - "setHandlerName", 0); - digester.addCallMethod(prefix + "handler/handler-class", - "setHandlerClass", 0); - - digester.addRuleSet(new InitParamRuleSet(prefix + "handler/")); - digester.addRuleSet(new SoapHeaderRuleSet(prefix + "handler/")); - - digester.addCallMethod(prefix + "handler/soap-role", - "addSoapRole", 0); - - digester.addCallMethod(prefix + "handler/port-name", - "addPortName", 0); - } - - /** - * @return the namespaceURI that is relevant for this RuleSet. - */ - @Override - public String getNamespaceURI() { - return "http://java.sun.com/xml/ns/j2ee"; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/IconRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/IconRuleSet.java deleted file mode 100644 index 9546d77e1b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/IconRuleSet.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: jonas-team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - - -/** - * This class defines the rules to analyze the element icon - * - * @author jonas-team - */ - -public class IconRuleSet extends JRuleSetBase { - - /** - *

    RuleSet for processing the contents of a - *icon definition element. - * - * @author jonas-team - */ - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public IconRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "icon", - "org.ow2.jonas.deployment.common.xml.Icon"); - digester.addSetNext(prefix + "icon", - "setIcon", - "org.ow2.jonas.deployment.common.xml.Icon"); - digester.addCallMethod(prefix + "icon/small-icon", - "setSmallIcon", 0); - digester.addCallMethod(prefix + "icon/large-icon", - "setLargeIcon", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/InitParamRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/InitParamRuleSet.java deleted file mode 100644 index 47d6d335a9..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/InitParamRuleSet.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze init-param - * @author Florent Benoit - */ -public class InitParamRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public InitParamRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "init-param", - "org.ow2.jonas.deployment.common.xml.InitParam"); - - digester.addSetNext(prefix + "init-param", - "addInitParam", - "org.ow2.jonas.deployment.common.xml.InitParam"); - digester.addCallMethod(prefix + "init-param/param-name", - "setParamName", 0); - digester.addCallMethod(prefix + "init-param/param-value", - "setParamValue", 0); - digester.addCallMethod(prefix + "init-param/description", - "setDescription", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JRuleSetBase.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JRuleSetBase.java deleted file mode 100644 index e473083e26..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JRuleSetBase.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.RuleSetBase; - - -/** - * This class defines a JOnAS rule which is used by all the rules to parse XML - * @author Florent Benoit - */ -public abstract class JRuleSetBase extends RuleSetBase { - - /** - * Pattern prefix - */ - protected String prefix = null; - - - /** - * Constructor - * use an empty prefix - */ - public JRuleSetBase() { - this(""); - } - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JRuleSetBase(String prefix) { - super(); - this.namespaceURI = null; - this.prefix = prefix; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasCustomParamRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasCustomParamRuleSet.java deleted file mode 100644 index aeed132340..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasCustomParamRuleSet.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze param-valueType - * @author Guillaume Sauthier - */ -public class JonasCustomParamRuleSet extends JRuleSetBase { - - /** - * paramvalueType element name - */ - private String elementName; - - /** - * xml element classname element name - */ - private String classname; - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - * @param ename element name to use - * @param classname element classname to use - */ - public JonasCustomParamRuleSet(String prefix, String ename, String classname) { - super(prefix); - elementName = ename; - this.classname = classname; - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + elementName, - "org.ow2.jonas.deployment.common.xml." + classname); - digester.addSetNext(prefix + elementName, - "add" + classname, - "org.ow2.jonas.deployment.common.xml." + classname); - digester.addCallMethod(prefix + elementName + "/param-name", - "setParamName", 0); - digester.addCallMethod(prefix + elementName + "/param-value", - "setParamValue", 0); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEjbRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEjbRefRuleSet.java deleted file mode 100644 index 35c3bcd072..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEjbRefRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-ejb-ref - * @author Florent Benoit - */ -public class JonasEjbRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasEjbRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-ejb-ref", - "org.ow2.jonas.deployment.common.xml.JonasEjbRef"); - digester.addSetNext(prefix + "jonas-ejb-ref", - "addJonasEjbRef", - "org.ow2.jonas.deployment.common.xml.JonasEjbRef"); - - digester.addCallMethod(prefix + "jonas-ejb-ref/ejb-ref-name", - "setEjbRefName", 0); - digester.addCallMethod(prefix + "jonas-ejb-ref/jndi-name", - "setJndiName", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEnvironmentRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEnvironmentRuleSet.java deleted file mode 100644 index a70157b0a1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasEnvironmentRuleSet.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze JOnAS environment of bean, web app, - * client, etc - * @author Florent Benoit - */ -public class JonasEnvironmentRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasEnvironmentRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addRuleSet(new JonasResourceEnvRuleSet(prefix)); - digester.addRuleSet(new JonasResourceRuleSet(prefix)); - digester.addRuleSet(new JonasEjbRefRuleSet(prefix)); - digester.addRuleSet(new JonasServiceRefRuleSet(prefix)); - digester.addRuleSet(new JonasMessageDestinationRefRuleSet(prefix)); - digester.addCallMethod(prefix + "run-as/principal-name", "setRunAsPrincipalName", 0); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasInitParamRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasInitParamRuleSet.java deleted file mode 100644 index 336c8b7f49..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasInitParamRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-init-param - * @author Florent Benoit - */ -public class JonasInitParamRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasInitParamRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-init-param", - "org.ow2.jonas.deployment.common.xml.JonasInitParam"); - - digester.addSetNext(prefix + "jonas-init-param", - "addJonasInitParam", - "org.ow2.jonas.deployment.common.xml.JonasInitParam"); - digester.addCallMethod(prefix + "jonas-init-param/param-name", - "setParamName", 0); - digester.addCallMethod(prefix + "jonas-init-param/param-value", - "setParamValue", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRefRuleSet.java deleted file mode 100644 index 39dc93a75a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRefRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-message-destination-ref - * @author Eric Hardesty - */ -public class JonasMessageDestinationRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasMessageDestinationRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-message-destination-ref", - "org.ow2.jonas.deployment.common.xml.JonasMessageDestinationRef"); - digester.addSetNext(prefix + "jonas-message-destination-ref", - "addJonasMessageDestinationRef", - "org.ow2.jonas.deployment.common.xml.JonasMessageDestinationRef"); - - digester.addCallMethod(prefix + "jonas-message-destination-ref/message-destination-ref-name", - "setMessageDestinationRefName", 0); - digester.addCallMethod(prefix + "jonas-message-destination-ref/jndi-name", - "setJndiName", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRuleSet.java deleted file mode 100644 index 2b3ba470ec..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasMessageDestinationRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-message-destination - * @author Eric Hardesty - */ -public class JonasMessageDestinationRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasMessageDestinationRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-message-destination", - "org.ow2.jonas.deployment.common.xml.JonasMessageDestination"); - digester.addSetNext(prefix + "jonas-message-destination", - "addJonasMessageDestination", - "org.ow2.jonas.deployment.common.xml.JonasMessageDestination"); - - digester.addCallMethod(prefix + "jonas-message-destination/message-destination-name", - "setMessageDestinationName", 0); - digester.addCallMethod(prefix + "jonas-message-destination/jndi-name", - "setJndiName", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasPortComponentRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasPortComponentRefRuleSet.java deleted file mode 100644 index 5445153db4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasPortComponentRefRuleSet.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-port-component-ref - * @author Florent Benoit - */ -public class JonasPortComponentRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasPortComponentRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-port-component-ref", - "org.ow2.jonas.deployment.common.xml.JonasPortComponentRef"); - - digester.addSetNext(prefix + "jonas-port-component-ref", "addJonasPortComponentRef", - "org.ow2.jonas.deployment.common.xml.JonasPortComponentRef"); - digester.addCallMethod(prefix + "jonas-port-component-ref/service-endpoint-interface", - "setServiceEndpointInterface", 0); - - digester.addRuleSet(new WsdlPortRuleSet(prefix + "jonas-port-component-ref/")); - - digester.addRuleSet(new JonasCustomParamRuleSet(prefix + "jonas-port-component-ref/", "jonas-stub-property", - "JonasStubProperty")); - digester.addRuleSet(new JonasCustomParamRuleSet(prefix + "jonas-port-component-ref/", "jonas-call-property", - "JonasCallProperty")); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceEnvRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceEnvRuleSet.java deleted file mode 100644 index 71a89e0d7b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceEnvRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-resource-env - * @author Florent Benoit - */ -public class JonasResourceEnvRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasResourceEnvRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-resource-env", - "org.ow2.jonas.deployment.common.xml.JonasResourceEnv"); - digester.addSetNext(prefix + "jonas-resource-env", - "addJonasResourceEnv", - "org.ow2.jonas.deployment.common.xml.JonasResourceEnv"); - - digester.addCallMethod(prefix + "jonas-resource-env/resource-env-ref-name", - "setResourceEnvRefName", 0); - digester.addCallMethod(prefix + "jonas-resource-env/jndi-name", - "setJndiName", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceRuleSet.java deleted file mode 100644 index 12268552ec..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasResourceRuleSet.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze jonas-resource - * @author Florent Benoit - */ -public class JonasResourceRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasResourceRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-resource", - "org.ow2.jonas.deployment.common.xml.JonasResource"); - digester.addSetNext(prefix + "jonas-resource", - "addJonasResource", - "org.ow2.jonas.deployment.common.xml.JonasResource"); - - digester.addCallMethod(prefix + "jonas-resource/res-ref-name", - "setResRefName", 0); - digester.addCallMethod(prefix + "jonas-resource/jndi-name", - "setJndiName", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasServiceRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasServiceRefRuleSet.java deleted file mode 100644 index 8129182614..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/JonasServiceRefRuleSet.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze element jonas-service-ref - * @author Florent Benoit - */ -public class JonasServiceRefRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasServiceRefRuleSet(String prefix) { - super(prefix); - } - - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-service-ref", - "org.ow2.jonas.deployment.common.xml.JonasServiceRef"); - digester.addSetNext(prefix + "jonas-service-ref", - "addJonasServiceRef", - "org.ow2.jonas.deployment.common.xml.JonasServiceRef"); - - // jonas-service-ref/service-ref-name - digester.addCallMethod(prefix + "jonas-service-ref/service-ref-name", - "setServiceRefName", 0); - - // jonas-service-ref/alt-wsdl - digester.addCallMethod(prefix + "jonas-service-ref/alt-wsdl", "setAltWsdl", 0); - - // jonas-service-ref/jonas-init-param* - digester.addRuleSet(new JonasCustomParamRuleSet(prefix + "jonas-service-ref/", "jonas-init-param", "JonasInitParam")); - // jonas-service-ref/jonas-port-component-ref* - digester.addRuleSet(new JonasPortComponentRefRuleSet(prefix + "jonas-service-ref/")); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRefRuleSet.java deleted file mode 100644 index 7f72a783d6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRefRuleSet.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze message-destination-ref - * @author Eric Hardesty - */ -public class MessageDestinationRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public MessageDestinationRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "message-destination-ref", - "org.ow2.jonas.deployment.common.xml.MessageDestinationRef"); - digester.addSetNext(prefix + "message-destination-ref", - "addMessageDestinationRef", - "org.ow2.jonas.deployment.common.xml.MessageDestinationRef"); - - digester.addCallMethod(prefix + "message-destination-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "message-destination-ref/message-destination-ref-name", - "setMessageDestinationRefName", 0); - digester.addCallMethod(prefix + "message-destination-ref/message-destination-type", - "setMessageDestinationType", 0); - digester.addCallMethod(prefix + "message-destination-ref/message-destination-usage", - "setMessageDestinationUsage", 0); - digester.addCallMethod(prefix + "message-destination-ref/message-destination-link", - "setMessageDestinationLink", 0); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRuleSet.java deleted file mode 100644 index 37e1c3e462..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/MessageDestinationRuleSet.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze message-destination - * @author Eric Hardesty - */ -public class MessageDestinationRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public MessageDestinationRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "message-destination", - "org.ow2.jonas.deployment.common.xml.MessageDestination"); - digester.addSetNext(prefix + "message-destination", - "addMessageDestination", - "org.ow2.jonas.deployment.common.xml.MessageDestination"); - - digester.addCallMethod(prefix + "message-destination/message-destination-name", - "setMessageDestinationName", 0); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/PortComponentRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/PortComponentRefRuleSet.java deleted file mode 100644 index 49b346b271..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/PortComponentRefRuleSet.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze port-component-ref - * @author Florent Benoit - */ -public class PortComponentRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public PortComponentRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "port-component-ref", - "org.ow2.jonas.deployment.common.xml.PortComponentRef"); - - digester.addSetNext(prefix + "port-component-ref", - "addPortComponentRef", - "org.ow2.jonas.deployment.common.xml.PortComponentRef"); - digester.addCallMethod(prefix + "port-component-ref/service-endpoint-interface", - "setServiceEndpointInterface", 0); - digester.addCallMethod(prefix + "port-component-ref/port-component-link", - "setPortComponentLink", 0); - } - - /** - * @return the namespaceURI that is relevant for this RuleSet. - */ - @Override - public String getNamespaceURI() { - return "http://java.sun.com/xml/ns/j2ee"; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/QNameRule.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/QNameRule.java deleted file mode 100644 index eeeea6aa22..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/QNameRule.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import java.util.StringTokenizer; - -import javax.xml.namespace.QName; - -import org.ow2.jonas.deployment.common.xml.Qname; - -import org.apache.commons.digester.Rule; - - -/** - * Rule that create a new QName object - * @author Florent Benoit - */ -public class QNameRule extends Rule { - - - /** - * This method is called when the body of a matching XML element is - * encountered. If the element has no body, this method is not called at - * all. The default implementation delegates to the deprecated method - * body without the namespace and name parameters, to retain backwards - * compatibility. - * @param namespace the namespace URI of the matching element, - * or an empty string if the parser is not namespace - * aware or the element has no namespace - * @param name the local name if the parser is namespace aware, - * or just the element name otherwise - * @param text The text of the body of this element - */ - public void body(String namespace, String name, String text) { - - // Check that there the value of the element is not null - if (text == null) { - throw new IllegalArgumentException("No QName found in the body of the tag " + name); - } - - // Extract prefix and localpart - StringTokenizer st = new StringTokenizer(text, ":"); - if (st.countTokens() != 2) { - throw new IllegalArgumentException("QName must be on the form prefix:localpart for element " + name); - } - String prefix = st.nextToken(); - String localPart = st.nextToken(); - - // Get namespaceURI from prefix - String namespaceURI = digester.findNamespaceURI(prefix); - if (namespaceURI == null) { - throw new IllegalArgumentException("No namespace found for the prefix '" + prefix + "' in element " + name); - } - - // Build QName - QName qName = new QName(namespaceURI, localPart, prefix); - - // Add this QName to the element at the top of the stack - Qname qNameObject = (Qname) digester.peek(); - qNameObject.setName(name); - qNameObject.setQName(qName); - - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceEnvRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceEnvRefRuleSet.java deleted file mode 100644 index daef2b664b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceEnvRefRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; -/** - * This class defines a rule to analyze resource-env-ref - * @author Florent Benoit - */ -public class ResourceEnvRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public ResourceEnvRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "resource-env-ref", - "org.ow2.jonas.deployment.common.xml.ResourceEnvRef"); - - digester.addSetNext(prefix + "resource-env-ref", - "addResourceEnvRef", - "org.ow2.jonas.deployment.common.xml.ResourceEnvRef"); - digester.addCallMethod(prefix + "resource-env-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "resource-env-ref/resource-env-ref-name", - "setResourceEnvRefName", 0); - digester.addCallMethod(prefix + "resource-env-ref/resource-env-ref-type", - "setResourceEnvRefType", 0); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceRefRuleSet.java deleted file mode 100644 index dc2535ed10..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ResourceRefRuleSet.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze resource-ref - * @author Florent Benoit - */ -public class ResourceRefRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public ResourceRefRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "resource-ref", - "org.ow2.jonas.deployment.common.xml.ResourceRef"); - - digester.addSetNext(prefix + "resource-ref", - "addResourceRef", - "org.ow2.jonas.deployment.common.xml.ResourceRef"); - digester.addCallMethod(prefix + "resource-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "resource-ref/res-ref-name", - "setResRefName", 0); - digester.addCallMethod(prefix + "resource-ref/res-type", - "setResType", 0); - digester.addCallMethod(prefix + "resource-ref/res-auth", - "setResAuth", 0); - digester.addCallMethod(prefix + "resource-ref/res-sharing-scope", - "setResSharingScope", 0); - - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/RunAsRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/RunAsRuleSet.java deleted file mode 100644 index 1b34c4d8b8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/RunAsRuleSet.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element run-as - * - * @author JOnAS team - */ - -public class RunAsRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public RunAsRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "run-as", - "org.ow2.jonas.deployment.common.xml.RunAs"); - digester.addSetNext(prefix + "run-as", - "setRunAs", - "org.ow2.jonas.deployment.common.xml.RunAs"); - digester.addCallMethod(prefix + "run-as/description", - "setDescription", 0); - digester.addCallMethod(prefix + "run-as/role-name", - "setRoleName", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRefRuleSet.java deleted file mode 100644 index cba91bcd37..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRefRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element security-role-ref - * - * @author JOnAS team - */ - -public class SecurityRoleRefRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public SecurityRoleRefRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "security-role-ref", - "org.ow2.jonas.deployment.common.xml.SecurityRoleRef"); - digester.addSetNext(prefix + "security-role-ref", - "addSecurityRoleRef", - "org.ow2.jonas.deployment.common.xml.SecurityRoleRef"); - digester.addCallMethod(prefix + "security-role-ref/description", - "setDescription", 0); - digester.addCallMethod(prefix + "security-role-ref/role-name", - "setRoleName", 0); - digester.addCallMethod(prefix + "security-role-ref/role-link", - "setRoleLink", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRuleSet.java deleted file mode 100644 index 9c1fcdb3b2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SecurityRoleRuleSet.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element security-role - * - * @author JOnAS team - */ - -public class SecurityRoleRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public SecurityRoleRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "security-role", - "org.ow2.jonas.deployment.common.xml.SecurityRole"); - digester.addSetNext(prefix + "security-role", - "addSecurityRole", - "org.ow2.jonas.deployment.common.xml.SecurityRole"); - digester.addCallMethod(prefix + "security-role/description", - "setDescription", 0); - digester.addCallMethod(prefix + "security-role/role-name", - "setRoleName", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceQnameRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceQnameRuleSet.java deleted file mode 100644 index a227bed0d6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceQnameRuleSet.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - - -import org.apache.commons.digester.Digester; - - -/** - * This class defines a rule to analyze service-qname - * @author Florent Benoit - */ -public class ServiceQnameRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public ServiceQnameRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - - digester.addObjectCreate(prefix + "service-qname", - "org.ow2.jonas.deployment.common.xml.Qname"); - - // Object created at runtime with the right namespace - digester.addRule(prefix + "service-qname", new QNameRule()); - - digester.addSetNext(prefix + "service-qname", - "setServiceQname", - "org.ow2.jonas.deployment.common.xml.Qname"); - - } - - /** - * @return the namespaceURI that is relevant for this RuleSet. - */ - @Override - public String getNamespaceURI() { - return "http://java.sun.com/xml/ns/j2ee"; - } - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceRefRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceRefRuleSet.java deleted file mode 100644 index cbd223dfe3..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/ServiceRefRuleSet.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze element service-ref - * @author Florent Benoit - */ -public class ServiceRefRuleSet extends JRuleSetBase { - - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public ServiceRefRuleSet(String prefix) { - super(prefix); - } - - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "service-ref", - "org.ow2.jonas.deployment.common.xml.ServiceRef"); - - digester.addSetNext(prefix + "service-ref", - "addServiceRef", - "org.ow2.jonas.deployment.common.xml.ServiceRef"); - - digester.addCallMethod(prefix + "service-ref/service-ref-name", - "setServiceRefName", 0); - - - digester.addCallMethod(prefix + "service-ref/service-interface", - "setServiceInterface", 0); - - digester.addCallMethod(prefix + "service-ref/wsdl-file", - "setWsdlFile", 0); - - digester.addCallMethod(prefix + "service-ref/jaxrpc-mapping-file", - "setJaxrpcMappingFile", 0); - - - digester.addRuleSet(new ServiceQnameRuleSet(prefix + "service-ref/")); - digester.addRuleSet(new PortComponentRefRuleSet(prefix + "service-ref/")); - digester.addRuleSet(new HandlerRuleSet(prefix + "service-ref/")); - } - - /** - * @return the namespaceURI that is relevant for this RuleSet. - */ - @Override - public String getNamespaceURI() { - return "http://java.sun.com/xml/ns/j2ee"; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SoapHeaderRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SoapHeaderRuleSet.java deleted file mode 100644 index 237cc9b0ab..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/SoapHeaderRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines a rule to analyze soap-header - * @author Florent Benoit - */ -public class SoapHeaderRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public SoapHeaderRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "soap-header", - "org.ow2.jonas.deployment.common.xml.Qname"); - - // Object created at runtime with the right namespace - digester.addRule(prefix + "soap-header", - new QNameRule()); - - digester.addSetNext(prefix + "soap-header", - "addSoapHeader", - "org.ow2.jonas.deployment.common.xml.Qname"); - - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/WsdlPortRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/WsdlPortRuleSet.java deleted file mode 100644 index 22b95b22f6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/rules/WsdlPortRuleSet.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.rules; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element wsdl-port - * - * @author JOnAS team - */ - -public class WsdlPortRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public WsdlPortRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "wsdl-port", - "org.ow2.jonas.deployment.common.xml.Qname"); - // Object created at runtime with the right namespace - digester.addRule(prefix + "wsdl-port", new QNameRule()); - digester.addSetNext(prefix + "wsdl-port", - "setWsdlPort", - "org.ow2.jonas.deployment.common.xml.Qname"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/util/ResourceHelper.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/util/ResourceHelper.java deleted file mode 100644 index c176cd09f0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/util/ResourceHelper.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.util; - -/** - * Resource name helper. - * @author Guillaume Sauthier - */ -public final class ResourceHelper { - - /** - * Default private constructor for utility class. - */ - private ResourceHelper() { } - - /** - * @param clazz Class located in the package. - * @return the class package name that can be used to load resources (. replaced by /). - */ - public static String getResourcePackage(final Class clazz) { - String packageName = clazz.getPackage().getName(); - return convertPackageName(packageName); - } - - /** - * @param packageName a java package name. - * @return the package name that can be used to load resources (. replaced by /). - */ - public static String convertPackageName(final String packageName) { - return packageName.replace('.', '/').concat("/"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsDescriptionElement.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsDescriptionElement.java deleted file mode 100644 index 2f4b63ce95..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsDescriptionElement.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines an abstract implementation for all statndard environment element - * (entity, session, web-app, application-client, etc.).. - * - * @author Florent Benoit - */ -public abstract class AbsDescriptionElement extends AbsElement implements DescriptionGroupXml { - - /** - * icon - */ - private Icon icon = null; - - /** - * description - */ - private String description = null; - - /** - * Display name - */ - private String displayName = null; - - /** - * Construct an empty AbsDescriptionElement. - */ - public AbsDescriptionElement() { - super(); - icon = new Icon(); - } - - /** - * @return the display-name element - */ - public String getDisplayName() { - return displayName; - } - - - /** - * Set the display-name - * @param displayname displayname - */ - public void setDisplayName(String displayname) { - displayName = displayname; - } - /** - * @return the icon - */ - public Icon getIcon() { - return icon; - } - - - /** - * Set the icon - * @param icon icon - */ - public void setIcon(Icon icon) { - this.icon = icon; - } - - - /** - * Set the small icon - * @param small small icon - */ - public void setSmallIcon(String small) { - icon.setSmallIcon(small); - } - - /** - * get the small icon - * @return String small icon - */ - public String setSmallIcon() { - return icon.getSmallIcon(); - } - /** - * Set the large icon - * @param large large icon - */ - public void setLargeIcon(String large) { - icon.setLargeIcon(large); - } - /** - * get the large icon - * @return String large icon - */ - public String setLargeIcon() { - return icon.getLargeIcon(); - } - - /** - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description description - */ - public void setDescription(String description) { - this.description = description; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsElement.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsElement.java deleted file mode 100644 index 4004b075dc..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsElement.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the interface Element. - * These elements are used by Digester during the xml parsing. - * @author Florent Benoit - */ -public abstract class AbsElement implements Element { - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public abstract String toXML(int indent); - - - /** - * Represents this element by it's XML description. - * Use a default indent set to 0. - * @return the XML description of this object. - */ - public String toXML() { - return toXML(0); - } - - /** - * Return the representation of this element. - * Use the XML representation of the object for the toString() method. - * @return the XML description of this object. - */ - public String toString() { - return toXML(); - } - - - /** - * Return indent spaces. - * @param indent number of indentation. - * @return the indent space string. - */ - protected String indent(int indent) { - String txt = ""; - for (int i = 0; i < indent; i++) { - txt += " "; - } - return txt; - } - - /** - * Return the xml representation of the specified value with the root-element xmlTag - * @param value String value to represent in XML - * @param xmlTag tag of the root-element - * @param indent indent to use - * @return xml representation of the specified value - */ - protected String xmlElement(String value, String xmlTag, int indent) { - if (value == null) { - return ""; - } - - // else - - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("<"); - sb.append(xmlTag); - sb.append(">"); - sb.append(value); - sb.append("\n"); - return sb.toString(); - } - - /** - * Return the xml representation of the specified attribute value - * @param value String value to represent in XML - * @param xmlTag tag of the attribute - * @return xml representation of the specified value - */ - protected String xmlAttribute(String value, String xmlTag) { - if (value == null) { - return ""; - } - - // else - - StringBuffer sb = new StringBuffer(); - sb.append(" "); - sb.append(xmlTag); - sb.append("=\""); - sb.append(value); - sb.append("\""); - return sb.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsEnvironmentElement.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsEnvironmentElement.java deleted file mode 100644 index 76bd0df10f..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsEnvironmentElement.java +++ /dev/null @@ -1,221 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines an abstract implementation for all environment element - * - * Entity, Session, WebApp, Application-client elements must extend this class - * @author Florent Benoit - */ -public abstract class AbsEnvironmentElement extends AbsDescriptionElement implements JndiEnvRefsGroupXml { - - /** - * List of ejb-local-ref - */ - private JLinkedList ejbLocalRefList = null; - - /** - * List of ejb-ref - */ - private JLinkedList ejbRefList = null; - - /** - * List of env-entry - */ - private JLinkedList envEntryList = null; - - /** - * List of resource-env-ref - */ - private JLinkedList resourceEnvRefList = null; - - /** - * List of resource-ref - */ - private JLinkedList resourceRefList = null; - - - /** - * List of service-ref - */ - private JLinkedList serviceRefList = null; - - /** - * List of message-destination-ref - */ - private JLinkedList messageDestinationRefList = null; - - /** - * List of persistence-unit-ref - */ - private JLinkedList persistenceUnitRefList = null; - - /** - * Constructor : build a new object for environment - */ - public AbsEnvironmentElement() { - super(); - ejbLocalRefList = new JLinkedList("ejb-local-ref"); - ejbRefList = new JLinkedList("ejb-ref"); - envEntryList = new JLinkedList("env-entry"); - resourceEnvRefList = new JLinkedList("resource-env-ref"); - resourceRefList = new JLinkedList("resource-ref"); - serviceRefList = new JLinkedList("service-ref"); - messageDestinationRefList = new JLinkedList("message-destination-ref"); - persistenceUnitRefList = new JLinkedList("persistence-unit-ref"); - } - - - - // Setters - - /** - * Add a new ejb-local-ref element to this object - * @param ejbLocalRef the ejb-local-ref object - */ - public void addEjbLocalRef(final EjbLocalRef ejbLocalRef) { - ejbLocalRefList.add(ejbLocalRef); - } - - - /** - * Add a new ejb-ref element to this object - * @param ejbRef the ejb-ref object - */ - public void addEjbRef(final EjbRef ejbRef) { - ejbRefList.add(ejbRef); - } - - /** - * Add a new env-entry element to this object - * @param envEntry the ejb-ref object - */ - public void addEnvEntry(final EnvEntry envEntry) { - envEntryList.add(envEntry); - } - - /** - * Add a new resource-env-ref element to this object - * @param resourceEnvRef the resource-env-ref object - */ - public void addResourceEnvRef(final ResourceEnvRef resourceEnvRef) { - resourceEnvRefList.add(resourceEnvRef); - } - - /** - * Add a new resource-ref element to this object - * @param resourceRef the resource-ref object - */ - public void addResourceRef(final ResourceRef resourceRef) { - resourceRefList.add(resourceRef); - } - - - /** - * Add a new service-ref element to this object - * @param serviceRef the service-ref object - */ - public void addServiceRef(final ServiceRef serviceRef) { - serviceRefList.add(serviceRef); - } - - /** - * Add a new message-destination-ref element to this object - * @param messageDestinationRef the message-destination-ref object - */ - public void addMessageDestinationRef(final MessageDestinationRef messageDestinationRef) { - messageDestinationRefList.add(messageDestinationRef); - } - - /** - * Add a new persistence-unit-ref element to this object - * @param persistenceUnitRef the persistence-unit-ref object - */ - public void addPersistenceUnitRef(final PersistenceUnitRef persistenceUnitRef) { - persistenceUnitRefList.add(persistenceUnitRef); - } - - // Getters - - /** - * @return the list of all ejb-local-ref elements - */ - public JLinkedList getEjbLocalRefList() { - return ejbLocalRefList; - } - - /** - * @return the list of all ejb-ref elements - */ - public JLinkedList getEjbRefList() { - return ejbRefList; - } - - /** - * @return the list of all env-entry elements - */ - public JLinkedList getEnvEntryList() { - return envEntryList; - } - - /** - * @return the list of all resource-env-ref elements - */ - public JLinkedList getResourceEnvRefList() { - return resourceEnvRefList; - } - - - /** - * @return the list of all resource-ref elements - */ - public JLinkedList getResourceRefList() { - return resourceRefList; - } - - /** - * @return the list of all service-ref elements - */ - public JLinkedList getServiceRefList() { - return serviceRefList; - } - - /** - * @return the list of all messageDestination-ref elements - */ - public JLinkedList getMessageDestinationRefList() { - return messageDestinationRefList; - } - - /** - * @return the list of all persistence-unit-ref elements - */ - public JLinkedList getPersistenceUnitRefList() { - return persistenceUnitRefList; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasEnvironmentElement.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasEnvironmentElement.java deleted file mode 100644 index 6cb0dcc600..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasEnvironmentElement.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines an abstract implementation for all jonas environment element - * (jonas-entity, jonas-session, jonas-web-app, jonas-client, etc.). - * - * @author Florent Benoit - */ -public abstract class AbsJonasEnvironmentElement extends AbsElement implements JonasJndiEnvRefsGroupXml { - - /** - * List of jonas-ejb-ref - */ - private JLinkedList jonasEjbRefList = null; - - /** - * List of jonas-resource-env - */ - private JLinkedList jonasResourceEnvRefList = null; - - /** - * List of jonas-resource - */ - private JLinkedList jonasResourceRefList = null; - - - /** - * List of jonas-service-ref - */ - private JLinkedList jonasServiceRefList = null; - - /** - * List of jonas-message-destination-ref - */ - private JLinkedList jonasMessageDestinationRefList = null; - - /** - * Constructor : build a new object which is common to environment elements - */ - public AbsJonasEnvironmentElement() { - super(); - jonasEjbRefList = new JLinkedList("jonas-ejb-ref"); - jonasResourceEnvRefList = new JLinkedList("jonas-resource-env"); - jonasResourceRefList = new JLinkedList("jonas-resource"); - jonasServiceRefList = new JLinkedList("jonas-service-ref"); - jonasMessageDestinationRefList = new JLinkedList("jonas-message-destination-ref"); - } - - - - // Setters - - /** - * Add a new jonas-ejb-ref element to this object - * @param jonasEjbRef the jonas-ejb-ref object - */ - public void addJonasEjbRef(JonasEjbRef jonasEjbRef) { - jonasEjbRefList.add(jonasEjbRef); - } - - - /** - * Add a new jonas-resource-env element to this object - * @param jonasResourceEnv the jonas-resource-env object - */ - public void addJonasResourceEnv(JonasResourceEnv jonasResourceEnv) { - jonasResourceEnvRefList.add(jonasResourceEnv); - } - - /** - * Add a new jonas-resource element to this object - * @param jonasResource the jonas-resource object - */ - public void addJonasResource(JonasResource jonasResource) { - jonasResourceRefList.add(jonasResource); - } - - /** - * Add a new jonas-service-ref element to this object - * @param jonasServiceRef the jonas-service-ref object - */ - public void addJonasServiceRef(JonasServiceRef jonasServiceRef) { - jonasServiceRefList.add(jonasServiceRef); - } - - - /** - * Add a new jonas-message-destination-ref element to this object - * @param jonasMessageDestinationRef the jonas-message-destination-ref object - */ - public void addJonasMessageDestinationRef(JonasMessageDestinationRef jonasMessageDestinationRef) { - jonasMessageDestinationRefList.add(jonasMessageDestinationRef); - } - - // Getters - - /** - * @return the list of all jonas-ejb-ref elements - */ - public JLinkedList getJonasEjbRefList() { - return jonasEjbRefList; - } - - /** - * @return the list of all jonas-resource-env elements - */ - public JLinkedList getJonasResourceEnvList() { - return jonasResourceEnvRefList; - } - - /** - * @return the list of all jonas-resource elements - */ - public JLinkedList getJonasResourceList() { - return jonasResourceRefList; - } - - - /** - * @return the list of all jonas-service-ref elements - */ - public JLinkedList getJonasServiceRefList() { - return jonasServiceRefList; - } - - /** - * @return the list of all jonas-message-destination-ref elements - */ - public JLinkedList getJonasMessageDestinationRefList() { - return jonasMessageDestinationRefList; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasParam.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasParam.java deleted file mode 100644 index 35579b833b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/AbsJonasParam.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-param - * @author Guillaume Sauthier - */ -public abstract class AbsJonasParam extends AbsElement { - - /** - * Name of this parameter - */ - private String paramName = null; - - /** - * Value of this parameter - */ - private String paramValue = null; - - /** - * Element name - */ - private String elementName = null; - - /** - * Construct a JOnASParam with given Element name. - * @param ename Element name - */ - protected AbsJonasParam(String ename) { - elementName = ename; - } - - // Setters - - /** - * Sets the name - * @param paramName the name to use - */ - public void setParamName(String paramName) { - this.paramName = paramName; - } - - - /** - * Sets the value - * @param paramValue the value - */ - public void setParamValue(String paramValue) { - this.paramValue = paramValue; - } - - // Getters - - - /** - * @return the name of the parameter - */ - public String getParamName() { - return paramName; - } - - - /** - * @return the value of the parameter - */ - public String getParamValue() { - return paramValue; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("<" + elementName + ">\n"); - - indent += 2; - - // name - sb.append(xmlElement(paramName, "param-name", indent)); - - // value - sb.append(xmlElement(paramValue, "param-value", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/DescriptionGroupXml.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/DescriptionGroupXml.java deleted file mode 100644 index 652af9d183..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/DescriptionGroupXml.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.common.xml; - -/** - * This interface provides to the value of Xml element of a DescritionGroup - * @author Philippe Coq - */ - -public interface DescriptionGroupXml { - - /** - * Get the display name of the deployment descriptor. - * @return the display name of the deployment descriptor. - */ - String getDisplayName(); - - /** - * Get the description of the deployment descriptor. - * @return the description of the deployment descriptor. - */ - String getDescription(); - - /** - * Get the icon of the deployment descriptor. - * @return the small-icon of the deployment descriptor. - */ - Icon getIcon(); - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbLocalRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbLocalRef.java deleted file mode 100644 index e34969af33..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbLocalRef.java +++ /dev/null @@ -1,208 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element ejb-local-ref. - * @author Florent Benoit - */ -public class EjbLocalRef extends AbsElement { - - /** - * Description of the ejb-local-ref - */ - private String description = null; - - /** - * Name of this ejb-local-ref - */ - private String ejbRefName = null; - - /** - * Type of this ejb-local-ref - */ - private String ejbRefType = null; - - /** - * Local Home of this ejb-local-ref - */ - private String localHome = null; - - /** - * Local interface of this ejb-local-ref - */ - private String local = null; - - /** - * ejb-link of this ejb-local-ref - */ - private String ejbLink = null; - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - - /** - * Sets the name - * @param ejbRefName the name to use - */ - public void setEjbRefName(String ejbRefName) { - this.ejbRefName = ejbRefName; - } - - - /** - * Sets the type - * @param ejbRefType the type to use - */ - public void setEjbRefType(String ejbRefType) { - this.ejbRefType = ejbRefType; - } - - - /** - * Sets the local home interface - * @param localHome the local home interface to use - */ - public void setLocalHome(String localHome) { - this.localHome = localHome; - } - /** - * Sets the local interface - * @param local the local interface to use - */ - public void setLocal(String local) { - this.local = local; - } - - - /** - * Sets the ejb-link - * @param ejbLink the ejb-link to use - */ - public void setEjbLink(String ejbLink) { - this.ejbLink = ejbLink; - } - - - // Getters - - /** - * @return the description of the ejb-local-ref - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the ejb-local-ref - */ - public String getEjbRefName() { - return ejbRefName; - } - - - /** - * @return the type of the ejb-local-ref - */ - public String getEjbRefType() { - return ejbRefType; - } - - /** - * @return the local home interface of the ejb-local-ref - */ - public String getLocalHome() { - return localHome; - } - - /** - * @return the local interface of the ejb-local-ref - */ - public String getLocal() { - return local; - } - - /** - * @return the ejb-link of the ejb-local-ref - */ - public String getEjbLink() { - return ejbLink; - } - - - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(ejbRefName, "ejb-ref-name", indent)); - - // type - sb.append(xmlElement(ejbRefType, "ejb-ref-type", indent)); - - // local home interface - sb.append(xmlElement(localHome, "local-home", indent)); - - // local interface - sb.append(xmlElement(local, "local", indent)); - - // ejb-link - sb.append(xmlElement(ejbLink, "ejb-link", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbRef.java deleted file mode 100644 index d17e9c06cc..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EjbRef.java +++ /dev/null @@ -1,208 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element ejb-ref. - * @author Florent Benoit - */ -public class EjbRef extends AbsElement { - - /** - * Description of the ejb-ref - */ - private String description = null; - - /** - * Name of this ejb-ref - */ - private String ejbRefName = null; - - /** - * Type of this ejb-ref - */ - private String ejbRefType = null; - - /** - * Home of this ejb-ref - */ - private String home = null; - - /** - * Remote of this ejb-ref - */ - private String remote = null; - - /** - * ejb-link of this ejb-ref - */ - private String ejbLink = null; - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - - /** - * Sets the name - * @param ejbRefName the name to use - */ - public void setEjbRefName(String ejbRefName) { - this.ejbRefName = ejbRefName; - } - - - /** - * Sets the type - * @param ejbRefType the type to use - */ - public void setEjbRefType(String ejbRefType) { - this.ejbRefType = ejbRefType; - } - - - /** - * Sets the home interface - * @param home the home interface to use - */ - public void setHome(String home) { - this.home = home; - } - /** - * Sets the remote interface - * @param remote the remote interface to use - */ - public void setRemote(String remote) { - this.remote = remote; - } - - - /** - * Sets the ejb-link - * @param ejbLink the ejb-link to use - */ - public void setEjbLink(String ejbLink) { - this.ejbLink = ejbLink; - } - - - // Getters - - /** - * @return the description of the ejb-ref - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the ejb-ref - */ - public String getEjbRefName() { - return ejbRefName; - } - - - /** - * @return the type of the ejb-ref - */ - public String getEjbRefType() { - return ejbRefType; - } - - /** - * @return the home interface of the ejb-ref - */ - public String getHome() { - return home; - } - - /** - * @return the remote interface of the ejb-ref - */ - public String getRemote() { - return remote; - } - - /** - * @return the ejb-link of the ejb-ref - */ - public String getEjbLink() { - return ejbLink; - } - - - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(ejbRefName, "ejb-ref-name", indent)); - - // type - sb.append(xmlElement(ejbRefType, "ejb-ref-type", indent)); - - // home interface - sb.append(xmlElement(home, "home", indent)); - - // remote interface - sb.append(xmlElement(remote, "remote", indent)); - - // ejb-link - sb.append(xmlElement(ejbLink, "ejb-link", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Element.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Element.java deleted file mode 100644 index d6c5420e68..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Element.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -import java.io.Serializable; - -/** - * This class defines the interface that all Element objects must use. - * These elements are used by Digester during the xml parsing - * @author Florent Benoit - */ -public interface Element extends Serializable { - - - /** - * Represents this element by it's XML description - * @param indent use this indent for prexifing XML representation - * @return the XML description of this object - */ - String toXML(int indent); - - - /** - * Represents this element by it's XML description - * Use a default indent set to 0 - * @return the XML description of this object - */ - String toXML(); - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EnvEntry.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EnvEntry.java deleted file mode 100644 index 256ba1d42b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/EnvEntry.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element env-entry. - * @author Florent Benoit - */ -public class EnvEntry extends AbsElement { - - /** - * Description of the env-entry - */ - private String description = null; - - /** - * Name of the env-entry - */ - private String envEntryName = null; - - /** - * Value of the env-entry - */ - private String envEntryValue = null; - - /** - * Type of the env-entry - */ - private String envEntryType = null; - - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(final String description) { - this.description = description; - } - - /** - * Sets the name - * @param envEntryName the name to use - */ - public void setEnvEntryName(final String envEntryName) { - this.envEntryName = envEntryName; - } - - /** - * Sets the value - * @param envEntryValue the value to use - */ - public void setEnvEntryValue(final String envEntryValue) { - this.envEntryValue = envEntryValue; - } - - /** - * Sets the type - * @param envEntryType the type to use - */ - public void setEnvEntryType(final String envEntryType) { - this.envEntryType = envEntryType; - } - - - - // Getters - - /** - * @return the description of the env-entry - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the env-entry - */ - public String getEnvEntryName() { - return envEntryName; - } - - - /** - * @return the value of the env-entry - */ - public String getEnvEntryValue() { - return envEntryValue; - } - - - /** - * @return the type of the env-entry - */ - public String getEnvEntryType() { - return envEntryType; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - @Override - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(envEntryName, "env-entry-name", indent)); - - // type - sb.append(xmlElement(envEntryType, "env-entry-type", indent)); - - // value - sb.append(xmlElement(envEntryValue, "env-entry-value", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Handler.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Handler.java deleted file mode 100644 index 92c588d206..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Handler.java +++ /dev/null @@ -1,211 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element handler. - * @author Florent Benoit - */ -public class Handler extends AbsElement { - - /** - * Name of the handler - */ - private String handlerName = null; - - /** - * List of elements init-param - */ - private JLinkedList initParamList = null; - - /** - * List of elements soap-header - */ - private JLinkedList soapHeaderList = null; - - /** - * List of elements soap-role - */ - private JLinkedList soapRoleList = null; - - /** - * List of elements port-name - */ - private JLinkedList portNameList = null; - - - /** - * Class of the handler - */ - private String handlerClass = null; - - /** - * Constructor : build a new Handler object - */ - public Handler() { - super(); - initParamList = new JLinkedList("init-param"); - soapHeaderList = new JLinkedList("soap-header"); - soapRoleList = new JLinkedList("soap-role"); - portNameList = new JLinkedList("port-name"); - } - - - // Setters - - /** - * Sets the name - * @param handlerName the name to use - */ - public void setHandlerName(String handlerName) { - this.handlerName = handlerName; - } - - /** - * Add a new port-name element to this object - * @param portName the port-name object - */ - public void addPortName(String portName) { - portNameList.add(portName); - } - - - /** - * Add a new soap-role element to this object - * @param soapRole the soap-role object - */ - public void addSoapRole(String soapRole) { - soapRoleList.add(soapRole); - } - - /** - * Add a new soap-header element to this object - * @param soapHeader the soap-header object - */ - public void addSoapHeader(Qname soapHeader) { - soapHeaderList.add(soapHeader); - } - - /** - * Add a new init-param element to this object - * @param initParam the init-param object - */ - public void addInitParam(InitParam initParam) { - initParamList.add(initParam); - } - - /** - * Sets the class - * @param handlerClass the class to use - */ - public void setHandlerClass(String handlerClass) { - this.handlerClass = handlerClass; - } - - // Getters - - /** - * @return the name of the handler - */ - public String getHandlerName() { - return handlerName; - } - - /** - * @return the class of the handler - */ - public String getHandlerClass() { - return handlerClass; - } - - /** - * @return the list of all init-param elements - */ - public JLinkedList getInitParamList() { - return initParamList; - } - - /** - * @return the list of all soap-header elements - */ - public JLinkedList getSoapHeaderList() { - return soapHeaderList; - } - - /** - * @return the list of all soap-role elements - */ - public JLinkedList getSoapRoleList() { - return soapRoleList; - } - - /** - * @return the list of all port-name elements - */ - public JLinkedList getPortNameList() { - return portNameList; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // handler-name - sb.append(xmlElement(handlerName, "handler-name", indent)); - - // handler-class - sb.append(xmlElement(handlerClass, "handler-class", indent)); - - // init-param - sb.append(initParamList.toXML(indent)); - - // soap-header - sb.append(soapHeaderList.toXML(indent)); - - // soap-role - sb.append(soapRoleList.toXML(indent)); - - // port-name - sb.append(portNameList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Icon.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Icon.java deleted file mode 100644 index 8f8833d2f3..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Icon.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element icon. - * @author Florent Benoit - */ -public class Icon extends AbsElement { - - /** - * Name of the small icon - */ - private String smallIcon = null; - - /** - * Name of the large icon - */ - private String largeIcon = null; - - - // Setters - - /** - * Sets the small icon name - * @param smallIcon the name of the file for small GIF or JPEG icon image - */ - public void setSmallIcon(String smallIcon) { - this.smallIcon = smallIcon; - } - - - /** - * Sets the large icon name - * @param largeIcon the name of the file for large GIF or JPEG icon image - */ - public void setLargeIcon(String largeIcon) { - this.largeIcon = largeIcon; - } - - - - - // Getters - - /** - * @return the small icon name - */ - public String getSmallIcon() { - return smallIcon; - } - - - /** - * @return the large icon name - */ - public String getLargeIcon() { - return largeIcon; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // small-icon - sb.append(xmlElement(smallIcon, "small-icon", indent)); - - // large-icon - sb.append(xmlElement(largeIcon, "large-icon", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/InitParam.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/InitParam.java deleted file mode 100644 index d0ffdfafad..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/InitParam.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element init-param - * @author Florent Benoit - */ -public class InitParam extends AbsElement { - - /** - * Name of this parameter - */ - private String paramName = null; - - /** - * Value of this parameter - */ - private String paramValue = null; - - /** - * Description of the ejb-ref - */ - private String description = null; - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Sets the name - * @param paramName the name to use - */ - public void setParamName(String paramName) { - this.paramName = paramName; - } - - - /** - * Sets the value - * @param paramValue the value - */ - public void setParamValue(String paramValue) { - this.paramValue = paramValue; - } - - - - // Getters - - - /** - * @return the name of the parameter - */ - public String getParamName() { - return paramName; - } - - - /** - * @return the value of the parameter - */ - public String getParamValue() { - return paramValue; - } - - /** - * @return the description of the parameter - */ - public String getDescription() { - return description; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(paramName, "param-name", indent)); - - // value - sb.append(xmlElement(paramValue, "param-value", indent)); - - // value - sb.append(xmlElement(description, "description", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JLinkedList.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JLinkedList.java deleted file mode 100644 index d2ecabd3e5..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JLinkedList.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -import java.util.Iterator; -import java.util.LinkedList; - -/** - * This class defines a linked list with the ability to display its content in XML. - * @author Florent Benoit - */ -public class JLinkedList extends LinkedList { - - - /** - * serial ID. - */ - private static final long serialVersionUID = 1L; - /** - * Tag of the root element. - */ - private String tag = null; - - - /** - * Constructor with a specified tag - * @param tag of the root element (use for xml representation) - */ - public JLinkedList(final String tag) { - super(); - this.tag = tag; - } - - - /** - * Represents this element by it's XML description. - * Use a default indent set to 0. - * @return the XML description of this object. - */ - public String toXML() { - return toXML(0); - } - - /** - * Return the representation of this element. - * Use the XML representation of the object for the toString() method. - * @return the XML description of this object. - */ - public String toString() { - return toXML(); - } - - - /** - * Return indent spaces. - * @param indent number of indentation. - * @return the indent space string. - */ - private String indent(final int indent) { - String txt = ""; - for (int i = 0; i < indent; i++) { - txt += " "; - } - return txt; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - @SuppressWarnings("unchecked") - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - // Only if there are elements - if (this.size() > 0) { - for (Iterator i = this.iterator(); i.hasNext();) { - Object o = i.next(); - // Element or String ? - if (o instanceof Element) { - sb.append(((Element) o).toXML(indent)); - } else { - sb.append(indent(indent)); - sb.append("<"); - sb.append(tag); - sb.append(">"); - sb.append(o); - sb.append("\n"); - } - } - } - return sb.toString(); - } - - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JndiEnvRefsGroupXml.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JndiEnvRefsGroupXml.java deleted file mode 100644 index 3299d0baf6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JndiEnvRefsGroupXml.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - - -/** - * This interface provides to the value of Xml elements of a JndiEnvRefsGroup - * @author Philippe Coq - */ - -public interface JndiEnvRefsGroupXml extends DescriptionGroupXml { - /** - * @return the list of all ejb-local-ref elements - */ - JLinkedList getEjbLocalRefList(); - - /** - * @return the list of all ejb-ref elements - */ - JLinkedList getEjbRefList(); - - /** - * @return the list of all env-entry elements - */ - JLinkedList getEnvEntryList(); - - /** - * @return the list of all resource-env-ref elements - */ - JLinkedList getResourceEnvRefList(); - - /** - * @return the list of all resource-ref elements - */ - JLinkedList getResourceRefList(); - - /** - * @return the list of all service-ref elements - */ - JLinkedList getServiceRefList(); - - /** - * @return the list of all message-destination-ref elements - */ - JLinkedList getMessageDestinationRefList(); - - /** - * @return the list of all persistence-unit-ref elements - */ - JLinkedList getPersistenceUnitRefList(); -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasCallProperty.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasCallProperty.java deleted file mode 100644 index a2300f5882..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasCallProperty.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-init-param - * @author Florent Benoit - */ -public class JonasCallProperty extends AbsJonasParam { - - /** - * Default constructor - */ - public JonasCallProperty() { - super("jonas-call-property"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasEjbRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasEjbRef.java deleted file mode 100644 index 2b17fe3d49..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasEjbRef.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-ejb-ref. - * @author Florent Benoit - */ -public class JonasEjbRef extends AbsElement { - - /** - * Name of this jonas-ejb-ref - */ - private String ejbRefName = null; - - /** - * jndi name of this jonas-ejb-ref - */ - private String jndiName = null; - - - // Setters - - /** - * Sets the name - * @param ejbRefName the name to use - */ - public void setEjbRefName(String ejbRefName) { - this.ejbRefName = ejbRefName; - } - - - /** - * Sets the jndi name - * @param jndiName the jndi-name to use - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - - // Getters - - - /** - * @return the name of the jonas-ejb-ref - */ - public String getEjbRefName() { - return ejbRefName; - } - - - /** - * @return the jndi-name of the jonas-ejb-ref - */ - public String getJndiName() { - return jndiName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(ejbRefName, "ejb-ref-name", indent)); - - // jndi-name - sb.append(xmlElement(jndiName, "jndi-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasInitParam.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasInitParam.java deleted file mode 100644 index e76192e9bc..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasInitParam.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-init-param - * @author Florent Benoit - */ -public class JonasInitParam extends AbsJonasParam { - - /** - * Default constructor - */ - public JonasInitParam() { - super("jonas-init-param"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasJndiEnvRefsGroupXml.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasJndiEnvRefsGroupXml.java deleted file mode 100644 index 80a10d32d9..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasJndiEnvRefsGroupXml.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.common.xml; - - -/** - * This interface provides to the value of Xml elements of a JonasJndiEnvRefsGroup - * @author Philippe Coq - */ - -public interface JonasJndiEnvRefsGroupXml { - - /** - * @return the list of all jonas-ejb-ref elements - */ - JLinkedList getJonasEjbRefList(); - - - /** - * @return the list of all jonas-resource-env elements - */ - JLinkedList getJonasResourceEnvList(); - - - /** - * @return the list of all jonas-resource elements - */ - JLinkedList getJonasResourceList(); - - - /** - * @return the list of all jonas-service elements - */ - JLinkedList getJonasServiceRefList(); - - /** - * @return the list of all jonas-message-destination-ref elements - */ - JLinkedList getJonasMessageDestinationRefList(); - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestination.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestination.java deleted file mode 100644 index 1f4208033a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestination.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-message-destination. - * @author Eric Hardesty - */ -public class JonasMessageDestination extends AbsElement { - - /** - * Name of this jonas-message-destination - */ - private String messageDestinationName = null; - - /** - * jndi name of this jonas-message-destination - */ - private String jndiName = null; - - - // Setters - - /** - * Sets the name - * @param name the name to use - */ - public void setMessageDestinationName(String name) { - this.messageDestinationName = name; - } - - - /** - * Sets the jndi name - * @param jndiName the jndi-name to use - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - - // Getters - - - /** - * @return the name of the jonas-message-destination - */ - public String getMessageDestinationName() { - return messageDestinationName; - } - - - /** - * @return the jndi-name of the jonas-message-destination - */ - public String getJndiName() { - return jndiName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(messageDestinationName, "message-destination-name", indent)); - - // jndi-name - sb.append(xmlElement(jndiName, "jndi-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestinationRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestinationRef.java deleted file mode 100644 index 75e0f45c91..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasMessageDestinationRef.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-message-destination-ref. - * @author Eric Hardesty - */ -public class JonasMessageDestinationRef extends AbsElement { - - /** - * Name of this jonas-message-destination-ref - */ - private String messageDestinationRefName = null; - - /** - * jndi name of this jonas-message-destination-ref - */ - private String jndiName = null; - - - // Setters - - /** - * Sets the name - * @param name the name to use - */ - public void setMessageDestinationRefName(String name) { - this.messageDestinationRefName = name; - } - - - /** - * Sets the jndi name - * @param jndiName the jndi-name to use - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - - // Getters - - - /** - * @return the name of the jonas-message-destination-ref - */ - public String getMessageDestinationRefName() { - return messageDestinationRefName; - } - - - /** - * @return the jndi-name of the jonas-message-destination-ref - */ - public String getJndiName() { - return jndiName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(messageDestinationRefName, "message-destination-ref-name", indent)); - - // jndi-name - sb.append(xmlElement(jndiName, "jndi-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasParam.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasParam.java deleted file mode 100644 index db2d23f78c..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasParam.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-init-param - * @author Florent Benoit - */ -public class JonasParam extends AbsJonasParam { - - /** - * Default constructor - */ - public JonasParam() { - super("jonas-param"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasPortComponentRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasPortComponentRef.java deleted file mode 100644 index 34b4caf133..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasPortComponentRef.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - - - -/** - * This class defines the implementation of the element jonas-port-component-ref. - * @author Florent Benoit - */ -public class JonasPortComponentRef extends AbsElement { - - /** - * service endpoint interface - */ - private String serviceEndpointInterface = null; - - /** - * wsdl port - */ - private Qname wsdlPort = null; - - /** - * jonas-stub-property list - */ - private JLinkedList jonasStubPropList = null; - - /** - * jonas-call-property list - */ - private JLinkedList jonasCallPropList = null; - - /** - * Constructor : build a new JonasServiceRef object - */ - public JonasPortComponentRef() { - jonasStubPropList = new JLinkedList("jonas-stub-property"); - jonasCallPropList = new JLinkedList("jonas-call-property"); - } - - - // Setters - - - /** - * Sets the wsdl port QName of the jonas-port-component-ref - * @param wsdlPort wsdl port QName of the jonas-port-component-ref - */ - public void setWsdlPort(Qname wsdlPort) { - this.wsdlPort = wsdlPort; - } - - /** - * Sets the service endpoint interface of the port-component-ref - * @param serviceEndpointInterface service endpoint interface of the port-component-ref - */ - public void setServiceEndpointInterface(String serviceEndpointInterface) { - this.serviceEndpointInterface = serviceEndpointInterface; - } - - /** - * Add a parameter - * @param jonasCallProperty the JonasCallProperty object to add to our list - */ - public void addJonasCallProperty(JonasCallProperty jonasCallProperty) { - jonasCallPropList.add(jonasCallProperty); - } - - /** - * Add a parameter - * @param jonasStubProperty the JonasStubProperty object to add to our list - */ - public void addJonasStubProperty(JonasStubProperty jonasStubProperty) { - jonasStubPropList.add(jonasStubProperty); - } - - - // Getters - - /** - * @return the service endpoint interface of the port-component-ref - */ - public String getServiceEndpointInterface() { - return serviceEndpointInterface; - } - - /** - * @return the wsdl port QName of the jonas-port-component-ref - */ - public Qname getWsdlPort() { - return wsdlPort; - } - - /** - * @return the list of jonas-call-property - */ - public JLinkedList getJonasCallPropertyList() { - return jonasCallPropList; - } - - /** - * @return the list of jonas-stub-property - */ - public JLinkedList getJonasStubPropertyList() { - return jonasStubPropList; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // service-endpoint-interface - if (serviceEndpointInterface != null) { - sb.append(xmlElement(serviceEndpointInterface, "service-endpoint-interface", indent)); - } - - // wsdl-port - if (wsdlPort != null) { - sb.append(wsdlPort.toXML(indent)); - } - - // jonas-stub-property - sb.append(jonasStubPropList.toXML(indent)); - - // jonas-call-property - sb.append(jonasCallPropList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResource.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResource.java deleted file mode 100644 index 15619a7c3e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResource.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-resource. - * @author Florent Benoit - */ -public class JonasResource extends AbsElement { - - /** - * Name of this jonas-resource - */ - private String resRefName = null; - - /** - * jndi name of this jonas-resource - */ - private String jndiName = null; - - - // Setters - - /** - * Sets the name - * @param resRefName the name to use - */ - public void setResRefName(String resRefName) { - this.resRefName = resRefName; - } - - - /** - * Sets the jndi name - * @param jndiName the jndi-name to use - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - - // Getters - - - /** - * @return the name of the jonas-resource - */ - public String getResRefName() { - return resRefName; - } - - - /** - * @return the jndi-name of the jonas-resource - */ - public String getJndiName() { - return jndiName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(resRefName, "res-ref-name", indent)); - - // jndi-name - sb.append(xmlElement(jndiName, "jndi-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResourceEnv.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResourceEnv.java deleted file mode 100644 index bdbcb5d285..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasResourceEnv.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-resource-env. - * @author Florent Benoit - */ -public class JonasResourceEnv extends AbsElement { - - /** - * Name of this jonas-resource-env - */ - private String resourceEnvRefName = null; - - /** - * jndi name of this jonas-resource-env - */ - private String jndiName = null; - - - // Setters - - /** - * Sets the name - * @param resourceEnvRefName the name to use - */ - public void setResourceEnvRefName(String resourceEnvRefName) { - this.resourceEnvRefName = resourceEnvRefName; - } - - - /** - * Sets the jndi name - * @param jndiName the jndi-name to use - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } - - - - // Getters - - - /** - * @return the name of the jonas-resource-env - */ - public String getResourceEnvRefName() { - return resourceEnvRefName; - } - - - /** - * @return the jndi-name of the jonas-resource-env - */ - public String getJndiName() { - return jndiName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(resourceEnvRefName, "resource-env-ref-name", indent)); - - // jndi-name - sb.append(xmlElement(jndiName, "jndi-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasServiceRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasServiceRef.java deleted file mode 100644 index 13ff3279b3..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasServiceRef.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-service-ref. - * @author Florent Benoit - */ -public class JonasServiceRef extends AbsElement { - - /** - * Name of this jonas-service-ref - */ - private String serviceRefName = null; - - /** - * URL pointing to an alternate WSDL Definition - */ - private String altWsdl = null; - - /** - * List of init parameters - */ - private JLinkedList jonasInitParamList = null; - - /** - * List of jonas-port-component-ref - */ - private JLinkedList jonasPortComponentRefList = null; - - /** - * Constructor : build a new JonasServiceRef object - */ - public JonasServiceRef() { - jonasInitParamList = new JLinkedList("jonas-init-param"); - jonasPortComponentRefList = new JLinkedList("jonas-port-component-ref"); - } - - - - // Setters - - /** - * Sets the name - * @param serviceRefName the name to use - */ - public void setServiceRefName(String serviceRefName) { - this.serviceRefName = serviceRefName; - } - - - /** - * Add a parameter - * @param jonasInitParam the JonasInitParam object to add to our list - */ - public void addJonasInitParam(JonasInitParam jonasInitParam) { - jonasInitParamList.add(jonasInitParam); - } - - /** - * Add a parameter - * @param jonasPortComponentRef the JonasPortComponentRef object to add to our list - */ - public void addJonasPortComponentRef(JonasPortComponentRef jonasPortComponentRef) { - jonasPortComponentRefList.add(jonasPortComponentRef); - } - - /** - * @param altWsdl The altWsdl to set. - */ - public void setAltWsdl(String altWsdl) { - this.altWsdl = altWsdl; - } - - // Getters - - /** - * @return the name of the service-ref - */ - public String getServiceRefName() { - return serviceRefName; - } - - - /** - * @return the list of init parameters - */ - public JLinkedList getJonasInitParamList() { - return jonasInitParamList; - } - - /** - * @return the list of jonas port component ref - */ - public JLinkedList getJonasPortComponentRefList() { - return jonasPortComponentRefList; - } - - /** - * @return Returns the altWsdl. - */ - public String getAltWsdl() { - return altWsdl; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(serviceRefName, "service-ref-name", indent)); - - // jonas port component ref - sb.append(jonasPortComponentRefList.toXML(indent)); - - // alt-wsdl - sb.append(xmlElement(altWsdl, "alt-wsdl", indent)); - - // init parameters - sb.append(jonasInitParamList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasStubProperty.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasStubProperty.java deleted file mode 100644 index 744c64e3c5..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/JonasStubProperty.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element jonas-init-param - * @author Florent Benoit - */ -public class JonasStubProperty extends AbsJonasParam { - - /** - * Default constructor - */ - public JonasStubProperty() { - super("jonas-stub-property"); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestination.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestination.java deleted file mode 100644 index ed4707e54d..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestination.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element message-destination. - * @author Eric Hardesty - */ -public class MessageDestination extends AbsElement { - - /** - * Name of this message-destination - */ - private String messageDestinationName = null; - - - // Setters - - /** - * Sets the name - * @param name the name to use - */ - public void setMessageDestinationName(String name) { - this.messageDestinationName = name; - } - - - // Getters - - /** - * @return the name of the jonas-message-destination - */ - public String getMessageDestinationName() { - return messageDestinationName; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - sb.append(xmlElement(messageDestinationName, "message-destination-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestinationRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestinationRef.java deleted file mode 100644 index f72f0c522b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/MessageDestinationRef.java +++ /dev/null @@ -1,184 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Eric Hardesty - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element message-destination-ref. - * @author Eric Hardesty - */ -public class MessageDestinationRef extends AbsElement { - - /** - * Description of the message-destination-ref - */ - private String description = null; - - /** - * Name of this message-destination-ref - */ - private String messageDestinationRefName = null; - - /** - * Type of this message-destination-ref - */ - private String messageDestinationType = null; - - /** - * Usage of this message-destination-ref - */ - private String messageDestinationUsage = null; - - /** - * Link of this message-destination-ref - */ - private String messageDestinationLink = null; - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - - /** - * Sets the name - * @param refName the name to use - */ - public void setMessageDestinationRefName(String refName) { - this.messageDestinationRefName = refName; - } - - - /** - * Sets the type - * @param type the type to use - */ - public void setMessageDestinationType(String type) { - this.messageDestinationType = type; - } - - - /** - * Sets the usage - * @param usage the usage to use - */ - public void setMessageDestinationUsage(String usage) { - this.messageDestinationUsage = usage; - } - - - /** - * Sets the link - * @param link the link to use - */ - public void setMessageDestinationLink(String link) { - this.messageDestinationLink = link; - } - - - // Getters - - /** - * @return the description of the messageDestination-ref - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the messageDestination-ref - */ - public String getMessageDestinationRefName() { - return messageDestinationRefName; - } - - - /** - * @return the type of the messageDestination-ref - */ - public String getMessageDestinationType() { - return messageDestinationType; - } - - /** - * @return the usage of the messageDestination-ref - */ - public String getMessageDestinationUsage() { - return messageDestinationUsage; - } - - /** - * @return the link of the messageDestination-ref - */ - public String getMessageDestinationLink() { - return messageDestinationLink; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(messageDestinationRefName, "message-destination-ref-name", indent)); - - // type - sb.append(xmlElement(messageDestinationType, "message-destination-type", indent)); - - // usage - sb.append(xmlElement(messageDestinationUsage, "message-destination-usage", indent)); - - // link - sb.append(xmlElement(messageDestinationLink, "message-destination-link", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PersistenceUnitRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PersistenceUnitRef.java deleted file mode 100644 index 115f7943d2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PersistenceUnitRef.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2008 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the persistence-unit-ref XML element. - * @author Adriana Danes - */ -public class PersistenceUnitRef extends AbsElement { - /** - * Description of the persistence-unit-ref element. - */ - private String description = null; - - /** - * Name of the persistence-unit-ref element. - */ - private String persistenceUnitRefName = null; - - /** - * Optional persistence unit name. - */ - private String persistenceUnitName = null; - - public String getDescription() { - return description; - } - - public void setDescription(final String description) { - this.description = description; - } - - public String getPersistenceUnitRefName() { - return persistenceUnitRefName; - } - - public void setPersistenceUnitRefName(final String persistenceUnitRefName) { - this.persistenceUnitRefName = persistenceUnitRefName; - } - - public String getPersistenceUnitName() { - return persistenceUnitName; - } - - public void setPersistenceUnitName(final String persistenceUnitName) { - this.persistenceUnitName = persistenceUnitName; - } - /** - * Represents this element by it's XML description. - * @param indent use this indent for prefixing XML representation. - * @return the XML description of this object. - */ - @Override - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // peristence unit ref name - sb.append(xmlElement(persistenceUnitRefName, "persistence-unit-ref-name", indent)); - - // peristence unit name - sb.append(xmlElement(persistenceUnitName, "persistence-unit-name", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PortComponentRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PortComponentRef.java deleted file mode 100644 index 1a0927e92c..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/PortComponentRef.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - - -/** - * This class defines the implementation of the element port-component-ref. - * @author Florent Benoit - */ -public class PortComponentRef extends AbsElement { - - /** - * service endpoint interface - */ - private String serviceEndpointInterface = null; - - /** - * port component link - */ - private String portComponentLink = null; - - - // Setters - - - /** - * Sets the service endpoint interface of the port-component-ref - * @param serviceEndpointInterface service endpoint interface of the port-component-ref - */ - public void setServiceEndpointInterface(String serviceEndpointInterface) { - this.serviceEndpointInterface = serviceEndpointInterface; - } - - - /** - * Sets the port component link of the port-component-ref - * @param portComponentLink port component link of the port-component-ref - */ - public void setPortComponentLink(String portComponentLink) { - this.portComponentLink = portComponentLink; - } - - - // Getters - - /** - * @return the service endpoint interface of the port-component-ref - */ - public String getServiceEndpointInterface() { - return serviceEndpointInterface; - } - - /** - * @return the port component link of the port-component-ref - */ - public String getPortComponentLink() { - return portComponentLink; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // service-endpoint-interface - sb.append(xmlElement(serviceEndpointInterface, "service-endpoint-interface", indent)); - - // port-component-link - sb.append(xmlElement(portComponentLink, "port-component-link", indent)); - - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Qname.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Qname.java deleted file mode 100644 index 0374970318..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/Qname.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -import javax.xml.namespace.QName; - -/** - * This class defines an implementation for a QName - * It is use by Soap-Header or Service-qname - * @author Florent Benoit - */ -public class Qname extends AbsElement { - - /** - * Name of the element - */ - private String name = null; - - /** - * Internal QName - */ - private QName qName = null; - - - /** - * Constructor : build a new object - */ - public Qname() { - super(); - } - - - // Setters - - /** - * Sets the QName of this object - * @param qName QName of this object - */ - public void setQName(QName qName) { - this.qName = qName; - } - - /** - * Sets the Name of this object - * @param name name of this object - */ - public void setName(String name) { - this.name = name; - } - - // Getters - - /** - * @return the QName of this object - */ - public QName getQName() { - return qName; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - //String prefix = qName.getPrefix(); - String prefix = "pr"; - - if (qName == null) { - return ""; - } - - String namespaceURI = qName.getNamespaceURI(); - String localPart = qName.getLocalPart(); - - - sb.append("<"); - sb.append(name); - sb.append(" xmlns:"); - sb.append(prefix); - sb.append("=\""); - sb.append(namespaceURI); - sb.append("\">"); - sb.append(prefix); - sb.append(":"); - sb.append(localPart); - sb.append("\n"); - - return sb.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceEnvRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceEnvRef.java deleted file mode 100644 index 084df7411f..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceEnvRef.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element resource-env-ref. - * @author Florent Benoit - */ -public class ResourceEnvRef extends AbsElement { - - /** - * Description of the resource-env-ref - */ - private String description = null; - - /** - * Name of this resource-env-ref - */ - private String resourceEnvRefName = null; - - /** - * Type of this resource-env-ref - */ - private String resourceEnvRefType = null; - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - - /** - * Sets the name - * @param resourceEnvRefName the name to use - */ - public void setResourceEnvRefName(String resourceEnvRefName) { - this.resourceEnvRefName = resourceEnvRefName; - } - - - /** - * Sets the type - * @param resourceEnvRefType the type to use - */ - public void setResourceEnvRefType(String resourceEnvRefType) { - this.resourceEnvRefType = resourceEnvRefType; - } - - - - // Getters - - /** - * @return the description of the resource-env-ref - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the resource-env-ref - */ - public String getResourceEnvRefName() { - return resourceEnvRefName; - } - - - /** - * @return the type of the resource-env-ref - */ - public String getResourceEnvRefType() { - return resourceEnvRefType; - } - - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(resourceEnvRefName, "resource-env-ref-name", indent)); - - // type - sb.append(xmlElement(resourceEnvRefType, "resource-env-ref-type", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceRef.java deleted file mode 100644 index 2ebb3dde23..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ResourceRef.java +++ /dev/null @@ -1,188 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element resource-ref. - * @author Florent Benoit - */ -public class ResourceRef extends AbsElement { - - /** - * Description of the resource-ref - */ - private String description = null; - - /** - * Name of this resource-ref - */ - private String resRefName = null; - - /** - * Type of this resource-ref - */ - private String resType = null; - - /** - * Auth of this resource-ref - */ - private String resAuth = null; - - /** - * Sharing-scope of this resource-ref - */ - private String resSharingScope = null; - - - - // Setters - - /** - * Sets the description - * @param description the description to use - */ - public void setDescription(String description) { - this.description = description; - } - - - /** - * Sets the name - * @param resRefName the name to use - */ - public void setResRefName(String resRefName) { - this.resRefName = resRefName; - } - - - /** - * Sets the type - * @param resType the type to use - */ - public void setResType(String resType) { - this.resType = resType; - } - - - /** - * Sets the auth - * @param resAuth the auth to use - */ - public void setResAuth(String resAuth) { - this.resAuth = resAuth; - } - - - /** - * Sets the sharing-scope - * @param resSharingScope the sharing-scope to use - */ - public void setResSharingScope(String resSharingScope) { - this.resSharingScope = resSharingScope; - } - - - - // Getters - - /** - * @return the description of the resource-ref - */ - public String getDescription() { - return description; - } - - - /** - * @return the name of the resource-ref - */ - public String getResRefName() { - return resRefName; - } - - - /** - * @return the type of the resource-ref - */ - public String getResType() { - return resType; - } - - - /** - * @return the auth of the resource-ref - */ - public String getResAuth() { - return resAuth; - } - - - /** - * @return the sharing-scope of the resource-ref - */ - public String getResSharingScope() { - return resSharingScope; - } - - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // Description - sb.append(xmlElement(description, "description", indent)); - - // name - sb.append(xmlElement(resRefName, "res-ref-name", indent)); - - // type - sb.append(xmlElement(resType, "res-type", indent)); - - // auth - sb.append(xmlElement(resAuth, "res-auth", indent)); - - // sharing-scope - sb.append(xmlElement(resSharingScope, "res-sharing-scope", indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/RunAs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/RunAs.java deleted file mode 100644 index 0e02be511e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/RunAs.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element run-as - * - * @author JOnAS team - */ - -public class RunAs extends AbsElement { - - /** - * description - */ - private String description = null; - - /** - * role-name - */ - private String roleName = null; - - - /** - * Constructor - */ - public RunAs() { - super(); - } - - /** - * Gets the description - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Gets the role-name - * @return the role-name - */ - public String getRoleName() { - return roleName; - } - - /** - * Set the role-name - * @param roleName roleName - */ - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // description - sb.append(xmlElement(description, "description", indent)); - // role-name - sb.append(xmlElement(roleName, "role-name", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRole.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRole.java deleted file mode 100644 index 75e849af97..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRole.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element security-role - * - * @author JOnAS team - */ - -public class SecurityRole extends AbsElement { - - /** - * description - */ - private String description = null; - - /** - * role-name - */ - private String roleName = null; - - - /** - * Constructor - */ - public SecurityRole() { - super(); - } - - /** - * Gets the description - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Gets the role-name - * @return the role-name - */ - public String getRoleName() { - return roleName; - } - - /** - * Set the role-name - * @param roleName roleName - */ - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // description - sb.append(xmlElement(description, "description", indent)); - // role-name - sb.append(xmlElement(roleName, "role-name", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRoleRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRoleRef.java deleted file mode 100644 index a6e0d9f935..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/SecurityRoleRef.java +++ /dev/null @@ -1,132 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element security-role-ref - * - * @author JOnAS team - */ - -public class SecurityRoleRef extends AbsElement { - - /** - * description - */ - private String description = null; - - /** - * role-name - */ - private String roleName = null; - - /** - * role-link - */ - private String roleLink = null; - - - /** - * Constructor - */ - public SecurityRoleRef() { - super(); - } - - /** - * Gets the description - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Gets the role-name - * @return the role-name - */ - public String getRoleName() { - return roleName; - } - - /** - * Set the role-name - * @param roleName roleName - */ - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - /** - * Gets the role-link - * @return the role-link - */ - public String getRoleLink() { - return roleLink; - } - - /** - * Set the role-link - * @param roleLink roleLink - */ - public void setRoleLink(String roleLink) { - this.roleLink = roleLink; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // description - sb.append(xmlElement(description, "description", indent)); - // role-name - sb.append(xmlElement(roleName, "role-name", indent)); - // role-link - sb.append(xmlElement(roleLink, "role-link", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ServiceRef.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ServiceRef.java deleted file mode 100644 index 7976582ce1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/ServiceRef.java +++ /dev/null @@ -1,241 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - -/** - * This class defines the implementation of the element service-ref. - * @author Florent Benoit - */ -public class ServiceRef extends AbsElement { - - /** - * Service name - */ - private String serviceRefName = null; - - - /** - * Service Interface - */ - private String serviceInterface = null; - - /** - * Mapping jaxrpc - */ - private String jaxrpcMappingFile = null; - - /** - * WSDL file - */ - private String wsdlFile = null; - - - /** - * Service-qname element - */ - private Qname serviceQname = null; - - /** - * List of elements port-component-ref - */ - private JLinkedList portComponentRefList = null; - - - /** - * List of elements handler - */ - private JLinkedList handlerList = null; - - - /** - * Constructor : build a new ServiceRef object - */ - public ServiceRef() { - super(); - portComponentRefList = new JLinkedList("port-component-ref"); - handlerList = new JLinkedList("handler"); - } - - - // Setters - - /** - * Add a new port-component-ref element to this object - * @param portComponentRef the port-component-ref object - */ - public void addPortComponentRef(PortComponentRef portComponentRef) { - portComponentRefList.add(portComponentRef); - } - - /** - * Add a new handler element to this object - * @param handler the handler object - */ - public void addHandler(Handler handler) { - handlerList.add(handler); - } - - /** - * Sets the service-ref-name of the service-ref - * @param serviceRefName of the service-ref - */ - public void setServiceRefName(String serviceRefName) { - this.serviceRefName = serviceRefName; - } - - - /** - * Sets the service-interface of the service-ref - * @param serviceInterface name of the service-ref - */ - public void setServiceInterface(String serviceInterface) { - this.serviceInterface = serviceInterface; - } - - - /** - * Sets the jaxrpc-mapping-file element of the service-ref - * @param jaxrpcMappingFile jaxrpc-mapping-file of the service-ref - */ - public void setJaxrpcMappingFile(String jaxrpcMappingFile) { - this.jaxrpcMappingFile = jaxrpcMappingFile; - } - - - /** - * Sets the wsdl-file element of the service-ref - * @param wsdlFile name of the service-ref - */ - public void setWsdlFile(String wsdlFile) { - this.wsdlFile = wsdlFile; - } - - - /** - * Sets the service-qname of the service-ref - * @param serviceQname of the service-ref - */ - public void setServiceQname(Qname serviceQname) { - this.serviceQname = serviceQname; - } - - // Getters - - /** - * @return the service-ref-name of the service-ref - */ - public String getServiceRefName() { - return serviceRefName; - } - - /** - * @return the service-interface of the service-ref - */ - public String getServiceInterface() { - return serviceInterface; - } - - /** - * @return the Jaxrpc-mapping-file of the service-ref - */ - public String getJaxrpcMappingFile() { - return jaxrpcMappingFile; - } - - /** - * @return the wsdl-file of the service-ref - */ - public String getWsdlFile() { - return wsdlFile; - } - - - /** - * @return the service-qname element - */ - public Qname getServiceQname() { - return serviceQname; - } - - /** - * @return the list of all handler elements - */ - public JLinkedList getHandlerList() { - return handlerList; - } - - /** - * @return the list of all port-component-ref elements - */ - public JLinkedList getPortComponentRefList() { - return portComponentRefList; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // service-ref-name - sb.append(xmlElement(serviceRefName, "service-ref-name", indent)); - - // service-interface - sb.append(xmlElement(serviceInterface, "service-interface", indent)); - - // wsdl-file - sb.append(xmlElement(wsdlFile, "wsdl-file", indent)); - - // jaxrpc-mapping-file - sb.append(xmlElement(jaxrpcMappingFile, "jaxrpc-mapping-file", indent)); - - //service-qname - if (serviceQname != null) { - sb.append(serviceQname.toXML(indent)); - } - - // port-component-ref - sb.append(portComponentRefList.toXML(indent)); - - // handler - sb.append(handlerList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/TopLevelElement.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/TopLevelElement.java deleted file mode 100644 index 7c13c9d538..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/common/xml/TopLevelElement.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.common.xml; - - -/** - * This class defines the interface that all root Element objects must use. - * @author Philippe Coq - */ -public interface TopLevelElement { - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMap.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMap.java deleted file mode 100644 index 012a9e6494..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMap.java +++ /dev/null @@ -1,220 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.domain; - -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Vector; - -import org.ow2.jonas.deployment.common.AbsDeploymentDesc; -import org.ow2.jonas.deployment.domain.xml.Cluster; -import org.ow2.jonas.deployment.domain.xml.ClusterDaemon; -import org.ow2.jonas.deployment.domain.xml.Domain; -import org.ow2.jonas.deployment.domain.xml.Server; - - -/** - * This class provides the map of the domain as described by the - * domain description file. - * It extends the AbsDeploymentDesc which requires to implement toString() - * and provides getSAXMsg() method (displayName is not used by DomainMap). - * @author Adriana Danes - * @author S. Ali Tokmen - */ -public class DomainMap extends AbsDeploymentDesc { - - /** - * the domain description - */ - private String description = null; - - /** - * Default user name of the domain - */ - private String username = null; - - /** - * Default password of the domain, may be encoded - */ - private String password = null; - - /** - * the clusterDaemons in the domain - */ - private Vector clusterDaemons = null; - - /** - * the clusters in the domain - */ - private Vector clusters = null; - - /** - * the servers in the domain - */ - private Vector servers = null; - - /** - * @return Returns the clusterDaemons. - */ - public Vector getClusterDaemons() { - return clusterDaemons; - } - - /** - * @param clusters The clusterDaemons to set. - */ - public void setClusterDaemons(final Vector clusterDaemons) { - this.clusterDaemons = clusterDaemons; - } - - /** - * @return Returns the clusters. - */ - public Vector getClusters() { - return clusters; - } - - /** - * @param clusters The clusters to set. - */ - public void setClusters(final Vector clusters) { - this.clusters = clusters; - } - - /** - * @return Returns the description. - */ - public String getDescription() { - return description; - } - - /** - * @param description The description to set. - */ - public void setDescription(final String description) { - this.description = description; - } - - /** - * @return Returns the default username of the domain. - */ - public final String getUsername() { - return username; - } - - /** - * @param username The default username of the domain to set. - */ - public final void setUsername(final String username) { - this.username = username; - } - - /** - * @return Returns the default password of the domain - * as encoded in the XML file. - */ - public final String getPassword() { - return password; - } - - /** - * @param password The default password of the domain to set - * as encoded in the XML file. - */ - public final void setPassword(final String password) { - this.password = password; - } - - /** - * @return Returns the servers. - */ - public Vector getServers() { - return servers; - } - - /** - * @param servers The servers to set. - */ - public void setServers(final Vector servers) { - this.servers = servers; - } - - /** - * Constructor - * @param domain domain - */ - public DomainMap(final Domain domain) { - description = domain.getDescription(); - username = domain.getUsername(); - password = domain.getPassword(); - clusterDaemons = new Vector(); - clusters = new Vector(); - servers = new Vector(); - - for (Iterator i = domain.getClusterDaemonList().iterator(); i.hasNext();) { - ClusterDaemon clusterDaemon = (ClusterDaemon) i.next(); - clusterDaemons.add(clusterDaemon); - } - - for (Iterator i = domain.getClusterList().iterator(); i.hasNext();) { - Cluster cluster = (Cluster) i.next(); - clusters.add(cluster); - } - - for (Iterator i = domain.getServerList().iterator(); i.hasNext();) { - Server server = (Server) i.next(); - servers.add(server); - } - - } - - /** - * Return a String representation of the DomainMap - * @return a String representation of the DomainMap - */ - @Override - public String toString() { - - StringBuffer ret = new StringBuffer(); - ret.append("\ndescription=" + description); - - ret.append("\nclusterDaemons="); - for (Enumeration e = clusterDaemons.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - - ret.append("\nservers="); - for (Enumeration e = servers.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - ret.append("\nclusters="); - for (Enumeration e = clusters.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - - return ret.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMapException.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMapException.java deleted file mode 100644 index ab85c82c82..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainMapException.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.domain; - -import org.ow2.jonas.deployment.common.DeploymentDescException; - -/** - * The class EarDeploymentDescException indicates conditions - * that a reasonable application might want to catch. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class DomainMapException extends DeploymentDescException { - - /** - * Constructs a new DomainMapException with no detail - * message. - */ - public DomainMapException() { - super(); - } - - /** - * Constructs a new DomainMapException with the specified - * message. - * @param message the detail message. - */ - public DomainMapException(String message) { - super(message); - } - - /** - * Constructs a new DomainMapException with the specified - * error cause. - * @param cause the cause of the error. - */ - public DomainMapException(Throwable cause) { - super(cause); - } - - /** - * Constructs a new DomainMapException with the specified - * error cause. - * @param message the detail message. - * @param cause the cause of the error. - */ - public DomainMapException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainSchemas.java deleted file mode 100644 index eb8f7075a2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/DomainSchemas.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.domain; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for domain.xml file. - * @author Florent Benoit - * @author S. Ali Tokmen - */ -public class DomainSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(DomainSchemas.class); - - /** - * List of schemas used for domain.xml file. - */ - private static final String[] DOMAIN_SCHEMAS = new String[] { - PACKAGE + "jonas-domain_4_7.xsd", - PACKAGE + "jonas-domain_4_9.xsd", - PACKAGE + "jonas-domain_5_0.xsd", - PACKAGE + "jonas-domain_5_1.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public DomainSchemas() { - super(); - addSchemas(DOMAIN_SCHEMAS); - } - - - /** - * @return Returns the last Schema - */ - public static String getLastSchema() { - return getLastSchema(DOMAIN_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/lib/DomainMapManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/lib/DomainMapManager.java deleted file mode 100644 index 2a7c6af09e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/lib/DomainMapManager.java +++ /dev/null @@ -1,227 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.domain.lib; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.ow2.jonas.deployment.common.lib.AbsDeploymentDescManager; -import org.ow2.jonas.deployment.domain.DomainMap; -import org.ow2.jonas.deployment.domain.DomainMapException; -import org.ow2.jonas.deployment.domain.DomainSchemas; -import org.ow2.jonas.deployment.domain.rules.DomainRuleSet; -import org.ow2.jonas.deployment.domain.xml.Domain; -import org.ow2.jonas.lib.execution.ExecutionResult; -import org.ow2.jonas.lib.execution.IExecution; -import org.ow2.jonas.lib.execution.RunnableHelper; -import org.ow2.jonas.lib.util.Log; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * This class extends the AbsDeploymentDescriptor class of JOnAS It provides a - * description of the domain map - * @author Adriana Danes - * @author S. Ali Tokmen - */ -public class DomainMapManager extends AbsDeploymentDescManager { - - /** - * Path of the domain.xml configuration file - */ - public static final String DOMAIN_FILE_NAME = "domain.xml"; - - /** - * Digester used to parse domain.xml - */ - private static JDigester domainDigester = null; - - /** - * Rules to parse the application.xml - */ - private static DomainRuleSet domainRuleSet = new DomainRuleSet(); - - /** - * logger - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.deployment.domain"); - - /** - * Flag for parser validation - */ - private static boolean parsingWithValidation = true; - /** - * Private Empty constructor for utility class - */ - private DomainMapManager() { - } - - /** - * Get an instance of a DomainMap by parsing the domain.xml configuration file. - * @param domainFileName used when specific domain description file name has to be used - * @param classLoaderForCls the classloader for the classes. - * @return a DomainMap instance by parsing the domain.xml file - * @throws DomainMapException if the domain.xml file is - * corrupted. - */ - public static DomainMap getDomainMap(String domainFileName, ClassLoader classLoaderForCls) - throws DomainMapException { - - //Input Stream - InputStream domainInputStream = null; - String fileName = null; - if (domainFileName == null) { - // domain.xml in JONAS_BASE/conf - fileName = System.getProperty("jonas.base") + File.separator - + "conf" + File.separator - + DOMAIN_FILE_NAME; - } else { - fileName = domainFileName; - } - // load domain.xml - File domainFile = new File(fileName); - if (!domainFile.exists()) { - domainInputStream = classLoaderForCls.getResourceAsStream(DOMAIN_FILE_NAME); - } else { - try { - domainInputStream = new FileInputStream(domainFile); - } catch (Exception e) { - throw new DomainMapException("Cannot read the " + DOMAIN_FILE_NAME, e); - } - } - - Domain domain = loadDomain(new InputStreamReader(domainInputStream), DOMAIN_FILE_NAME); - try { - domainInputStream.close(); - } catch (IOException e) { - // Can't close the file - logger.log(BasicLevel.WARN, "Cannot close InputStream for " + DOMAIN_FILE_NAME); - } - - // instantiate the domain map - DomainMap domainMap = new DomainMap(domain); - return domainMap; - } - - /** - * Load the domain.xml file. - * @param reader the Reader of the XML file. - * @param fileName the name of the file (domain.xml). - * @throws DomainMapException if the file is - * corrupted. - * @return a Domain object. - */ - public static Domain loadDomain(Reader reader, String fileName) throws DomainMapException { - - Domain domain = new Domain(); - // Create if domainDigester is null - if (domainDigester == null) { - try { - // Create and initialize the digester - - domainDigester = new JDigester(domainRuleSet, getParsingWithValidation(), true, null, - new DomainSchemas()); - } catch (DeploymentDescException e) { - throw new DomainMapException(e); - } - } - - // Specify the TC ClassLoader to use - final Reader myReader = reader; - final String myFilename = fileName; - final Domain myDomain = domain; - IExecution exec = new IExecution() { - public Void execute() throws Exception { - try { - domainDigester.parse(myReader, myFilename, myDomain); - } catch (DeploymentDescException e) { - throw new DomainMapException(e); - } finally { - domainDigester.push(null); - } - return null; - } - }; - - // Execute - ExecutionResult result = RunnableHelper.execute(Domain.class.getClassLoader(), exec); - - // Throw an Exception if needed - if (result.hasException()) { - throw (DomainMapException) result.getException(); - } - - return domain; - } - - /** - * Save the domain.xml file. - * @param domain domain representation. - * @param fileName the name of the file (domain.xml). - * @throws DomainMapException Problem writing into file - */ - public static void saveDomain(Domain domain, String fileName) throws DomainMapException { - if (fileName == null) { - // domain.xml in JONAS_BASE/conf - fileName = System.getProperty("jonas.base") + File.separator - + "conf" + File.separator - + DOMAIN_FILE_NAME; - } - - try { - BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); - out.write(domain.toXML()); - out.close(); - } catch(Exception e) { - throw new DomainMapException("Failed writing into domain.xml", e); - } - } - - /** - * Controls whether the parser is reporting all validity errors. - * @return if true, all external entities will be read. - */ - public static boolean getParsingWithValidation() { - return parsingWithValidation; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @param validation if true, all external entities will be read. - */ - public static void setParsingWithValidation(boolean validation) { - DomainMapManager.parsingWithValidation = validation; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterDaemonRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterDaemonRuleSet.java deleted file mode 100644 index 91db2d9818..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterDaemonRuleSet.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the server element - * - * @author Adriana Danes - * @author S. Ali Tokmen - */ - -public class ClusterDaemonRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "application" - */ - public ClusterDaemonRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "cluster-daemon", - "org.ow2.jonas.deployment.domain.xml.ClusterDaemon"); - digester.addSetNext(prefix + "cluster-daemon", - "addClusterDaemon", - "org.ow2.jonas.deployment.domain.xml.ClusterDaemon"); - digester.addCallMethod(prefix + "cluster-daemon/name", "setName", 0); - digester.addCallMethod(prefix + "cluster-daemon/description", "setDescription", 0); - digester.addCallMethod(prefix + "cluster-daemon/password", "setPassword", 0); - digester.addCallMethod(prefix + "cluster-daemon/username", "setUsername", 0); - digester.addRuleSet(new LocationRuleSet(prefix + "cluster-daemon/")); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterRuleSet.java deleted file mode 100644 index 271c198ea2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ClusterRuleSet.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the cluster element. - * A Cluster element may contain another cluster element. - * - * @author Adriana Danes - */ - -public class ClusterRuleSet extends JRuleSetBase { - - private String CLUSTER = "cluster"; - - /** - * If greater than 0 it gives the level of an inner cluster element - */ - int indentLevel = 0; - - /** - * Maximum sub-elements - */ - int maxLevel = 3; - - /** - * Construct an object with the given prefix - * @param prefix prefix to use during the parsing - */ - public ClusterRuleSet(String prefix) { - super(prefix); - int previousIndex = 0; - int index; - while(true) { - index = prefix.indexOf(CLUSTER, previousIndex); - if (index < 0) { - break; - } else { - indentLevel++; - previousIndex = index + CLUSTER.length(); - } - } - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "cluster", - "org.ow2.jonas.deployment.domain.xml.Cluster"); - digester.addSetNext(prefix + "cluster", - "addCluster", - "org.ow2.jonas.deployment.domain.xml.Cluster"); - digester.addCallMethod(prefix + "cluster/name", "setName", 0); - digester.addCallMethod(prefix + "cluster/description", "setDescription", 0); - digester.addRuleSet(new ServerRuleSet(prefix + "cluster/")); - if (indentLevel < maxLevel) { - digester.addRuleSet(new ClusterRuleSet(prefix + "cluster/")); - } - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/DomainRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/DomainRuleSet.java deleted file mode 100644 index 252c3795ac..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/DomainRuleSet.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the domain element - * - * @author Adriana Danes - * @author S. Ali Tokmen - */ - -public class DomainRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "domain" - */ - public DomainRuleSet() { - super("domain/"); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addCallMethod(prefix + "name", "setName", 0); - digester.addCallMethod(prefix + "description", "setDescription", 0); - digester.addCallMethod(prefix + "username", "setUsername", 0); - digester.addCallMethod(prefix + "password", "setPassword", 0); - digester.addRuleSet(new ClusterDaemonRuleSet(prefix)); - digester.addRuleSet(new ServerRuleSet(prefix)); - digester.addRuleSet(new ClusterRuleSet(prefix)); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/LocationRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/LocationRuleSet.java deleted file mode 100644 index 386f957780..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/LocationRuleSet.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the location element - * - * @author Adriana Danes - */ - -public class LocationRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "application" - */ - public LocationRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "location", - "org.ow2.jonas.deployment.domain.xml.Location"); - digester.addSetNext(prefix + "location", - "addLocation", - "org.ow2.jonas.deployment.domain.xml.Location"); - digester.addCallMethod(prefix + "location/url", "addUrl", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ServerRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ServerRuleSet.java deleted file mode 100644 index 7c303fd6e2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/rules/ServerRuleSet.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the server element - * - * @author Adriana Danes - * @author S. Ali Tokmen - */ - -public class ServerRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "application" - */ - public ServerRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "server", - "org.ow2.jonas.deployment.domain.xml.Server"); - digester.addSetNext(prefix + "server", - "addServer", - "org.ow2.jonas.deployment.domain.xml.Server"); - digester.addCallMethod(prefix + "server/name", "setName", 0); - digester.addCallMethod(prefix + "server/password", "setPassword", 0); - digester.addCallMethod(prefix + "server/username", "setUsername", 0); - digester.addCallMethod(prefix + "server/description", "setDescription", 0); - digester.addCallMethod(prefix + "server/cluster-daemon", "setClusterDaemon", 0); - digester.addRuleSet(new LocationRuleSet(prefix + "server/")); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/wrapper/DomainManagerWrapper.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/wrapper/DomainManagerWrapper.java deleted file mode 100644 index a407e0c2d8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/wrapper/DomainManagerWrapper.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.wrapper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.ow2.jonas.deployment.domain.DomainMap; -import org.ow2.jonas.deployment.domain.DomainMapException; -import org.ow2.jonas.lib.bootstrap.LoaderManager; - - -/** - * - * - * @author Adriana Danes - */ -public class DomainManagerWrapper { - - /** - * DomainMapManager fully qualified classname - */ - private static final String DOMAIN_MANAGER_CLASSNAME = "org.ow2.jonas.deployment.domain.lib.DomainMapManager"; - - /** - * Empty private constructor for utility classes - */ - private DomainManagerWrapper() { } - - /** - * Wrap DomainMapManager.getDeploymentDesc(domainFileName, cl) - * - * @param domainFileName name of the file containing the domain map - * @param cl Domain ClassLoader - * - * @return the DomainMap containing the map description - * - * @throws DomainMapException When DomainMap can't be created - */ - public static DomainMap getDomainMap(final String domainFileName, final ClassLoader cl) - throws DomainMapException { - LoaderManager lm = LoaderManager.getInstance(); - DomainMap map = null; - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass(DOMAIN_MANAGER_CLASSNAME); - Method m = manager.getDeclaredMethod("getDomainMap", new Class[] {String.class, ClassLoader.class}); - map = (DomainMap) m.invoke(null, new Object[] {domainFileName, cl}); - } catch (InvocationTargetException ite) { - Throwable t = ite.getTargetException(); - if (DomainMapException.class.isInstance(t)) { - throw (DomainMapException) ite.getTargetException(); - } else { - throw new DomainMapException("DomainMapManager.getDomainMap fails", t); - } - } catch (Exception e) { - // TODO add i18n here - throw new DomainMapException("Problems when using reflection on DomainMapManager", e); - } - - return map; - } - - /** - * Wrap DomainMapManager.setParsingWithValidation(b) - * - * @param b true/false - */ - public static void setParsingWithValidation(final boolean b) { - LoaderManager lm = LoaderManager.getInstance(); - - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass(DOMAIN_MANAGER_CLASSNAME); - Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class}); - m.invoke(null, new Object[] {new Boolean(b)}); - } catch (Exception e) { - // Should never occurs - //logger.log(BasicLevel.ERROR, e); - } - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Cluster.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Cluster.java deleted file mode 100644 index 62172192fb..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Cluster.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; - -public class Cluster extends AbsElement { - - private String name = null; - - /** - * description - */ - private String description = null; - /** - * servers in the cluster - */ - private JLinkedList serverList = null; - - /** - * sub-clusters - */ - private JLinkedList clusterList = null; - /** - * Constructor - */ - public Cluster() { - super(); - serverList = new JLinkedList("server"); - clusterList = new JLinkedList("cluster"); - } - - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @param name The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the description. - */ - public String getDescription() { - return description; - } - - - /** - * @param description The description to set. - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Add a new sub-cluster (cluster element) to this object - * @param cluster the Cluster object representing a sub-cluster - */ - public void addCluster(Cluster cluster) { - clusterList.add(cluster); - } - /** - * Add a new server element to this object - * @param server the Server object - */ - public void addServer(Server server) { - serverList.add(server); - } - - /** - * @return Returns the clusterList. - */ - public JLinkedList getClusterList() { - return clusterList; - } - /** - * @param clusterList The clusterList to set. - */ - public void setClusterList(JLinkedList clusterList) { - this.clusterList = clusterList; - } - /** - * @return Returns the serverList. - */ - public JLinkedList getServerList() { - return serverList; - } - - /** - * @param serverList The serverList to set. - */ - public void setServerList(JLinkedList serverList) { - this.serverList = serverList; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // cluster name - if (name != null) { - sb.append(xmlElement(name, "name", indent)); - } - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - // servers - sb.append(getServerList().toXML(indent)); - // clusters - sb.append(getClusterList().toXML(indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/ClusterDaemon.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/ClusterDaemon.java deleted file mode 100644 index 723b572dce..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/ClusterDaemon.java +++ /dev/null @@ -1,186 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; - -/** - * Cluster Daemon configuration element - * - * @author Benoit Pelletier - * @author S. Ali Tokmen - */ -public class ClusterDaemon extends AbsElement { - - /** - * Version UID - */ - private static final long serialVersionUID = 1322641391857423458L; - - /** - * Instance name - */ - private String name = null; - - /** - * description - */ - private String description = null; - - /** - * URL - */ - private Location location = null; - - /** - * User name - */ - private String username = null; - - /** - * Password, may be encoded - */ - private String password = null; - - // TO DO - // Add state element - - /** - * Constructor - */ - public ClusterDaemon() { - super(); - } - - /** - * @return Returns the location. - */ - public Location getLocation() { - return location; - } - - /** - * @param location The location to set. - */ - public void setLocation(Location location) { - this.location = location; - } - - /** - * @param location The location to set. - */ - public void addLocation(Location location) { - this.location = location; - } - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @param name The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the description. - */ - public String getDescription() { - return description; - } - - /** - * @param description The description to set. - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * @return Returns the username. - */ - public final String getUsername() { - return username; - } - - /** - * @param username The username to set. - */ - public final void setUsername(String username) { - this.username = username; - } - - /** - * @return Returns the password as encoded in the XML file. - */ - public final String getPassword() { - return password; - } - - /** - * @param password The password to set as encoded in the XML file. - */ - public final void setPassword(String password) { - this.password = password; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - if (name != null) { - sb.append(xmlElement(name, "name", indent)); - } - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - // location - if (location != null) { - sb.append(location.toXML(indent)); - } - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Domain.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Domain.java deleted file mode 100644 index 6ef3807f51..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Domain.java +++ /dev/null @@ -1,250 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.xml; - -import org.ow2.jonas.deployment.clusterd.ClusterDaemonSchemas; -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.xml.AbsDescriptionElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; -import org.ow2.jonas.deployment.domain.DomainSchemas; - -/** - * This class defines the implementation of the domain - * - * @author Adriana Danes - * @author S. Ali Tokmen - */ - -public class Domain - extends AbsDescriptionElement - implements TopLevelElement { - - /** - * Version UID - */ - private static final long serialVersionUID = 3866056043763651049L; - - /** - * servers - */ - private JLinkedList serverList = null; - - /** - * cluster daemons - */ - private JLinkedList clusterDaemonList = null; - - /** - * cluster - */ - private JLinkedList clusterList = null; - - /** - * Domain name - */ - private String name = null; - - /** - * Default user name of the domain - */ - private String username = null; - - /** - * Default password of the domain, may be encoded - */ - private String password = null; - - /** - * Latest XML Header. - */ - private static final String header = CommonsSchemas.getHeaderForElement("domain", - DomainSchemas.getLastSchema()); - - /** - * Constructor - */ - public Domain() { - super(); - serverList = new JLinkedList("server"); - clusterList = new JLinkedList("cluster"); - clusterDaemonList = new JLinkedList("clusterDaemon"); - } - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @param name The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the default username of the domain. - */ - public final String getUsername() { - return username; - } - - /** - * @param username The default username of the domain to set. - */ - public final void setUsername(String username) { - this.username = username; - } - - /** - * @return Returns the default password of the domain - * as encoded in the XML file. - */ - public final String getPassword() { - return password; - } - - /** - * @param password The default password of the domain to set - * as encoded in the XML file. - */ - public final void setPassword(String password) { - this.password = password; - } - - /** - * Add a new cluster element to this object - * @param cluster the Cluster object - */ - public void addCluster(Cluster cluster) { - clusterList.add(cluster); - } - - /** - * Add a new cluster daemon element to this object - * @param clusterDaemon the ClusterDaemon object - */ - public void addClusterDaemon(ClusterDaemon clusterDaemon) { - clusterDaemonList.add(clusterDaemon); - } - - /** - * Add a new server element to this object - * @param server the Server object - */ - public void addServer(Server server) { - serverList.add(server); - } - - /** - * @return Returns the clusterList. - */ - public JLinkedList getClusterList() { - return clusterList; - } - - /** - * @param clusterList The clusterList to set. - */ - public void setClusterList(JLinkedList clusterList) { - this.clusterList = clusterList; - } - - /** - * @param clusterDaemonList The clusterDaemonList to set. - */ - public void setClusterDaemonList(JLinkedList clusterDaemonList) { - this.clusterDaemonList = clusterDaemonList; - } - - /** - * @return Returns the clusterDaemonList. - */ - public JLinkedList getClusterDaemonList() { - return clusterDaemonList; - } - - /** - * @return Returns the serverList. - */ - public JLinkedList getServerList() { - return serverList; - } - - /** - * @param serverList The serverList to set. - */ - public void setServerList(JLinkedList serverList) { - this.serverList = serverList; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prefixing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append(header); - indent += 2; - - // name - if (name != null) { - sb.append(xmlElement(getName(), "name", indent)); - } - - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - - // username and password - if (username != null && password != null) { - sb.append(xmlElement(username, "username", indent)); - sb.append(xmlElement(password, "password", indent)); - } - - // cluster daemons - sb.append(getClusterDaemonList().toXML(indent)); - - // servers - sb.append(getServerList().toXML(indent)); - - // clusters - sb.append(getClusterList().toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Location.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Location.java deleted file mode 100644 index 39e0ad87f1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Location.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; - -/** - * - * @author Adriana Danes - * - * A location element is composed of a list of urls, where a url is - * the-string-representation-of-the-url - */ -public class Location extends AbsElement { - - private JLinkedList urlList = null; - /** - * Constructor - */ - public Location() { - super(); - urlList = new JLinkedList("url"); - } - - /** - * @return Returns the urlList. - */ - public JLinkedList getUrlList() { - return urlList; - } -/** - * Add a url to the urlList. - * @param url - */ - public void addUrl(String url) { - urlList.add(url); - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // principal-name - sb.append(urlList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Server.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Server.java deleted file mode 100644 index de2eba4618..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/domain/xml/Server.java +++ /dev/null @@ -1,219 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.domain.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -/** - * JOnAS instance - * - * @author Adriana Danes - * @author S. Ali Tokmen - */ -public class Server extends AbsElement { - - /** - * Version UID - */ - private static final long serialVersionUID = 3775047449169303947L; - - /** - * Instance name - */ - private String name = null; - - /** - * description - */ - private String description = null; - - /** - * URL - */ - private Location location = null; - - /** - * User name - */ - private String username = null; - - /** - * Password, may be encoded - */ - private String password = null; - - /** - * Cluster Daemon - */ - private String clusterDaemon = null; - - // TO DO - // Add state element - - /** - * Constructor - */ - public Server() { - super(); - } - - /** - * @return Returns the location. - */ - public Location getLocation() { - return location; - } - - /** - * @param location The location to set. - */ - public void setLocation(Location location) { - this.location = location; - } - - /** - * @param location The location to set. - */ - public void addLocation(Location location) { - this.location = location; - } - - /** - * @return Returns the username. - */ - public final String getUsername() { - return username; - } - - /** - * @param username The username to set. - */ - public final void setUsername(String username) { - this.username = username; - } - - /** - * @return Returns the password as encoded in the XML file. - */ - public final String getPassword() { - return password; - } - - /** - * @param password The password to set as encoded in the XML file. - */ - public final void setPassword(String password) { - this.password = password; - } - - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - - /** - * @param name The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the description. - */ - public String getDescription() { - return description; - } - - /** - * @param description The description to set. - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // name - if (name != null) { - sb.append(xmlElement(name, "name", indent)); - } - - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - - // location - if (location != null) { - sb.append(location.toXML(indent)); - } - - // username and password - if (username != null && password != null) { - sb.append(xmlElement(username, "username", indent)); - sb.append(xmlElement(password, "password", indent)); - } - - // cluster-daemon - if (clusterDaemon != null) { - sb.append(xmlElement(clusterDaemon, "cluster-daemon", indent)); - } - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - /** - * - * @return the cluster daemon name - */ - public String getClusterDaemon() { - return clusterDaemon; - } - - /** - * Set the cluster daemon name - * @param clusterDaemon name - */ - public void setClusterDaemon(String clusterDaemon) { - this.clusterDaemon = clusterDaemon; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDTDs.java deleted file mode 100644 index 67018abd34..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDTDs.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Helene Joanin - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ear; - - -import org.ow2.jonas.deployment.common.CommonsDTDs; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of DTDs for application.xml. - * @author Helene Joanin - */ -public class EarDTDs extends CommonsDTDs { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(EarDTDs.class); - - /** - * List of application dtds. - */ - private static final String[] EAR_DTDS = new String[] { - PACKAGE + "application_1_2.dtd", - PACKAGE + "application_1_3.dtd" - }; - - /** - * List of application publicId. - */ - private static final String[] EAR_DTDS_PUBLIC_ID = new String[] { - "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN", - "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" - }; - - /** - * Build a new object for appliaction.xml DTDs handling. - */ - public EarDTDs() { - super(); - addMapping(EAR_DTDS, EAR_DTDS_PUBLIC_ID); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDesc.java deleted file mode 100644 index 3fc03d48c4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDesc.java +++ /dev/null @@ -1,371 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ear; - -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -import org.ow2.jonas.deployment.common.AbsDeploymentDesc; -import org.ow2.jonas.deployment.ear.xml.Application; -import org.ow2.jonas.deployment.ear.xml.JonasApplication; -import org.ow2.jonas.deployment.ear.xml.JonasSecurity; -import org.ow2.jonas.deployment.ear.xml.Module; -import org.ow2.jonas.deployment.ear.xml.SecurityRole; -import org.ow2.jonas.deployment.ear.xml.SecurityRoleMapping; -import org.ow2.jonas.deployment.ear.xml.Web; - - - -/** - * This class extends the AbsDeploymentDescriptor class of JOnAS It provides a - * description of the specific EAR desployment descriptor - * @author Florent Benoit - * @author Ludovic Bert - * @author Helene Joanin - */ - -public class EarDeploymentDesc extends AbsDeploymentDesc { - - /** - * Vector of connectorTags (Connector objects). - */ - private Vector connectorTags = null; - - /** - * Vector of altDD for connectors - */ - private Vector altDDConnectors = null; - - /** - * Vector of ejbTags (Ejb objects). - */ - private Vector ejbTags = null; - - /** - * Vector of altDD for EJBs - */ - private Vector altDDEjbs = null; - - /** - * Vector of webTags (Web objects). - */ - private Vector webTags = null; - - /** - * Vector of clientTags (Java objects). - */ - private Vector clientTags = null; - - /** - * Vector of altDD for wars - */ - private Vector altDDWebs = null; - - /** - * Vector of altDD for clients - */ - private Vector altDDClients = null; - - /** - * Vector of security roles - */ - private Vector securityRolesNames = null; - - /** - * Xml content of application.xml file - */ - private String xmlContent = null; - - /** - * Xml content of jonas-application.xml file - */ - private String jonasXmlContent = null; - - /** - * User to role mapping - */ - private Map userToRoleMapping = null; - - /** - * Construct an instance of a EarDeploymentDesc. Called by the getInstance() - * method. - * @param classLoaderForCls ClassLoader of the classes . - * @param application application.xml parsed file. - * @param jonasApplication jonas-application.xml parsed file. - * @throws EarDeploymentDescException if we can't build an instance. - */ - public EarDeploymentDesc(ClassLoader classLoaderForCls, Application application, JonasApplication jonasApplication) - throws EarDeploymentDescException { - - // test classloader - if (classLoaderForCls == null) { - throw new EarDeploymentDescException("DeploymentDesc: Classloader is null"); - } - - ejbTags = new Vector(); - connectorTags = new Vector(); - webTags = new Vector(); - clientTags = new Vector(); - altDDEjbs = new Vector(); - altDDClients = new Vector(); - altDDConnectors = new Vector(); - altDDWebs = new Vector(); - securityRolesNames = new Vector(); - - // display name - displayName = application.getDisplayName(); - - // Tags - for (Iterator i = application.getModuleList().iterator(); i.hasNext();) { - Module module = (Module) i.next(); - String ejb = module.getEjb(); - String connector = module.getConnector(); - String java = module.getJava(); - Web web = module.getWeb(); - String altDD = module.getAltDd(); - if (ejb != null) { - ejbTags.add(ejb); - altDDEjbs.add(altDD); - } else if (connector != null) { - connectorTags.add(connector); - altDDConnectors.add(altDD); - } else if (java != null) { - clientTags.add(java); - altDDClients.add(altDD); - } else if (web != null) { - webTags.add(web); - altDDWebs.add(altDD); - } - } - - // application security role - for (Iterator i = application.getSecurityRoleList().iterator(); i.hasNext();) { - SecurityRole securityRole = (SecurityRole) i.next(); - if (securityRole != null) { - if (securityRole.getRoleName() != null) { - securityRolesNames.add(securityRole.getRoleName()); - } - } - } - - // user to role mapping - JonasSecurity jonasSecurity = jonasApplication.getJonasSecurity(); - if (jonasSecurity != null) { - userToRoleMapping = new HashMap(); - for (Iterator it = jonasSecurity.getSecurityRoleMappingList().iterator(); it.hasNext();) { - SecurityRoleMapping securityRoleMapping = (SecurityRoleMapping) it.next(); - if (securityRoleMapping != null) { - // get role name - String roleName = securityRoleMapping.getRoleName(); - // get principals - List principals = securityRoleMapping.getPrincipalNamesList(); - - // Iterator on principals - for (Iterator itPrincipals = principals.iterator(); itPrincipals.hasNext();) { - // get principal name - String principalName = (String) itPrincipals.next(); - // Existing mapping ? - List currentMapping = (List) userToRoleMapping.get(principalName); - if (currentMapping == null) { - currentMapping = new ArrayList(); - userToRoleMapping.put(principalName, currentMapping); - } - // add mapping - currentMapping.add(roleName); - } - } - } - } - - } - - /** - * Get the ejb tags of the application.xml file. - * @return the ejb tags of the application.xml file. - */ - public String[] getEjbTags() { - String[] tmp = new String[ejbTags.size()]; - ejbTags.copyInto(tmp); - return tmp; - } - - /** - * Get the alt-dd of the ejbs of the application.xml file. - * @return the alt-dd of the ejbs of the application.xml file. - */ - public String[] getAltDDEjbs() { - String[] tmp = new String[altDDEjbs.size()]; - altDDEjbs.copyInto(tmp); - return tmp; - } - - /** - * Get the client tags of the application.xml file. - * @return the client tags of the application.xml file. - */ - public String[] getClientTags() { - String[] tmp = new String[clientTags.size()]; - clientTags.copyInto(tmp); - return tmp; - } - - /** - * Get the alt-dd of the clients of the application.xml file. - * @return the alt-dd of the clients of the application.xml file. - */ - public String[] getAltDDClients() { - String[] tmp = new String[altDDClients.size()]; - altDDClients.copyInto(tmp); - return tmp; - } - - /** - * Get the web tags of the application.xml file. - * @return the web tags of the application.xml file. - */ - public Web[] getWebTags() { - Web[] tmp = new Web[webTags.size()]; - webTags.copyInto(tmp); - return tmp; - } - - /** - * Get the alt-dd of the wars of the application.xml file. - * @return the alt-dd of the wars of the application.xml file. - */ - public String[] getAltDDWebs() { - String[] tmp = new String[altDDWebs.size()]; - altDDWebs.copyInto(tmp); - return tmp; - } - - /** - * Get the connector tags of the application.xml file. - * @return the connector tags of the application.xml file. - */ - public String[] getConnectorTags() { - String[] tmp = new String[connectorTags.size()]; - connectorTags.copyInto(tmp); - return tmp; - } - - /** - * Get the alt-dd of the connectors of the application.xml file. - * @return the alt-dd of the connectors of the application.xml file. - */ - public String[] getAltDDConnectors() { - String[] tmp = new String[altDDConnectors.size()]; - altDDConnectors.copyInto(tmp); - return tmp; - } - - /** - * Get the security-role names tags - * @return the security roles names. - */ - public String[] getSecurityRolesNames() { - String[] tmp = new String[securityRolesNames.size()]; - securityRolesNames.copyInto(tmp); - return tmp; - } - - /** - * Get the content of the xml file - * @return the content of the application xml file - */ - public String getXmlContent() { - return xmlContent; - } - - /** - * Get the content of the jonas-application xml file - * @return the content of the jonas-application xml file - */ - public String getJonasXmlContent() { - return jonasXmlContent; - } - - /** - * Set the content of the xml file - * @param xml the content of the application xml file - */ - public void setXmlContent(String xml) { - xmlContent = xml; - } - - /** - * Set the content of the xml file - * @param xml the content of the jonas-application xml file - */ - public void setJonasXmlContent(String xml) { - jonasXmlContent = xml; - } - - /** - * Return a String representation of the EarDeploymentDesc. - * @return a String representation of the EarDeploymentDesc. - */ - public String toString() { - - StringBuffer ret = new StringBuffer(); - ret.append("\ndisplay-name=" + displayName); - ret.append("\nconnectors="); - for (Enumeration e = connectorTags.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - ret.append("\nejbs="); - for (Enumeration e = ejbTags.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - ret.append("\nwebs="); - for (Enumeration e = webTags.elements(); e.hasMoreElements();) { - ret.append(((Web) e.nextElement()).getWebUri() + ","); - } - ret.append("\njavas="); - for (Enumeration e = clientTags.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - ret.append("\nsecurity-roles-names="); - for (Enumeration e = securityRolesNames.elements(); e.hasMoreElements();) { - ret.append(e.nextElement() + ","); - } - - return ret.toString(); - } - - /** - * @return the userToRoleMapping. - */ - public Map getUserToRoleMapping() { - return userToRoleMapping; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDescException.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDescException.java deleted file mode 100644 index 506114c8f7..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarDeploymentDescException.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ear; - -import org.ow2.jonas.deployment.common.DeploymentDescException; - -/** - * The class EarDeploymentDescException indicates conditions - * that a reasonable application might want to catch. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class EarDeploymentDescException extends DeploymentDescException { - - /** - * Constructs a new EarDeploymentDescException with no detail - * message. - */ - public EarDeploymentDescException() { - super(); - } - - /** - * Constructs a new EarDeploymentDescException with the specified - * message. - * @param message the detail message. - */ - public EarDeploymentDescException(String message) { - super(message); - } - - /** - * Constructs a new EarDeploymentDescException with the specified - * error cause. - * @param cause the cause of the error. - */ - public EarDeploymentDescException(Throwable cause) { - super(cause); - } - - /** - * Constructs a new EarDeploymentDescException with the specified - * error cause. - * @param message the detail message. - * @param cause the cause of the error. - */ - public EarDeploymentDescException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarSchemas.java deleted file mode 100644 index 5a4216913e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/EarSchemas.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2007 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ear; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for application.xml. - * @author Helene Joanin - */ -public class EarSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(EarSchemas.class); - - /** - * List of schemas used for application.xml. - */ - private static final String[] APP_SCHEMAS = new String[] { - PACKAGE + "application_1_4.xsd", - PACKAGE + "application_5.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public EarSchemas() { - super(); - addSchemas(APP_SCHEMAS); - } - - /** - * @return Returns the last Schema. - */ - public static String getLastSchema() { - return getLastSchema(APP_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/JonasEarSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/JonasEarSchemas.java deleted file mode 100644 index 1b9f017419..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/JonasEarSchemas.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent Benoit - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ear; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for jonas-application.xml file. - * @author Florent Benoit - */ -public class JonasEarSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(JonasEarSchemas.class); - - /** - * List of schemas used for jonas-application.xml file. - */ - private static final String[] JONAS_EAR_SCHEMAS = new String[] { - PACKAGE + "jonas-application_4_1_4.xsd", - PACKAGE + "jonas-application_5_0.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public JonasEarSchemas() { - super(); - addSchemas(JONAS_EAR_SCHEMAS); - } - - - /** - * @return Returns the last Schema. - */ - public static String getLastSchema() { - return getLastSchema(JONAS_EAR_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/lib/EarDeploymentDescManager.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/lib/EarDeploymentDescManager.java deleted file mode 100644 index 94af7465dc..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/lib/EarDeploymentDescManager.java +++ /dev/null @@ -1,378 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ear.lib; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.net.URL; -import java.net.URLConnection; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.ow2.jonas.deployment.common.lib.AbsDeploymentDescManager; -import org.ow2.jonas.deployment.ear.EarDTDs; -import org.ow2.jonas.deployment.ear.EarDeploymentDesc; -import org.ow2.jonas.deployment.ear.EarDeploymentDescException; -import org.ow2.jonas.deployment.ear.EarSchemas; -import org.ow2.jonas.deployment.ear.JonasEarSchemas; -import org.ow2.jonas.deployment.ear.rules.ApplicationRuleSet; -import org.ow2.jonas.deployment.ear.rules.JonasApplicationRuleSet; -import org.ow2.jonas.deployment.ear.xml.Application; -import org.ow2.jonas.deployment.ear.xml.JonasApplication; -import org.ow2.jonas.deployment.ear.xml.Module; -import org.ow2.jonas.deployment.ear.xml.Web; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.archive.api.ArchiveException; -import org.ow2.util.archive.api.IArchive; -import org.ow2.util.ee.deploy.api.deployable.CARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EARDeployable; -import org.ow2.util.ee.deploy.api.deployable.EJBDeployable; -import org.ow2.util.ee.deploy.api.deployable.RARDeployable; -import org.ow2.util.ee.deploy.api.deployable.WARDeployable; - -/** - * This class extends the AbsDeploymentDescriptor class of JOnAS It provides a - * description of the specific EAR desployment descriptor. - * @author Florent Benoit - * @author Ludovic Bert - * @author Helene Joanin - */ -public final class EarDeploymentDescManager extends AbsDeploymentDescManager { - - /** - * Path of the application.xml deploymnet descriptor file. - */ - public static final String APPLICATION_FILE_NAME = "META-INF/application.xml"; - - /** - * Path of the jonas-application.xml deploymnet descriptor file. - */ - public static final String JONAS_APPLICATION_FILE_NAME = "META-INF/jonas-application.xml"; - - /** - * Digester used to parse application.xml. - */ - private static JDigester earDigester = null; - - /** - * Digester used to parse jonas-application.xml. - */ - private static JDigester jonasEarDigester = null; - - /** - * Rules to parse the application.xml. - */ - private static ApplicationRuleSet appRuleSet = new ApplicationRuleSet(); - - /** - * Rules to parse the jonas-application.xml. - */ - private static JonasApplicationRuleSet jonasApplicationRuleSet = new JonasApplicationRuleSet(); - - /** - * logger. - */ - private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX); - - /** - * Flag for parser validation. - */ - private static boolean parsingWithValidation = true; - - /** - * Private Empty constructor for utility class. - */ - private EarDeploymentDescManager() { - } - - /** - * Get an instance of an EAR deployment descriptor by parsing the - * application.xml deployment descriptor. - * @param earDeployable the deployable to analyze. - * @param classLoaderForCls the classloader for the classes. - * @return an EAR deployment descriptor by parsing the application.xml - * deployment descriptor. - * @throws EarDeploymentDescException if the deployment descriptor is - * corrupted. - */ - public static EarDeploymentDesc getDeploymentDesc(final EARDeployable earDeployable, final ClassLoader classLoaderForCls) - throws EarDeploymentDescException { - - // Input Stream - Reader appReader = null; - Reader jonasApplicationReader = null; - - Application application = null; - JonasApplication jonasApplication = null; - - String xmlContent = ""; - String jonasXmlContent = ""; - - // Get Archive - IArchive archive = earDeployable.getArchive(); - - // Get the stream - URL applicationXMLURL; - try { - applicationXMLURL = archive.getResource(APPLICATION_FILE_NAME); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get entry '" + APPLICATION_FILE_NAME + "' from the archive '" - + archive + "'.", e); - } - if (applicationXMLURL != null) { - URLConnection urlConnection = null; - try { - urlConnection = applicationXMLURL.openConnection(); - } catch (IOException e) { - throw new EarDeploymentDescException("Unable to open connection on URL '" + applicationXMLURL + "'.", e); - } - urlConnection.setDefaultUseCaches(false); - try { - xmlContent = xmlContent(urlConnection.getInputStream()); - // Read again the input stream - appReader = new StringReader(xmlContent); - } catch (IOException e) { - throw new EarDeploymentDescException("Unable to get Stream on URL '" + applicationXMLURL + "'.", e); - } - - } - - URL jonasApplicationXMLURL; - try { - jonasApplicationXMLURL = archive.getResource(JONAS_APPLICATION_FILE_NAME); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get entry '" + JONAS_APPLICATION_FILE_NAME - + "' from the archive '" + archive + "'.", e); - } - if (jonasApplicationXMLURL != null) { - URLConnection urlConnection = null; - try { - urlConnection = jonasApplicationXMLURL.openConnection(); - } catch (IOException e) { - throw new EarDeploymentDescException("Unable to open connection on URL '" + applicationXMLURL + "'.", e); - } - urlConnection.setDefaultUseCaches(false); - try { - jonasXmlContent = xmlContent(urlConnection.getInputStream()); - // Read again the input stream - jonasApplicationReader = new StringReader(jonasXmlContent); - } catch (IOException e) { - throw new EarDeploymentDescException("Unable to get Stream on URL '" + applicationXMLURL + "'.", e); - } - } - - if (appReader != null) { - application = loadApplication(appReader, APPLICATION_FILE_NAME); - try { - appReader.close(); - } catch (IOException e) { - // Can't close the file - logger.log(BasicLevel.WARN, "Cannot close InputStream for META-INF/application.xml in '" + earDeployable - + "'"); - } - } else { - application = new Application(); - - // Get URL of the deployable - URL earDeployableURL = null; - try { - earDeployableURL = earDeployable.getArchive().getURL(); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get URL for the deployable for the archive '" + archive - + "'", e); - } - - // Perform update - if (earDeployable != null) { - - // For clients - for (CARDeployable carDeployable : earDeployable.getCARDeployables()) { - Module m = new Module(); - try { - m.setJava(carDeployable.getArchive().getURL().toExternalForm().substring( - earDeployableURL.toExternalForm().length())); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get URL for the deployable for the deployable '" - + carDeployable + "'", e); - } - application.addModule(m); - } - - // For Web - for (WARDeployable warDeployable : earDeployable.getWARDeployables()) { - Web web = new Web(); - web.setContextRoot(warDeployable.getContextRoot()); - try { - web.setWebUri(warDeployable.getArchive().getURL().toExternalForm().substring( - earDeployableURL.toExternalForm().length())); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get URL for the deployable for the deployable '" - + warDeployable + "'", e); - } - Module m = new Module(); - m.setWeb(web); - application.addModule(m); - } - - // For EJBs - for (EJBDeployable ejbDeployable : earDeployable.getEJBDeployables()) { - Module m = new Module(); - try { - m.setEjb(ejbDeployable.getArchive().getURL().toExternalForm().substring( - earDeployableURL.toExternalForm().length())); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get URL for the deployable for the deployable '" - + ejbDeployable + "'", e); - } - application.addModule(m); - } - - // For Connectors - for (RARDeployable rarDeployable : earDeployable.getRARDeployables()) { - Module m = new Module(); - try { - m.setEjb(rarDeployable.getArchive().getURL().toExternalForm().substring( - earDeployableURL.toExternalForm().length())); - } catch (ArchiveException e) { - throw new EarDeploymentDescException("Cannot get URL for the deployable for the deployable '" - + rarDeployable + "'", e); - } - application.addModule(m); - } - } - - } - - // load jonas-application deployment descriptor data - // (META-INF/jonas-application.xml) - if (jonasApplicationReader != null) { - jonasApplication = loadJonasApplication(jonasApplicationReader, - JONAS_APPLICATION_FILE_NAME); - try { - jonasApplicationReader.close(); - } catch (IOException e) { - // We can't close the file - logger.log(BasicLevel.WARN, "Cannot close InputStream for '" + earDeployable + "'"); - } - } else { - jonasApplication = new JonasApplication(); - } - - // instantiate deployment descriptor - EarDeploymentDesc earDD = new EarDeploymentDesc(classLoaderForCls, application, jonasApplication); - earDD.setXmlContent(xmlContent); - earDD.setJonasXmlContent(jonasXmlContent); - return earDD; - } - - /** - * Load the application.xml file. - * @param reader the Reader of the XML file. - * @param fileName the name of the file (application.xml). - * @throws EarDeploymentDescException if the deployment descriptor is - * corrupted. - * @return an application object. - */ - public static Application loadApplication(final Reader reader, final String fileName) throws EarDeploymentDescException { - - Application app = new Application(); - // Create if earDigester is null - if (earDigester == null) { - try { - // Create and initialize the digester - earDigester = new JDigester(appRuleSet, getParsingWithValidation(), true, new EarDTDs(), - new EarSchemas()); - } catch (DeploymentDescException e) { - throw new EarDeploymentDescException(e); - } - } - - try { - earDigester.parse(reader, fileName, app); - } catch (DeploymentDescException e) { - throw new EarDeploymentDescException(e); - } finally { - earDigester.push(null); - } - - return app; - } - - /** - * Load the jonas-application.xml file. - * @param reader the stream of the XML file. - * @param fileName the name of the file (jonas-application.xml). - * @return a structure containing the result of the jonas-application.xml - * parsing. - * @throws EarDeploymentDescException if the deployment descriptor is - * corrupted. - */ - public static JonasApplication loadJonasApplication(final Reader reader, final String fileName) - throws EarDeploymentDescException { - - JonasApplication ja = new JonasApplication(); - - // Create if null - if (jonasEarDigester == null) { - try { - jonasEarDigester = new JDigester(jonasApplicationRuleSet, getParsingWithValidation(), true, null, - new JonasEarSchemas()); - } catch (DeploymentDescException e) { - throw new EarDeploymentDescException(e); - } - } - - try { - jonasEarDigester.parse(reader, fileName, ja); - - } catch (DeploymentDescException e) { - throw new EarDeploymentDescException(e); - } finally { - jonasEarDigester.push(null); - } - return ja; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @return if true, all external entities will be read. - */ - public static boolean getParsingWithValidation() { - return parsingWithValidation; - } - - /** - * Controls whether the parser is reporting all validity errors. - * @param validation if true, all external entities will be read. - */ - public static void setParsingWithValidation(final boolean validation) { - EarDeploymentDescManager.parsingWithValidation = validation; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ApplicationRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ApplicationRuleSet.java deleted file mode 100644 index 1a8126a0a4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ApplicationRuleSet.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element application - * - * @author JOnAS team - */ - -public class ApplicationRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "application" - */ - public ApplicationRuleSet() { - super("application/"); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - //digester.addRuleSet(new IconRuleSet(prefix)); - digester.addCallMethod(prefix + "display-name", "setDisplayName", 0); - //digester.addCallMethod(prefix + "description", "setDescription", 0); - digester.addRuleSet(new ModuleRuleSet(prefix)); - digester.addRuleSet(new SecurityRoleRuleSet(prefix)); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasApplicationRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasApplicationRuleSet.java deleted file mode 100644 index 5cee0ebdee..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasApplicationRuleSet.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - - -/** - * This class defines the rules to analyze the element jonas-application - * @author Florent Benoit - */ - -public class JonasApplicationRuleSet extends JRuleSetBase { - - /** - * Construct an object with the prefix "jonas-application" - */ - public JonasApplicationRuleSet() { - super("jonas-application/"); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - public void addRuleInstances(Digester digester) { - digester.addRuleSet(new JonasSecurityRuleSet(prefix)); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRoleMappingRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRoleMappingRuleSet.java deleted file mode 100644 index 1303b3f3f9..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRoleMappingRuleSet.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent Benoit - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element security-role - * @author Florent benoit - */ - -public class JonasSecurityRoleMappingRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasSecurityRoleMappingRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "security-role-mapping", - "org.ow2.jonas.deployment.ear.xml.SecurityRoleMapping"); - digester.addSetNext(prefix + "security-role-mapping", "addSecurityRoleMapping", - "org.ow2.jonas.deployment.ear.xml.SecurityRoleMapping"); - digester.addCallMethod(prefix + "security-role-mapping/role-name", "setRoleName", 0); - digester.addCallMethod(prefix + "security-role-mapping/principal-name", "addPrincipalName", 0); - - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRuleSet.java deleted file mode 100644 index 329f112ea1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/JonasSecurityRuleSet.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent Benoit - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element jonas-security-mapping - * @author Florent Benoit - */ - -public class JonasSecurityRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public JonasSecurityRuleSet(String prefix) { - super(prefix); - } - - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "jonas-security", "org.ow2.jonas.deployment.ear.xml.JonasSecurity"); - digester.addSetNext(prefix + "jonas-security", "setJonasSecurity", - "org.ow2.jonas.deployment.ear.xml.JonasSecurity"); - digester.addRuleSet(new JonasSecurityRoleMappingRuleSet(prefix + "jonas-security/")); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ModuleRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ModuleRuleSet.java deleted file mode 100644 index 5d21922674..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/ModuleRuleSet.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element module - * - * @author JOnAS team - */ - -public class ModuleRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public ModuleRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "module", - "org.ow2.jonas.deployment.ear.xml.Module"); - digester.addSetNext(prefix + "module", - "addModule", - "org.ow2.jonas.deployment.ear.xml.Module"); - digester.addCallMethod(prefix + "module/connector", - "setConnector", 0); - digester.addCallMethod(prefix + "module/ejb", - "setEjb", 0); - digester.addCallMethod(prefix + "module/java", - "setJava", 0); - digester.addRuleSet(new WebRuleSet(prefix + "module/")); - digester.addCallMethod(prefix + "module/alt-dd", - "setAltDd", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/SecurityRoleRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/SecurityRoleRuleSet.java deleted file mode 100644 index 6f832fcc66..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/SecurityRoleRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element security-role - * - * @author JOnAS team - */ - -public class SecurityRoleRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public SecurityRoleRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "security-role", - "org.ow2.jonas.deployment.ear.xml.SecurityRole"); - digester.addSetNext(prefix + "security-role", - "addSecurityRole", - "org.ow2.jonas.deployment.ear.xml.SecurityRole"); - digester.addCallMethod(prefix + "security-role/description", - "setDescription", 0); - digester.addCallMethod(prefix + "security-role/role-name", - "setRoleName", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/WebRuleSet.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/WebRuleSet.java deleted file mode 100644 index b056e328ea..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/rules/WebRuleSet.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.rules; - -import org.ow2.jonas.deployment.common.rules.JRuleSetBase; - -import org.apache.commons.digester.Digester; - -/** - * This class defines the rules to analyze the element web - * - * @author JOnAS team - */ - -public class WebRuleSet extends JRuleSetBase { - - /** - * Construct an object with a specific prefix - * @param prefix prefix to use during the parsing - */ - public WebRuleSet(String prefix) { - super(prefix); - } - /** - * Add a set of rules to the digester object - * @param digester Digester instance - */ - - public void addRuleInstances(Digester digester) { - digester.addObjectCreate(prefix + "web", - "org.ow2.jonas.deployment.ear.xml.Web"); - digester.addSetNext(prefix + "web", - "setWeb", - "org.ow2.jonas.deployment.ear.xml.Web"); - digester.addCallMethod(prefix + "web/web-uri", - "setWebUri", 0); - digester.addCallMethod(prefix + "web/context-root", - "setContextRoot", 0); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/wrapper/EarManagerWrapper.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/wrapper/EarManagerWrapper.java deleted file mode 100644 index c81726fed3..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/wrapper/EarManagerWrapper.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.wrapper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.deployment.ear.EarDeploymentDesc; -import org.ow2.jonas.deployment.ear.EarDeploymentDescException; -import org.ow2.jonas.lib.bootstrap.LoaderManager; -import org.ow2.jonas.lib.util.Log; -import org.ow2.util.ee.deploy.api.deployable.EARDeployable; - - -/** - * Wrapper that allow us to use Commons Digester. - * @author Guillaume Sauthier - */ -public final class EarManagerWrapper { - - /** - * EarDeploymentDescManager fully qualified classname. - */ - private static final String EAR_MANAGER_CLASSNAME = "org.ow2.jonas.deployment.ear.lib.EarDeploymentDescManager"; - - /** - * logger. - */ - private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX); - - /** - * Empty private constructor for utility classes. - */ - private EarManagerWrapper() { } - - /** - * Wrap EarDeploymentDescManager.getDeploymentDesc(ear, cl). - * - * @param earDeployable the given EAR deployable - * @param cl Application ClassLoader - * - * @return the EarDeploymentDesc of the ear filename - * - * @throws EarDeploymentDescException When Descriptor cannot be instanciated - */ - public static EarDeploymentDesc getDeploymentDesc(final EARDeployable earDeployable, final ClassLoader cl) - throws EarDeploymentDescException { - LoaderManager lm = LoaderManager.getInstance(); - EarDeploymentDesc earDD = null; - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass(EAR_MANAGER_CLASSNAME); - Method m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {EARDeployable.class, ClassLoader.class}); - earDD = (EarDeploymentDesc) m.invoke(null, new Object[] {earDeployable, cl}); - } catch (InvocationTargetException ite) { - Throwable t = ite.getTargetException(); - if (EarDeploymentDescException.class.isInstance(t)) { - throw (EarDeploymentDescException) ite.getTargetException(); - } else { - throw new EarDeploymentDescException("EarDeploymentDescManager.getDeploymentDesc fails", t); - } - } catch (Exception e) { - // TODO add i18n here - throw new EarDeploymentDescException("Problems when using reflection on EarDeploymentDescManager", e); - } - - return earDD; - } - - /** - * Wrap EarDeploymentDescManager.setParsingWithValidation(b). - * - * @param b true/false - */ - public static void setParsingWithValidation(final boolean b) { - LoaderManager lm = LoaderManager.getInstance(); - - try { - ClassLoader ext = lm.getExternalLoader(); - Class manager = ext.loadClass(EAR_MANAGER_CLASSNAME); - Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class}); - m.invoke(null, new Object[] {new Boolean(b)}); - } catch (Exception e) { - // Should never occurs - logger.log(BasicLevel.ERROR, e); - } - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Application.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Application.java deleted file mode 100644 index 2e06a48df4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Application.java +++ /dev/null @@ -1,164 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsDescriptionElement; -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.xml.DescriptionGroupXml; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; -import org.ow2.jonas.deployment.ear.EarSchemas; - -/** - * This class defines the implementation of the element application - * - * @author JOnAS team - */ - -public class Application - extends AbsDescriptionElement - implements TopLevelElement, DescriptionGroupXml { - - /** - * Header (with right XSD version) for XML - */ - private String header = null; - - /** - * module - */ - private JLinkedList moduleList = null; - - /** - * security-role - */ - private JLinkedList securityRoleList = null; - - /** - * application element XML header - */ - public static final String APPLICATION_ELEMENT = CommonsSchemas.getHeaderForStandardElement("application", EarSchemas.getLastSchema()); - - /** - * Constructor - */ - public Application() { - super(); - moduleList = new JLinkedList("module"); - securityRoleList = new JLinkedList("security-role"); - - header = APPLICATION_ELEMENT; - } - - /** - * Gets the module - * @return the module - */ - public JLinkedList getModuleList() { - return moduleList; - } - - /** - * Set the module - * @param moduleList module - */ - public void setModuleList(JLinkedList moduleList) { - this.moduleList = moduleList; - } - - /** - * Add a new module element to this object - * @param module the moduleobject - */ - public void addModule(Module module) { - moduleList.add(module); - } - - /** - * Gets the security-role - * @return the security-role - */ - public JLinkedList getSecurityRoleList() { - return securityRoleList; - } - - /** - * Set the security-role - * @param securityRoleList securityRole - */ - public void setSecurityRoleList(JLinkedList securityRoleList) { - this.securityRoleList = securityRoleList; - } - - /** - * Add a new security-role element to this object - * @param securityRole the securityRoleobject - */ - public void addSecurityRole(SecurityRole securityRole) { - securityRoleList.add(securityRole); - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - if (header != null) { - sb.append(header); - } else { - sb.append("\n"); - } - - indent += 2; - - // icon - if (getIcon() != null) { - sb.append(getIcon().toXML(indent)); - } - // display-name - if (getDisplayName() != null) { - sb.append(xmlElement(getDisplayName(), "display-name", indent)); - } - // description - if (getDescription() != null) { - sb.append(xmlElement(getDescription(), "description", indent)); - } - // module - sb.append(getModuleList().toXML(indent)); - // security-role - sb.append(getSecurityRoleList().toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasApplication.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasApplication.java deleted file mode 100644 index 82ea5291fa..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasApplication.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.xml.AbsDescriptionElement; -import org.ow2.jonas.deployment.common.xml.DescriptionGroupXml; -import org.ow2.jonas.deployment.common.xml.TopLevelElement; -import org.ow2.jonas.deployment.ear.JonasEarSchemas; - - - -/** - * This class defines the implementation of the element jonas-application - * @author Florent Benoit - */ -public class JonasApplication extends AbsDescriptionElement implements TopLevelElement, DescriptionGroupXml { - - /** - * Header (with right XSD version) for XML - */ - private String header = null; - - /** - * Element jonas-security - */ - private JonasSecurity jonasSecurity = null; - - /** - * jonas-ejb-jar element XML header - */ - public static final String JONAS_APPLICATION_ELEMENT = CommonsSchemas.getHeaderForElement("jonas-application", - JonasEarSchemas.getLastSchema()); - - /** - * Constructor - */ - public JonasApplication() { - super(); - - header = JONAS_APPLICATION_ELEMENT; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - if (header != null) { - sb.append(header); - } else { - sb.append("\n"); - } - indent += 2; - - // jonas-security - if (jonasSecurity != null) { - sb.append(jonasSecurity.toXML(indent)); - } - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - - /** - * @return the jonasSecurity. - */ - public JonasSecurity getJonasSecurity() { - return jonasSecurity; - } - - /** - * @param jonasSecurity The jonasSecurity to set. - */ - public void setJonasSecurity(JonasSecurity jonasSecurity) { - this.jonasSecurity = jonasSecurity; - } - - /** - * @return the header. - */ - public String getHeader() { - return header; - } - - /** - * @param header The header to set. - */ - public void setHeader(String header) { - this.header = header; - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasSecurity.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasSecurity.java deleted file mode 100644 index 585cb3621a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/JonasSecurity.java +++ /dev/null @@ -1,88 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; - -/** - * This class defines the implementation of the element jonas-security - * @author Florent Benoit - */ -public class JonasSecurity extends AbsElement { - - /** - * security-role-mapping - */ - private JLinkedList securityRoleMappingList = null; - - /** - * Constructor - */ - public JonasSecurity() { - super(); - securityRoleMappingList = new JLinkedList("security-role-mapping"); - } - - - /** - * Gets the security-role-mapping - * @return the security-role-mapping - */ - public JLinkedList getSecurityRoleMappingList() { - return securityRoleMappingList; - } - - /** - * Add a new security-role-mapping element to this object - * @param securityRoleMapping the securityRoleMapping object - */ - public void addSecurityRoleMapping(SecurityRoleMapping securityRoleMapping) { - securityRoleMappingList.add(securityRoleMapping); - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - indent += 2; - - // security-role-mapping - sb.append(securityRoleMappingList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Module.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Module.java deleted file mode 100644 index 8ee4528cad..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Module.java +++ /dev/null @@ -1,189 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -/** - * This class defines the implementation of the element module - * - * @author JOnAS team - */ - -public class Module extends AbsElement { - - /** - * connector - */ - private String connector = null; - - /** - * ejb - */ - private String ejb = null; - - /** - * java - */ - private String java = null; - - /** - * web - */ - private Web web = null; - - /** - * alt-dd - */ - private String altDd = null; - - - /** - * Constructor - */ - public Module() { - super(); - } - - /** - * Gets the connector - * @return the connector - */ - public String getConnector() { - return connector; - } - - /** - * Set the connector - * @param connector connector - */ - public void setConnector(String connector) { - this.connector = connector; - } - - /** - * Gets the ejb - * @return the ejb - */ - public String getEjb() { - return ejb; - } - - /** - * Set the ejb - * @param ejb ejb - */ - public void setEjb(String ejb) { - this.ejb = ejb; - } - - /** - * Gets the java - * @return the java - */ - public String getJava() { - return java; - } - - /** - * Set the java - * @param java java - */ - public void setJava(String java) { - this.java = java; - } - - /** - * Gets the web - * @return the web - */ - public Web getWeb() { - return web; - } - - /** - * Set the web - * @param web web - */ - public void setWeb(Web web) { - this.web = web; - } - - /** - * Gets the alt-dd - * @return the alt-dd - */ - public String getAltDd() { - return altDd; - } - - /** - * Set the alt-dd - * @param altDd altDd - */ - public void setAltDd(String altDd) { - this.altDd = altDd; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // connector - if (connector != null) { - sb.append(xmlElement(connector, "connector", indent)); - } - // ejb - if (ejb != null) { - sb.append(xmlElement(ejb, "ejb", indent)); - } - // java - if (java != null) { - sb.append(xmlElement(java, "java", indent)); - } - // web - if (web != null) { - sb.append(web.toXML(indent)); - } - // alt-dd - if (altDd != null) { - sb.append(xmlElement(altDd, "alt-dd", indent)); - } - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRole.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRole.java deleted file mode 100644 index 52d1c4c76d..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRole.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -/** - * This class defines the implementation of the element security-role - * - * @author JOnAS team - */ - -public class SecurityRole extends AbsElement { - - /** - * description - */ - private String description = null; - - /** - * role-name - */ - private String roleName = null; - - - /** - * Constructor - */ - public SecurityRole() { - super(); - } - - /** - * Gets the description - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * Gets the role-name - * @return the role-name - */ - public String getRoleName() { - return roleName; - } - - /** - * Set the role-name - * @param roleName roleName - */ - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // description - sb.append(xmlElement(description, "description", indent)); - // role-name - sb.append(xmlElement(roleName, "role-name", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRoleMapping.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRoleMapping.java deleted file mode 100644 index 2ea2511636..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/SecurityRoleMapping.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -import org.ow2.jonas.deployment.common.xml.JLinkedList; - -/** - * This class defines the implementation of the element security-role-mapping. - * It allow to define mapping between roles and principal which use these roles. - * @author Florent Benoit - */ - -public class SecurityRoleMapping extends AbsElement { - - /** - * role name - */ - private String roleName = null; - - /** - * principal names - */ - private JLinkedList principalNamesList = null; - - /** - * Constructor - */ - public SecurityRoleMapping() { - super(); - principalNamesList = new JLinkedList("principal-name"); - } - - /** - * Gets the principal-name list - * @return the principal-name list - */ - public JLinkedList getPrincipalNamesList() { - return principalNamesList; - } - - /** - * Set the role-name element of this object - * @param roleName the name of the role - */ - public void setRoleName(String roleName) { - this.roleName = roleName; - } - - /** - * @return the role Name. - */ - public String getRoleName() { - return roleName; - } - - /** - * Add the given principal to the list of principals - * @param principalName name of the principal to add. - */ - public void addPrincipalName(String principalName) { - principalNamesList.add(principalName); - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // role-name - sb.append(xmlElement(roleName, "role-name", indent)); - - // principal-name - sb.append(principalNamesList.toXML(indent)); - - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Web.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Web.java deleted file mode 100644 index 7f48e4bb00..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ear/xml/Web.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ear.xml; - -import org.ow2.jonas.deployment.common.xml.AbsElement; -/** - * This class defines the implementation of the element web - * - * @author JOnAS team - */ - -public class Web extends AbsElement { - - /** - * web-uri - */ - private String webUri = null; - - /** - * context-root - */ - private String contextRoot = null; - - - /** - * Constructor - */ - public Web() { - super(); - } - - /** - * Gets the web-uri - * @return the web-uri - */ - public String getWebUri() { - return webUri; - } - - /** - * Set the web-uri - * @param webUri webUri - */ - public void setWebUri(String webUri) { - this.webUri = webUri; - } - - /** - * Gets the context-root - * @return the context-root - */ - public String getContextRoot() { - return contextRoot; - } - - /** - * Set the context-root - * @param contextRoot contextRoot - */ - public void setContextRoot(String contextRoot) { - this.contextRoot = contextRoot; - } - - /** - * Represents this element by it's XML description. - * @param indent use this indent for prexifing XML representation. - * @return the XML description of this object. - */ - public String toXML(int indent) { - StringBuffer sb = new StringBuffer(); - sb.append(indent(indent)); - sb.append("\n"); - - indent += 2; - - // web-uri - sb.append(xmlElement(webUri, "web-uri", indent)); - // context-root - sb.append(xmlElement(contextRoot, "context-root", indent)); - indent -= 2; - sb.append(indent(indent)); - sb.append("\n"); - - return sb.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigDesc.java deleted file mode 100644 index 42cfeaf080..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigDesc.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.util.LinkedList; -import java.util.List; - -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.ActivationConfig; -import org.ow2.jonas.deployment.ejb.xml.ActivationConfigProperty; - - - - -/** - * This class defines the implementation of the element activation-config - * - * @author JOnAS team - */ - -public class ActivationConfigDesc { - - /** - * description - */ - private String description = null; - - - /** - * activation-config-property - */ - private List activationConfigPropertyList = null; - - /** - * Constructor - */ - public ActivationConfigDesc(ActivationConfig ac) { - if (ac != null) { - description = ac.getDescription(); - activationConfigPropertyList = convert(ac.getActivationConfigPropertyList()); - } else { - activationConfigPropertyList = new LinkedList(); - } - } - - /** - * Gets the description - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the list of activation-config-property - * @return the list of activation-config-property - */ - public List getActivationConfigPropertyList() { - return activationConfigPropertyList; - } - - private List convert(JLinkedList acpl) { - ActivationConfigProperty acp = null; - LinkedList ll = new LinkedList(); - for (int i = 0; i < acpl.size(); i++) { - acp = (ActivationConfigProperty) acpl.get(i); - ll.add(new ActivationConfigPropertyDesc(acp)); - } - return ll; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigPropertyDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigPropertyDesc.java deleted file mode 100644 index 3ee6107dc0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ActivationConfigPropertyDesc.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: JOnAS team - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.ejb.xml.ActivationConfigProperty; - -/** - * This class defines the implementation of the element activation-config-property - * - * @author JOnAS team - */ - -public class ActivationConfigPropertyDesc { - - /** - * activation-config-property-name - */ - private String activationConfigPropertyName = null; - - /** - * activation-config-property-value - */ - private String activationConfigPropertyValue = null; - - /** - * Constructor - */ - public ActivationConfigPropertyDesc() { - - } - - public ActivationConfigPropertyDesc(ActivationConfigProperty acp) { - if (acp != null) { - activationConfigPropertyName = acp.getActivationConfigPropertyName(); - activationConfigPropertyValue = acp.getActivationConfigPropertyValue(); - } - } - - /** - * Gets the activation-config-property-name - * @return the activation-config-property-name - */ - public String getActivationConfigPropertyName() { - return activationConfigPropertyName; - } - - /** - * Set the activation-config-property-name - * @param activationConfigPropertyName activation-config-property-name - */ - public void setActivationConfigPropertyName(String activationConfigPropertyName) { - this.activationConfigPropertyName = activationConfigPropertyName; - } - - - /** - * Gets the activation-config-property-value - * @return the activation-config-property-value - */ - public String getActivationConfigPropertyValue() { - return activationConfigPropertyValue; - } - - /** - * Set the activation-config-property-value - * @param activationConfigPropertyValue activation-config-property-value - */ - public void setActivationConfigPropertyValue(String activationConfigPropertyValue) { - this.activationConfigPropertyValue = activationConfigPropertyValue; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/BeanDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/BeanDesc.java deleted file mode 100644 index 2e943f3509..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/BeanDesc.java +++ /dev/null @@ -1,1583 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2006 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Modifier; -import java.rmi.RemoteException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Properties; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.omg.CSI.ITTAbsent; -import org.omg.CSI.ITTAnonymous; -import org.omg.CSI.ITTDistinguishedName; -import org.omg.CSI.ITTPrincipalName; -import org.omg.CSI.ITTX509CertChain; -import org.omg.CSIIOP.Confidentiality; -import org.omg.CSIIOP.EstablishTrustInClient; -import org.omg.CSIIOP.EstablishTrustInTarget; -import org.omg.CSIIOP.IdentityAssertion; -import org.omg.CSIIOP.Integrity; -import org.ow2.carol.util.csiv2.SasComponent; -import org.ow2.carol.util.csiv2.struct.AsStruct; -import org.ow2.carol.util.csiv2.struct.SasStruct; -import org.ow2.carol.util.csiv2.struct.TransportStruct; -import org.ow2.jonas.deployment.api.IEJBLocalRefDesc; -import org.ow2.jonas.deployment.api.IEJBRefDesc; -import org.ow2.jonas.deployment.api.IEnvEntryDesc; -import org.ow2.jonas.deployment.api.IMessageDestinationRefDesc; -import org.ow2.jonas.deployment.api.IResourceEnvRefDesc; -import org.ow2.jonas.deployment.api.IResourceRefDesc; -import org.ow2.jonas.deployment.api.IServiceRefDesc; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.JndiEnvRefsGroupDesc; -import org.ow2.jonas.deployment.common.SecurityRoleRefDesc; -import org.ow2.jonas.deployment.common.lib.JavaType; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.RunAs; -import org.ow2.jonas.deployment.common.xml.SecurityRole; -import org.ow2.jonas.deployment.common.xml.SecurityRoleRef; -import org.ow2.jonas.deployment.ejb.xml.AsContextMapping; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.CommonEjb; -import org.ow2.jonas.deployment.ejb.xml.ContainerTransaction; -import org.ow2.jonas.deployment.ejb.xml.IorSecurityConfigMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasCommonEjb; -import org.ow2.jonas.deployment.ejb.xml.Method; -import org.ow2.jonas.deployment.ejb.xml.MethodPermission; -import org.ow2.jonas.deployment.ejb.xml.SasContextMapping; -import org.ow2.jonas.deployment.ejb.xml.TransportConfigMapping; -import org.ow2.jonas.lib.util.BeanNaming; - -/** - * Class to hold meta-information related to any enterprise-beans - * - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - * @author Jeff Mesnil - * @author Philippe Coq - * @author Florent Benoit & Ludovic Bert : ejb_link - */ -public abstract class BeanDesc extends JndiEnvRefsGroupDesc { - - /** - * Bean transaction type - */ - protected static final int BEAN_TRANSACTION_TYPE = 1; - - /** - * Container transaction type - */ - protected static final int CONTAINER_TRANSACTION_TYPE = 2; - - protected static final String[] TRANS = {null, "BEAN_TRANSACTION_TYPE", "CONTAINER_TRANSACTION_TYPE"}; - - private static final String ejb10PropertiesPrefix = "ejb10-properties/"; - - /** - * When no jndi-name specified, jndi name is set to Ejb-Name + "Home" - */ - private static final String REMOTEDEFAULTSUFFIX = "Home"; - - /** - * When no local-jndi-name specified, local jndi name is set to jndi-name + - * "_L" - */ - private static final String LOCALDEFAULTSUFFIX = "_L"; - - /** - * Package prefix for generated files - */ - public static final String GENERATED_PREFIX = "org.ow2.jonas_gen."; - - /** - * name of the Bean - */ - protected String ejbName = null; - - /** - * JNDI name of the Bean - */ - protected String jndiName = null; - - /** - * JNDI local name of the Bean - */ - protected String jndiLocalName = null; - - /** - * Home Class - */ - protected Class home = null; - - /** - * Remote Class - */ - protected Class remote = null; - - /** - * LocalHome Class - */ - protected Class localhome = null; - - /** - * Local Class - */ - protected Class local = null; - - /** - * Bean Class - */ - protected Class ejbClass = null; - - /** - * bean identification string - */ - protected String beanIdentification = null; - - /** - * EJB 1.0 Environment as Properties - */ - protected Properties ejb10EnvProps = new Properties(); - - /** - * array of methods meta-info - */ - private ArrayList methodDesc = new ArrayList(); - - /** - * hash map of the methods - */ - private HashMap methodDescMap = new HashMap(); - - /** - * List of SecurityRoleRefDesc for JACC - */ - protected List securityRoleRefDescList = null; - - /** - * DeploymentDesc parent of this BeanDesc - */ - protected DeploymentDesc deploymentDesc = null; - - /** - * JOnAS Remote Wrapper fully qualified classname - */ - private String fullWrpRemoteName = null; - - /** - * JOnAS Remote Wrapper Classname - */ - private String wrpRemoteName = null; - - /** - * JOnAS Home Wrapper fully qualified classname - */ - private String fullWrpHomeName = null; - - /** - * JOnAS Home Wrapper Classname - */ - private String wrpHomeName = null; - - /** - * JOnAS Local Wrapper fully qualified classname - */ - private String fullWrpLocalName = null; - - /** - * JOnAS Local Wrapper Classname - */ - private String wrpLocalName = null; - - /** - * JOnAS LocalHome Wrapper fully qualified classname - */ - private String fullWrpLocalHomeName = null; - - /** - * JOnAS LocalHome Wrapper Classname - */ - private String wrpLocalHomeName = null; - - /** - * JOnAS Handle Wrapper fully qualified classname - */ - private String fullWrpHandleName = null; - - /** - * JOnAS Handle Wrapper Classname - */ - private String wrpHandleName = null; - - /** - * Bean fully qualified classname - */ - protected String fullDerivedBeanName = null; - - /** - * Bean classname - */ - protected String derivedBeanName = null; - - /** - * Run-as role - */ - private String runAsRole = null; - - /** - * Run-as principal name - */ - private String runAsPrincipalName = null; - - /** - * Minimum Bean Pool size - */ - protected int poolMin = 0; - - /** - * Maximum Bean Cache size - */ - protected int cacheMax = 0; - - /** - * SasComponent (for CSIv2 over IIOP) - */ - private SasComponent sasComponent = null; - - protected int timerTxAttribute = MethodDesc.TX_REQUIRES_NEW; // default - - protected String ejbTimeoutSignature; - - /** - * Cluster - true if the bean has to be replicated - */ - protected boolean clusterReplicated = false; - /** - * The cluster configuration - */ - - private Object cluster; - - /** - * Constructor to be used by parent node - * - * @param classLoader ClassLoader used to load Bean's classes - * @param ejb XML Element from standard Deployment Descriptor - * @param jonasEjb XML Element from jonas specific Deployment Descriptor - * @param asd XML Element for the AssemblyDescriptor - * @param fileName jar filename - * - * @throws DeploymentDescException when BeanDesc cannot be instanciated - * (class loading problem, ...) - */ - public BeanDesc(final ClassLoader classLoader, final CommonEjb ejb, final JonasCommonEjb jonasEjb, final AssemblyDescriptor asd, - final JLinkedList jMDRList, final String fileName) throws DeploymentDescException { - - super(classLoader, ejb, jonasEjb, fileName); - securityRoleRefDescList = new LinkedList(); - if (ejb.getEjbName() != null) { - ejbName = ejb.getEjbName(); - } else { - ejbName = null; - } - - // If no value given specifically, we use the optionnal mapped-name in standardDD or ejbName+Home as JNDI name. - if (jonasEjb.getJndiName() != null) { - jndiName = jonasEjb.getJndiName(); - } else if (ejb.getMappedName() != null) { - jndiName = ejb.getMappedName(); - } else { - jndiName = ejbName + REMOTEDEFAULTSUFFIX; - } - // If no value given specifically, we use the optionnal mapped-name in standardDD jndiName+_L as JNDI local - // name. - if (jonasEjb.getJndiLocalName() != null) { - jndiLocalName = jonasEjb.getJndiLocalName(); - } else { - jndiLocalName = jndiName + LOCALDEFAULTSUFFIX; - } - - // classes - // -------------------------------------------------- - if (ejb.getHome() != null) { - try { - this.home = classLoader.loadClass(ejb.getHome()); - // check home extends javax.ejb.EJBHome - if (!javax.ejb.EJBHome.class.isAssignableFrom(this.home)) { - throw new DeploymentDescException("Home class '" + ejb.getHome() - + "' does not extend javax.ejb.EJBHome"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("Home class not found for bean " + ejbName, e); - } - } - - if (ejb.getRemote() != null) { - try { - this.remote = classLoader.loadClass(ejb.getRemote()); - // check remote extends javax.ejb.EJBObject - if (!javax.ejb.EJBObject.class.isAssignableFrom(this.remote)) { - throw new DeploymentDescException("Remote class '" + ejb.getRemote() - + "' does not extend javax.ejb.EJBObject"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("Remote class not found for bean " + ejbName, e); - } - } - - String localhomename = ejb.getLocalHome(); - // Note: Should do this only if bean is implied in a relation. - if (localhomename == null && this instanceof EntityCmp2Desc) { - localhomename = "javax.ejb.EJBLocalHome"; - } - if (localhomename != null) { - try { - this.localhome = classLoader.loadClass(localhomename); - // check localhome extends javax.ejb.EJBLocalHome - if (!javax.ejb.EJBLocalHome.class.isAssignableFrom(this.localhome)) { - throw new DeploymentDescException("LocalHome class '" + localhomename - + "' does not extend javax.ejb.EJBLocalHome"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("LocalHome class not found for bean " + ejbName, e); - } - } - - String localname = ejb.getLocal(); - // Note: Should do this only if bean is implied in a relation. - if (localname == null && this instanceof EntityCmp2Desc) { - localname = "javax.ejb.EJBLocalObject"; - } - if (localname != null) { - try { - this.local = classLoader.loadClass(localname); - // check local extends javax.ejb.EJBLocalObject - if (!javax.ejb.EJBLocalObject.class.isAssignableFrom(this.local)) { - throw new DeploymentDescException("Local class '" + localname - + "' does not extend javax.ejb.EJBLocalObject"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("Local class not found for bean " + ejbName, e); - } - } - - // permit to load service-endpoint class - loadExtraClasses(ejb, classLoader); - - try { - this.ejbClass = classLoader.loadClass(ejb.getEjbClass()); - // check ejb-class extends javax.ejb.EnterpriseBean - if (!javax.ejb.EnterpriseBean.class.isAssignableFrom(this.ejbClass)) { - throw new DeploymentDescException("Ejb class '" + ejb.getEjbClass() - + "' does not extend javax.ejb.EnterpriseBean"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("Ejb class not found for bean " + ejbName, e); - } - - // Set EJB 1.0 Environment properties from env entries - IEnvEntryDesc[] envt = getEnvEntryDesc(); - for (int i = 0; i < envt.length; i++) { - if (envt[i].getName().startsWith(ejb10PropertiesPrefix)) { - String newName = envt[i].getName().substring(ejb10PropertiesPrefix.length()); - String value = new String(); - if (envt[i].hasValue()) { - value = envt[i].getValue().toString(); - } - ejb10EnvProps.put(newName, value); - } - } - - // run-as - if (ejb.getSecurityIdentity() != null) { - RunAs runAsElem = ejb.getSecurityIdentity().getRunAs(); - if (runAsElem != null) { - String roleName = runAsElem.getRoleName(); - if (roleName != null) { - runAsRole = roleName; - boolean runAsRoleFound = false; - if (asd != null && asd.getSecurityRoleList() != null) { - for (Iterator j = asd.getSecurityRoleList().iterator(); j.hasNext();) { - SecurityRole securityRole = (SecurityRole) j.next(); - // role name of a security-role element defined in the - // assembly descriptor - String r = securityRole.getRoleName(); - if (r.equals(runAsRole)) { - runAsRoleFound = true; - } - } - } - //if there are no matching run-as and security-role - if (!runAsRoleFound) { - throw new DeploymentDescException("There is no security-role defined for the run-as role: " - + runAsRole); - } - } - // Run-as principal name - runAsPrincipalName = jonasEjb.getRunAsPrincipalName(); - // if no principal name set in JOnAS DD, set it to run-as role - if (runAsPrincipalName == null) { - runAsPrincipalName = runAsRole; - } - } - } - - // populate array with all methods - try { - java.lang.reflect.Method[] m; - int beginIdx = methodDesc.size(); - int len = 0; - if ((this.home != null) && (this.remote != null)) { - // session bean or entity bean with remote interface - m = this.home.getMethods(); - for (int i = 0; i < m.length; i++) { - if (!m[i].getDeclaringClass().equals(javax.ejb.EJBHome.class) - || m[i].getName().equals("remove")) { - addMethodDesc(m[i], this.home); - len++; - // check RemoteException is thrown - checkRemoteException(m[i], true); - /* - * // arguments and return types must be valid types for - * RMI if - * (!m[i].getDeclaringClass().equals(javax.ejb.EJBHome.class) && - * !m[i].getName().equals("findByPrimaryKey")) { - * checkValidTypesForRmi(m[i]); } - */ - } - } - - m = this.remote.getMethods(); - for (int i = 0; i < m.length; i++) { - if (!m[i].getDeclaringClass().equals(javax.ejb.EJBObject.class) - || m[i].getName().equals("remove")) { - addMethodDesc(m[i], this.remote); - len++; - // check RemoteException is thrown - checkRemoteException(m[i], true); - /* - * // arguments and return types must be valid for RMI - * if - * (!m[i].getDeclaringClass().equals(javax.ejb.EJBObject.class)) { - * checkValidTypesForRmi(m[i]); } - */ - } - } - } - if ((this.localhome != null) && (this.local != null)) { - // session bean or entity bean with local interface - m = this.localhome.getMethods(); - for (int i = 0; i < m.length; i++) { - if (!m[i].getDeclaringClass().equals(javax.ejb.EJBLocalHome.class) - || m[i].getName().equals("remove")) { - addMethodDesc(m[i], this.localhome); - len++; - // check RemoteException is NOT thrown - checkRemoteException(m[i], false); - } - } - m = this.local.getMethods(); - for (int i = 0; i < m.length; i++) { - if (!m[i].getDeclaringClass().equals(javax.ejb.EJBLocalObject.class) - || m[i].getName().equals("remove")) { - addMethodDesc(m[i], this.local); - len++; - // check RemoteException is NOT thrown - checkRemoteException(m[i], false); - } - } - } - if (this.home == null && this.localhome == null) { - - if (ejb.getMessagingType() != null) { - // message driven bean & endpoints - String msgType = ejb.getMessagingType(); - try { - m = classLoader.loadClass(msgType).getMethods(); - for (int i = 0; i < m.length; i++) { - addMethodDesc(m[i], m[i].getDeclaringClass()); - len++; - } - } catch (Exception ex) { - throw new DeploymentDescException("Cannot load messaging type class (" + msgType + ") for " - + ejbName, ex); - } - } - // (web)service-endpoints may have no home or local-home too !! - } - - if (javax.ejb.EntityBean.class.isAssignableFrom(this.ejbClass)) { - // ejbSelect methods - m = this.ejbClass.getMethods(); - for (int i = 0; i < m.length; i++) { - if (m[i].getName().startsWith("ejbSelect") && Modifier.isAbstract(m[i].getModifiers())) { - addMethodDesc(m[i], this.ejbClass); - len++; - } - } - } - - if (javax.ejb.TimedObject.class.isAssignableFrom(this.ejbClass)) { - try { - java.lang.reflect.Method timeout = this.ejbClass.getMethod("ejbTimeout", - new Class[]{javax.ejb.Timer.class}); - addMethodDesc(timeout, this.ejbClass); - len++; - } catch (NoSuchMethodException e) { - throw new DeploymentDescException("ejbTimeout not implemented in " + ejbName); - } - } - - len = addEJBMethodDesc(len); - orderMethodDesc(methodDesc, beginIdx, len); - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflection on " + ejbName, e); - } - - // populate HashMap with all security role references - // for each security-role-ref of the bean - if (ejb.getSecurityRoleRefList() != null) { - for (Iterator i = ejb.getSecurityRoleRefList().iterator(); i.hasNext();) { - SecurityRoleRef sRoleRef = (SecurityRoleRef) i.next(); - // test if the assembly-descriptor element exists - if (asd == null) { - throw new DeploymentDescException( - "No assembly-descriptor element (and security-role elements) whereas security-role-ref element(s) are defined"); - } else { - // test if the assembly-descriptor element contains - // security-role elements - if (asd.getSecurityRoleList().isEmpty()) { - throw new DeploymentDescException( - "No security-role elements defined in the assembly-descriptor element whereas security-role-ref element(s) are defined"); - } - } - // test if the role-link element of the security-role-ref - // element exists - if (sRoleRef.getRoleLink() == null) { - throw new DeploymentDescException( - "No role-link element in a security-role-ref element with role-name element : " - + sRoleRef.getRoleName()); - } - String roleLink = sRoleRef.getRoleLink(); - // correspond to role-name element in security-role-ref element - String roleRefName = sRoleRef.getRoleName(); - // to know if there are corresponding roleLink and roleRefName - boolean correspondingRoles = false; - for (Iterator j = asd.getSecurityRoleList().iterator(); j.hasNext();) { - SecurityRole securityRole = (SecurityRole) j.next(); - // role name of a security-role element defined in the - // assembly descriptor - String roleName = securityRole.getRoleName(); - if (roleName.equals(roleLink)) { - securityRoleRefDescList.add(new SecurityRoleRefDesc(ejbName, sRoleRef, true)); - correspondingRoles = true; - } - } - //if there are no matching roleLink and roleName - if (!correspondingRoles) { - throw new DeploymentDescException( - "No corresponding role-name in a security-role element for role-link : " + roleLink); - } - } - } - - // check if there are corresponding role-name element in security-role - // and method-permission element of the Assembly Descriptor - if (asd != null) { - verifyRoleName(asd); - // set method descriptor values for method permissions - for (Iterator i = asd.getMethodPermissionList().iterator(); i.hasNext();) { - MethodPermission methodPermission = (MethodPermission) i.next(); - for (Iterator j = methodPermission.getMethodList().iterator(); j.hasNext();) { - Method m = ((Method) j.next()); - // check method applies to current bean - if (!m.getEjbName().equals(ejbName)) { - continue; - } - // selection of interface home/remote - Class pClass = null; - if (m.getMethodIntf() != null) { - pClass = getParentClass(m.getMethodIntf()); - } - for (int k = 0; k < methodDesc.size(); k++) { - MethodDesc md = (MethodDesc) methodDesc.get(k); - int matchStatus = md.matchPattern(pClass, m.getMethodName(), m.getMethodParams()); - for (Iterator l = methodPermission.getRoleNameList().iterator(); l.hasNext();) { - String roleName = (String) l.next(); - // Add only if it greater than APPLY_TO_NOTHING - if (matchStatus > MethodDesc.APPLY_TO_NOTHING) { - md.addRoleName(roleName); - } - } - } - } - } - } - - // Set excluded method - if (asd != null && asd.getExcludeList() != null) { - // For each excluded method, find a methodDesc corresponding to this excluded method - for (Iterator i = asd.getExcludeList().getMethodList().iterator(); i.hasNext();) { - Method m = (Method) i.next(); - // check method applies to current bean - if (!m.getEjbName().equals(ejbName)) { - continue; - } - // selection of interface home/remote - Class pClass = null; - if (m.getMethodIntf() != null) { - pClass = getParentClass(m.getMethodIntf()); - } - // Find methodDesc with matching pattern of excluded method - for (int k = 0; k < methodDesc.size(); k++) { - MethodDesc md = (MethodDesc) methodDesc.get(k); - int matchStatus = md.matchPattern(pClass, m.getMethodName(), m.getMethodParams()); - // Add only if it greater than APPLY_TO_NOTHING - if (matchStatus > MethodDesc.APPLY_TO_NOTHING) { - md.setExcluded(true); - } - } - } - } - - // set method descriptor values for container transactions - if (asd != null) { - // Loop on ContainerTransaction list - Iterator i = asd.getContainerTransactionList().iterator(); - while (i.hasNext()) { - ContainerTransaction cotr = (ContainerTransaction) i.next(); - // Loop on Method list - Iterator j = cotr.getMethodList().iterator(); - while (j.hasNext()) { - Method m = (Method) j.next(); - // check method applies to current bean - if (!m.getEjbName().equals(ejbName)) { - continue; - } - - // selection of interface home/remote - Class pClass = null; - if (m.getMethodIntf() != null) { - pClass = getParentClass(m.getMethodIntf()); - } - - // loop on methods in the array - boolean found = false; - for (int k = 0; k < methodDesc.size(); k++) { - MethodDesc md = (MethodDesc) methodDesc.get(k); - int matchStatus = md.matchPattern(pClass, m.getMethodName(), m.getMethodParams()); - if (matchStatus != MethodDesc.APPLY_TO_NOTHING) { - found = true; - } - // set if proper level of assignation - String transAttribute = null; - if (cotr.getTransAttribute() != null) { - transAttribute = cotr.getTransAttribute(); - } - md.overwriteTxAttribute(transAttribute, matchStatus); - } - if (!found) { - // The method defined via the element is not a - // declared method - logger.log(BasicLevel.WARN, "Invalid container-transaction: method '" - + MethodDesc.methodElementToString(m) + "' not declared in bean " + ejbName); - } - } - } - } - - String packageName = ""; - String ejbIdentifier = getIdentifier(); - - if (getRemoteClass() != null) { - packageName = GENERATED_PREFIX + BeanNaming.getPackageName(getRemoteClass().getName()); - wrpRemoteName = new String("JOnAS" + ejbIdentifier + "Remote"); - wrpHandleName = new String("JOnAS" + ejbIdentifier + "Handle"); - fullWrpRemoteName = BeanNaming.getClassName(packageName, wrpRemoteName); - fullWrpHandleName = BeanNaming.getClassName(packageName, wrpHandleName); - } - - if (getLocalClass() != null) { - packageName = GENERATED_PREFIX + BeanNaming.getPackageName(getLocalClass().getName()); - wrpLocalName = new String("JOnAS" + ejbIdentifier + "Local"); - fullWrpLocalName = BeanNaming.getClassName(packageName, wrpLocalName); - } - - if (getHomeClass() != null) { - packageName = GENERATED_PREFIX + BeanNaming.getPackageName(getHomeClass().getName()); - wrpHomeName = new String("JOnAS" + ejbIdentifier + "Home"); - fullWrpHomeName = BeanNaming.getClassName(packageName, wrpHomeName); - } - - if (getLocalHomeClass() != null) { - packageName = GENERATED_PREFIX + BeanNaming.getPackageName(getLocalHomeClass().getName()); - wrpLocalHomeName = new String("JOnAS" + ejbIdentifier + "LocalHome"); - fullWrpLocalHomeName = BeanNaming.getClassName(packageName, wrpLocalHomeName); - } - - fullDerivedBeanName = getEjbClass().getName(); - derivedBeanName = BeanNaming.getBaseName(getEjbClass().getName()); - - IorSecurityConfigMapping iorSecurityConfigMapping = jonasEjb.getIorSecurityConfig(); - if (iorSecurityConfigMapping != null) { - processIorSecurityConfig(iorSecurityConfigMapping); - } - - if (jonasEjb.getClusterReplicated() != null) { - if (jonasEjb.getClusterReplicated().equalsIgnoreCase("True")) { - clusterReplicated = true; - } else if (jonasEjb.getClusterReplicated().equalsIgnoreCase("False")) { - clusterReplicated = false; - } else { - throw new DeploymentDescException("Invalid cluster-replicated value for bean " + this.ejbName); - } - } - cluster = jonasEjb.getCluster(); - } - - /** - * Permit classes loading from subtypes. (needed for Stateless Session Beans - * with service-endpoints). Needs to be overridden in subtypes. - * - * @param ce XML Element representing EJB Descriptor - * @param loader ClassLoader used to load classes - * - * @throws DeploymentDescException when a class cannot be loaded - */ - protected void loadExtraClasses(final CommonEjb ce, final ClassLoader loader) throws DeploymentDescException { - // do nothing by default - } - - /** - * Permit Methods addition from subtypes Protected method that need to be - * overridden in subclasses - * - * @param len method array length - * @return new len value - * - * @throws DeploymentDescException when java reflection cannot be used on - * classes - */ - protected int addEJBMethodDesc(final int len) throws DeploymentDescException { - return len; - } - - /** - * Returns the parent Class for a method given an interface type. - * - * @param intfType type of the interface (Home/Remote/LocalHome/Local or - * ServiceEndpoint) - * - * @return the parent class for a method given an interface type - * - * @throws DeploymentDescException when intfType is unknown - */ - protected Class getParentClass(final String intfType) throws DeploymentDescException { - Class pClass = null; - if (intfType.equals("Home")) { - pClass = javax.ejb.EJBHome.class; - } else if (intfType.equals("Remote")) { - pClass = javax.ejb.EJBObject.class; - } else if (intfType.equals("LocalHome")) { - pClass = javax.ejb.EJBLocalHome.class; - } else if (intfType.equals("Local")) { - pClass = javax.ejb.EJBLocalObject.class; - } else { - throw new DeploymentDescException(intfType + " is invalid value for method-intf on bean " + ejbName); - } - return pClass; - } - - /** - * Gets an hashcode for this bean - * Return hashcode for jndiname + jndi localname - * @return a string for hashcode for jndiname + jndi localname - */ - protected String getHashCodeForIdentifier() { - String hash = ""; - if (getJndiName() != null) { - hash += getJndiName(); - } - if (getJndiLocalName() != null) { - hash += getJndiLocalName(); - } - return Integer.toString(hash.hashCode()); - } - - /** - * Build a valid java identifier for the bean. - * @return Returns a valid java identifier from the bean. - */ - public String getIdentifier() { - - if (beanIdentification == null) { - String identifier = getEjbName(); - identifier += getHashCodeForIdentifier(); - - char[] tabChar = new char[identifier.length()]; - for (int i = 0; i < identifier.length(); i++) { - if (!Character.isJavaIdentifierPart(identifier.charAt(i))) { - tabChar[i] = '_'; - } else { - tabChar[i] = identifier.charAt(i); - } - } - beanIdentification = new String(tabChar); - } - return beanIdentification; - } - - /** - * Check if method throws RemoteException (or not). - * - * @param m the method to examine - * @param shouldThrow boolean value indicating if the method should or - * shouldn't throw RemoteException - * - * @throws DeploymentDescException thrown for non-valid method - */ - public void checkRemoteException(final java.lang.reflect.Method m, final boolean shouldThrow) throws DeploymentDescException { - Class[] excepts = m.getExceptionTypes(); - for (int j = 0; j < excepts.length; j++) { - if (RemoteException.class.isAssignableFrom(excepts[j])) { - if (shouldThrow) { - return; - } else { - throw new DeploymentDescException("Method " + m.getName() + " of " + m.getDeclaringClass() - + " should NOT throw RemoteException"); - } - } - } - if (shouldThrow) { - throw new DeploymentDescException("Method " + m.getName() + " of " + m.getDeclaringClass() - + " must throw RemoteException"); - } else { - return; - } - - } - - /** - * Check if argument and return types are valid types for RMI-IIOP. - * (Primitive types, remote objects, or non-remote objects that implement - * the java.io.Serializable interface) Only a warning is logging if it's not - * the case. - * - * @param m the methode to examine - */ - public void checkValidTypesForRmi(final java.lang.reflect.Method m) { - boolean isValid = true; - Class[] paramTypes = m.getParameterTypes(); - for (int i = 0; i < paramTypes.length; i++) { - if (!JavaType.isValidForRmi(paramTypes[i])) { - isValid = false; - } - } - if (!JavaType.isValidForRmi(m.getReturnType()) && !JavaType.isVoid(m.getReturnType()) - && !JavaType.isCollecOrEnum(m.getReturnType())) { - // Allow Collection or Enumeration type (finder methods) - isValid = false; - } - if (!isValid) { - logger.log(BasicLevel.WARN, "Method " + m.getName() + " of " + m.getDeclaringClass() - + " may be have an invalid argument or return type for RMI"); - } - } - - /** - * Check that the bean descriptor is valid - * - * @throws DeploymentDescException thrown for non-valid bean - */ - public void check() throws DeploymentDescException { - // check business methods transaction attribute - for (int i = 0; i < methodDesc.size(); i++) { - checkTxAttribute(((MethodDesc) methodDesc.get(i))); - } - checkRunAsMapping(); - } - - /** - * Check that the runAs role mapping is correct - * @throws DeploymentDescException if role mapping is incorrect - */ - public void checkRunAsMapping() throws DeploymentDescException { - if (runAsPrincipalName != null) { - // verify roles of run-as principal name - String[] runAsPrincipalRoles = deploymentDesc.getRolesForRunAsPrincipal(runAsPrincipalName); - // Check that the run-as role is included in principal roles - if (runAsPrincipalRoles != null) { - boolean isIncluded = false; - for (int r = 0; r < runAsPrincipalRoles.length; r++) { - if (runAsPrincipalRoles[r].equals(runAsRole)) { - isIncluded = true; - } - } - if (!isIncluded) { - throw new DeploymentDescException("The run-as roles defined for the runas principal name '" - + runAsPrincipalName + "' does not contains the run-as role '" - + runAsRole + "' in bean '" + getEjbName() + "."); - } - } - } - } - - /** - * Check that trans-attribute is valid for a bean's method. - * - * @param md MethodDesc to check - * - * @throws DeploymentDescException When MethodDesc is not valid - */ - protected abstract void checkTxAttribute(MethodDesc md) throws DeploymentDescException; - - /** - * Check that there are always corresponding role-name element in - * security-role and method-permission elements. - * - * @param asd the AssemblyDescriptor used to check bean's role names - * - * @throws DeploymentDescException When verification fails - */ - protected void verifyRoleName(final AssemblyDescriptor asd) throws DeploymentDescException { - boolean verify; - List methodPermission = asd.getMethodPermissionList(); - if (methodPermission != null) { - for (Iterator i = methodPermission.iterator(); i.hasNext();) { - MethodPermission mPermission = (MethodPermission) i.next(); - for (Iterator j = mPermission.getRoleNameList().iterator(); j.hasNext();) { - verify = false; - String mpRoleName = (String) j.next(); - for (Iterator k = asd.getSecurityRoleList().iterator(); k.hasNext();) { - String srRoleName = ((SecurityRole) k.next()).getRoleName(); - if (mpRoleName.equals(srRoleName)) { - verify = true; - } - } - if (!verify) { - throw new DeploymentDescException( - "a method-permission element defined a role-name element \"" - + mpRoleName - + "\" which doesn't correspond to any security-role element of the Deployment Descriptor"); - } - } - } - } - } - - /** - * Get the enterprise bean's name. - * - * @return Name of the bean - */ - public String getEjbName() { - return ejbName; - } - - /** - * Get the name to associate with the enterprise Bean in the JNDI name - * space. Invoking this method is disallowed for message driven bean. (This - * information is JOnAS specific). Used by Server - * - * @return Jndi name of the bean - */ - public String getJndiName() { - return jndiName; - } - - /** - * Set the name to associate with the enterprise Bean in the JNDI name - * space. Invoking this method is disallowed for message driven bean. (This - * information is JOnAS specific). Used by Server - * - * @param jndiName Jndi name of the bean - */ - public void setJndiName(final String jndiName) { - this.jndiName = jndiName; - } - - /** - * Get the name to associate with the enterprise Bean in the JNDI name space - * for local access (inside the same JOnAS Server) - * - * @return Jndi local name of the bean - */ - public String getJndiLocalName() { - return jndiLocalName; - } - - /** - * Set the name to associate with the enterprise Bean in the JNDI name space - * for local access (inside the same JOnAS Server) - * - * @param jndiLocalName Jndi local name of the bean - */ - public void setJndiLocalName(final String jndiLocalName) { - this.jndiLocalName = jndiLocalName; - } - - /** - * Get bean's home interface. Invoking this method is disallowed for message - * driven bean. Used by GenIC and Server - * - * @return Class for the home interface or null - */ - public Class getHomeClass() { - return home; - } - - /** - * Get bean's remote interface. Invoking this method is disallowed for - * message driven bean. Used by GenIC and Server - * - * @return Class for the remote interface or null - */ - public Class getRemoteClass() { - return remote; - } - - /** - * Get bean's local home interface. Invoking this method is disallowed for - * message driven bean. Used by GenIC and Server - * - * @return Class for the home interface or null - */ - public Class getLocalHomeClass() { - return localhome; - } - - /** - * Get bean's local interface. Invoking this method is disallowed for - * message driven bean. Used by GenIC and Server - * - * @return Class for the Local interface or null - */ - public Class getLocalClass() { - return local; - } - - /** - * Get bean's class. Used by GenIC and Server - * - * @return Class for the bean - */ - public Class getEjbClass() { - return ejbClass; - } - - /** - * Get bean's EJB 1.0 environment properties. - * - * @return Returns the bean's EJB 1.0 environment properties - */ - public Properties getEjb10Environment() { - Properties ret = new Properties(ejb10EnvProps); - return ret; - } - - /** - * Get descriptor attached to a given method. Used by GenIC and JMdbEndpointFactory - * - * @param method Method from the Home/Remote/MessageListener interface - * @return The method descriptor (never returns null) - */ - public MethodDesc getMethodDesc(final java.lang.reflect.Method method) { - - if (!methodDescMap.containsKey(method)) { - throw new Error(method.getName() + " is not a method of home/remote interfaces for bean " + getEjbName()); - } - return (MethodDesc) methodDescMap.get(method); - } - - /** - * get an iterator for all MethodDesc of the bean. - * - * @return Returns an iterator for all MethodDesc of the bean - */ - public Iterator getMethodDescIterator() { - return methodDesc.iterator(); - } - - /** - * get a MethodDesc from its index. - * - * @param index MethodDesc index - * - * @return Returns a MethodDesc from its index - */ - public MethodDesc getMethodDesc(final int index) { - return (MethodDesc) methodDesc.get(index); - } - - /** - * Gets the security-role-ref of the beans can access to the - * EJBRoleRefPermission and role-link. - * - * @return the security-role-ref of the beans - */ - public List getSecurityRoleRefDescList() { - return securityRoleRefDescList; - } - - /** - * @return min size of the pool - */ - public int getPoolMin() { - return poolMin; - } - - /** - * @return max size of the cache - */ - public int getCacheMax() { - return cacheMax; - } - - /** - * @return the run-as role name - */ - public String getRunAsRole() { - return runAsRole; - } - - /** - * @return the transaction attribute for the ejbTimeout method - */ - public int getTimerTxAttribute() { - return timerTxAttribute; - } - - /** - * @return the security signature for the ejbTimeout method - */ - public String getEjbTimeoutSignature() { - return ejbTimeoutSignature; - } - - /** - * String representation of the object for test purpose - * - * @return String representation of this object - */ - @Override - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetDisplayName()=" + getDisplayName()); - ret.append("\ngetEjbName()=" + getEjbName()); - if (jndiName != null) { - ret.append("\ngetJndiName()=" + getJndiName()); - } - if (home != null) { - ret.append("\ngetHomeClass()=" + getHomeClass().toString()); - } - if (remote != null) { - ret.append("\ngetRemoteClass()=" + getRemoteClass().toString()); - } - if (localhome != null) { - ret.append("\ngetLocalHomeClass()=" + getLocalHomeClass().toString()); - } - if (local != null) { - ret.append("\ngetLocalClass()=" + getLocalClass().toString()); - } - ret.append("\ngetEjbClass()=" + getEjbClass().toString()); - IEnvEntryDesc[] envE = getEnvEntryDesc(); - for (int i = 0; i < envE.length; i++) { - ret.append("\ngetEnvEntryDesc(" + i + ")=" + envE[i].toString()); - } - IServiceRefDesc[] sr = getServiceRefDesc(); - for (int i = 0; i < sr.length; i++) { - ret.append("\ngetServiceRefDesc(" + i + ")=" + sr[i].toString()); - } - IResourceEnvRefDesc[] resEnvR = getResourceEnvRefDesc(); - for (int i = 0; i < resEnvR.length; i++) { - ret.append("\ngetResourceEnvRefDesc(" + i + ")=" + resEnvR[i].toString()); - } - IResourceRefDesc[] resR = getResourceRefDesc(); - for (int i = 0; i < resR.length; i++) { - ret.append("\ngetResourceRefDesc(" + i + ")=" + resR[i].toString()); - } - IEJBRefDesc[] ejbR = getEjbRefDesc(); - for (int i = 0; i < ejbR.length; i++) { - ret.append("\ngetEjbRefDesc(" + i + ")=" + ejbR[i].toString()); - } - IEJBLocalRefDesc[] ejbLR = getEjbLocalRefDesc(); - for (int i = 0; i < ejbLR.length; i++) { - ret.append("\ngetEjbLocalRefDesc(" + i + ")=" + ejbLR[i].toString()); - } - IMessageDestinationRefDesc[] mdR = getMessageDestinationRefDesc(); - for (int i = 0; i < mdR.length; i++) { - ret.append("\ngetMessageDestinationRefDesc(" + i + ")=" + mdR[i].toString()); - } - for (int i = 0; i < methodDesc.size(); i++) { - MethodDesc md = (MethodDesc) methodDesc.get(i); - ret.append("\ngetMethodDesc(" + i + ")=" + md.getClass().getName()); - ret.append(md.toString()); - } - - if (securityRoleRefDescList != null) { - for (Iterator i = securityRoleRefDescList.iterator(); i.hasNext();) { - SecurityRoleRefDesc sRoleRefDesc = (SecurityRoleRefDesc) i.next(); - ret.append("\nsecurity-role-ref, role-name = '" + sRoleRefDesc.getRoleName() + "', role-link = '" - + sRoleRefDesc.getRoleLink() + "'"); - } - } - ret.append("\ngetFullWrpRemoteName() = " + getFullWrpRemoteName()); - ret.append("\ngetFullWrpHomeName() = " + getFullWrpHomeName()); - ret.append("\ngetFullWrpLocalName() = " + getFullWrpLocalName()); - ret.append("\ngetFullWrpLocalHomeName() = " + getFullWrpLocalHomeName()); - ret.append("\ngetFullWrpHandleName() = " + getFullWrpHandleName()); - ret.append("\ngetFullDerivedBeanName() = " + getFullDerivedBeanName()); - ret.append("\ngetRunAsRole() = " + getRunAsRole()); - return ret.toString(); - } - - /** - * MethodDesc constructor factory method to ovewrite - * - * @param meth the method to be wrapped into a MethodDesc instance - * @param index index of the method inside the MethodDesc List - * - * @return Returns a new MethodDesc (or subclass) - */ - protected MethodDesc newMethodDescInstance(final java.lang.reflect.Method meth, final Class classDef, final int index) { - return new MethodDesc(this, meth, classDef, index); - } - - /** - * Add a new method descriptor to the bean - * - * @param meth method to add inside MethodDescs list - * - * @return the constructed MethodDesc - */ - protected MethodDesc addMethodDesc(final java.lang.reflect.Method meth, final Class classDef) { - MethodDesc md = newMethodDescInstance(meth, classDef, methodDesc.size()); - methodDesc.add(md); - methodDescMap.put(meth, md); - return md; - } - - /** - * @return Returns the full name of the wrapper class for the bean - */ - public String getFullWrpRemoteName() { - return fullWrpRemoteName; - } - - /** - * @return Returns the full name of the wrapper class for the bean - */ - public String getFullWrpLocalName() { - return fullWrpLocalName; - } - - /** - * @return Returns the name of the wrapper class for the bean - */ - public String getWrpRemoteName() { - return wrpRemoteName; - } - - /** - * @return Returns the name of the wrapper class for the bean - */ - public String getWrpLocalName() { - return wrpLocalName; - } - - /** - * @return Returns the full name of the Handle class for the bean - */ - public String getFullWrpHandleName() { - return fullWrpHandleName; - } - - /** - * @return Returns the name of the Handle class for the bean - */ - public String getWrpHandleName() { - return wrpHandleName; - } - - /** - * @return Returns the full name of the wrapper home class for the bean - */ - public String getFullWrpHomeName() { - return fullWrpHomeName; - } - - /** - * @return Returns the full name of the wrapper local home class for the bean - */ - public String getFullWrpLocalHomeName() { - return fullWrpLocalHomeName; - } - - /** - * @return Returns the name of the wrapper home class for the bean - */ - public String getWrpHomeName() { - return wrpHomeName; - } - - /** - * @return Returns the name of the wrapper local home class for the bean - */ - public String getWrpLocalHomeName() { - return wrpLocalHomeName; - } - - /** - * @return Returns the full name of the derived class of the bean - */ - public String getFullDerivedBeanName() { - return fullDerivedBeanName; - } - - /** - * @return Returns the name of the derived class of the bean - */ - public String getDerivedBeanName() { - return derivedBeanName; - } - - /** - * @return Returns the parent deployment descriptor - */ - public DeploymentDesc getDeploymentDesc() { - return deploymentDesc; - } - - /** - * Set the parent deployment descriptor - * - * @param deploymentDesc parent DeploymentDesc - */ - public void setDeploymentDesc(final DeploymentDesc deploymentDesc) { - this.deploymentDesc = deploymentDesc; - logger = deploymentDesc.getLogger(); - } - - /** - * Sort the MethodDesc list. - * - * @param al ArrayList to be sorted - * @param begin begin index - * @param length size of the list - */ - private void orderMethodDesc(final ArrayList al, final int begin, final int length) { - MethodDesc[] mds = new MethodDesc[length]; - for (int i = 0; i < length; i++) { - mds[i] = (MethodDesc) al.get(begin + i); - } - Arrays.sort(mds, 0, length, new MethodDescComparator()); - for (int i = 0; i < length; i++) { - al.set(begin + i, mds[i]); - mds[i].setIndex(begin + i); - } - } - - /** - * Compare 2 MethodDesc. - */ - private class MethodDescComparator implements Comparator { - - /** - * Compare 2 Object. - * - * @param o1 instance 1 - * @param o2 instance 2 to be compared to instance 1 - * - * @return integer difference between the 2 instance - */ - public int compare(final Object o1, final Object o2) { - MethodDesc md1 = (MethodDesc) o1; - MethodDesc md2 = (MethodDesc) o2; - int res = md1.getMethod().getDeclaringClass().getName().compareTo( - md2.getMethod().getDeclaringClass().getName()); - if (res == 0) { - res = md1.getMethod().getName().compareTo(md2.getMethod().getName()); - if (res == 0) { - // Same method name => compare the parameter types - Class[] p1 = md1.getMethod().getParameterTypes(); - Class[] p2 = md2.getMethod().getParameterTypes(); - res = p1.length - p2.length; - if (res == 0) { - //Same parameter size - for (int i = 0; i < p1.length && (res = p1[i].getName().compareTo(p2[i].getName())) == 0; i++) { - // compare each method - } - } - } - } - return res; - } - } - - /** - * @return the runAs principal name. - */ - public String getRunAsPrincipalName() { - return runAsPrincipalName; - } - - /** - * @return true if local interface has been defined in the DD - */ - public boolean hasDefinedLocalInterface() { - if (localhome == null) { - return false; - } else { - return (!"javax.ejb.EJBLocalHome".equals(localhome.getName())); - } - } - - /** - * Build sas component used for CSIv2 interop - * @param iorSecurityConfigMapping CsiV2 ior configuration - */ - private void processIorSecurityConfig(final IorSecurityConfigMapping iorSecurityConfigMapping) { - - // Transport - TransportStruct transportStruct = new TransportStruct(); - // As - AsStruct asStruct = new AsStruct(); - // Sas - SasStruct sasStruct = new SasStruct(); - - // Now fill SasComponent with given ior values - TransportConfigMapping transportConfigMapping = iorSecurityConfigMapping.getTransportConfig(); - AsContextMapping asContextMapping = iorSecurityConfigMapping.getAsContext(); - SasContextMapping sasContextMapping = iorSecurityConfigMapping.getSasContext(); - - // target requires (if required) - int targetRequires = 0; - if (transportConfigMapping.getIntegrity().equals("required")) { - targetRequires |= Integrity.value; - } - if (transportConfigMapping.getConfidentiality().equals("required")) { - targetRequires |= Confidentiality.value; - } - if (transportConfigMapping.getEstablishTrustInClient().equals("required")) { - targetRequires |= EstablishTrustInClient.value; - } - if (transportConfigMapping.getEstablishTrustInTarget().equals("required")) { - targetRequires |= EstablishTrustInTarget.value; - } - transportStruct.setTargetRequires(targetRequires); - - - // target supports (supported or required) - int targetSupports = 0; - if (transportConfigMapping.getIntegrity().equals("supported") || transportConfigMapping.getIntegrity().equals("required")) { - targetSupports |= Integrity.value; - } - if (transportConfigMapping.getConfidentiality().equals("supported") || transportConfigMapping.getConfidentiality().equals("required")) { - targetSupports |= Confidentiality.value; - } - if (transportConfigMapping.getEstablishTrustInClient().equals("supported") || transportConfigMapping.getEstablishTrustInClient().equals("required")) { - targetSupports |= EstablishTrustInClient.value; - } - if (transportConfigMapping.getEstablishTrustInTarget().equals("supported") || transportConfigMapping.getEstablishTrustInTarget().equals("required")) { - targetSupports |= EstablishTrustInTarget.value; - } - transportStruct.setTargetSupports(targetSupports); - - - // As struct (if it is needed) - if (!asContextMapping.getAuthMethod().equals("none")) { - asStruct.setTargetName(asContextMapping.getRealm()); - asStruct.setTargetSupports(EstablishTrustInClient.value); - if (asContextMapping.getRequired().equals("true")) { - asStruct.setTargetRequires(EstablishTrustInClient.value); - - } - } - - // Sas struct (if supported) - if (sasContextMapping.getCallerPropagation().equals("supported")) { - sasStruct.enableGSSUPSupportedNamingMechanisms(); - sasStruct.setSupportedIdentityTypes(ITTAbsent.value | ITTAnonymous.value | ITTPrincipalName.value | ITTX509CertChain.value | ITTDistinguishedName.value); - sasStruct.setTargetSupports(IdentityAssertion.value); - } - - // and then, set our SAS component - sasComponent = new SasComponent(transportStruct, asStruct, sasStruct); - - - } - - /** - * @return the sasComponent. - */ - public SasComponent getSasComponent() { - return sasComponent; - } - /** - * @param sasComponent The sasComponent to set. - */ - public void setSasComponent(final SasComponent sasComponent) { - this.sasComponent = sasComponent; - } - - /** - * @return true if the bean has to be replicated over the cluster - */ - public boolean isClusterReplicated() { - return clusterReplicated; - } - - - /** - * Set the cluster replicated attribute - * @param replicated true if the replicated mode is enabled - */ - public void setClusterReplicated(final boolean replicated) { - this.clusterReplicated = replicated; - } - - /** - * @return the cluster - */ - public Object getCluster() { - return cluster; - } - - /** - * @param cluster the cluster to set - */ - public void setCluster(final Object cluster) { - this.cluster = cluster; - } -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/CommonMethodDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/CommonMethodDesc.java deleted file mode 100644 index f5827872ee..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/CommonMethodDesc.java +++ /dev/null @@ -1,104 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.security.PermissionCollection; -import java.security.Permissions; -import java.util.List; -import java.util.Iterator; -import javax.security.jacc.EJBMethodPermission; - -import org.ow2.jonas.deployment.ejb.xml.Method; -import org.ow2.jonas.deployment.ejb.xml.MethodParams; - - -/** - * Defines a ExcludeListDesc class for the management of - * EJBMEthodPermissions in JACC - * @author Florent Benoit : Initial developer - */ -public class CommonMethodDesc { - - /** - * List of EJBMethodPermission - */ - private PermissionCollection ejbMethodPermissions = null; - - - /** - * Constructor for CommonMethodDesc - * @param list given methods - */ - public CommonMethodDesc(List list) { - this.ejbMethodPermissions = new Permissions(); - generateEJBMethodPermissions(list); - } - - - /** - * Build all ejbMethodPermissions for the given methods - * @param methodList given methods - */ - protected void generateEJBMethodPermissions(List methodList) { - Iterator it = methodList.iterator(); - - // Manage permissions - while (it.hasNext()) { - Method method = (Method) it.next(); - MethodParams methodParams = method.getMethodParams(); - String[] methodParamsArray = null; - if (methodParams != null) { - - List methodParamsList = method.getMethodParams().getMethodParamList(); - String[] methodParamSize = new String[methodParamsList.size()]; - methodParamsArray = (String[]) methodParamsList.toArray(methodParamSize); - } - - // * or null value means that permission pertains to all methods - String methodName = method.getMethodName(); - if (methodName.equals("*")) { - methodName = null; - } - - - EJBMethodPermission ejbMethodPermission = - new EJBMethodPermission(method.getEjbName(), - methodName, - method.getMethodIntf(), - methodParamsArray); - // Add the permission - ejbMethodPermissions.add(ejbMethodPermission); - } - } - - /** - * Gets EJBMethod permissions - * @return the EJBMethodPermissions - */ - public PermissionCollection getEJBMethodPermissions() { - return ejbMethodPermissions; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDesc.java deleted file mode 100644 index f73f837823..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDesc.java +++ /dev/null @@ -1,529 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021ejbJarDD11-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import org.objectweb.util.monolog.api.Logger; -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.DescriptionGroupDesc; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.common.xml.JonasMessageDestination; -import org.ow2.jonas.deployment.common.xml.MessageDestination; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.EjbJar; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbJar; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.deployment.ejb.xml.JonasRunAsMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasSession; -import org.ow2.jonas.deployment.ejb.xml.MethodPermission; -import org.ow2.jonas.deployment.ejb.xml.Session; - -/** - * Class to hold meta-information related to the deployment of an ejb-jar - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - * @author Philippe Durieux - * @author Markus Karg (Novell port) - * @author Philippe Coq - */ -public abstract class DeploymentDesc extends DescriptionGroupDesc { - - /** - * Logger - */ - protected Logger logger; - - - /** - * Ejb spec version - */ - protected String specVersion = null; - - /** - * Set of enterprise beans deployment descriptors - */ - protected HashMap beanDesc = new HashMap(); - - /** - * Assembly descriptor - */ - protected AssemblyDescriptor asd = null; - - /** - * Deployment desc's file name (jar or directory) - */ - protected String fileName = null; - - /** - * Deployment desc's file name (jar or directory) - */ - protected String ejbClientJar = null; - - /** - * List of MethodPermissions - */ - private List methodPermissionsDescList = null; - - /** - * ExcludeList in Assembly descriptor - */ - private ExcludeListDesc excludeListDesc = null; - - /** - * List of JonasMessageDestinations - */ - protected JLinkedList jonasMDList = null; - - /** - * Xml content of the standard deployement descriptor file - */ - private String xmlContent = ""; - - /** - * Xml content of the JOnAS deployement descriptor file - */ - private String jonasXmlContent = ""; - - /** - * Mapping for runAs principals - * Principal name --> list of roles (array) - */ - private Map runAsMapping = null; - - /** - * true if EJB monitoring is active for this EJB-JAR, null if nothing set. - */ - private Boolean monitoringEnabled; - - /** - * Number of milliseconds after which methods will start warning for this - * EJB-JAR, null if nothing set. - */ - - private Integer warningThreshold; - - /** - * Build the Meta-Information from the XML data binding trees - * containing the EJB and JOnAS deployment descriptors. - * @param classLoader The Class Loader to be used - * @param ejbJar The EjbJar information, from standard deployment descriptor. - * @param jonasEjbJar The JonasEjbJar information, from JOnAS specific deployment descriptor. - * @param l The logger to be used for tracing - * @param fileName deployment desc's jar or directory name - * @throws DeploymentDescException Cannot deploy bean - */ - public DeploymentDesc(final ClassLoader classLoader, - final EjbJar ejbJar, - final JonasEjbJar jonasEjbJar, - final Logger l, - final String fileName) - throws DeploymentDescException { - - - logger = l; - - // set jarFileName - this.fileName = fileName; - - // test classloader - if (classLoader == null) { - throw new DeploymentDescException("DeploymentDesc: Classloader is null"); - } - - // spec-version - specVersion = ejbJar.getVersion(); - - // ejb-client-jar - ejbClientJar = ejbJar.getEjbClientJar(); - - // assembly descriptor - asd = ejbJar.getAssemblyDescriptor(); - - // Run-as mapping - runAsMapping = new HashMap(); - for (Iterator i = jonasEjbJar.getJonasRunAsMappingList().iterator(); i.hasNext();) { - // Get Mapping - JonasRunAsMapping jonasRunAsMapping = (JonasRunAsMapping) i.next(); - String principalName = jonasRunAsMapping.getPrincipalName(); - // Get existing roles if any - String[] existingRunAsRoleMapping = (String[]) runAsMapping.get(principalName); - String[] newMappingRoles = null; - int r = 0; - if (existingRunAsRoleMapping == null) { - newMappingRoles = new String[jonasRunAsMapping.getRoleNamesList().size()]; - } else { - newMappingRoles = new String[jonasRunAsMapping.getRoleNamesList().size() + existingRunAsRoleMapping.length]; - // Now add existing roles - System.arraycopy(existingRunAsRoleMapping, 0, newMappingRoles, 0, existingRunAsRoleMapping.length); - r = existingRunAsRoleMapping.length; - } - Iterator itR = jonasRunAsMapping.getRoleNamesList().iterator(); - while (itR.hasNext()) { - newMappingRoles[r] = (String) itR.next(); - r++; - } - runAsMapping.put(principalName, newMappingRoles); - - } - - // Use by PermissionManager for translating xml into EJBMethodPermission - methodPermissionsDescList = new LinkedList(); - // Create EJBMEthodPermissions for each method-permission - if (asd != null) { - for (Iterator i = asd.getMethodPermissionList().iterator(); i.hasNext();) { - MethodPermission methodPermission = (MethodPermission) i.next(); - methodPermissionsDescList.add(new MethodPermissionDesc(methodPermission)); - } - } - - // Use by PermissionManager for translating xml into EJBMethodPermission - if (asd != null && asd.getExcludeList() != null) { - excludeListDesc = new ExcludeListDesc(asd.getExcludeList()); - } - - // jonas-message-destination - jonasMDList = jonasEjbJar.getJonasMessageDestinationList(); - - // HashMap of jonas-session - HashMap jonasSession = new HashMap(); - for (Iterator i = jonasEjbJar.getJonasSessionList().iterator(); i.hasNext();) { - JonasSession jSes = (JonasSession) i.next(); - jonasSession.put(jSes.getEjbName(), jSes); - } - - // session beans - if (ejbJar.getEnterpriseBeans() != null) { - for (Iterator i = ejbJar.getEnterpriseBeans().getSessionList().iterator(); i.hasNext();) { - BeanDesc bd = null; - Session ses = (Session) i.next(); - // find corresponding jonas session - JonasSession jSes = (JonasSession) jonasSession.get(ses.getEjbName()); - if (jSes == null) { - // Build a default jonas-session if not exist - jSes = new JonasSession(); - jSes.setEjbName(ses.getEjbName()); - } - // Can be an EJB3, continue - if (ses.getSessionType() == null) { - continue; - } - if (ses.getSessionType().equals("Stateful")) { - // stateful - bd = new SessionStatefulDesc(classLoader, ses, asd, jSes, jonasMDList, fileName); - } else if (ses.getSessionType().equals("Stateless")) { - // stateless - bd = new SessionStatelessDesc(classLoader, ses, asd, jSes, jonasMDList, fileName); - } else { - throw new DeploymentDescException("invalid session-type content for bean " + ses.getEjbName()); - } - bd.setDeploymentDesc(this); - bd.check(); - beanDesc.put(bd.getEjbName(), bd); - } - } - - // HashMap of jonas-entity - HashMap jonasEntity = new HashMap(); - for (Iterator i = jonasEjbJar.getJonasEntityList().iterator(); i.hasNext();) { - JonasEntity jEnt = (JonasEntity) i.next(); - jonasEntity.put(jEnt.getEjbName(), jEnt); - } - // entity beans - if (ejbJar.getEnterpriseBeans() != null) { - for (Iterator i = ejbJar.getEnterpriseBeans().getEntityList().iterator(); i.hasNext();) { - BeanDesc bd = null; - Entity ent = (Entity) i.next(); - // find corresponding jonas entity - JonasEntity jEnt = (JonasEntity) jonasEntity.get(ent.getEjbName()); - if (jEnt == null) { - throw new DeploymentDescException("jonas-entity missing for bean " + ent.getEjbName()); - } - if (ent.getPersistenceType().equals("Bean")) { - // bean managed - bd = new EntityBmpDesc(classLoader, ent, asd, jEnt, jonasMDList, fileName); - } else if (ent.getPersistenceType().equals("Container")) { - // container managed (always jdbc) - bd = newEntityBeanDesc(classLoader, ent, asd, jEnt, jonasMDList); - } else { - throw new DeploymentDescException("Invalid persistence-type content for bean " + ent.getEjbName()); - } - bd.setDeploymentDesc(this); - bd.check(); - beanDesc.put(bd.getEjbName(), bd); - } - } - } - - /** - * Get an Iterator on the Bean Desc list - * @return Iterator on BeanDesc - */ - public Iterator getBeanDescIterator() { - return beanDesc.values().iterator(); - } - - /** - * Get descriptors for all beans contained in jar file - * @return Array of bean's descriptors - */ - public BeanDesc[] getBeanDesc() { - BeanDesc[] ret = new BeanDesc[beanDesc.size()]; - int j = 0; - for (Iterator i = beanDesc.values().iterator(); i.hasNext(); j++) { - ret[j] = (BeanDesc) i.next(); - } - return ret; - } - - /** - * Gets the Mapping for run-as principal - * @param principalName name of the run-as principal - * @return array of roles - */ - public String[] getRolesForRunAsPrincipal(final String principalName) { - return (String[]) runAsMapping.get(principalName); - } - - /** - * Get bean descriptor given its name - * @param ejbName the name of the bean in the Deployment Descriptor - * @return bean descriptor given its name - */ - public BeanDesc getBeanDesc(final String ejbName) { - return (BeanDesc) beanDesc.get(ejbName); - } - - /** - * Get bean descriptor given its abstract schema name - * @param asn Abstract Schema Name - * @return null if it doesn't exist. - */ - public EntityCmp2Desc asn2BeanDesc(final String asn) { - for (Iterator i = beanDesc.values().iterator(); i.hasNext();) { - BeanDesc bd = (BeanDesc) i.next(); - if (bd instanceof EntityCmp2Desc) { - if (asn.equals(((EntityCmp2Desc) bd).getAbstractSchemaName())) { - return ((EntityCmp2Desc) bd); - } - } - } - return null; - } - - - /** - * Get the list of the methodPermissionDesc objects which represent - * method-permission elements in assembly-descriptor - * @return the list of methodPermissionDesc objects - */ - public List getMethodPermissionsDescList() { - return methodPermissionsDescList; - } - - /** - * Get the exclude list of the assembly descriptor - * @return the exclude list of the assembly descriptor - */ - public ExcludeListDesc getExcludeListDesc() { - return excludeListDesc; - } - - - /** - * Get bean descriptor given its interface local name - * @param itfLocalName local interface name - * @return null if it doesn't exist. - */ - public BeanDesc getBeanDescWithLocalInterface(final String itfLocalName) { - for (Iterator i = beanDesc.values().iterator(); i.hasNext();) { - BeanDesc bd = (BeanDesc) i.next(); - if (bd.getLocalClass() != null) { - if (itfLocalName.equals(bd.getLocalClass().getName())) { - return bd; - } - } - } - return null; - } - - /** - * Find the JOnAS message destination for the given name - * @param mdLink the name of the message destination link in the Deployment Descriptor - * @return boolean if link was found - */ - public boolean getMessageDestination(final String mdLink) { - MessageDestination md = null; - if (asd != null && asd.getMessageDestinationList() != null) { - for (Iterator i = asd.getMessageDestinationList().iterator(); i.hasNext();) { - md = (MessageDestination) i.next(); - if (md.getMessageDestinationName().equals(mdLink)) { - return true; - } - } - } - return false; - } - - /** - * Get the JOnAS message destination for the given name - * @param mdLink the name of the message destination link in the Deployment Descriptor - * @return the jonas message destination given the name - */ - public JonasMessageDestination getJonasMessageDestination(final String mdLink) { - JonasMessageDestination jmd = null; - if (jonasMDList != null) { - for (Iterator i = jonasMDList.iterator(); i.hasNext();) { - jmd = (JonasMessageDestination) i.next(); - if (jmd.getMessageDestinationName().equals(mdLink)) { - return jmd; - } - } - } - return null; - } - - /** - * In case of beans with old CMP1 persistance, we need to instanciate the old class, - * as if we were in an old Deployment Descriptor. - * Default is CMP2.x for entity beans with a EJB2.0 DD. - * - * @param cl The ClassLoader to be used - * @param ent Entity MetaInformation from XML files - * @param asd AssemblyDescriptor MetaInformation from XML files - * @param j JonasEntity MetaInformation from XML files - * @param jMDRList MessageDrivenRef list - * - * @return The Entity Bean Descriptor, for the good CMP version. - * - * @throws DeploymentDescException Cannot build Entity Descriptor - */ - protected abstract BeanDesc newEntityBeanDesc(ClassLoader cl, Entity ent, - AssemblyDescriptor asd, JonasEntity j, JLinkedList jMDRList) - throws DeploymentDescException; - - /** - * Get the display name - * @return the Display name string, from the deployment descriptor. - */ - @Override - public String getDisplayName() { - return displayName; - } - - /** - * Get the ejb-client-jar name - * @return the ejb-client-jar string, from the deployment descriptor (may be null). - */ - public String getEjbClientJar() { - return ejbClientJar; - } - - - /** - * get the current logger - * @return the Logger - */ - public Logger getLogger() { - return logger; - } - - /** - * set the current logger - * @param logger the Logger - */ - public void setLogger(final Logger logger) { - this.logger = logger; - } - - /** - * Return the content of the web.xml file - * @return the content of the web.xml file - */ - public String getXmlContent() { - return xmlContent; - } - - /** - * Return the content of the jonas-web.xml file - * @return the content of the jonas-web.xml file - */ - public String getJOnASXmlContent() { - return jonasXmlContent; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - @Override - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetDisplayName()=" + getDisplayName()); - ret.append("\ngetEjbClientJar()=" + getEjbClientJar()); - BeanDesc[] b = getBeanDesc(); - for (int i = 0; i < b.length; i++) { - ret.append("\ngetBeanDesc(" + i + ")=" + b[i].getClass().getName()); - ret.append(b[i].toString()); - } - return ret.toString(); - } - - /** - * @param xmlContent XML Content - */ - public void setXmlContent(final String xmlContent) { - this.xmlContent = xmlContent; - } - - /** - * @param jonasXmlContent XML Content - */ - public void setJOnASXmlContent(final String jonasXmlContent) { - this.jonasXmlContent = jonasXmlContent; - } - /** - * @return true if EJB monitoring is active for this EJB-JAR, null if - * nothing set. - */ - public Boolean getMonitoringEnabled() { - return this.monitoringEnabled; - } - - /** - * @return Number of milliseconds after which methods will start warning - * for this EJB-JAR, null if nothing set. - */ - public Integer getWarningThreshold() { - return this.warningThreshold; - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb1_1.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb1_1.java deleted file mode 100644 index f569ee8fb8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb1_1.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.EjbJar; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbJar; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; - -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Class to hold meta-information related to the deployment of an ejb-jar 1.1 - * @author Philippe Durieux (Bull) - */ -public class DeploymentDescEjb1_1 extends DeploymentDesc { - - /** - * constructor - */ - public DeploymentDescEjb1_1(ClassLoader cl, EjbJar ej, - JonasEjbJar jej, Logger l, - String fileName) - throws DeploymentDescException { - super(cl, ej, jej, l, fileName); - // Trace - if (logger.getCurrentIntLevel() == BasicLevel.DEBUG) { - logger.log(BasicLevel.DEBUG, "DEPLOYMENT DESCRIPTOR = \n(" + this.toString() + "\n)"); - } - } - - protected BeanDesc newEntityBeanDesc(ClassLoader classLoader, - Entity ent, - AssemblyDescriptor asd, - JonasEntity jEnt, - JLinkedList jMDRList) throws DeploymentDescException { - return new EntityJdbcCmp1Desc(classLoader, ent, asd, jEnt, jMDRList, fileName); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb2.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb2.java deleted file mode 100644 index c6a17508cb..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/DeploymentDescEjb2.java +++ /dev/null @@ -1,252 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.EjbJar; -import org.ow2.jonas.deployment.ejb.xml.EjbRelation; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbJar; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbRelation; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.deployment.ejb.xml.JonasMessageDriven; -import org.ow2.jonas.deployment.ejb.xml.MessageDriven; - -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Class to hold meta-information related to the deployment of an ejb-jar - * This subclass is for specification EJB 2.x, i.e. CMP2 persistance and MDB. - * It is also responsible for loading the Jorm Meta Information. - * @author S.Chassande-Barrioz : Initial developer - * @author Christophe Ney [cney@batisseurs.com] - * @author Philippe Durieux (new Jorm mapping) - */ -public class DeploymentDescEjb2 extends DeploymentDesc { - - /** - * List of relations (EjbRelationDesc) defined in this Descriptor - */ - private ArrayList ejbRelations = new ArrayList(); - - /** - * Build the Meta-Information from the XML data binding trees - * containing the EJB and JOnAS deployment descriptors. - * @param classLoader The Class Loader to be used - * @param ejbJar The EjbJar information, from standard deployment descriptor. - * @param jonasEjbJar The JonasEjbJar information, from JOnAS specific deployment descriptor. - * @param l The logger to be used for tracing - * @param FileName deployment desc's jar or directory name - * @throws DeploymentDescException Error when building the Deployment Descriptor - */ - public DeploymentDescEjb2(ClassLoader classLoader, EjbJar ejbJar, - JonasEjbJar jonasEjbJar, Logger l, - String fileName) - throws DeploymentDescException { - - // Session and Entity bean descriptors are built here. - // This part is common with EJB1.1 spec (no CMP2, no MDB) - super(classLoader, ejbJar, jonasEjbJar, l, fileName); - - // HashMap of jonas-message-driven - HashMap jonasMessageDriven = new HashMap(); - for (Iterator i = jonasEjbJar.getJonasMessageDrivenList().iterator(); i.hasNext(); ) { - JonasMessageDriven jMd = (JonasMessageDriven) i.next(); - jonasMessageDriven.put(jMd.getEjbName(), jMd); - } - - // message-driven beans - if (ejbJar.getEnterpriseBeans() != null) { - for (Iterator i = ejbJar.getEnterpriseBeans().getMessageDrivenList().iterator(); i.hasNext(); ) { - BeanDesc bd = null; - MessageDriven md = (MessageDriven) i.next(); - /* - * The Standard DTD allows a message-driven-bean without ejb-name - * Problem to associate infos to this bean (trans-attribute, jonas-specific infos) - * So the ejb-name must be specify and we check this - */ - if (md.getEjbName() == null) { - throw new DeploymentDescException("ejb-name missing for a message driven bean"); - } - // find corresponding jonas message-driven - JonasMessageDriven jMd = (JonasMessageDriven) jonasMessageDriven.get(md.getEjbName()); - if (jMd == null) { - throw new DeploymentDescException("jonas-message-driven-bean missing for bean " + md.getEjbName()); - } - - bd = new MessageDrivenDesc(classLoader, md, asd, jMd, - jonasEjbJar.getJonasMessageDestinationList(), fileName); - - bd.setDeploymentDesc(this); - bd.check(); - beanDesc.put(bd.getEjbName(), bd); - } - } - - // Relations on Entity beans CMP2 - if (ejbJar.getRelationships() != null) { - - // ArrayList of standard-relation names (Strings) - ArrayList stdRelations = new ArrayList(); - - // HashMap of jonas-relation - HashMap jonasRelations = new HashMap(); - for (Iterator i = jonasEjbJar.getJonasEjbRelationList().iterator(); i.hasNext(); ) { - JonasEjbRelation jer = (JonasEjbRelation) i.next(); - String jerName = jer.getEjbRelationName(); - //if (!stdRelations.contains(jerName)) { - // throw new DeploymentDescException("ejb-relation missing in ejb-jar.xml for the relation " + jerName); - //} - jonasRelations.put(jerName, jer); - } - - // ejb-relation - for (Iterator i = ejbJar.getRelationships().getEjbRelationList().iterator(); i.hasNext();) { - EjbRelation er = (EjbRelation) i.next(); - - // build the descriptors for the relation. - EjbRelationDesc erd = new EjbRelationDesc(er, logger); - ejbRelations.add(erd); - - // Keep a list of relation names. - stdRelations.add(erd.getName()); - - // find corresponding jonas relation (may not exist) - JonasEjbRelation jer = (JonasEjbRelation) jonasRelations.get(erd.getName()); - erd.setJonasInfo(jer); - - // makes the links between entity beans and relationship roles - EjbRelationshipRoleDesc rsd1 = erd.getRelationshipRole1(); - EjbRelationshipRoleDesc rsd2 = erd.getRelationshipRole2(); - EntityCmp2Desc ed1 = (EntityCmp2Desc) beanDesc.get(rsd1.getSourceBeanName()); - EntityCmp2Desc ed2 = (EntityCmp2Desc) beanDesc.get(rsd2.getSourceBeanName()); - // Check the sources beans names are correct - if ((ed1 == null) || (ed2 == null)) { - throw new DeploymentDescException("Invalid ejb-name for a relation-ship-role-source for the relation '" - + erd.getName() - + "' ('" - + rsd1.getSourceBeanName() - + "' or '" - + rsd2.getSourceBeanName() - + "' invalid)"); - } - // Check if the source beans have local interfaces - if ((ed1.getLocalHomeClass() == null) || (ed1.getLocalClass() == null)) { - throw new DeploymentDescException("The entity bean '" + ed1.getEjbName() - + "' involved in the relationship '" - + erd.getName() - + "' must have local interfaces"); - } - if ((ed2.getLocalHomeClass() == null) || (ed2.getLocalClass() == null)) { - throw new DeploymentDescException("The entity bean '" + ed2.getEjbName() - + "' involved in the relationship '" - + erd.getName() - + "' must have local interfaces"); - } - ed1.addEjbRelationshipRoleDesc(rsd1); - ed2.addEjbRelationshipRoleDesc(rsd2); - rsd1.setTargetBean(ed2); - rsd1.setSourceBean(ed1); - rsd2.setTargetBean(ed1); - rsd2.setSourceBean(ed2); - - // Fill the mapping information with the values defined in jonas DD - erd.fillMappingInfo(); - - // Fill the mapping information for the relation with default values - // if some mapping information is missing - erd.fillMappingInfoWithDefault(); - } - - for (Iterator i = jonasEjbJar.getJonasEjbRelationList().iterator(); i.hasNext(); ) { - JonasEjbRelation jer = (JonasEjbRelation) i.next(); - String jerName = jer.getEjbRelationName(); - if (!stdRelations.contains(jerName)) { - throw new DeploymentDescException("ejb-relation missing in ejb-jar.xml for the relation " + jerName); - } - } - } - - // Trace - if (logger.getCurrentIntLevel() == BasicLevel.DEBUG) { - logger.log(BasicLevel.DEBUG, "DEPLOYMENT DESCRIPTOR = \n(" + this.toString() + "\n)"); - } - } - - /** - * In case of beans with old CMP1 persistance, we need to instanciate the old class, - * as if we were in an old Deployment Descriptor. - * Default is CMP2.x for entity beans with a EJB2.0 DD. - * @param classLoader The ClassLoader to be used - * @param ent Entity MetaInformation from XML files - * @param asd AssemblyDescriptor MetaInformation from XML files - * @param jEnt JonasEntity MetaInformation from XML files - * @return The Entity Bean Descriptor, for the good CMP version. - * @throws DeploymentDescException Cannot build Entity Descriptor - */ - protected BeanDesc newEntityBeanDesc(ClassLoader classLoader, - Entity ent, - AssemblyDescriptor asd, - JonasEntity jEnt, - JLinkedList jMDRList) - throws DeploymentDescException { - - if (ent.getCmpVersion() == null || ent.getCmpVersion().equals("2.x")) { - return new EntityJdbcCmp2Desc(classLoader, ent, asd, jEnt, this, jMDRList, fileName); - } else { - return new EntityJdbcCmp1Desc(classLoader, ent, asd, jEnt, jMDRList, fileName); - } - } - - /** - * Get iterator of meta-info for all defined relations - * @return an iterator of EjbRelationDesc - */ - public Iterator getEjbRelationDescIterator() { - return ejbRelations.iterator(); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - for (Iterator i = getEjbRelationDescIterator(); i.hasNext();) { - ret.append("\nejbRelationDesc[]=" + i.next()); - } - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationDesc.java deleted file mode 100644 index 714271cd28..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationDesc.java +++ /dev/null @@ -1,311 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ejb; - -import java.util.HashMap; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.xml.EjbRelation; -import org.ow2.jonas.deployment.ejb.xml.EjbRelationshipRole; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbRelation; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbRelationshipRole; - -import org.objectweb.util.monolog.api.Logger; - -/** - * Class to hold meta-information related to an ejb-relation. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin on May 2003: code cleanup - * @author Helene Joanin on May 2003: complement for legacy first version - * @author Ph Durieux (may 2004): default names for relations and roles. - */ - -public class EjbRelationDesc { - - private Logger logger = null; - private String name; // name of the relation - private String name1; // name of the relation role 1 - private String name2; // name of the relation role 2 - private EjbRelationshipRoleDesc relationshipRoleDesc1; - private EjbRelationshipRoleDesc relationshipRoleDesc2; - private String jdbcTableName = null; - - - // Zeus objects for the associated mapping information (needed in fillMappingInfo); - private EjbRelationshipRole role1; - private EjbRelationshipRole role2; - JonasEjbRelation jRel = null; - JonasEjbRelationshipRole jRsRole1 = null; - JonasEjbRelationshipRole jRsRole2 = null; - - - /** - * constructor to be used by parent node. - * @param er The described object EjbRelation - * @param logger The logger - * @throws DeploymentDescException thrown in error case. - */ - public EjbRelationDesc(EjbRelation er, Logger logger) throws DeploymentDescException { - - this.logger = logger; - - role1 = er.getEjbRelationshipRole(); - role2 = er.getEjbRelationshipRole2(); - - String cmr1 = ""; - if (role1.getCmrField() != null) { - cmr1 = role1.getCmrField().getCmrFieldName(); - } - String cmr2 = ""; - if (role2.getCmrField() != null) { - cmr2 = role2.getCmrField().getCmrFieldName(); - } - - // first role. A name is mandatory. - // If not set: choose the cmr name of the opposite role, if it exists. - name1 = role1.getEjbRelationshipRoleName(); - if (name1 == null || name1.length() == 0) { - if (role2.getCmrField() != null) { - name1 = cmr2; - } else { - name1 = "role1"; // a default value - } - // We have changed the name, keep the new one. - role1.setEjbRelationshipRoleName(name1); - } - - // second role. A name is mandatory. - // If not set: choose the cmr name of the opposite role, if it exists. - name2 = role2.getEjbRelationshipRoleName(); - if (name2 == null || name2.length() == 0) { - if (role1.getCmrField() != null) { - name2 = cmr1; - } else { - name2 = "role2"; // a default value - } - // We have changed the name, keep the new one. - role2.setEjbRelationshipRoleName(name2); - } - - // the two roles must have different names - if (name1.equals(name2)) { - throw new DeploymentDescException("Relation " + name + " have 2 roles with same name: " + name1); - } - - // name of the relation. If not set, choose a combination of the 2 cmr names. - String ern = er.getEjbRelationName(); - if (ern == null || ern.length() == 0) { - name = cmr2 + "-" + cmr1; - } else { - name = ern; - } - } - - /** - * Finish initialisation - * @param jer The described object JonasEjbRelation. This param may be null. - * @throws DeploymentDescException in error case - */ - public void setJonasInfo(JonasEjbRelation jer) throws DeploymentDescException { - // search the associated JonasEjbRelationshipRole of EjbRelationshipRole. - // They may not exist. - jRel = jer; - HashMap table = new HashMap(); - if (jRel != null) { - for (Iterator i = jRel.getJonasEjbRelationshipRoleList().iterator(); i.hasNext();) { - JonasEjbRelationshipRole jersr = (JonasEjbRelationshipRole) i.next(); - String rname = jersr.getEjbRelationshipRoleName(); - if (!rname.equals(name1) && !rname.equals(name2)) { - throw new DeploymentDescException("Invalid relationship-role-name \"" + rname + "\" for relation \"" + name + "\" in jonas-ejb-jar.xml"); - } - table.put(rname, jersr); - } - } - jRsRole1 = (JonasEjbRelationshipRole) table.get(name1); - jRsRole2 = (JonasEjbRelationshipRole) table.get(name2); - - relationshipRoleDesc1 = new EjbRelationshipRoleDesc(this, name1, role1, jRsRole1, role2, true, logger); - relationshipRoleDesc2 = new EjbRelationshipRoleDesc(this, name2, role2, jRsRole2, role1, false, logger); - - // Add the opposite CMR field for the relation XXu - // in order to implement the coherence. - boolean r1hf = relationshipRoleDesc1.hasCmrField(); - boolean r2hf = relationshipRoleDesc2.hasCmrField(); - EjbRelationshipRoleDesc nocmr = null; - EjbRelationshipRoleDesc cmr = null; - if (r1hf && !r2hf) { - nocmr = relationshipRoleDesc2; - cmr = relationshipRoleDesc1; - } else if (!r1hf && r2hf) { - nocmr = relationshipRoleDesc1; - cmr = relationshipRoleDesc2; - } - if (nocmr != null) { - // The relation is OXu, the role 'role' does not have cmr field - String cmrName = name; - // calculate a cmr field name with the relation name. The bad - // character are replaced by the character '_'. - for (int i = 0; i < cmrName.length(); i++) { - char c = cmrName.charAt(i); - if (!Character.isJavaIdentifierPart(c)) { - cmrName = cmrName.replace(c, '_'); - } - } - cmrName = "jonasCMR" + cmrName; - // Add the cmr, no type is specified because the added cmr field - // is mono valued. - nocmr.setCmrFieldName(cmrName); - nocmr.setIsJOnASCmrField(); - if (nocmr.isTargetMultiple()) { - if (cmr.isTargetMultiple()) { - nocmr.setCmrFieldType(cmr.cmrFieldType.getName()); - } else { - nocmr.setCmrFieldType("java.util.Collection"); - } - } - } - } - - /** - * Fills the mapping information of this relation with the values defined in jonas DD. - * @throws DeploymentDescException thrown in error case. - */ - protected void fillMappingInfo() throws DeploymentDescException { - if (jRel != null) { - if (jRel.getJdbcTableName() != null) { - if (jRel.getJdbcTableName().length() != 0) { - jdbcTableName = jRel.getJdbcTableName(); - } - } - relationshipRoleDesc1.fillMappingInfo(); - relationshipRoleDesc2.fillMappingInfo(); - } - } - - /** - * Fills the mapping information of this relation with default values, - * if the mapping information is not already initialized. - */ - protected void fillMappingInfoWithDefault() { - if (!hasJdbcTable()) { - if (getRelationshipRole1().isTargetMultiple() - && getRelationshipRole2().isTargetMultiple()) { - // Many-Many: join table needed for the relation - jdbcTableName = getRelationshipRole1().getSourceBean().getAbstractSchemaName().toUpperCase() - + "_" + getRelationshipRole2().getSourceBean().getAbstractSchemaName().toUpperCase(); - } - } - if (!getRelationshipRole1().isSourceMultiple() - && !getRelationshipRole2().isSourceMultiple()) { - // One-One - if (!getRelationshipRole1().hasJdbcMapping() - && !getRelationshipRole2().hasJdbcMapping()) { - if (!getRelationshipRole1().isJOnASCmrField() - && !getRelationshipRole2().isJOnASCmrField()) { - // One <-> One: foreign keys in the source bean of the first RsRole defined - getRelationshipRole1().fillMappingInfoWithDefault(); - } else { - if (!getRelationshipRole1().isJOnASCmrField()) { - // One -> One: foreign keys in the source bean of RsRole1 - getRelationshipRole1().fillMappingInfoWithDefault(); - } else { - // One <- One: foreign keys in the target bean of RsRole1 - getRelationshipRole2().fillMappingInfoWithDefault(); - } - } - } - } else if (getRelationshipRole1().isSourceMultiple() - && getRelationshipRole2().isSourceMultiple()) { - // Many-Many - getRelationshipRole1().fillMappingInfoWithDefault(); - getRelationshipRole2().fillMappingInfoWithDefault(); - } else { - // One-Many or Many-One - if (getRelationshipRole1().isSourceMultiple()) { - // Many-One - getRelationshipRole1().fillMappingInfoWithDefault(); - } else { - // One-Many - getRelationshipRole2().fillMappingInfoWithDefault(); - } - } - } - - /** - * get the name of the relationship. - * @return the String name of the relationship. - */ - public String getName() { - return name; - } - - /** - * get the meta-information for the first relation-ship-role - * @return the EjbRelationshipRoleDesc for the first relation-ship-role - */ - public EjbRelationshipRoleDesc getRelationshipRole1() { - return relationshipRoleDesc1; - } - - /** - * get the meta-information for the second relation-ship-role - * @return the EjbRelationshipRoleDesc for the second relation-ship-role - */ - public EjbRelationshipRoleDesc getRelationshipRole2() { - return relationshipRoleDesc2; - } - - /** - * Is a table in the database is defined for this relation ? - * @return true if table name in the database is defined for this relation. - */ - public boolean hasJdbcTable() { - return (jdbcTableName != null); - } - - /** - * Return the table name in the database associated to this relation. - * @return the String name of the table associated to this relation. - */ - public String getJdbcTableName() { - return jdbcTableName; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName()=" + getName()); - if (hasJdbcTable()) { - ret.append("\ngetJdbcTableName() = " + getJdbcTableName()); - } - ret.append("\ngetRelationshipRole1() = " + getRelationshipRole1()); - ret.append("\ngetRelationshipRole2() = " + getRelationshipRole2()); - return ret.toString(); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationshipRoleDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationshipRoleDesc.java deleted file mode 100644 index 9a970c903b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbRelationshipRoleDesc.java +++ /dev/null @@ -1,496 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.deployment.ejb; - -import java.util.HashMap; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.xml.EjbRelationshipRole; -import org.ow2.jonas.deployment.ejb.xml.ForeignKeyJdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasEjbRelationshipRole; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Class to hold meta-information related to an ejb-relation-role - * Created on July 7, 2002 - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin on May 2003: code cleanup - * @author Helene Joanin on May 2003: complement for legacy first version - */ -public class EjbRelationshipRoleDesc { - - private Logger logger = null; - - /** - * This constant can be used to represent an index of a gen class. - */ - public static final byte INDEX = 1; - - /** - * This constant can be used to represent the source of the relation, ie the - * element which references the other. - */ - public static final byte SOURCE = 2; - - /** - * This constant can be used to represent the target of the relation, ie the - * element which is referenced by the other. - */ - public static final byte TARGET = 4; - - /** - * Don't change these values without looking at getRelationType() ! - */ - public static final byte OOU = 0; - - public static final byte OOB = 1; - - public static final byte OMU = 2; - - public static final byte OMB = OMU + OOB; - - public static final byte MOU = 4; - - public static final byte MOB = MOU + OOB; - - public static final byte MMU = OMU + MOU; - - public static final byte MMB = MMU + OOB; - - private String rsrName; - - private String ejbSourceName; - - private EjbRelationDesc ejbRelationDesc; - - private EntityCmp2Desc sourceEntityCmp2Desc; - - private boolean isSourceMultiple; - - private EntityCmp2Desc targetEntityCmp2Desc; - - private boolean isTargetMultiple; - - private boolean isSlave; - - protected String cmrFieldName = null; - - protected Class cmrFieldType = null; - - protected boolean isJOnASCMR = false; - - private byte relationType = -1; - - private boolean mustCascade; - - // Zeus objects for the associated mapping information (needed in - // fillMappingInfo); - // They may be null. - private JonasEjbRelationshipRole jSourceRsRole = null; - - // mapping information build by fillMappingInfo and - // fillMappingInfoWithDefault - private HashMap foreignKeyMap = new HashMap(); - - private boolean hasJdbcMapping = false; - - /** - * constructor to be used by parent node - * @param rd parent node = EjbRelationDesc - * @param role this role (standard EjbRelationshipRole) - * @param jrole this Jonas role (JonasEjbRelationshipRole). This param may - * be null. - * @param opposite opposite role in the relation (standard - * EjbRelationshipRole) - * @throws DeploymentDescException in error case. - */ - public EjbRelationshipRoleDesc(EjbRelationDesc rd, String name, EjbRelationshipRole role, - JonasEjbRelationshipRole jrole, EjbRelationshipRole opposite, boolean isSlave, Logger logger) - throws DeploymentDescException { - - this.logger = logger; - ejbRelationDesc = rd; - this.isSlave = isSlave; - rsrName = name; - mustCascade = opposite.isCascadeDelete(); - ejbSourceName = role.getRelationshipRoleSource().getEjbName(); - - // mutiplicity is One or Many - if (opposite.getMultiplicity().equalsIgnoreCase("Many")) { - isTargetMultiple = true; - if (role.isCascadeDelete()) { - throw new DeploymentDescException("Cascade delete not allowed for relationshipRole for relationship '" - + rd.getName() + "(because opposite role has a multiplicity of Many)"); - } - } else if (opposite.getMultiplicity().equalsIgnoreCase("One")) { - isTargetMultiple = false; - } else { - throw new DeploymentDescException("Invalid multiplicity value for relationshipRole for relationship '" - + rd.getName() + "'(must be One or Many)"); - } - if (role.getMultiplicity().equalsIgnoreCase("Many")) { - isSourceMultiple = true; - } else if (role.getMultiplicity().equalsIgnoreCase("One")) { - isSourceMultiple = false; - } else { - throw new DeploymentDescException("Invalid multiplicity value for relationshipRole for relationship '" - + rd.getName() + "'(must be One or Many)"); - } - - // store cmr field if any - if (role.getCmrField() != null) { - setCmrFieldName(role.getCmrField().getCmrFieldName()); - if (isTargetMultiple) { - String type = role.getCmrField().getCmrFieldType(); - if (type == null) { - throw new DeploymentDescException( - "You must specify a cmr-field-type in case where the relation is 'Many' in the cmr-field '" - + cmrFieldName + "' of bean " + ejbSourceName); - } - setCmrFieldType(type); - } - } - - // store the JonasEjbRelationshipRole - jSourceRsRole = jrole; - } - - /** - * Fills the mapping information of this relation-ship role with the values - * defined in jonas DD. - * @throws DeploymentDescException in error case. - */ - protected void fillMappingInfo() throws DeploymentDescException { - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "" + (jSourceRsRole != null) + " for " + rsrName); - } - if (jSourceRsRole != null) { - for (Iterator i = jSourceRsRole.getForeignKeyJdbcMappingList().iterator(); i.hasNext();) { - ForeignKeyJdbcMapping fkMapping = (ForeignKeyJdbcMapping) i.next(); - String fkc = fkMapping.getForeignKeyJdbcName(); - String kc = null; - if (fkMapping.getKeyJdbcName() != null) { - kc = fkMapping.getKeyJdbcName(); - } - if (kc == null) { - // if the target bean has a primary-key-field, this value - // may not be defined - // in this case, this is the column name of the - // primary-key-field - if (targetEntityCmp2Desc.hasSimplePkField()) { - kc = ((FieldJdbcDesc) targetEntityCmp2Desc.getSimplePkField()).getJdbcFieldName(); - } else { - // error - throw new DeploymentDescException( - "key-jdbc-name must be provided for foreign-key-jdbc-mapping " + fkc - + " of relation-ship role " + rsrName + "of relation " - + ejbRelationDesc.getName()); - } - } - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "explicit fk mapping = " + fkc + " for " + kc); - } - foreignKeyMap.put(kc, fkc); - } - hasJdbcMapping = true; - } - } - - /** - * Fills the mapping information of this relation-ship role with default - * values if the mapping information is not already initialized. - */ - protected void fillMappingInfoWithDefault() { - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "" + hasJdbcMapping); - } - if (!hasJdbcMapping) { - if (targetEntityCmp2Desc.hasSimplePkField()) { - // target entity has a simple pk (primary-key-field) - String fn = targetEntityCmp2Desc.getSimplePkFieldName(); - FieldJdbcDesc fd = (FieldJdbcDesc) targetEntityCmp2Desc.getCmpFieldDesc(fn); - String kc = fd.getJdbcFieldName(); - String fkc = targetEntityCmp2Desc.getAbstractSchemaName() + "_" + kc; - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "default fk mapping = " + fkc + " for " + kc); - } - foreignKeyMap.put(kc, fkc); - } else { - // target entity has a composite pk - for (Iterator i = targetEntityCmp2Desc.getCmpFieldDescIterator(); i.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) i.next(); - String kc = fd.getJdbcFieldName(); - String fkc = targetEntityCmp2Desc.getAbstractSchemaName() + "_" + kc; - if (logger.isLoggable(BasicLevel.DEBUG)) { - logger.log(BasicLevel.DEBUG, "default fk mapping = " + fkc + " for " + kc); - } - foreignKeyMap.put(kc, fkc); - } - } - hasJdbcMapping = true; - } - } - - /** - * return the name of this relationship role. - * @return the String name of this relationship role. - */ - public String getName() { - return rsrName; - } - - protected void setCmrFieldName(String name) throws DeploymentDescException { - cmrFieldName = name; - } - - protected void setCmrFieldType(String type) throws DeploymentDescException { - try { - cmrFieldType = Class.forName(type); - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("class name not found for cmr-field " + cmrFieldName + " of bean " - + ejbSourceName, e); - } - if (!(cmrFieldType.getName().equals("java.util.Collection") || cmrFieldType.getName().equals("java.util.Set"))) { - throw new DeploymentDescException("value of cmr-field-type " + cmrFieldName + " of bean " + ejbSourceName - + " should be java.util.Set or java.util.Collection if set"); - } - } - - /** - * mark the cmr as added by JOnAS - */ - protected void setIsJOnASCmrField() { - isJOnASCMR = true; - } - - /** - * set the source bean of this relation-ship role. - * @param led EntityCmp2Desc for the source bean of this relation-ship role. - */ - protected void setSourceBean(EntityCmp2Desc led) { - sourceEntityCmp2Desc = led; - } - - /** - * set the target bean of this relation-ship role. - * @param led EntityCmp2Desc for the target bean of this relation-ship role. - */ - protected void setTargetBean(EntityCmp2Desc led) { - targetEntityCmp2Desc = led; - if (cmrFieldType == null) { - cmrFieldType = led.getLocalClass(); - } - } - - /** - * get the parent ejb relation of this relation-ship-role. - * @return the EjbRelationDesc of this relation-ship-role. - */ - public EjbRelationDesc getRelation() { - return ejbRelationDesc; - } - - /** - * get the opposite relation-ship-role of this relation-ship-role. - * @return the opposite EjbRelationshipRoleDesc of this relation-ship-role. - */ - public EjbRelationshipRoleDesc getOppositeRelationshipRole() { - EjbRelationshipRoleDesc res = ejbRelationDesc.getRelationshipRole1(); - if (res == this) { - return ejbRelationDesc.getRelationshipRole2(); - } else { - return res; - } - } - - /** - * Get the name of the ejb involved in this relation-ship-role. This is the - * source bean name of this relation. - * @return the String ejb-name of the source bean. - */ - public String getSourceBeanName() { - return ejbSourceName; - } - - /** - * Get the ejb involved in this relation-ship-role. this is the source bean - * of this relation. - * @return the EntityCmp2Desc of the source bean. - */ - public EntityCmp2Desc getSourceBean() { - return sourceEntityCmp2Desc; - } - - /** - * It retrieves the EntityCmp2Desc which is linked to the EntityCmp2Desc - * associated to this EjbRelationshipRoleDesc. This is the target bean of - * this relationship role - * @return the EntityCmp2Desc of the target bean. - */ - public EntityCmp2Desc getTargetBean() { - return targetEntityCmp2Desc; - } - - /** - * Get state of opposite relationship-role is relation multiple. - * @return true if the opposite relationship-role is relation multiple. - */ - public boolean isSourceMultiple() { - return isSourceMultiple; - } - - /** - * Get state of this relationship-role is relation multiple. (get state of - * field is relation multiple). - * @return true if the relationship-role is relation multiple. - */ - public boolean isTargetMultiple() { - return isTargetMultiple; - } - - /** - * @return true if this bean must cascade delete the other bean in this - * relation. - */ - public boolean mustCascade() { - return mustCascade; - } - - /** - * It returns a boolean value which indicates if the cmr has been added by - * JOnAS (true) or if the user has specified a cmr field in the descriptor. - * A CMR field is be added to manage the coherence of the relation OXu - * @return true if the CMR field is not a bean's programmer CMR field. - */ - public boolean isJOnASCmrField() { - return isJOnASCMR; - } - - /** - * It retrieves true if the EntityCmp2Desc associated to this - * EjbRelationshipRoleDesc has a cmr field to the linked EntityCmp2Desc - * @return true if the relation-ship-role has a CMR field. - */ - // TODO: is this method really needed (return always true??) - public boolean hasCmrField() { - return cmrFieldName != null; - } - - /** - * get the name of the cmr-field. - * @return the String name of the cmr-field. - */ - public String getCmrFieldName() { - return cmrFieldName; - } - - /** - * get the type of the cmr-field when set in the deployment descriptor. - * @return Collection or Set for multiple rel. and null for non multiple - * rel. - */ - public Class getCmrFieldType() { - return cmrFieldType; - } - - /** - * This method depends on static values OOB,OOU,... defined upper ! - * @return the type of the relation: OO-u, OO-b, OM-u, .... - */ - public byte getRelationType() { - if (relationType == -1) { - relationType = OOU; - EjbRelationshipRoleDesc rsr2 = getOppositeRelationshipRole(); - if (rsr2.hasCmrField() && hasCmrField()) { - relationType += OOB; - } - if (isTargetMultiple()) { - relationType += OMU; - } - if (rsr2.isTargetMultiple()) { - relationType += MOU; - } - } - return relationType; - } - - /** - * Is a jdbc mapping is defined for this relationship role ? - * @return true if a jdbc mapping is defined for this relationship role. - */ - public boolean hasJdbcMapping() { - return hasJdbcMapping; - } - - /** - * In M-N relationships, only 1 role will write data on DB. - * @return true if role will not write MN relations on database - */ - public boolean isSlave() { - return isSlave; - } - - /** - * @param jdbcFieldName a primary key column name of the table associated to - * the target bean. - * @return the foreign key column name associated to the given primary key - * column name. - */ - public String getForeignKeyJdbcName(String jdbcFieldName) { - return (String) foreignKeyMap.get(jdbcFieldName); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName() = " + getName()); - ret.append("\ngetRelation().getName() = " + getRelation().getName()); - ret.append("\ngetOppositeRelationshipRole().getName() = " + getOppositeRelationshipRole().getName()); - ret.append("\ngetSourceBeanName() = " + getSourceBeanName()); - ret.append("\ngetTargetBean().getName() = " + getTargetBean().getEjbName()); - ret.append("\nisSourceMultiple() = " + isSourceMultiple()); - ret.append("\nisTargetMultiple() = " + isTargetMultiple()); - ret.append("\nmustCascade() = " + mustCascade()); - ret.append("\nisJOnASCmrField() = " + isJOnASCmrField()); - ret.append("\ngetCmrFieldName() = " + getCmrFieldName()); - ret.append("\ngetCmrFieldType() = " + getCmrFieldType()); - ret.append("\ngetRelationType() = " + getRelationType()); - if (hasJdbcMapping()) { - for (Iterator i = foreignKeyMap.keySet().iterator(); i.hasNext();) { - String key = (String) i.next(); - String fkey = (String) foreignKeyMap.get(key); - ret.append("\ngetForeignKeyJdbcName(" + key + ")=" + fkey); - } - } - return ret.toString(); - } - -} \ No newline at end of file diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarDTDs.java deleted file mode 100644 index 1136615d58..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarDTDs.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - - -import org.ow2.jonas.deployment.common.CommonsDTDs; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of DTDs for ejbjar.xml. - * @author Philippe Coq - */ -public class EjbjarDTDs extends CommonsDTDs { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(EjbjarDTDs.class); - - /** - * List of ejb-jar dtds. - */ - private static final String[] EJBJAR_DTDS = new String[] { - PACKAGE + "ejb-jar_1_1.dtd", - PACKAGE + "ejb-jar_2_0.dtd" - }; - - /** - * List of jonas-ejb-jar publicId. - */ - private static final String[] EJBJAR_DTDS_PUBLIC_ID = new String[] { - "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN", - "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN", - }; - - - - - /** - * Build a new object for web.xml DTDs handling. - */ - public EjbjarDTDs() { - super(); - addMapping(EJBJAR_DTDS, EJBJAR_DTDS_PUBLIC_ID); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarSchemas.java deleted file mode 100644 index 9b72a9b0d1..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EjbjarSchemas.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2011 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for ejb-jar.xml. - * @author Philippe Coq - */ -public class EjbjarSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(EjbjarSchemas.class); - - /** - * List of schemas used for ejb-jar.xml. - */ - protected static final String[] EJBJAR_SCHEMAS = new String[] { - PACKAGE + "ejb-jar_2_1.xsd", - PACKAGE + "ejb-jar_3_0.xsd", - PACKAGE + "ejb-jar_3_1.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public EjbjarSchemas() { - super(); - addSchemas(EJBJAR_SCHEMAS); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityBmpDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityBmpDesc.java deleted file mode 100644 index d9a8ba5913..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityBmpDesc.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; - - -/** - * Class to hold meta-information related to an entity of type BMP. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - */ -public class EntityBmpDesc extends EntityDesc { - - /** - * constructor to be used by parent node - */ - public EntityBmpDesc(ClassLoader classLoader, Entity ent, - AssemblyDescriptor asd, JonasEntity jEnt, - JLinkedList jMDRList, String fileName) - throws DeploymentDescException { - super(classLoader, ent, asd, jEnt, jMDRList, fileName); - } - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp1Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp1Desc.java deleted file mode 100644 index 647b20ba7e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp1Desc.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; - - -/** - * Class to hold meta-information related to an entity of type CMP version 1.x. - * Created on Jun 24, 2002 - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class EntityCmp1Desc extends EntityCmpDesc { - - protected Method isModifiedMethod = null; - - /** - * constructor to be used by parent node - */ - public EntityCmp1Desc(ClassLoader classLoader, Entity ent, - AssemblyDescriptor asd, JonasEntity jEnt, - JLinkedList jMDRList, String fileName) - throws DeploymentDescException { - - super(classLoader, ent, asd, jEnt, jMDRList, fileName); - - // check if persistent fields map to fields - for (Iterator i = fieldDesc.keySet().iterator();i.hasNext();) { - String fn = (String)i.next(); - // check for valid field name - try { - Field f = ejbClass.getField(fn); - ((FieldDesc)(fieldDesc.get(fn))).setFieldType(f.getType()); - } catch (NoSuchFieldException e) { - throw new DeploymentDescException("Invalid field name "+fn+" in field-name in bean "+this.ejbName,e); - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflexion on "+this.ejbClass.getName()); - } - } - - // isModifiedMethod - if (jEnt.getIsModifiedMethodName() != null) { - String mName = jEnt.getIsModifiedMethodName(); - try { - isModifiedMethod = this.ejbClass.getMethod(mName, new Class[0]); - } catch (NoSuchMethodException e) { - isModifiedMethod = null; - throw new DeploymentDescException(mName + " is not a method of " + this.ejbClass.getName()); - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflexion on " + this.ejbClass.getName()); - } - } - if (isUndefinedPK()) { - FieldDesc fd = this.newFieldDescInstance(); - fd.setName("JONASAUTOPKFIELD"); - fd.setPrimaryKey(true); - fieldDesc.put("JONASAUTOPKFIELD", fd); - ((FieldDesc) (fieldDesc.get("JONASAUTOPKFIELD"))).setFieldType(java.lang.Integer.class); - ((FieldJdbcDesc) (fieldDesc.get("JONASAUTOPKFIELD"))).setJdbcFieldName(this.getJdbcAutomaticPkFieldName()); - } - } - - /** - * Get descriptor for a given field - * @param field of the bean class - * @return Descriptor for the given field - */ - public FieldDesc getCmpFieldDesc(Field field) { - FieldDesc ret = (FieldDesc) fieldDesc.get(field.getName()); - if (ret == null) - throw new Error("Field " + field.getName() + " is not a cmp field of class " + this.ejbClass.getName()); - return ret; - } - - - /** - * Get the 'isModified' method name implemented in the bean class. - * (This information is JOnAS specific). - * @return Name of the isModified method - */ - public Method getIsModifiedMethod(){ - if (isModifiedMethod == null) - throw new Error("No isModified method defined for bean " + this.ejbName); - return isModifiedMethod; - } - - /** - * Assessor for existence of a isModified method - * @return true of isModified method exist for the bean - */ - public boolean hasIsModifiedMethod() { - return isModifiedMethod != null; - } - - /** - * Assessor for a CMP field - * @param field for which a descriptor is to be returned - * @return Descriptor for the given field - */ - public boolean hasCmpFieldDesc(Field field) { - return fieldDesc.containsKey(field.getName()); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - if (hasIsModifiedMethod()) - ret.append("getIsModifiedMethod()=" + getIsModifiedMethod().toString()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp2Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp2Desc.java deleted file mode 100644 index 10f8e10add..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmp2Desc.java +++ /dev/null @@ -1,380 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.util.ArrayList; -import java.util.Iterator; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.ejbql.ParseException; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.deployment.ejb.xml.Query; -import org.ow2.jonas.lib.util.BeanNaming; - - - - - -/** - * Class to hold meta-information related to an entity of type CMP version 2. - * Created on Jun 24, 2002 - * @author Christophe Ney [cney@batisseurs.com] : Initial developper - * @author Helene Joanin : code cleanup on May 2003 - * @author Helene Joanin : complement for legacy first version on May 2003 - */ -public abstract class EntityCmp2Desc extends EntityCmpDesc { - - private ArrayList ejbRelationshipRoleDesc = new ArrayList(); - protected String abstractSchemaName; - - private static final String JORM_PACKAGE = "jorm"; - - private String jormClassName = null; - private String jormFQClassName = null; - private String jormAccessorClassName = null; - private String jormPKClassName = null; - private String jormPNameGetterClassName = null; - private String jormBinderClassName = null; - - - protected String factoryClassName = null; - protected DeploymentDescEjb2 dc2d = null; - - /** - * constructor: called when the DeploymentDescriptor is read. - * Currently, called by both GenIC and createContainer. - */ - public EntityCmp2Desc(ClassLoader classLoader, - Entity ent, - AssemblyDescriptor asd, - JonasEntity jEnt, - DeploymentDescEjb2 dc2d, - JLinkedList jMDRList, - String fileName) - throws DeploymentDescException { - - super(classLoader, ent, asd, jEnt, jMDRList, fileName); - this.dc2d = dc2d; - - // An abstract schema name is required - if ((ent.getAbstractSchemaName() == null) - || (ent.getAbstractSchemaName().length() == 0)) { - throw new DeploymentDescException("abstract-schema-name must be provided for bean " + this.ejbName); - } - abstractSchemaName = ent.getAbstractSchemaName(); - - // check if persistent fields exist - if (fieldDesc.isEmpty()) { - throw new DeploymentDescException("No cmp-field defined in bean " + this.ejbName); - } - // check if persistent fields map to getter and setter - for (Iterator i = fieldDesc.keySet().iterator(); i.hasNext();) { - String fn = (String) i.next(); - - // field should not be defined - try { - Field f = ejbClass.getField(fn); - throw new DeploymentDescException("In cmp-version 2.x, field-name " + fn + " should not be defined in bean " + this.ejbName); - } catch (NoSuchFieldException e) { - // this is what we expect: nothing to do - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflexion on " + this.ejbClass.getName()); - } - - try { - Method getter = null; - try { - getter = ejbClass.getMethod(FieldDesc.getGetterName(fn), (Class[]) null); - ((FieldDesc) (fieldDesc.get(fn))).setFieldType(getter.getReturnType()); - } catch (NoSuchMethodException e) { - throw new DeploymentDescException("Getter method not found for field-name " + fn + " in bean " + this.ejbName, e); - } - try { - ejbClass.getMethod(FieldDesc.getSetterName(fn), new Class[]{getter.getReturnType()}); - } catch (NoSuchMethodException e) { - throw new DeploymentDescException("Setter method not found for field-name " + fn + " in bean " + this.ejbName, e); - } - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflexion on " + this.ejbClass.getName()); - } - } - - // isModifiedMethod deprecated for CMP 2.x - if (jEnt.getIsModifiedMethodName() != null) { - throw new DeploymentDescException("use of is-modified-method-name deprecated for CMP 2.x"); - } - - // EJB-QL query - if (ent.getQueryList() != null) { - for (Iterator i = ent.getQueryList().iterator(); i.hasNext();) { - Query q = (Query) i.next(); - boolean foundMatch = false; - for (Iterator j = getMethodDescIterator(); j.hasNext();) { - MethodDesc methd = (MethodDesc) j.next(); - String methName = q.getQueryMethod().getMethodName(); - if (methd.matchPattern(null, methName, q.getQueryMethod().getMethodParams()) - != MethodDesc.APPLY_TO_NOTHING) { - foundMatch = true; - String query = q.getEjbQl(); - if (!(methd instanceof MethodCmp2Desc)) { - throw new DeploymentDescException("ejbql query " + query + " can't apply to method " - + methName + " in bean " + ejbName); - } - try { - ((MethodCmp2Desc) methd).setQuery(query); - } catch (ParseException e) { - throw new DeploymentDescException("Invalid ejbql syntax for bean " + ejbName + ":\n" - + e.getMessage(query)); - } - if (q.getResultTypeMapping() != null) { - ((MethodCmp2Desc) methd).setResultTypeMapping(q.getResultTypeMapping()); - } - } - } - if (!foundMatch) { - throw new DeploymentDescException("invalid query-method definition for bean " + ejbName + "\nno such method as " - + MethodCmp2Desc.queryMethodElementToString(q.getQueryMethod()) + "\ncheck method name and method parameters"); - } - } - } - // check that all finder/selecter methods but findByPrimaryKey have a non null query - for (Iterator j = getMethodDescIterator(); j.hasNext();) { - MethodDesc md = (MethodDesc) j.next(); - if ((md.isFinder() || md.isEjbSelect()) && !md.isFindByPrimaryKey()) { - if (((MethodCmp2Desc) md).getQuery() == null) { - throw new DeploymentDescException("query not defined for method " + MethodDesc.toString(md.getMethod()) - + " of bean" + ejbName); - - } - } - } - if (isUndefinedPK()) { - FieldDesc fd = this.newFieldDescInstance(); - fd.setName("JONASAUTOPKFIELD"); - fd.setPrimaryKey(true); - fieldDesc.put("JONASAUTOPKFIELD", fd); - ((FieldDesc) (fieldDesc.get("JONASAUTOPKFIELD"))).setFieldType(java.lang.Integer.class); - ((FieldJdbcDesc) (fieldDesc.get("JONASAUTOPKFIELD"))).setJdbcFieldName(this.getJdbcAutomaticPkFieldName()); - } - } - - public DeploymentDescEjb2 getDeploymentDescEjb2() { - return dc2d; - } - - /** - * getter for field abstractSchemaName - */ - public String getAbstractSchemaName() { - return abstractSchemaName; - } - - /** - * Get the Jorm Class name in JOrm Meta Info - * It is built from the Abstract Shema Name. - * @return the Jorm Class Name - */ - private String getJormCName() { - if (jormClassName == null) { - jormClassName = BeanNaming.firstToUpperCase(abstractSchemaName); - } - return jormClassName; - } - - /** - * Get the Jorm Fully Qualified Class name in JOrm Meta Info - * It is built from the Abstract Shema Name. - * @return the Jorm Class Name - */ - public String getJormClassName() { - if (jormFQClassName == null) { - jormFQClassName = BeanNaming.getClassName(JORM_PACKAGE, getJormCName()); - } - return jormFQClassName; - } - - /** - * Add meta-info of a relationship in which the bean is involved - */ - public void addEjbRelationshipRoleDesc(EjbRelationshipRoleDesc ersrd) { - ejbRelationshipRoleDesc.add(ersrd); - } - - /** - * Get Iterator on meta-info for all relationships for which the bean - * is involved in. - */ - public Iterator getEjbRelationshipRoleDescIterator() { - return ejbRelationshipRoleDesc.iterator(); - } - - /** - * Get the EjbRelationshipRoleDesc corresponding to the given cmr field name. - * Return null if it doesn't exist. - */ - public EjbRelationshipRoleDesc getEjbRelationshipRoleDesc(String cmr) { - for (Iterator i = ejbRelationshipRoleDesc.iterator(); i.hasNext();) { - EjbRelationshipRoleDesc rsr = (EjbRelationshipRoleDesc) i.next(); - if (rsr.hasCmrField() && cmr.equals(rsr.getCmrFieldName())) { - return rsr; - } - } - return null; - } - - /** - * Factory method for MethodDesc. - * Only method with EJBQL queries are of type MethodCmp2Desc - */ - protected MethodDesc newMethodDescInstance(Method meth, Class classDef, int index) { - return new MethodCmp2Desc(this, meth, classDef, index); - } - - /** - * It retrieves the class name of the generated Jorm accessor interface. - * Used in the templates - * @return the fully qualified class name - */ - public String getJormAccessorClassName() { - if (jormAccessorClassName == null) { - jormAccessorClassName = BeanNaming.getClassName(JORM_PACKAGE, getJormCName() + "Accessor"); - } - return jormAccessorClassName; - } - - /** - * It retrieves the class name of the generated Jorm binding. - * Used by the JormFactory - * @return the fully qualified class name - */ - public String getJormBindingClassName() { - return BeanNaming.getClassName(JORM_PACKAGE, getJormCName() + "Binding"); - } - - /** - * Return the class name of the generated Jorm state class. - * @return the fully qualified class name - */ - public String getJormStateClassName() { - return BeanNaming.getClassName(JORM_PACKAGE, getJormCName() + "State"); - } - - /** - * It retrieves the class name of the generated Jorm mapping. - * Used in the JContainer to instanciate the JEntityFactory - * @return the fully qualified class name - */ - public String getFactoryClassName() { - return BeanNaming.getClassName(JORM_PACKAGE, "rdb." + getJormCName() + "Mapping"); - } - - /** - * Retrieves the Jorm PK Class, in case of composite PK - * Used by Jorm to generate PNameGetter and Binder classes - * @return the fully qualified class name - */ - public String getJormPKClassName() { - if (! hasPrimaryKeyField() && jormPKClassName == null) { - jormPKClassName = BeanNaming.getClassName(JORM_PACKAGE, - BeanNaming.getBaseName(getPrimaryKeyClass().getName())); - } - return jormPKClassName; - } - - /** - * It retrieves the class name of the generated Jorm PNameGetter interface. - * Used in the templates to generate CMP2 classes. - * @return the fully qualified class name - */ - public String getJormPNameGetterClassName() { - if (! hasPrimaryKeyField() && jormPNameGetterClassName == null) { - jormPNameGetterClassName = getJormPKClassName() + "PNG"; - } - return jormPNameGetterClassName; - } - - /** - * It retrieves the class name of the generated Jorm Binder. - * Used in the Jorm Factory - * @return the fully qualified class name - */ - public String getJormBinderClassName() { - if (jormBinderClassName == null) { - if (hasPrimaryKeyField()) { - jormBinderClassName = "org.objectweb.jorm.facility.naming.basidir.BasidBinder"; - } else { - jormBinderClassName = getJormPKClassName() + "Binder"; - } - } - return jormBinderClassName; - } - - /** - * @return true if at least one relation - */ - public boolean needJormCoherenceHelper() { - return ejbRelationshipRoleDesc.iterator().hasNext(); - } - - public String getJormCoherenceHelperItfName() { - return "JOnAS" + ejbName + "CoherenceHelper"; - } - - public String getJormCoherenceHelperPackageName() { - return BeanNaming.getPackageName(getFullDerivedBeanName()); - } - - public String getJormCoherenceHelperFQItfName() { - String pn = getJormCoherenceHelperPackageName(); - return (pn != null && pn.length() > 0 - ? pn + "." + getJormCoherenceHelperItfName() - : getJormCoherenceHelperItfName()); - } - - /** - * String representation of the object for test and debug purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - for (Iterator i = ejbRelationshipRoleDesc.iterator(); i.hasNext(); ) { - ret.append("\nejbRelationshipRoleDesc[]=" + i.next()); - } - ret.append("\ngetAbstractSchemaName()=" + getAbstractSchemaName()); - ret.append("\ngetJormAccessorClassName() = " + getJormAccessorClassName()); - ret.append("\nneedJormCoherenceHelper() = " + needJormCoherenceHelper()); - return ret.toString(); - } - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmpDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmpDesc.java deleted file mode 100644 index 35f19b4b3e..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityCmpDesc.java +++ /dev/null @@ -1,237 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.HashMap; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.CmpField; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.lib.util.BeanNaming; - - - -/** - * Base class to hold meta-information related to an entity of type CMP. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - * @author Jerome Camilleri : automatic PK - */ -public abstract class EntityCmpDesc extends EntityDesc { - - protected HashMap fieldDesc = new HashMap(); - protected String primaryKeyField = null; - protected String jdbcAutomaticPkFieldName = null; - - /** - * constructor to be used by parent node. - * @param classLoader class loader to use to laod bean's classes - * @param ent entity in the standard deployment descriptor - * @param asd assembly-descriptor in the standard deployment descriptor - * @param jEnt jonas-entity in the JOnAS deployment descriptor - * @param fileName jar or directory containing ejb - * @throws DeploymentDescException in error case. - */ - public EntityCmpDesc(ClassLoader classLoader, Entity ent, - AssemblyDescriptor asd, JonasEntity jEnt, - JLinkedList jMDRList, String fileName) - throws DeploymentDescException { - - super(classLoader, ent, asd, jEnt, jMDRList, fileName); - - // field descriptors for persistent fields - for (Iterator i = ent.getCmpFieldList().iterator(); i.hasNext();) { - String fn = ((CmpField) i.next()).getFieldName(); - FieldDesc fd = this.newFieldDescInstance(); - fd.setName(fn); - fd.setPrimaryKey(false); - fieldDesc.put(fn, fd); - - } - - // jdbc pk auto field name - JdbcMapping jm = jEnt.getJdbcMapping(); - if ((jm != null) && (jm.getJdbcAutomaticPkFieldName() != null)) { - if (jm.getJdbcAutomaticPkFieldName().length() != 0) { - jdbcAutomaticPkFieldName = jm.getJdbcAutomaticPkFieldName(); - } - } - if (jdbcAutomaticPkFieldName == null) { - // Default value - jdbcAutomaticPkFieldName = "JPK_"; - } - - if (isUndefinedPK()) { // Automatic PK - // If Primary Field is not declared (auto generated key field) - primaryKeyField = "JONASAUTOPKFIELD"; - } else if (ent.getPrimkeyField() != null) { - // primary key field - primaryKeyField = ent.getPrimkeyField(); - FieldDesc fd = (FieldDesc) fieldDesc.get(primaryKeyField); - if (fd == null) { - throw new DeploymentDescException("primkey-field " + primaryKeyField + " is not listed as cmp-field in bean " + this.ejbName); - } - fd.setPrimaryKey(true); - } else { - // public fields of primary key class - Field[] pcf = primaryKeyClass.getFields(); - for (int i = 0; i < pcf.length; i++) { - if (Modifier.isPublic(pcf[i].getModifiers())) { - String pn = pcf[i].getName(); - // exclude serialVersionUID field for jdk1.2.1 on solaris and - // exclude JProbe$ for JProbe using - if (!pn.equals("serialVersionUID") && !pn.startsWith("JProbe$")) { - FieldDesc fd = (FieldDesc) fieldDesc.get(pn); - if (fd == null) { - throw new DeploymentDescException("public field " + pn + " of primkey-class is not listed as cmp-field in bean " + this.ejbName); - } - fd.setPrimaryKey(true); - } - } - } - } - String packageName = BeanDesc.GENERATED_PREFIX + BeanNaming.getPackageName(getEjbClass().getName()); - derivedBeanName = new String("JOnAS" + getIdentifier() + "Bean"); - fullDerivedBeanName = BeanNaming.getClassName(packageName, derivedBeanName); - - // automatic-pk - // used of specific tag automatic-pk is deprecated so nothing in this code was about jdbc-mapping - String primkeytype = ent.getPrimKeyClass(); - if ((jm != null) && (jm.getAutomaticPk() != null)) { - // optional parameter automatic-pk - jdbcAutomaticPk = jm.getAutomaticPk().equalsIgnoreCase("true"); - if (jdbcAutomaticPk && pkObjectType) { - // You can't use specific tag 'automatic-pk' with prim-key-type=java.lang.Object - throw new DeploymentDescException("Don't use specific tag 'automatic-pk' with prim-key-type=java.lang.Object in bean " + ent.getEjbName()); - } - } - if (pkObjectType && ent.getPrimkeyField() != null) { - throw new DeploymentDescException("'prim-key-field' must not be set if your prim-key-type was java.lang.Object in bean " + ent.getEjbName()); - } - if (this.isAutomaticPk()) { // Check if prim-key-class type is Integer or java.lang.Object - if (!(primkeytype.equalsIgnoreCase("java.lang.Integer") - || primkeytype.equalsIgnoreCase("Integer"))) { - throw new DeploymentDescException("You must used java.lang.Integer type for your auto-generate primary key field in bean " + ent.getEjbName()); - } - } - } - - /** - * Get descriptor for a given field name - * Used by GenIC - * @param fieldName Name of the field - * @return Descriptor for the given field or null - */ - public FieldDesc getCmpFieldDesc(String fieldName) { - return (FieldDesc) fieldDesc.get(fieldName); - } - - /** - * Indicate if the primary key field is only one field with a primary-key-field - * defined in the DD. - * @return true if the primary key field is only one field - * with a primary-key-field defined in the DD. - */ - public boolean hasSimplePkField() { - return primaryKeyField != null; - } - - // TODO remove this method and keep only the hasSimplePkField method - public boolean hasPrimaryKeyField() { - return hasSimplePkField(); - } - - /** - * Get the primary key field for the entity. - * @return Field for the primary key - */ - public FieldDesc getSimplePkField() { - FieldDesc fd = (FieldDesc) fieldDesc.get(getSimplePkFieldName()); - return fd; - } - - /** - * Get the primary key field name for the entity. - * @return Field for the primary key - */ - public String getSimplePkFieldName() { - if (primaryKeyField == null) { - throw new Error("No primary key field defined for bean " + this.ejbName); - } - return primaryKeyField; - } - - // TODO remove this method and keep only the getSimplePkFieldName() method - public String getPrimaryKeyFieldName() { - return getSimplePkFieldName(); - } - - /** - * Get the associated field for auto genarated pk field specify by user - * @return Name of the field where automatic pk bean is stored - */ - public String getJdbcAutomaticPkFieldName() { - return jdbcAutomaticPkFieldName; - } - - public Iterator getCmpFieldDescIterator() { - return fieldDesc.values().iterator(); - } - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - for (Iterator i = fieldDesc.keySet().iterator(); i.hasNext();) { - String f = (String) i.next(); - FieldDesc fd = (FieldDesc) fieldDesc.get(f); - ret.append("\ngetCmpFieldDesc(" + f + ")=" + fd.getClass().getName()); - ret.append(fd.toString()); - } - if (hasPrimaryKeyField()) { - ret.append("\ngetPrimaryKeyField()=" + getPrimaryKeyFieldName()); - } - return ret.toString(); - } - - /** - * factory method for field descriptors - * @return a FieldDesc. - */ - protected FieldDesc newFieldDescInstance() { - return new FieldJdbcDesc(); - } -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityDesc.java deleted file mode 100644 index 423d699f37..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityDesc.java +++ /dev/null @@ -1,434 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.lib.util.BeanNaming; - - - -import org.objectweb.util.monolog.api.BasicLevel; - - -/** - * Base class to hold meta-information related to an entity bean. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - * @author Helene Joanin: take into account ejbSelect() methods. - * @author Helene Joanin: unsetting transaction attribute set to a default value. - */ -public abstract class EntityDesc extends BeanDesc { - - - /** - * remote methods for which no transaction attribute is to be set - */ - protected static final String METHODS_REMOTE_NO_TX = ",getEJBHome,getHandle,getPrimaryKey,isIdentical,"; - - /** - * home methods for which no transaction attribute is to be set - */ - protected static final String METHODS_HOME_NO_TX = ",getEJBMetaData,getHomeHandle,"; - - /** - * This field contains the class name of the factory instanciate by the - * container. - */ - protected Class primaryKeyClass; - protected boolean reentrant; - protected int passivationTimeout = 0; - protected int inactivityTimeout = 0; - protected int deadlockTimeout = 20; // default = 20 sec. - protected int readTimeout = 15 * 60; // default = 15mn. - protected int maxWaitTime = 0; // default = 0s - protected boolean shared = false; - protected boolean prefetch = false; - protected boolean hardLimit = false; - - // Field used for pk auto-generate - protected boolean jdbcAutomaticPk = false; // first implementation with specific tag into JOnAS Descriptor file - protected boolean pkObjectType = false; // second implementation with prim-key-type=java.lang.Object (cf spec ?14.1.9.3) - - // mapping cleanup policy - public static final int CLEANUP_NONE = 0; - public static final int CLEANUP_CREATE = 1; - public static final int CLEANUP_REMOVEDATA = 2; - public static final int CLEANUP_REMOVEALL = 3; - protected int cleanup = CLEANUP_CREATE; - - // lock policy - public static final int LOCK_CONTAINER_READ_UNCOMMITTED = 0; - public static final int LOCK_CONTAINER_SERIALIZED = 1; - public static final int LOCK_CONTAINER_READ_COMMITTED = 2; - public static final int LOCK_DATABASE = 3; - public static final int LOCK_READ_ONLY = 4; - public static final int LOCK_CONTAINER_READ_WRITE = 5; - public static final int LOCK_CONTAINER_SERIALIZED_TRANSACTED = 6; - protected int lockPolicy = LOCK_CONTAINER_SERIALIZED; - - /** - * constructor to be used by parent node - */ - public EntityDesc(ClassLoader classLoader, - Entity ent, - AssemblyDescriptor asd, - JonasEntity jEnt, - JLinkedList jMDRList, - String fileName) - throws DeploymentDescException { - - super(classLoader, ent, jEnt, asd, jMDRList, fileName); - - // primary Key class - try { - // Test for automatic PK - if (ent.getPrimKeyClass().equalsIgnoreCase("Object") || ent.getPrimKeyClass().equalsIgnoreCase("java.lang.Object")) { - primaryKeyClass = classLoader.loadClass("java.lang.Integer"); - pkObjectType = true; - } - else - primaryKeyClass = classLoader.loadClass(ent.getPrimKeyClass()); - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("Primary Key class not found for bean " + this.ejbName, e); - } - - // passivation timeout - if (jEnt.getPassivationTimeout() != null) { - String tstr = jEnt.getPassivationTimeout(); - Integer tval = new Integer(tstr); - passivationTimeout = tval.intValue(); - } - - // inactivity timeout - if (jEnt.getInactivityTimeout() != null) { - String tstr = jEnt.getInactivityTimeout(); - Integer tval = new Integer(tstr); - inactivityTimeout = tval.intValue(); - } - - // deadlock timeout - if (jEnt.getDeadlockTimeout() != null) { - String tstr = jEnt.getDeadlockTimeout(); - Integer tval = new Integer(tstr); - deadlockTimeout = tval.intValue(); - } - - // read timeout - if (jEnt.getReadTimeout() != null) { - String tstr = jEnt.getReadTimeout(); - Integer tval = new Integer(tstr); - readTimeout = tval.intValue(); - } - - // max wait time - if (jEnt.getMaxWaitTime() != null) { - String tstr = jEnt.getMaxWaitTime(); - Integer tval = new Integer(tstr); - maxWaitTime = tval.intValue(); - } - - // reentrant - if (ent.getReentrant().equalsIgnoreCase("True")) { - reentrant = true; - } else if (ent.getReentrant().equalsIgnoreCase("False")) { - reentrant = false; - } else { - throw new DeploymentDescException("Invalid reentrant value for bean " + this.ejbName); - } - - // prefetch - if (jEnt.getPrefetch() != null) { - if (jEnt.getPrefetch().equalsIgnoreCase("True")) { - prefetch = true; - } else if (jEnt.getPrefetch().equalsIgnoreCase("False")) { - prefetch = false; - } else { - throw new DeploymentDescException("Invalid prefetch value for bean " + this.ejbName); - } - } - - // hard limit - if (jEnt.getHardLimit() != null) { - if (jEnt.getHardLimit().equalsIgnoreCase("True")) { - hardLimit = true; - } else if (jEnt.getPrefetch().equalsIgnoreCase("False")) { - hardLimit = false; - } else { - throw new DeploymentDescException("Invalid hard-limit value for bean " + this.ejbName); - } - } - - // min-pool-size - if (jEnt.getMinPoolSize() != null) { - String tstr = jEnt.getMinPoolSize(); - Integer tval = new Integer(tstr); - poolMin = tval.intValue(); - } - - // max-cache-size - if (jEnt.getMaxCacheSize() != null) { - String tstr = jEnt.getMaxCacheSize(); - Integer tval = new Integer(tstr); - cacheMax = tval.intValue(); - } - - // lock policy. - // Set default value for shared, depending on policy. - if (jEnt.getLockPolicy() != null) { - String tstr = jEnt.getLockPolicy(); - if (tstr.equals("container-serialized")) { - lockPolicy = LOCK_CONTAINER_SERIALIZED; - shared = false; - } else if (tstr.equals("container-serialized-transacted")) { - lockPolicy = LOCK_CONTAINER_SERIALIZED_TRANSACTED; - shared = false; - } else if (tstr.equals("container-read-committed")) { - lockPolicy = LOCK_CONTAINER_READ_COMMITTED; - shared = true; - } else if (tstr.equals("container-read-uncommitted")) { - lockPolicy = LOCK_CONTAINER_READ_UNCOMMITTED; - shared = false; - } else if (tstr.equals("database")) { - lockPolicy = LOCK_DATABASE; - shared = true; - } else if (tstr.equals("read-only")) { - lockPolicy = LOCK_READ_ONLY; - shared = true; - } else if (tstr.equals("container-read-write")) { - lockPolicy = LOCK_CONTAINER_READ_WRITE; - shared = false; - } else { - throw new DeploymentDescException("Invalid lock-policy value for bean " + jEnt.getEjbName()); - } - } - - // shared - if (jEnt.getShared() != null) { - if (jEnt.getShared().equalsIgnoreCase("True")) { - shared = true; - } else if (jEnt.getShared().equalsIgnoreCase("False")) { - shared = false; - } else { - throw new DeploymentDescException("Invalid shared value for bean " + this.ejbName); - } - } - - // cleanup policy. Possible values are : - // create = create table only if does not exist yet. (default) - // none = nothing is done (not implemented) - // removeall = drop table and recreate it. - // removedata = remove all data if exist, create table if does not exist. - if (jEnt.getCleanup() != null) { - String tstr = jEnt.getCleanup(); - if (tstr.equals("create")) { - cleanup = CLEANUP_CREATE; - } else if (tstr.equals("none")) { - cleanup = CLEANUP_NONE; - } else if (tstr.equals("removeall")) { - cleanup = CLEANUP_REMOVEALL; - } else if (tstr.equals("removedata")) { - cleanup = CLEANUP_REMOVEDATA; - } else { - throw new DeploymentDescException("Invalid cleanup value for bean " + jEnt.getEjbName()); - } - } - - // cache TxAttribute for ejbTimeout - for (Iterator i = getMethodDescIterator(); i.hasNext();) { - MethodDesc methd = (MethodDesc) i.next(); - if (methd.getMethod().getName().equals("ejbTimeout")) { - timerTxAttribute = methd.getTxAttribute(); - ejbTimeoutSignature = BeanNaming.getSignature(getEjbName(), methd.getMethod()); - } - } - } - - /** - * @return the cleanup policy for this bean - */ - public int getCleanupPolicy() { - return cleanup; - } - - /** - * @return the lock policy for this bean - */ - public int getLockPolicy() { - return lockPolicy; - } - - /** - * check that trans-attribute is valid for bean - */ - protected void checkTxAttribute(MethodDesc md) throws DeploymentDescException { - java.lang.reflect.Method m = md.getMethod(); - if (md.getTxAttribute() == MethodDesc.TX_NOT_SET) { - // exclude method list for home interface - if (javax.ejb.EJBHome.class.isAssignableFrom(m.getDeclaringClass()) - && (METHODS_HOME_NO_TX.indexOf("," + m.getName() + ",") != -1)) { - return; - } - // exclude method list for remote interface - if (javax.ejb.EJBObject.class.isAssignableFrom(m.getDeclaringClass()) - && (METHODS_REMOTE_NO_TX.indexOf("," + m.getName() + ",") != -1)) { - return; - } - // exclude ejbSelect methods - if (md.isEjbSelect()) { - return; - } - // trans-attribute not set ! - // trace a warning and set the tx-attribute with the default value - logger.log(BasicLevel.WARN, - "trans-attribute missing for method " - + m.toString() + " in entity bean " - + getEjbName() - + " (set to the default value " - + MethodDesc.TX_STR_DEFAULT_VALUE - + ")"); - md.setTxAttribute(MethodDesc.TX_STR_DEFAULT_VALUE); - } - } - - /** - * Get the passivation timeout value - */ - public int getPassivationTimeout() { - return passivationTimeout; - } - - /** - * Get the inactivity timeout value - */ - public int getInactivityTimeout() { - return inactivityTimeout; - } - - /** - * Get the deadlock timeout value - */ - public int getDeadlockTimeout() { - return deadlockTimeout; - } - - /** - * Get the read timeout value - */ - public int getReadTimeout() { - return readTimeout; - } - - /** - * Get the max wait time - */ - public int getMaxWaitTime() { - return maxWaitTime; - } - - /** - * Get the entity's primary key class. - * @return Class for the primary key - */ - public Class getPrimaryKeyClass() { - return primaryKeyClass; - } - - /** - * Assessor for reentrant entity bean - * @return true for reentrant entity bean - */ - public boolean isReentrant() { - return reentrant; - } - - /** - * @return true for shared entity bean - */ - public boolean isShared() { - return shared; - } - - /** - * @return true for prefetch entity bean - */ - public boolean isPrefetch() { - return prefetch; - } - - /** - * @return true for hard-limit entity bean - */ - public boolean isHardLimit() { - return hardLimit; - } - - /** - * Assessor for existence of automatic-pk element to True value - * @param field public field of the bean class - * @return true if automatic-pk element value is true else otherwise false - */ - public boolean isAutomaticPk() { - return jdbcAutomaticPk; - } - - /** - * Assessor for primary key undefined (declare like java.lang.Object type) - * @param field public field of the bean class - * @return true if primary key is undefined (java.lang.Object type) - */ - public boolean isUndefinedPK() { - return pkObjectType; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\nPrimaryKeyClass() =" + getPrimaryKeyClass().toString()); - ret.append("\nReentrant() =" + isReentrant()); - ret.append("\nPassivationTimeout() =" + getPassivationTimeout()); - ret.append("\nInactivityTimeout() =" + getInactivityTimeout()); - ret.append("\nDeadlockTimeout() =" + getDeadlockTimeout()); - ret.append("\nReadTimeout() =" + getReadTimeout()); - ret.append("\nMaxWaitTime() =" + getMaxWaitTime()); - ret.append("\nShared() =" + isShared()); - ret.append("\nPoolMin() =" + getPoolMin()); - ret.append("\nCacheMax() =" + getCacheMax()); - return ret.toString(); - } - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp1Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp1Desc.java deleted file mode 100644 index 3eb012527a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp1Desc.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.CmpFieldJdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.FinderMethodJdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.JdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; -import org.ow2.jonas.deployment.ejb.xml.JonasMethod; - - -/** - * Class to hold meta-information related to an CMP v1 entity bean with jdbc data store. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin -*/ -// TODO : fill mapping information with defaults values (same as CMP 2) -// to accept to have optional mapping information in the jonas-ejb-jar.xml. -// TODO : Review this class, many methods are common with EntityJdbcCmp2yDesc - -public class EntityJdbcCmp1Desc extends EntityCmp1Desc { - - - String jdbcTableName; - String datasourceJndiName; - /** - * constructor: called when the DeploymentDescriptor is read. - * Currently, called by both GenIC and createContainer. - */ - public EntityJdbcCmp1Desc(ClassLoader classLoader, Entity ent, - AssemblyDescriptor asd, JonasEntity jEnt, - JLinkedList jMDRList, String fileName) - throws DeploymentDescException { - - super(classLoader, ent, asd, jEnt, jMDRList, fileName); - - // check for jdbcMapping - JdbcMapping jm = jEnt.getJdbcMapping(); - if (jm == null) { - throw new DeploymentDescException("jdbc-mapping missing for bean " + ent.getEjbName()); - } - - // populate field descriptor map with jdbc information - for (Iterator i = jm.getCmpFieldJdbcMappingList().iterator(); i.hasNext(); ) { - CmpFieldJdbcMapping cmpFieldJdbcMapping = (CmpFieldJdbcMapping) i.next(); - String fn = cmpFieldJdbcMapping.getFieldName(); - FieldDesc f = (FieldDesc) fieldDesc.get(fn); - if (f == null) { - throw new DeploymentDescException("field-name " + fn - + " listed in cmp-field-jdbc-mapping is not of cmp-field of bean " + ent.getEjbName()); - } - ((FieldJdbcDesc) f).setJdbcFieldName(cmpFieldJdbcMapping.getJdbcFieldName()); - } - // check that all cmp fields are jdbc - for (Iterator j = fieldDesc.values().iterator(); j.hasNext();) { - FieldJdbcDesc fd = (FieldJdbcDesc) j.next(); - if (fd.getJdbcFieldName() == null) { - throw new DeploymentDescException("field-name " + fd.getName() - + " is missing in cmp-field-jdbc-mapping for bean " + ent.getEjbName()); - } - } - - // populate method descriptor map with jdbc information - for (Iterator i = jm.getFinderMethodJdbcMappingList().iterator(); i.hasNext(); ) { - FinderMethodJdbcMapping fmj = ((FinderMethodJdbcMapping) i.next()); - JonasMethod m = fmj.getJonasMethod(); - for (Iterator j = getMethodDescIterator(); j.hasNext();) { - MethodJdbcCmp1Desc md = (MethodJdbcCmp1Desc) j.next(); - int matchStatus = md.matchPattern(null, m.getMethodName(), m.getMethodParams()); - md.overwriteJdbcWhereClause(fmj.getJdbcWhereClause(), matchStatus); - } - } - - // jndi name of the datasource - datasourceJndiName = jm.getJndiName(); - - // table name - jdbcTableName = jm.getJdbcTableName(); - - // optionnal parameter automatic-pk - if (jm.getAutomaticPk() != null) { - jdbcAutomaticPk = jm.getAutomaticPk().equalsIgnoreCase("true"); - } - } - - - /** - * Get the datasource jndi name - * @return String representation of the jndi name - */ - public String getDatasourceJndiName() { - return datasourceJndiName; - } - - /** - * Get jdbc specific descriptor for a given field. - * Used by GenIC - * @param field of the bean class - * @return Descriptor for the given field - */ - public FieldJdbcDesc getFieldJdbcDesc(Field field) { - return (FieldJdbcDesc) super.getCmpFieldDesc(field); - } - - - /** - * Get the associated DataBase table name in case of container persistence type. - * Used by GenIC (This information is JOnAS specific). - * @return Name of the database table where entity bean is stored - */ - public String getJdbcTableName() { - return jdbcTableName; - } - - /** - * factory method for method descriptors - */ - protected MethodDesc newMethodDescInstance(Method meth, Class classDef, int index) { - return new MethodJdbcCmp1Desc(this, meth, classDef, index); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\ngetDatasourceJndiName()=" + getDatasourceJndiName()); - ret.append("\ngetJdbcTableName()=" + getJdbcTableName()); - return ret.toString(); - } - - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp2Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp2Desc.java deleted file mode 100644 index 132d6cec81..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/EntityJdbcCmp2Desc.java +++ /dev/null @@ -1,157 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.util.Iterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.CmpFieldJdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.Entity; -import org.ow2.jonas.deployment.ejb.xml.JdbcMapping; -import org.ow2.jonas.deployment.ejb.xml.JonasEntity; - -import org.ow2.jonas.deployment.ejb.xml.*; - -/** - * Class to hold meta-information related to an CMP v2 entity bean with jdbc data store. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin on May 2003: code cleanup - * @author Helene Joanin on May 2003: complement for legacy first version - */ - -// TODO : Review this class, many methods are common with EntityJdbcCmp1Desc - -public class EntityJdbcCmp2Desc extends EntityCmp2Desc { - - protected String dsname; - protected String jdbcTableName = null; - - /** - * constructor: called when the DeploymentDescriptor is read. - * Currently, called by both GenIC and createContainer. - */ - public EntityJdbcCmp2Desc(ClassLoader classLoader, - Entity ent, - AssemblyDescriptor asd, - JonasEntity jEnt, - DeploymentDescEjb2 dc2d, - JLinkedList jMDRList, - String fileName) - throws DeploymentDescException { - - super(classLoader, ent, asd, jEnt, dc2d, jMDRList, fileName); - - // check for jdbcMapping - JdbcMapping jm = jEnt.getJdbcMapping(); - if (jm == null) { - throw new DeploymentDescException("jdbc-mapping missing for bean " + ent.getEjbName()); - } - - // jndi name of the datasource - dsname = jm.getJndiName(); - - // jdbc table name - if (jm.getJdbcTableName() != null) { - if (jm.getJdbcTableName().length() != 0) { - jdbcTableName = jm.getJdbcTableName(); - } - } - if (jdbcTableName == null) { - // Default value - jdbcTableName = getAbstractSchemaName().toUpperCase() + "_"; - } - - // Default mapping information for cmp fields - for (Iterator i = fieldDesc.keySet().iterator();i.hasNext();) { - String fn = (String) i.next(); - ((FieldJdbcDesc)(fieldDesc.get(fn))).setJdbcFieldName(fn + "_"); - } - - // mapping information for cmp fields from jonas DD - for (Iterator i = jm.getCmpFieldJdbcMappingList().iterator();i.hasNext();) { - CmpFieldJdbcMapping fm = (CmpFieldJdbcMapping) i.next(); - String fn = fm.getFieldName(); - String cn = fm.getJdbcFieldName(); - String ct = null; - if (fm.getSqlType() != null) { - ct = fm.getSqlType(); - } - FieldJdbcDesc fdesc = (FieldJdbcDesc) fieldDesc.get(fn); - if (fdesc == null) { - throw new DeploymentDescException("field-name " + fn - + " listed in cmp-field-jdbc-mapping is not of cmp-field of bean " + ent.getEjbName()); - } - fdesc.setJdbcFieldName(cn); - if (ct != null) { - fdesc.setSqlType(ct); - } - } - // Specific mapping for primary key auto generated (type = java.lang.Object) if tag is specified - if (isUndefinedPK() && this.getJdbcAutomaticPkFieldName()!= null) { - ((FieldJdbcDesc)(fieldDesc.get("JONASAUTOPKFIELD"))).setJdbcFieldName(this.getJdbcAutomaticPkFieldName()); - } - } - - /** - * field descriptor factory method - */ - protected FieldDesc newFieldDescInstance() { - return new FieldJdbcDesc(); - } - - /** - * Get the datasource jndi name - * @return String representation of the jndi name - */ - public String getDatasourceJndiName() { - return dsname; - } - - /** - * Get the associated DataBase table name. - * @return Name of the database table where entity bean is stored - */ - public String getJdbcTableName() { - return jdbcTableName; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\ngetDatasourceJndiName()=" + getDatasourceJndiName()); - ret.append("\ngetJdbcTableName()=" + getJdbcTableName()); - return ret.toString(); - } - - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ExcludeListDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ExcludeListDesc.java deleted file mode 100644 index 0922e5ad81..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ExcludeListDesc.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.ejb.xml.ExcludeList; - -/** - * Defines a ExcludeListDesc class for the management of - * EJBMEthodPermissions in JACC - * @author Florent Benoit : Initial developer - */ -public class ExcludeListDesc extends CommonMethodDesc { - - /** - * Constructor for ExcludeListDesc - * @param excludeList excludelist which contains xml content - */ - public ExcludeListDesc(ExcludeList excludeList) { - super(excludeList.getMethodList()); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldDesc.java deleted file mode 100644 index cc996cf905..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldDesc.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -/** - * Class to hold meta-information related to a cmp-field - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin on May 2003: code cleanup - */ -public class FieldDesc { - - protected String fieldName = null; - protected boolean pkField = false; - protected Class fieldType = null; - - - /** - * Assessor method for primary key field - * @return true if field is a primary key - */ - public boolean isPrimaryKey() { - return pkField; - } - - /** - * Field name getter - * @return field name - */ - public String getName() { - return fieldName; - } - - /** - * field name setter - */ - protected void setName(String fieldName) { - this.fieldName = fieldName; - } - - /** - * primary key flag setter - */ - protected void setPrimaryKey(boolean pkField) { - this.pkField = pkField; - } - - /** - * field type getter - */ - public Class getFieldType() { - return fieldType; - } - - /** - * field type setter - */ - protected void setFieldType(Class fieldType) { - this.fieldType = fieldType; - } - - /** - * get the setter method name for a given field - */ - public static String getSetterName(String fieldName) { - return "set" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); - } - - /** - * get the getter method name for a given field - */ - public static String getGetterName(String fieldName) { - return "get" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetName() = " + getName()); - ret.append("\ngetFieldType() = " + getFieldType()); - ret.append("\nisPrimaryKey() = " + isPrimaryKey()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldJdbcDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldJdbcDesc.java deleted file mode 100644 index dc8536eb68..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/FieldJdbcDesc.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -/** - * Class to hold meta-information related to a cmp-field of a bean with jdbc based store - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin on May 2003: code cleanup - * @author Helene Joanin on May 2003: add sqlType. - */ -// TODO : Remove this class and merge it with the FieldDesc class. - -public class FieldJdbcDesc extends FieldDesc { - - - protected String jdbcFieldName = null; - protected String sqlType = null; - - /** - * Get database field name in the table where bean is stored - * @return Name of the field in the database - */ - public String getJdbcFieldName() { - return jdbcFieldName; - } - - /** - * Jdbc field name setter. - */ - protected void setJdbcFieldName(String jdbcFieldName) { - this.jdbcFieldName = jdbcFieldName; - } - - /** - * Is the field sql-type is defined. - * @return true if the sql-type of the field is defined. - */ - public boolean hasSqlType() { - return (sqlType != null); - } - - /** - * Get field sql-type - * @return sql-type of the field in the database - */ - public String getSqlType() { - return sqlType; - } - - /** - * Field sql-type setter. - */ - protected void setSqlType(String st) { - sqlType = st; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\ngetJdbcFieldName()=" + getJdbcFieldName()); - if (hasSqlType()) { - ret.append("\ngetSqlType()=" + getSqlType()); - } - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarDTDs.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarDTDs.java deleted file mode 100644 index 5b1986d97b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarDTDs.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - - -import org.ow2.jonas.deployment.common.CommonsDTDs; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of DTDs for jonas-ejb-jar.xml. - * @author Philippe Coq - */ -public class JonasEjbjarDTDs extends CommonsDTDs { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(JonasEjbjarDTDs.class); - - /** - * List of jonas-ejb-jar dtds. - */ - private static final String[] JONAS_EJBJAR_DTDS = new String[] { - PACKAGE + "jonas-ejb-jar_2_4.dtd", - PACKAGE + "jonas-ejb-jar_2_5.dtd", - PACKAGE + "jonas-ejb-jar_3_0.dtd", - PACKAGE + "jonas-ejb-jar_3_2.dtd", - PACKAGE + "jonas-ejb-jar_3_3.dtd", - PACKAGE + "jonas-ejb-jar_3_3_1.dtd", - PACKAGE + "jonas-ejb-jar_3_3_2.dtd", - }; - - /** - * List of jonas-ejb-jar publicId. - */ - private static final String[] JONAS_EJBJAR_DTDS_PUBLIC_ID = new String[] { - "-//ObjectWeb//DTD JOnAS 2.4//EN", - "-//ObjectWeb//DTD JOnAS 2.5//EN", - "-//ObjectWeb//DTD JOnAS 3.0//EN", - "-//ObjectWeb//DTD JOnAS 3.2//EN", - "-//ObjectWeb//DTD JOnAS 3.3//EN", - "-//ObjectWeb//DTD JOnAS 3.3.1//EN", - "-//ObjectWeb//DTD JOnAS 3.3.2//EN", - }; - - - - - /** - * Build a new object for web.xml DTDs handling. - */ - public JonasEjbjarDTDs() { - super(); - addMapping(JONAS_EJBJAR_DTDS, JONAS_EJBJAR_DTDS_PUBLIC_ID); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarSchemas.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarSchemas.java deleted file mode 100644 index 7f8cef1f8b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/JonasEjbjarSchemas.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2008 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Philippe Coq - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.common.CommonsSchemas; -import org.ow2.jonas.deployment.common.util.ResourceHelper; - -/** - * This class defines the declarations of Schemas for jonas-ejb-jar.xml. - * @author Philippe Coq - */ -public class JonasEjbjarSchemas extends CommonsSchemas { - - /** - * Package name. - */ - private static final String PACKAGE = ResourceHelper.getResourcePackage(JonasEjbjarSchemas.class); - - /** - * List of schemas used for jonas-ejb-jar.xml. - */ - private static final String[] JONAS_EJBJAR_SCHEMAS = new String[] { - PACKAGE + "jonas-ejb-jar_4_0.xsd", - PACKAGE + "jonas-ejb-jar_4_1.xsd", - PACKAGE + "jonas-ejb-jar_4_1_2.xsd", - PACKAGE + "jonas-ejb-jar_4_1_4.xsd", - PACKAGE + "jonas-ejb-jar_4_2.xsd", - PACKAGE + "jonas-ejb-jar_4_3.xsd", - PACKAGE + "jonas-ejb-jar_4_6.xsd", - PACKAGE + "jonas-ejb-jar_4_7.xsd", - PACKAGE + "jonas-ejb-jar_4_8.xsd", - PACKAGE + "jonas-ejb-jar_4_10.xsd", - PACKAGE + "jonas-ejb-jar_5_0.xsd", - PACKAGE + "jonas-ejb-jar_5_1.xsd", - PACKAGE + "jonas-ejb-jar_5_2.xsd" - }; - - - /** - * Build a new object for Schemas handling. - */ - public JonasEjbjarSchemas() { - super(); - // Required ejb schemas - addSchemas(EjbjarSchemas.EJBJAR_SCHEMAS); - addSchemas(JONAS_EJBJAR_SCHEMAS); - } - - - /** - * @return Returns the last Schema - */ - public static String getLastSchema() { - return getLastSchema(JONAS_EJBJAR_SCHEMAS, PACKAGE); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MessageDrivenDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MessageDrivenDesc.java deleted file mode 100644 index 9e195bd122..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MessageDrivenDesc.java +++ /dev/null @@ -1,467 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.ActivationConfig; -import org.ow2.jonas.deployment.ejb.xml.ActivationConfigProperty; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.JonasMessageDriven; -import org.ow2.jonas.deployment.ejb.xml.MessageDriven; -import org.ow2.jonas.deployment.ejb.xml.MessageDrivenDestination; -import org.ow2.jonas.lib.util.BeanNaming; - - - - - -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * Class to hold meta-information related to a message driven bean - * - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class MessageDrivenDesc extends BeanDesc { - - public final static int AUTO_ACKNOWLEDGE = 1; - public final static int DUPS_OK_ACKNOWLEDGE = 2; - protected static final String[] ACKMODE = {null, "AUTO_ACKNOWLEDGE", - "DUPS_OK_ACKNOWLEDGE"}; - - public final static int SUBS_DURABLE = 1; - public final static int SUBS_NON_DURABLE = 2; - protected static final String[] SUBS_DURABILITY = {null, - "SUBSCRIPTION_DURABLE", "SUBSCRIPTION_NON_DURABLE"}; - - public final static int DEFAULT_MAX_MESSAGES = 1; - - protected String selector = null; - protected int acknowledgeMode; - protected int subscriptionDurability = SUBS_NON_DURABLE; - protected Class destinationType = null; - protected int txAttribute = MethodDesc.TX_NOT_SET; // for onMessage method - protected boolean isTopicDestination = false; - protected int transactionType; - protected String destinationJndiName = null; - protected String destinationLink = null; - - // Used with JMS Rars - protected String destination = null; - - protected ActivationConfigDesc mdActivationConfigDesc = null; - - protected ActivationConfigDesc mdJonasActivationConfigDesc = null; - - /** - * package protected constructor used by API - */ - MessageDrivenDesc(ClassLoader classLoader, MessageDriven md, - AssemblyDescriptor asd, JonasMessageDriven jMd, - JLinkedList jMDRList, String fileName) - throws DeploymentDescException { - - super(classLoader, md, jMd, asd, jMDRList, fileName); - mdActivationConfigDesc = new ActivationConfigDesc(md.getActivationConfig()); - mdJonasActivationConfigDesc = new ActivationConfigDesc(jMd.getActivationConfig()); - - // min-pool-size - if (jMd.getMinPoolSize() != null) { - String tstr = jMd.getMinPoolSize(); - Integer tval = new Integer(tstr); - poolMin = tval.intValue(); - } - - // max-cache-size - if (jMd.getMaxCacheSize() != null) { - String tstr = jMd.getMaxCacheSize(); - Integer tval = new Integer(tstr); - cacheMax = tval.intValue(); - } - - // necessary check - if (md.getEjbName() == null) { - throw new Error("No ejb-name specified for a message-driven bean"); - } - - // transaction-type - if (md.getTransactionType().equals("Bean")) { - transactionType = BEAN_TRANSACTION_TYPE; - } else if (md.getTransactionType().equals("Container")) { - transactionType = CONTAINER_TRANSACTION_TYPE; - } else { - throw new DeploymentDescException( - "Invalid transaction-type content for ejb-name " + ejbName); - } - - // message driven destination - if (jMd.getJonasMessageDrivenDestination() != null) { - destinationJndiName = jMd.getJonasMessageDrivenDestination() - .getJndiName(); - } - - // Set values can be from old 2.0 way, ActivationConfig in std xml, - // or ActivationConfig in jonas xml - - // message selector - selector = md.getMessageSelector(); - // acknowledge mode - if (md.getAcknowledgeMode() == null) { - acknowledgeMode = AUTO_ACKNOWLEDGE; - } else { - if (md.getAcknowledgeMode().equals("Auto-acknowledge")) { - acknowledgeMode = AUTO_ACKNOWLEDGE; - } else if (md.getAcknowledgeMode().equals("Dups-ok-acknowledge")) { - acknowledgeMode = DUPS_OK_ACKNOWLEDGE; - } else { - throw new DeploymentDescException("Invalid acknowledge-mode content for ejb-name " + ejbName); - } - } - MessageDrivenDestination d = md.getMessageDrivenDestination(); - if (d != null && d.getDestinationType() != null) { - if (d.getDestinationType().equals("javax.jms.Queue")) { - destinationType = javax.jms.Queue.class; - } else if (d.getDestinationType().equals("javax.jms.Topic")) { - destinationType = javax.jms.Topic.class; - isTopicDestination = true; - } else { - try { - destinationType = classLoader.loadClass(d.getDestinationType()); - } catch (Exception ex) { - throw new DeploymentDescException("Invalid destination-type for ejb-name " + ejbName); - } - } - if (d.getSubscriptionDurability() != null) { - if (destinationType.equals(javax.jms.Queue.class)) { - throw new DeploymentDescException("subscription-durability of message-driven-destination for ejb-name " - + ejbName + " defined"); - } - if (d.getSubscriptionDurability().equals("Durable")) { - subscriptionDurability = SUBS_DURABLE; - } else if (d.getSubscriptionDurability().equals("NonDurable")) { - subscriptionDurability = SUBS_NON_DURABLE; - } else { - throw new DeploymentDescException("Invalid subscription-durability content for ejb-name " + ejbName); - } - } else { - // non-durable subscription default value for topic - if (destinationType.equals(javax.jms.Topic.class)) { - subscriptionDurability = SUBS_NON_DURABLE; - } - } - - } - - destinationLink = md.getMessageDestinationLink(); - - if( mdActivationConfigDesc != null) { - configureAC(mdActivationConfigDesc, classLoader); - } - - if( mdJonasActivationConfigDesc != null) { - configureAC(mdJonasActivationConfigDesc, classLoader); - } - - if (destinationJndiName == null) { - throw new Error("No destination specified for message-driven bean " + ejbName); - } - - // cache TxAttribute for onMessage and ejbTimeout - for (Iterator i = getMethodDescIterator(); i.hasNext();) { - MethodDesc methd = (MethodDesc) i.next(); - if (methd.getMethod().getName().equals("onMessage")) { - txAttribute = methd.getTxAttribute(); - } - if (methd.getMethod().getName().equals("ejbTimeout")) { - timerTxAttribute = methd.getTxAttribute(); - ejbTimeoutSignature = BeanNaming.getSignature(getEjbName(), methd.getMethod()); - } - } - } - - /** - * Get transaction management type of the message driven. - * - * @return transaction type value within - * BEAN_TRANSACTION_TYPE,CONTAINER_TRANSACTION_TYPE - */ - public int getTransactionType() { - return transactionType; - } - - /** - * Return the transaction attribute for the onMessage method of Message - * driven bean - * - */ - public int getTxAttribute() { - return txAttribute; - } - - /** - * @return true if BEAN_TRANSACTION_TYPE - */ - public boolean isBeanManagedTransaction() { - return (transactionType == BeanDesc.BEAN_TRANSACTION_TYPE); - } - - /** - * Get the the destination name of the message driven bean. - * @return name of the destination of the message driven bean. - */ - public String getDestination() { - return(destination); - } - - /** - * Get the the destination JNDI name of the message driven bean. - * - * @return JNDI name of the destination of the message driven bean. - */ - public String getDestinationJndiName() { - return (destinationJndiName); - } - - /** - * Get the the destination link name of the message driven bean. - * - * @return link name of the destination of the message driven bean. - */ - public String getDestinationLink() { - return (destinationLink); - } - - /** - * Get the the destination type of the message driven bean. - * - * @return type of the destination of the message driven bean. - */ - public Class getDestinationType() { - return (destinationType); - } - - /** - * Return true if it is a Topic destination - */ - public boolean isTopicDestination() { - return (isTopicDestination); - } - - /** - * Assessor for existence of a message-selector for the message driven bean - * - * @return true if message-selector is defined for the bean - */ - public boolean hasSelector() { - return (selector != null); - } - - /** - * Get the message-selector value of the message driven bean. - * - * @return value of the message selector return null if no selector - */ - public String getSelector() { - return (selector); - } - - /** - * Get the acknowledge-mode of the message driven bean. - * - * @return acknowledge-mode value within AUTO_ACKNOWLEDGE, - * DUPS_OK_ACKNOWLEDGE - */ - public int getAcknowledgeMode() { - return (acknowledgeMode); - } - - /** - * Get the the durability of the subscription of the message driven bean. - * - * @return durability of the subscription value within SUBS_DURABLE, - * SUBS_NON_DURABLE - */ - public int getSubscriptionDurability() { - return (subscriptionDurability); - } - - public boolean isSubscriptionDurable() { - return (subscriptionDurability == SUBS_DURABLE); - } - - /** - * Return true if tx attribute for onMessage is Required - */ - public boolean isRequired() { - return (txAttribute == MethodDesc.TX_REQUIRED); - } - - /** - * @return the maximum number of messages that can be assigned to a server - * session at one time. will be configurable in the future - */ - public int getMaxMessages() { - return DEFAULT_MAX_MESSAGES; - } - - /** - * check that trans-attribute is valid for bean - */ - protected void checkTxAttribute(MethodDesc md) - throws DeploymentDescException { - java.lang.reflect.Method m = md.getMethod(); - if (getTransactionType() == CONTAINER_TRANSACTION_TYPE) { - if (md.getTxAttribute() == MethodDesc.TX_NOT_SET) { - // trans-attribute not set ! - // trace a warning and set the tx-attribute with the default value - logger.log(BasicLevel.WARN, - "trans-attribute missing for method " - + m.toString() + " in message driven bean " - + getEjbName() - + " (set to the default value " - + MethodDesc.TX_STR_DEFAULT_VALUE_4_MDB - + ")"); - md.setTxAttribute(MethodDesc.TX_STR_DEFAULT_VALUE_4_MDB); - } - if ((md.getTxAttribute() != MethodDesc.TX_REQUIRED) - && (md.getTxAttribute() != MethodDesc.TX_NOT_SUPPORTED)) { - if (!"ejbTimeout".equals(md.getMethod().getName())) { - throw new DeploymentDescException(md.getTxAttributeName() - + " is not a valid trans-attribute for method " - + m.toString() + " in message driven bean " - + getEjbName()); - } - } - } else { - if (md.getTxAttribute() != MethodDesc.TX_NOT_SET) { - throw new DeploymentDescException( - "trans-attribute for message driven bean " - + getEjbName() - + " must not be defined (transaction bean managed)"); - } - } - } - - /** - * Check that the message diven bean descriptor is valid - * - * @exception DeploymentDescException - * thrown for non-valid bean - */ - public void check() throws DeploymentDescException { - super.check(); - } - - /** - * String representation of the object for test purpose - * - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\ngetTransactionType()=" + TRANS[getTransactionType()]); - if (hasSelector()) { - ret.append("\ngetSelector()=\"" + getSelector() + "\""); - } - ret.append("\ngetAcknowledgeMode()=" + ACKMODE[getAcknowledgeMode()]); - if (getDestinationType() != null) { - ret.append("\ngetDestinationType()=" - + getDestinationType().getName()); - } - ret.append("\ngetSubscriptionDurability()=" - + SUBS_DURABILITY[getSubscriptionDurability()]); - ret.append("\ngetDestinationJndiName()=" + getDestinationJndiName()); - return ret.toString(); - } - - - /** - * @return the MessageDriven ActivationConfigDesc object - */ - public ActivationConfigDesc getMdActivationConfigDesc() { - return mdActivationConfigDesc; - } - - /** - * @return the JOnAS MessageDriven ActivationConfigDesc object - */ - public ActivationConfigDesc getJonasMdActivationConfigDesc() { - return mdJonasActivationConfigDesc; - } - - private void configureAC(ActivationConfigDesc ac, ClassLoader curLoader) throws DeploymentDescException{ - try { - List acpl = ac.getActivationConfigPropertyList(); - for (ListIterator lit = acpl.listIterator();lit.hasNext();) { - ActivationConfigPropertyDesc el = (ActivationConfigPropertyDesc)lit.next(); - if (el.getActivationConfigPropertyName().equals("destinationType")) { - if (el.getActivationConfigPropertyValue().equals("javax.jms.Queue")) { - destinationType = javax.jms.Queue.class; - } else if (el.getActivationConfigPropertyValue().equals("javax.jms.Topic")) { - destinationType = javax.jms.Topic.class; - isTopicDestination = true; - } else { - try { - destinationType = curLoader.loadClass(el.getActivationConfigPropertyValue()); - } catch (Exception ex) { - throw new DeploymentDescException("Invalid destination-type of " - + el.getActivationConfigPropertyValue() - + "for ejb-name" + ejbName); - } - } - } else if (el.getActivationConfigPropertyName().equals("messageSelector")) { - selector = el.getActivationConfigPropertyValue(); - } else if (el.getActivationConfigPropertyName().equals("acknowledgeMode")) { - if (el.getActivationConfigPropertyValue().equals("Auto-acknowledge")) { - acknowledgeMode = AUTO_ACKNOWLEDGE; - } else if (el.getActivationConfigPropertyValue().equals("Dups-ok-acknowledge")) { - acknowledgeMode = DUPS_OK_ACKNOWLEDGE; - } - } else if (el.getActivationConfigPropertyName().equals("subscriptionDurability")) { - if (el.getActivationConfigPropertyValue().equals("Durable")) { - subscriptionDurability = SUBS_DURABLE; - } else { - subscriptionDurability = SUBS_NON_DURABLE; - } - } else if (el.getActivationConfigPropertyName().equals("destination")) { - destination = el.getActivationConfigPropertyValue(); - } - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodCmp2Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodCmp2Desc.java deleted file mode 100644 index 9945594490..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodCmp2Desc.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.io.CharArrayReader; -import java.lang.reflect.Method; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.ejbql.ASTEJBQL; -import org.ow2.jonas.deployment.ejb.ejbql.EJBQL; -import org.ow2.jonas.deployment.ejb.ejbql.ParseException; - - - -/** - * Class to hold meta-information related to CMP2 find/select methods - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class MethodCmp2Desc extends MethodDesc { - - protected String query = null; - protected ASTEJBQL queryNode = null; - protected boolean resultTypeMappingRemote = false; - protected EntityDesc entityDesc; - - - /** - * construtor form XML data binding structures - */ - MethodCmp2Desc(BeanDesc beanDesc, Method meth, Class classDef, int index) { - super(beanDesc, meth, classDef, index); - entityDesc = (EntityDesc) beanDesc; - } - - /** - * get EJB-QL query when defined - * @return possibly null String containing the EJB-QL query for the method - */ - public String getQuery() { - return query; - } - - /** - * set EJB-QL query. Because of the deployment descriptor structure, the query is - * set after the object is created. - */ - public void setQuery(String query) throws ParseException { - // we want a one line query for error reporting - this.query = query.replace('\r',' ').replace('\n',' ').replace('\t',' '); - EJBQL parser = new EJBQL(new CharArrayReader(query.toCharArray())); - queryNode = (ASTEJBQL)parser.EJBQL(); - } - - - public ASTEJBQL getQueryNode() { - return queryNode; - } - - /** - * get result type mapping state (remote/local) - * @return true when remote - */ - public boolean isResultTypeMappingRemote() { - return resultTypeMappingRemote; - } - - /** - * set the state of resultTypeMappingRemote - */ - public void setResultTypeMapping(String resultTypeMapping) - throws DeploymentDescException { - if (resultTypeMapping.equals("Remote")) { - resultTypeMappingRemote=true; - } else if (resultTypeMapping.equals("Local")) { - resultTypeMappingRemote=false; - } else { - throw new DeploymentDescException(resultTypeMapping+" is not a valid result-type-mapping value"); - } - } - - /** - * Get the prefetch tag value for this method. - * May be true only for finder methods (not for ejbSelect methods) - */ - public boolean getPrefetch() { - if (this.isFinder()) { - return entityDesc.isPrefetch(); - } else { - return false; - } - } - - - /** - * String representation of the given element - * @param m an element - * @return String representation of the given element method - */ - public static String queryMethodElementToString(org.ow2.jonas.deployment.ejb.xml.QueryMethod m) { - return methodElementToString(null, m.getMethodName(),m.getMethodParams()); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\nquery = " + query); - ret.append("\nqueryNode = " + queryNode); - ret.append("\nresultTypeMappingRemote = " + resultTypeMappingRemote); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodDesc.java deleted file mode 100644 index a69351f783..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodDesc.java +++ /dev/null @@ -1,477 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.ejb.xml.MethodParams; - - -/** - * Class to hold meta-information related to bean and home methods. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin: fix a bug about select method select method is a bean's method which name begins with ejbSelect, - * (and not home interface method as finder method). - */ -public class MethodDesc { - - /** - * Set of constants for method transaction attribute - */ - public static final int TX_NULL = -1; - public static final int TX_NOT_SET = 0; - public static final int TX_NOT_SUPPORTED = 1; - public static final int TX_REQUIRED = 2; - public static final int TX_SUPPORTS = 3; - public static final int TX_REQUIRES_NEW = 4; - public static final int TX_MANDATORY = 5; - public static final int TX_NEVER = 6; - - - private static final String[] ATTR = { - "TX_NOT_SET", - "TX_NOT_SUPPORTED", - "TX_REQUIRED", - "TX_SUPPORTS", - "TX_REQUIRES_NEW", - "TX_MANDATORY", - "TX_NEVER" - }; - - /** - * default value for undefined transaction attribute for sessions and entities - */ - protected static final String TX_STR_DEFAULT_VALUE = "Supports"; - - /** - * default value for undefined transaction attribute for message driven beans - */ - protected static final String TX_STR_DEFAULT_VALUE_4_MDB = "NotSupported"; - - /** - * value for undefined transaction attribute - */ - private int txAttribute = TX_NOT_SET; - private int txAttributeStatus = APPLY_TO_BEAN; - - // Array of String representing the roles which can execute the method of this MethodDesc - private HashSet roleName = new HashSet(); - - public static final int APPLY_TO_NOTHING = 0; - public static final int APPLY_TO_BEAN = 1; - public static final int APPLY_TO_CLASS = 2; - public static final int APPLY_TO_BEAN_METHOD_NAME = 3; - public static final int APPLY_TO_CLASS_METHOD_NAME = 4; - public static final int APPLY_TO_BEAN_METHOD = 5; - public static final int APPLY_TO_CLASS_METHOD = 6; - - protected static final String[] APPLY_TO = { - "APPLY_TO_NOTHING", - "APPLY_TO_BEAN", - "APPLY_TO_CLASS", - "APPLY_TO_BEAN_METHOD_NAME", - "APPLY_TO_CLASS_METHOD_NAME", - "APPLY_TO_BEAN_METHOD", - "APPLY_TO_CLASS_METHOD" - }; - - private Method meth; - private Class classDef; - private int index; - - protected BeanDesc beanDesc; - - private boolean isFinder = false; - private boolean isEjbSelect = false; - private boolean isFindByPrimaryKey = false; - - /** - * This method was marked as excluded in ejb-jar.xml ? - */ - private boolean excluded = false; - - /** - * constructor to be used by parent node - */ - public MethodDesc(BeanDesc beanDesc, Method meth, Class clDef, int index) { - this.meth = meth; - this.classDef = clDef; - this.index = index; - this.beanDesc = beanDesc; - isFindByPrimaryKey = MethodDesc.isFindByPrimaryKey(meth); - isFinder = isFinder(meth); - isEjbSelect = isEjbSelect(meth); - } - - /** - * get a unique index of the method for the bean - */ - public int getIndex() { - return index; - } - - public void setIndex(int idx) { - index = idx; - } - - /** - * access if the method is a finder - * @return true for finder methods - */ - public boolean isFinder() { - return isFinder; - } - - /** - * access if the method is findByPrimaryKey - * @return true for the findByPrimaryKey method - */ - public boolean isFindByPrimaryKey() { - return isFindByPrimaryKey; - } - - - /** - * access if the method is a select - * @return true for select methods - */ - public boolean isEjbSelect() { - return isEjbSelect; - } - - - /** - * Overwrite TxAttribute - * @param transAttribute new value for txAttribute - * @param status applicability of given transAttribute parameter - */ - void overwriteTxAttribute(String transAttribute, int status) throws DeploymentDescException { - // overwrite only if numerical value greater than existing one - if (status < this.txAttributeStatus) { - return; - } - setTxAttribute(transAttribute); - txAttributeStatus = status; - } - - /** - * Set TxAttribute with given value - */ - void setTxAttribute(String transAttribute) throws DeploymentDescException { - if (transAttribute.equals("NotSupported")) { - txAttribute = TX_NOT_SUPPORTED; - } else if (transAttribute.equals("Required")) { - txAttribute = TX_REQUIRED; - } else if (transAttribute.equals("Supports")) { - txAttribute = TX_SUPPORTS; - } else if (transAttribute.equals("RequiresNew")) { - txAttribute = TX_REQUIRES_NEW; - } else if (transAttribute.equals("Mandatory")) { - txAttribute = TX_MANDATORY; - } else if (transAttribute.equals("Never")) { - txAttribute = TX_NEVER; - } else { - throw new DeploymentDescException(transAttribute - + " is not a valid trans-attribute value"); - } - } - - /** - * Add a role name to the role names which can execute the method - * @param rn role name to add - */ - void addRoleName (String rn) { - roleName.add(rn); - } - - /** - * Evaluate method pattern maching as defined in the EJB specifications - * @return one of the APPLY_TO_* values. - */ - public int matchPattern(Class pclass, String mName, MethodParams patternMethodParams) { - return matchPattern(getMethod(), classDef, pclass, mName, patternMethodParams); - } - - /** - * Get the status of applicability for a given pattern to a method - * @return status of applicability APPLY_TO_NOTHING,APPLY_TO_BEAN,APPLY_TO_CLASS,APPLY_TO_METHOD_NAME,APPLY_TO_METHOD - */ - public static int matchPattern(java.lang.reflect.Method meth, - Class classMeth, - Class pclass, - String mName, - MethodParams patternMethodParams) { - - // If pclass don't match -> APPLY_TO_NOTHING - if (pclass != null && !pclass.isAssignableFrom(classMeth)) { - return APPLY_TO_NOTHING; - } - - // class is enough - if (mName.equals("*")) { - return (pclass == null) ? APPLY_TO_BEAN : APPLY_TO_CLASS; - } - - // method name does not match - if (!mName.equals(meth.getName())) { - return APPLY_TO_NOTHING; - } - - // no params specified (name test is enough) - if (patternMethodParams == null) { - return (pclass == null) ? APPLY_TO_BEAN_METHOD_NAME : APPLY_TO_CLASS_METHOD_NAME; - } - - Class pars[] = meth.getParameterTypes(); - List pattPars = patternMethodParams.getMethodParamList(); - // number of parameters does not match - if (pars.length != pattPars.size()) { - return APPLY_TO_NOTHING; - } - Iterator i = pattPars.iterator(); - for (int ii = 0; ii < pars.length; ii++) { - String cName = (String) i.next(); - if (!getClassName(pars[ii]).equals(cName)) { - return APPLY_TO_NOTHING; - } - } - return (pclass == null) ? APPLY_TO_BEAN_METHOD : APPLY_TO_CLASS_METHOD; - } - - /** - * Returns common name of a given type
    - * For example it returns int[] for an array of int - * @return String with the name of the given type - */ - private static String getClassName(Class c) { - String name; - if (c.isArray()) { - name = getClassName(c.getComponentType()) + "[]"; - } else { - name = c.getName(); - } - return (name); - } - - - - /** - * Get the container transaction attribute that match the method - * @return Constant value within list : - * TX_NOT_SUPPORTED,TX_REQUIRED,TX_SUPPORTS,TX_REQUIRES_NEW,TX_MANDATORY,TX_NEVER,TX_NOT_SET - */ - public int getTxAttribute() { - return txAttribute; - } - - /** - * Get the container transaction attribute that match the method - * @return Constant value within list : - * APPLY_TO_NOTHING, APPLY_TO_BEAN, APPLY_TO_CLASS, APPLY_TO_BEAN_METHOD_NAME, - * APPLY_TO_CLASS_METHOD_NAME, APPLY_TO_BEAN_METHOD, APPLY_TO_CLASS_METHOD - */ - public int getTxAttributeStatus() { - return txAttributeStatus; - } - - /** - * String representation of the transactionnal attribute - * @return String representation of this transactionnal attribute - */ - public static String getTxAttributeName(int value) { - if ((value < 0) || (value > ATTR.length)) { - throw new Error(value + " is not a valid TxAttribute"); - } - return ATTR[value]; - } - - /** - * String representation of the transactionnal attribute - * @return String representation of this transactionnal attribute - */ - public String getTxAttributeName() { - return ATTR[txAttribute]; - } - - /** - * String representation of the roles which can execute the method - * @return Array of String representing the roles which can execute the method - */ - public String[] getRoleName () { - if (roleName.isEmpty()) { - return new String[0]; - } - Object[] o = roleName.toArray(); - String[] rn = new String[o.length]; - for (int i = 0; i < rn.length; i++) { - rn[i] = (String) o[i]; - } - return rn; - } - - /** - * String representation of the given element - * @param m an element - * @return String representation of the given element method - */ - public static String methodElementToString(org.ow2.jonas.deployment.ejb.xml.Method m) { - return methodElementToString(m.getMethodIntf(), m.getMethodName(), m.getMethodParams()); - } - - /** - * get a String representation of a method from it's XML representation - */ - protected static String methodElementToString(String intf, String name, MethodParams params) { - String s = new String(); - if (intf != null) { - s = s.concat(intf + "."); - } - s = s.concat(name); - if (params != null) { - s = s.concat("("); - for (Iterator i = params.getMethodParamList().iterator(); i.hasNext();) { - s = s.concat((String) i.next()); - if (i.hasNext()) { - s = s.concat(","); - } - } - s = s.concat(")"); - } - return (s); - } - - /** - * get a String representation of a method from the reflection object - */ - public static String toString(Method m) { - StringBuffer ret = new StringBuffer(); - ret.append(m.getDeclaringClass().getName()); - ret.append('.'); - ret.append(m.getName()); - ret.append('('); - Class[] params = m.getParameterTypes(); - for (int i = 0; i < params.length; i++) { - ret.append(getClassName(params[i])); - if (i == params.length - 1) { - break; - } - ret.append(','); - } - ret.append(')'); - return ret.toString(); - } - - /** - * return the method to which the meta-information applies - */ - public Method getMethod() { - return meth; - } - - /** - * get the parent node - */ - public BeanDesc getBeanDesc() { - return beanDesc; - } - - /** - * access if a method is a finder - */ - public static boolean isFinder(Method meth) { - return (meth.getName().startsWith("find") - && (javax.ejb.EJBHome.class.isAssignableFrom(meth.getDeclaringClass()) - || javax.ejb.EJBLocalHome.class.isAssignableFrom(meth.getDeclaringClass()))); - } - - /** - * access if a method is findByPrimaryKey - */ - public static boolean isFindByPrimaryKey(Method meth) { - return (meth.getName().equals("findByPrimaryKey") - && (javax.ejb.EJBHome.class.isAssignableFrom(meth.getDeclaringClass()) - || javax.ejb.EJBLocalHome.class.isAssignableFrom(meth.getDeclaringClass()))); - } - - /** - * access if a method is a select - */ - public static boolean isEjbSelect(Method meth) { - return (meth.getName().startsWith("ejbSelect") - && javax.ejb.EntityBean.class.isAssignableFrom(meth.getDeclaringClass())); - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append("\ngetTxAttribute() = " + ATTR[getTxAttribute()]); - ret.append("\ngetTxAttributeStatus() = " + APPLY_TO[getTxAttributeStatus()]); - ret.append("\nMethodIndex = " + index); - ret.append("\nmeth = " + toString(meth)); - ret.append("\nisFinder = " + isFinder); - ret.append("\nisEjbSelect = " + isEjbSelect); - ret.append("\nisFindByPrimaryKey = " + isFindByPrimaryKey); - if (!roleName.isEmpty()) { - ret.append("\ngetRoleName() = ["); - String [] rn = getRoleName(); - for (int i = 0; i < rn.length - 1; i++) { - ret.append (rn[i] + ", "); - } - ret.append(rn[rn.length - 1] + "]"); - ret.append("\n"); - } - return ret.toString(); - } - - /** - * @return true if this method is excluded (in DD), else false - */ - public boolean isExcluded() { - return excluded; - } - /** - * Sets the excluded attribute. - * @param excluded true of false - */ - public void setExcluded(boolean excluded) { - this.excluded = excluded; - } -} - - - - - - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodJdbcCmp1Desc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodJdbcCmp1Desc.java deleted file mode 100644 index 4d2304066b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/MethodJdbcCmp1Desc.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Method; - -import org.ow2.jonas.deployment.common.DeploymentDescException; - -/** - * Class to hold meta-information related to CMP v1 attributes of a method when a jdbc - * data store is used. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class MethodJdbcCmp1Desc extends MethodDesc { - - protected String whereClause = null; - protected int whereClauseStatus = APPLY_TO_BEAN; - - /** - * constructor to be used by parent node - */ - public MethodJdbcCmp1Desc(BeanDesc beanDesc,Method meth, Class classDef, int index) { - super(beanDesc,meth, classDef,index); - } - - /** - * Overwrite JdbcWhereClause - * @param jdbcWhereClause new value for jdbcWhereClause - * @param status applicability of given transAttribute parameter - */ - void overwriteJdbcWhereClause(String jdbcWhereClause,int status) - throws DeploymentDescException { - if (status - * - * @return transaction type value within - * BEAN_TRANSACTION_TYPE,CONTAINER_TRANSACTION_TYPE - */ - public int getTransactionType() { - return transactionType; - } - - /** - * Returns true if bean managed transaction. (used by JOnAS Server) - */ - public boolean isBeanManagedTransaction() { - return (transactionType == BEAN_TRANSACTION_TYPE); - } - - /** - * Get the session timeout value - */ - public int getSessionTimeout() { - return sessionTimeout; - } - - /** - * Check that the bean descriptor is valid - * - * @exception DeploymentDescException - * thrown for non-valid bean - */ - @Override - public void check() throws DeploymentDescException { - super.check(); - // for BEAN_TRANSACTION_TYPE transactions ejbClass should not implement - // javax.ejb.SessionSynchronization - if ((getTransactionType() == BEAN_TRANSACTION_TYPE) - && (javax.ejb.SessionSynchronization.class - .isAssignableFrom(ejbClass))) { - throw new DeploymentDescException( - ejbClass.getName() - + " should NOT manage transactions and implement javax.ejb.SessionSynchronization"); - } - } - - /** - * String representation of the object for test purpose - * - * @return String representation of this object - */ - @Override - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - ret.append("\ngetTransactionType()" + TRANS[getTransactionType()]); - ret.append("\nsessionTimeout = " + sessionTimeout); - return ret.toString(); - } - - public boolean isMonitoringSettingsDefinedInDD() { - return monitoringSettingsDefinedInDD; - } - - public void setWarningThreshold(final int warningThreshold) { - this.warningThreshold = warningThreshold; - } - - public boolean isMonitoringEnabled() { - return monitoringEnabled; - } - - public int getWarningThreshold() { - return warningThreshold; - } - -} - diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatefulDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatefulDesc.java deleted file mode 100644 index d2b63823b0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatefulDesc.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.deployment.ejb; - -import java.lang.reflect.Method; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.JonasSession; -import org.ow2.jonas.deployment.ejb.xml.Session; - - -/** - * class to hold meta-information related to a stateful session bean. - * At this stage, this is only a tagger class. - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class SessionStatefulDesc extends SessionDesc { - - protected Method isModifiedMethod = null; - - /** - * constructor: called when the DeploymentDescriptor is read. - * Currently, called by both GenIC and createContainer. - */ - public SessionStatefulDesc(ClassLoader classLoader, Session ses, - AssemblyDescriptor asd, JonasSession jSes, - JLinkedList jMDRList, String filename) - throws DeploymentDescException { - super(classLoader, ses, asd, jSes, jMDRList, filename); - - // isModifiedMethod - if (jSes.getIsModifiedMethodName() != null) { - String mName = jSes.getIsModifiedMethodName(); - try { - isModifiedMethod = this.ejbClass.getMethod(mName, new Class[0]); - } catch (NoSuchMethodException e) { - isModifiedMethod = null; - throw new DeploymentDescException(mName + " is not a method of " + this.ejbClass.getName()); - } catch (SecurityException e) { - throw new DeploymentDescException("Cannot use java reflexion on " + this.ejbClass.getName()); - } - } - } - - /** - * Get the 'isModified' method name implemented in the bean class. - * (This information is JOnAS specific). - * @return Name of the isModified method - */ - public Method getIsModifiedMethod(){ - if (isModifiedMethod == null) - throw new Error("No isModified method defined for bean " + this.ejbName); - return isModifiedMethod; - } - - /** - * Assessor for existence of a isModified methoe - * @return true of isModified method exist for the bean - */ - public boolean hasIsModifiedMethod(){ - return isModifiedMethod != null; - } - - /** - * String representation of the object for test purpose - * @return String representation of this object - */ - public String toString() { - StringBuffer ret = new StringBuffer(); - ret.append(super.toString()); - if (hasIsModifiedMethod()) - ret.append("getIsModifiedMethod()=" + getIsModifiedMethod().toString()); - return ret.toString(); - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatelessDesc.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatelessDesc.java deleted file mode 100644 index 098a555770..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/SessionStatelessDesc.java +++ /dev/null @@ -1,295 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2006 Bull S.A. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.deployment.ejb; - -import org.ow2.jonas.deployment.common.DeploymentDescException; -import org.ow2.jonas.deployment.common.xml.JLinkedList; -import org.ow2.jonas.deployment.ejb.xml.AssemblyDescriptor; -import org.ow2.jonas.deployment.ejb.xml.CommonEjb; -import org.ow2.jonas.deployment.ejb.xml.JonasSession; -import org.ow2.jonas.deployment.ejb.xml.Session; -import org.ow2.jonas.lib.util.BeanNaming; - -import java.lang.reflect.Method; -import java.util.Iterator; - - - - -/** - * class to hold meta-information related to a stateless session bean. - * - * @author Christophe Ney [cney@batisseurs.com] : Initial developer - * @author Helene Joanin - */ -public class SessionStatelessDesc extends SessionDesc { - - /** - * Default service endpoint jndi suffix - */ - private static final String SERVICE_ENDPOINT_JNDI_SUFFIX = "_SE"; - - /** - * class name of the JOnAS wrapper (without package prefix) - */ - private String wrpServiceEndpointName; - private String wrpSEHomeName; - - /** - * Singleton=True if only 1 SessionSwitch (and 1 Remote) when possible. - */ - protected boolean singleton = true; - - /** - * fully qualified class name of the JOnAS wrapper - */ - private String fullWrpServiceEndpointName; - private String fullWrpSEHomeName; - - /** - * ServiceEndpoint Class - */ - private Class serviceEndpointClass; - - /** - * jndi name - */ - private String serviceEndpointJndiName; - - /** - * constructor: called when the DeploymentDescriptor is read. Currently, - * called by both GenIC and createContainer. - * - * @param classLoader ClassLoader to load Bean's classes - * @param ses XML Element for session standard deployment descriptor - * @param asd Assembly Descriptor of the EjbJar - * @param jSes XML Element for session jonas deployment descriptor - * @param filename bean's jar filename - * - * @throws DeploymentDescException When SessionDesc cannot be instanciated - */ - public SessionStatelessDesc(ClassLoader classLoader, Session ses, AssemblyDescriptor asd, JonasSession jSes, - JLinkedList jMDRList, String filename) throws DeploymentDescException { - super(classLoader, ses, asd, jSes, jMDRList, filename); - - // create wrapper names - String ejbIdentifier = getIdentifier(); - if (getServiceEndpointClass() != null) { - String packageName = BeanDesc.GENERATED_PREFIX + - BeanNaming.getPackageName(getServiceEndpointClass().getName()); - wrpServiceEndpointName = new String("JOnAS" + ejbIdentifier + "ServiceEndpoint"); - fullWrpServiceEndpointName = BeanNaming.getClassName(packageName, wrpServiceEndpointName); - wrpSEHomeName = new String("JOnAS" + ejbIdentifier + "SEHome"); - fullWrpSEHomeName = BeanNaming.getClassName(packageName, wrpSEHomeName); - } - - // get jndi-endpoint-name - if (jSes.getJndiEndpointName() != null) { - serviceEndpointJndiName = jSes.getJndiEndpointName(); - } else { - serviceEndpointJndiName = getJndiName() + SERVICE_ENDPOINT_JNDI_SUFFIX; - } - - // singleton - if (jSes.getSingleton() != null) { - if (jSes.getSingleton().equalsIgnoreCase("True")) { - singleton = true; - } else if (jSes.getSingleton().equalsIgnoreCase("False")) { - singleton = false; - } else { - throw new DeploymentDescException("Invalid singleton value for bean " + this.ejbName); - } - } - - // cache TxAttribute for ejbTimeout - for (Iterator i = getMethodDescIterator(); i.hasNext();) { - MethodDesc methd = (MethodDesc) i.next(); - if (methd.getMethod().getName().equals("ejbTimeout")) { - timerTxAttribute = methd.getTxAttribute(); - ejbTimeoutSignature = BeanNaming.getSignature(getEjbName(), methd.getMethod()); - } - } - } - - /** - * Check that the bean descriptor is valid - * - * @exception DeploymentDescException thrown for non-valid bean - */ - public void check() throws DeploymentDescException { - super.check(); - // ejbClass should not implement javax.ejb.SessionSynchronization - if (javax.ejb.SessionSynchronization.class.isAssignableFrom(ejbClass)) { - throw new DeploymentDescException(ejbClass.getName() - + " should NOT implement javax.ejb.SessionSynchronization"); - } - } - - /** - * Permit Methods addition from subtypes Protected method that need to be - * overridden in subclasses - * - * @param len method array length - * @return new len value - * - * @throws DeploymentDescException when java reflection cannot be used on - * classes - */ - protected int addEJBMethodDesc(int len) throws DeploymentDescException { - - if (this.serviceEndpointClass != null) { - // session bean or entity bean with local interface - Method[] m = this.serviceEndpointClass.getMethods(); - for (int i = 0; i < m.length; i++) { - addMethodDesc(m[i], this.serviceEndpointClass); - len++; - // check RemoteException is thrown - checkRemoteException(m[i], true); - } - } - return len; - } - - /** - * load class for service-endpoint - * - * @param bd XML Element representing EJB Descriptor - * @param classLoader ClassLoader used to load classes - * - * @throws DeploymentDescException when a class cannot be loaded - */ - protected void loadExtraClasses(CommonEjb bd, ClassLoader classLoader) throws DeploymentDescException { - - Session ses = (Session) bd; - - // load service-endpoint interface - if (ses.getServiceEndpoint() != null) { - try { - serviceEndpointClass = classLoader.loadClass(ses.getServiceEndpoint()); - // check service-endpoint extends java.rmi.Remote - if (!java.rmi.Remote.class.isAssignableFrom(serviceEndpointClass)) { - throw new DeploymentDescException("ServiceEndpoint class '" + ses.getServiceEndpoint() - + "' does not extend java.rmi.Remote"); - } - } catch (ClassNotFoundException e) { - throw new DeploymentDescException("ServiceEndpoint class not found for bean " + ejbName, e); - } - } - - } - - /** - * Returns the parent Class for a method given an interface type. - * - * @param intfType type of the interface (Home/Remote/LocalHome/Local or - * ServiceEndpoint) - * - * @return the parent class for a method given an interface type - * - * @throws DeploymentDescException when intfType is unknown - */ - protected Class getParentClass(String intfType) throws DeploymentDescException { - Class pClass = null; - if (intfType.equals("Home")) { - pClass = javax.ejb.EJBHome.class; - } else if (intfType.equals("Remote")) { - pClass = javax.ejb.EJBObject.class; - } else if (intfType.equals("LocalHome")) { - pClass = javax.ejb.EJBLocalHome.class; - } else if (intfType.equals("Local")) { - pClass = javax.ejb.EJBLocalObject.class; - } else if (intfType.equals("ServiceEndpoint")) { - pClass = java.rmi.Remote.class; - } else { - throw new DeploymentDescException(intfType + " is invalid value for method-intf on bean " + ejbName); - } - return pClass; - } - - /** - * @return Returns the serviceEndpointClass. - */ - public Class getServiceEndpointClass() { - return serviceEndpointClass; - } - - private void checkValidServiceEndpointInterface() { - // extends java.rmi.Remote - // arguments and returns types are valid types for JAX-RPC (may be - // Holders) - // throws must includes java.rmi.RemoteException - // each endpoint method must have a matching session bean method : - // - same name - // - same number and types of arguments and same return type - // - session exceptions must eb included in endpoint - // no EJBObject or EJBLocalObject - // service endpoint interface must not include constants (public final - // static) - } - - /** - * @return jndi name where ServiceEndpoint interface will be bound - */ - public String getJndiServiceEndpointName() { - return serviceEndpointJndiName; - } - - /** - * @return Returns the fullWrpServiceEndpointName. - */ - public String getFullWrpServiceEndpointName() { - return fullWrpServiceEndpointName; - } - - /** - * @return Returns the wrpServiceEndpointName. - */ - public String getWrpServiceEndpointName() { - return wrpServiceEndpointName; - } - - /** - * @return Returns the fullWrpSEHomeName. - */ - public String getFullWrpSEHomeName() { - return fullWrpSEHomeName; - } - - /** - * @return Returns the wrpSEHomeName. - */ - public String getWrpSEHomeName() { - return wrpSEHomeName; - } - - /** - * @return true for singleton session bean - */ - public boolean isSingleton() { - return singleton; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAbstractSchemaName.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAbstractSchemaName.java deleted file mode 100644 index 693c822651..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAbstractSchemaName.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTAbstractSchemaName.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTAbstractSchemaName extends SimpleNode { - public ASTAbstractSchemaName(int id) { - super(id); - } - - public ASTAbstractSchemaName(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAggregateSelectExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAggregateSelectExpression.java deleted file mode 100644 index f112f922be..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTAggregateSelectExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTAggregateSelectExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTAggregateSelectExpression extends SimpleNode { - public ASTAggregateSelectExpression(int id) { - super(id); - } - - public ASTAggregateSelectExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticExpression.java deleted file mode 100644 index cb3748a83a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTArithmeticExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTArithmeticExpression extends SimpleNode { - public ASTArithmeticExpression(int id) { - super(id); - } - - public ASTArithmeticExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticFactor.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticFactor.java deleted file mode 100644 index 51a0a34c44..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticFactor.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTArithmeticFactor.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTArithmeticFactor extends SimpleNode { - public ASTArithmeticFactor(int id) { - super(id); - } - - public ASTArithmeticFactor(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticLiteral.java deleted file mode 100644 index db95236088..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTArithmeticLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTArithmeticLiteral extends SimpleNode { - public ASTArithmeticLiteral(int id) { - super(id); - } - - public ASTArithmeticLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticTerm.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticTerm.java deleted file mode 100644 index 034eb2ef2d..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTArithmeticTerm.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTArithmeticTerm.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTArithmeticTerm extends SimpleNode { - public ASTArithmeticTerm(int id) { - super(id); - } - - public ASTArithmeticTerm(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBetweenExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBetweenExpression.java deleted file mode 100644 index 1bbe2e34c5..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBetweenExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTBetweenExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTBetweenExpression extends SimpleNode { - public ASTBetweenExpression(int id) { - super(id); - } - - public ASTBetweenExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanExpression.java deleted file mode 100644 index 65976caf83..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTBooleanExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTBooleanExpression extends SimpleNode { - public ASTBooleanExpression(int id) { - super(id); - } - - public ASTBooleanExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanLiteral.java deleted file mode 100644 index b23a842305..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTBooleanLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTBooleanLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTBooleanLiteral extends SimpleNode { - public ASTBooleanLiteral(int id) { - super(id); - } - - public ASTBooleanLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCmpPathExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCmpPathExpression.java deleted file mode 100644 index 936993c55c..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCmpPathExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTCmpPathExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTCmpPathExpression extends SimpleNode { - public ASTCmpPathExpression(int id) { - super(id); - } - - public ASTCmpPathExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberDeclaration.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberDeclaration.java deleted file mode 100644 index c276c0c53a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberDeclaration.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTCollectionMemberDeclaration.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTCollectionMemberDeclaration extends SimpleNode { - public ASTCollectionMemberDeclaration(int id) { - super(id); - } - - public ASTCollectionMemberDeclaration(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberExpression.java deleted file mode 100644 index 2b1814a08b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionMemberExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTCollectionMemberExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTCollectionMemberExpression extends SimpleNode { - public ASTCollectionMemberExpression(int id) { - super(id); - } - - public ASTCollectionMemberExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionValuedPathExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionValuedPathExpression.java deleted file mode 100644 index 6187758ee4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTCollectionValuedPathExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTCollectionValuedPathExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTCollectionValuedPathExpression extends SimpleNode { - public ASTCollectionValuedPathExpression(int id) { - super(id); - } - - public ASTCollectionValuedPathExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTComparisonExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTComparisonExpression.java deleted file mode 100644 index 056de6745b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTComparisonExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTComparisonExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTComparisonExpression extends SimpleNode { - public ASTComparisonExpression(int id) { - super(id); - } - - public ASTComparisonExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalExpression.java deleted file mode 100644 index 2a3e8704ac..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTConditionalExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTConditionalExpression extends SimpleNode { - public ASTConditionalExpression(int id) { - super(id); - } - - public ASTConditionalExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalFactor.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalFactor.java deleted file mode 100644 index 6297ff6a2a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalFactor.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTConditionalFactor.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTConditionalFactor extends SimpleNode { - public ASTConditionalFactor(int id) { - super(id); - } - - public ASTConditionalFactor(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalTerm.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalTerm.java deleted file mode 100644 index 164b72617a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTConditionalTerm.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTConditionalTerm.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTConditionalTerm extends SimpleNode { - public ASTConditionalTerm(int id) { - super(id); - } - - public ASTConditionalTerm(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTDatetimeExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTDatetimeExpression.java deleted file mode 100644 index 5b4166399f..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTDatetimeExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTDatetimeExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTDatetimeExpression extends SimpleNode { - public ASTDatetimeExpression(int id) { - super(id); - } - - public ASTDatetimeExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEJBQL.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEJBQL.java deleted file mode 100644 index cbdb79515b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEJBQL.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTEJBQL.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTEJBQL extends SimpleNode { - public ASTEJBQL(int id) { - super(id); - } - - public ASTEJBQL(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEmptyCollectionComparisonExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEmptyCollectionComparisonExpression.java deleted file mode 100644 index aadd3d7823..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEmptyCollectionComparisonExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTEmptyCollectionComparisonExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTEmptyCollectionComparisonExpression extends SimpleNode { - public ASTEmptyCollectionComparisonExpression(int id) { - super(id); - } - - public ASTEmptyCollectionComparisonExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEntityBeanExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEntityBeanExpression.java deleted file mode 100644 index 5410984dc8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTEntityBeanExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTEntityBeanExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTEntityBeanExpression extends SimpleNode { - public ASTEntityBeanExpression(int id) { - super(id); - } - - public ASTEntityBeanExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFloatingPointLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFloatingPointLiteral.java deleted file mode 100644 index 39d525c5a0..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFloatingPointLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTFloatingPointLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTFloatingPointLiteral extends SimpleNode { - public ASTFloatingPointLiteral(int id) { - super(id); - } - - public ASTFloatingPointLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFromClause.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFromClause.java deleted file mode 100644 index c5d7f4d64a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFromClause.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTFromClause.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTFromClause extends SimpleNode { - public ASTFromClause(int id) { - super(id); - } - - public ASTFromClause(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningNumerics.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningNumerics.java deleted file mode 100644 index 73cbdd9b05..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningNumerics.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTFunctionsReturningNumerics.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTFunctionsReturningNumerics extends SimpleNode { - public ASTFunctionsReturningNumerics(int id) { - super(id); - } - - public ASTFunctionsReturningNumerics(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningStrings.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningStrings.java deleted file mode 100644 index dcde5da9cf..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTFunctionsReturningStrings.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTFunctionsReturningStrings.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTFunctionsReturningStrings extends SimpleNode { - public ASTFunctionsReturningStrings(int id) { - super(id); - } - - public ASTFunctionsReturningStrings(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentificationVariable.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentificationVariable.java deleted file mode 100644 index ce05f6fcab..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentificationVariable.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTIdentificationVariable.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTIdentificationVariable extends SimpleNode { - public ASTIdentificationVariable(int id) { - super(id); - } - - public ASTIdentificationVariable(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentifier.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentifier.java deleted file mode 100644 index 7920c5892c..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIdentifier.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTIdentifier.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTIdentifier extends SimpleNode { - public ASTIdentifier(int id) { - super(id); - } - - public ASTIdentifier(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInExpression.java deleted file mode 100644 index 029710cdd7..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTInExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTInExpression extends SimpleNode { - public ASTInExpression(int id) { - super(id); - } - - public ASTInExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInputParameter.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInputParameter.java deleted file mode 100644 index 2aeb9a0eb8..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTInputParameter.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTInputParameter.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTInputParameter extends SimpleNode { - public ASTInputParameter(int id) { - super(id); - } - - public ASTInputParameter(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIntegerLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIntegerLiteral.java deleted file mode 100644 index 698fdeff5b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTIntegerLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTIntegerLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTIntegerLiteral extends SimpleNode { - public ASTIntegerLiteral(int id) { - super(id); - } - - public ASTIntegerLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLikeExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLikeExpression.java deleted file mode 100644 index 544ff0eccb..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLikeExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTLikeExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTLikeExpression extends SimpleNode { - public ASTLikeExpression(int id) { - super(id); - } - - public ASTLikeExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitClause.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitClause.java deleted file mode 100644 index 467203ddd4..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitClause.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTLimitClause.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTLimitClause extends SimpleNode { - public ASTLimitClause(int id) { - super(id); - } - - public ASTLimitClause(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitExpression.java deleted file mode 100644 index 06019c560b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLimitExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTLimitExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTLimitExpression extends SimpleNode { - public ASTLimitExpression(int id) { - super(id); - } - - public ASTLimitExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLiteral.java deleted file mode 100644 index 528da577a2..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTLiteral extends SimpleNode { - public ASTLiteral(int id) { - super(id); - } - - public ASTLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTNullComparisonExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTNullComparisonExpression.java deleted file mode 100644 index 652bd2d922..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTNullComparisonExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTNullComparisonExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTNullComparisonExpression extends SimpleNode { - public ASTNullComparisonExpression(int id) { - super(id); - } - - public ASTNullComparisonExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByClause.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByClause.java deleted file mode 100644 index e44af6613d..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByClause.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTOrderByClause.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTOrderByClause extends SimpleNode { - public ASTOrderByClause(int id) { - super(id); - } - - public ASTOrderByClause(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByItem.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByItem.java deleted file mode 100644 index 9011495c76..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTOrderByItem.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTOrderByItem.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTOrderByItem extends SimpleNode { - public ASTOrderByItem(int id) { - super(id); - } - - public ASTOrderByItem(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTPath.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTPath.java deleted file mode 100644 index 10dfde999b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTPath.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTPath.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTPath extends SimpleNode { - public ASTPath(int id) { - super(id); - } - - public ASTPath(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTRangeVariableDeclaration.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTRangeVariableDeclaration.java deleted file mode 100644 index 650b5808f6..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTRangeVariableDeclaration.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTRangeVariableDeclaration.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTRangeVariableDeclaration extends SimpleNode { - public ASTRangeVariableDeclaration(int id) { - super(id); - } - - public ASTRangeVariableDeclaration(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectClause.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectClause.java deleted file mode 100644 index cc723efd78..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectClause.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTSelectClause.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTSelectClause extends SimpleNode { - public ASTSelectClause(int id) { - super(id); - } - - public ASTSelectClause(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectExpression.java deleted file mode 100644 index 3f36563be7..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSelectExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTSelectExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTSelectExpression extends SimpleNode { - public ASTSelectExpression(int id) { - super(id); - } - - public ASTSelectExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedCmrPathExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedCmrPathExpression.java deleted file mode 100644 index a030370668..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedCmrPathExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTSingleValuedCmrPathExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTSingleValuedCmrPathExpression extends SimpleNode { - public ASTSingleValuedCmrPathExpression(int id) { - super(id); - } - - public ASTSingleValuedCmrPathExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedPathExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedPathExpression.java deleted file mode 100644 index d693366649..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTSingleValuedPathExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTSingleValuedPathExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTSingleValuedPathExpression extends SimpleNode { - public ASTSingleValuedPathExpression(int id) { - super(id); - } - - public ASTSingleValuedPathExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringExpression.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringExpression.java deleted file mode 100644 index 78ded92c4a..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringExpression.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTStringExpression.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTStringExpression extends SimpleNode { - public ASTStringExpression(int id) { - super(id); - } - - public ASTStringExpression(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringLiteral.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringLiteral.java deleted file mode 100644 index c37287d95b..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTStringLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTStringLiteral.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTStringLiteral extends SimpleNode { - public ASTStringLiteral(int id) { - super(id); - } - - public ASTStringLiteral(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTWhereClause.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTWhereClause.java deleted file mode 100644 index 04cad04423..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/ASTWhereClause.java +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated By:JJTree: Do not edit this line. ASTWhereClause.java */ - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class ASTWhereClause extends SimpleNode { - public ASTWhereClause(int id) { - super(id); - } - - public ASTWhereClause(EJBQL p, int id) { - super(p, id); - } - - - /** Accept the visitor. **/ - public Object jjtAccept(EJBQLVisitor visitor, Object data) { - return visitor.visit(this, data); - } -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.java b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.java deleted file mode 100644 index 1efe65fceb..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.java +++ /dev/null @@ -1,3746 +0,0 @@ -/* Generated By:JJTree&JavaCC: Do not edit this line. EJBQL.java */ -package org.ow2.jonas.deployment.ejb.ejbql; - -public class EJBQL/*@bgen(jjtree)*/implements EJBQLTreeConstants, EJBQLConstants {/*@bgen(jjtree)*/ - protected JJTEJBQLState jjtree = new JJTEJBQLState(); - - final public SimpleNode EJBQL() throws ParseException { - /*@bgen(jjtree) EJBQL */ - ASTEJBQL jjtn000 = new ASTEJBQL(JJTEJBQL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - SelectClause(); - FromClause(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case WHERE: - WhereClause(); - break; - default: - jj_la1[0] = jj_gen; - ; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ORDERBY: - OrderByClause(); - break; - default: - jj_la1[1] = jj_gen; - ; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LIMIT: - LimitClause(); - break; - default: - jj_la1[2] = jj_gen; - ; - } - jj_consume_token(0); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - {if (true) return jjtn000;} - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - throw new Error("Missing return statement in function"); - } - - final public void FromClause() throws ParseException { - /*@bgen(jjtree) FromClause */ - ASTFromClause jjtn000 = new ASTFromClause(JJTFROMCLAUSE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(FROM); - IdentificationVariableDeclaration(); - label_1: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[3] = jj_gen; - break label_1; - } - jj_consume_token(COMMA); - IdentificationVariableDeclaration(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void IdentificationVariableDeclaration() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IN: - CollectionMemberDeclaration(); - break; - case IDENTIFIER: - RangeVariableDeclaration(); - break; - default: - jj_la1[4] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void CollectionMemberDeclaration() throws ParseException { - /*@bgen(jjtree) CollectionMemberDeclaration */ - ASTCollectionMemberDeclaration jjtn000 = new ASTCollectionMemberDeclaration(JJTCOLLECTIONMEMBERDECLARATION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(IN); - jj_consume_token(LPAREN); - CollectionValuedPathExpression(); - jj_consume_token(RPAREN); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AS: - jj_consume_token(AS); - break; - default: - jj_la1[5] = jj_gen; - ; - } - Identifier(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void RangeVariableDeclaration() throws ParseException { - /*@bgen(jjtree) RangeVariableDeclaration */ - ASTRangeVariableDeclaration jjtn000 = new ASTRangeVariableDeclaration(JJTRANGEVARIABLEDECLARATION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - AbstractSchemaName(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AS: - jj_consume_token(AS); - break; - default: - jj_la1[6] = jj_gen; - ; - } - Identifier(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void SingleValuedPathExpression() throws ParseException { - /*@bgen(jjtree) SingleValuedPathExpression */ - ASTSingleValuedPathExpression jjtn000 = new ASTSingleValuedPathExpression(JJTSINGLEVALUEDPATHEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - Path(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void CmpPathExpression() throws ParseException { - /*@bgen(jjtree) CmpPathExpression */ - ASTCmpPathExpression jjtn000 = new ASTCmpPathExpression(JJTCMPPATHEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - Path(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void SingleValuedCmrPathExpression() throws ParseException { - /*@bgen(jjtree) SingleValuedCmrPathExpression */ - ASTSingleValuedCmrPathExpression jjtn000 = new ASTSingleValuedCmrPathExpression(JJTSINGLEVALUEDCMRPATHEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - Path(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void CollectionValuedPathExpression() throws ParseException { - /*@bgen(jjtree) CollectionValuedPathExpression */ - ASTCollectionValuedPathExpression jjtn000 = new ASTCollectionValuedPathExpression(JJTCOLLECTIONVALUEDPATHEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - Path(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void SelectClause() throws ParseException { - /*@bgen(jjtree) SelectClause */ - ASTSelectClause jjtn000 = new ASTSelectClause(JJTSELECTCLAUSE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(SELECT); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DISTINCT: - jj_consume_token(DISTINCT); - jjtn000.distinct=true; - break; - default: - jj_la1[7] = jj_gen; - ; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AVG: - case COUNT: - case MAX: - case MIN: - case SUM: - case IDENTIFIER: - SelectExpression(); - break; - case OBJECT: - jj_consume_token(OBJECT); - jj_consume_token(LPAREN); - IdentificationVariable(); - jj_consume_token(RPAREN); - break; - default: - jj_la1[8] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void SelectExpression() throws ParseException { - /*@bgen(jjtree) SelectExpression */ - ASTSelectExpression jjtn000 = new ASTSelectExpression(JJTSELECTEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - SingleValuedPathExpression(); - break; - case AVG: - case COUNT: - case MAX: - case MIN: - case SUM: - AggregateSelectExpression(); - break; - default: - jj_la1[9] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void AggregateSelectExpression() throws ParseException { - /*@bgen(jjtree) AggregateSelectExpression */ - ASTAggregateSelectExpression jjtn000 = new ASTAggregateSelectExpression(JJTAGGREGATESELECTEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AVG: - case MAX: - case MIN: - case SUM: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AVG: - t = jj_consume_token(AVG); - break; - case MAX: - t = jj_consume_token(MAX); - break; - case MIN: - t = jj_consume_token(MIN); - break; - case SUM: - t = jj_consume_token(SUM); - break; - default: - jj_la1[10] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DISTINCT: - jj_consume_token(DISTINCT); - jjtn000.distinct=true; - break; - default: - jj_la1[11] = jj_gen; - ; - } - CmpPathExpression(); - jj_consume_token(RPAREN); - break; - case COUNT: - t = jj_consume_token(COUNT); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DISTINCT: - jj_consume_token(DISTINCT); - jjtn000.distinct=true; - break; - default: - jj_la1[12] = jj_gen; - ; - } - if (jj_2_1(2147483647)) { - SingleValuedPathExpression(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - IdentificationVariable(); - break; - default: - jj_la1[13] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - jj_consume_token(RPAREN); - break; - default: - jj_la1[14] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void OrderByClause() throws ParseException { - /*@bgen(jjtree) OrderByClause */ - ASTOrderByClause jjtn000 = new ASTOrderByClause(JJTORDERBYCLAUSE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(ORDERBY); - OrderByItem(); - label_2: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[15] = jj_gen; - break label_2; - } - jj_consume_token(COMMA); - OrderByItem(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void OrderByItem() throws ParseException { - /*@bgen(jjtree) OrderByItem */ - ASTOrderByItem jjtn000 = new ASTOrderByItem(JJTORDERBYITEM); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - CmpPathExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ASC: - case DESC: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ASC: - jj_consume_token(ASC); - jjtn000.asc=true; - break; - case DESC: - jj_consume_token(DESC); - jjtn000.asc=false; - break; - default: - jj_la1[16] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - break; - default: - jj_la1[17] = jj_gen; - ; - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void LimitClause() throws ParseException { - /*@bgen(jjtree) LimitClause */ - ASTLimitClause jjtn000 = new ASTLimitClause(JJTLIMITCLAUSE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(LIMIT); - LimitExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - jj_consume_token(COMMA); - LimitExpression(); - break; - default: - jj_la1[18] = jj_gen; - ; - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void LimitExpression() throws ParseException { - /*@bgen(jjtree) LimitExpression */ - ASTLimitExpression jjtn000 = new ASTLimitExpression(JJTLIMITEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INTEGER_LITERAL: - IntegerLiteral(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[19] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void WhereClause() throws ParseException { - /*@bgen(jjtree) WhereClause */ - ASTWhereClause jjtn000 = new ASTWhereClause(JJTWHERECLAUSE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - jj_consume_token(WHERE); - ConditionalExpression(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ConditionalExpression() throws ParseException { - /*@bgen(jjtree) ConditionalExpression */ - ASTConditionalExpression jjtn000 = new ASTConditionalExpression(JJTCONDITIONALEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - ConditionalTerm(); - label_3: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case OR: - ; - break; - default: - jj_la1[20] = jj_gen; - break label_3; - } - jj_consume_token(OR); - ConditionalTerm(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ConditionalTerm() throws ParseException { - /*@bgen(jjtree) ConditionalTerm */ - ASTConditionalTerm jjtn000 = new ASTConditionalTerm(JJTCONDITIONALTERM); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - ConditionalFactor(); - label_4: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AND: - ; - break; - default: - jj_la1[21] = jj_gen; - break label_4; - } - jj_consume_token(AND); - ConditionalFactor(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ConditionalFactor() throws ParseException { - /*@bgen(jjtree) ConditionalFactor */ - ASTConditionalFactor jjtn000 = new ASTConditionalFactor(JJTCONDITIONALFACTOR); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[22] = jj_gen; - ; - } - ConditionalPrimary(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ConditionalPrimary() throws ParseException { - if (jj_2_2(2147483647)) { - SimpleCondExpression(); - } else if (jj_2_3(2147483647)) { - jj_consume_token(LPAREN); - ConditionalExpression(); - jj_consume_token(RPAREN); - } else { - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void SimpleCondExpression() throws ParseException { - if (jj_2_4(2147483647)) { - ComparisonExpression(); - } else if (jj_2_5(2147483647)) { - BetweenExpression(); - } else if (jj_2_6(2147483647)) { - LikeExpression(); - } else if (jj_2_7(2147483647)) { - InExpression(); - } else if (jj_2_8(2147483647)) { - NullComparisonExpression(); - } else if (jj_2_9(2147483647)) { - EmptyCollectionComparisonExpression(); - } else if (jj_2_10(2147483647)) { - CollectionMemberExpression(); - } else { - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void BetweenExpression() throws ParseException { - /*@bgen(jjtree) BetweenExpression */ - ASTBetweenExpression jjtn000 = new ASTBetweenExpression(JJTBETWEENEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - ArithmeticExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[23] = jj_gen; - ; - } - jj_consume_token(BETWEEN); - ArithmeticExpression(); - jj_consume_token(AND); - ArithmeticExpression(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void InExpression() throws ParseException { - /*@bgen(jjtree) InExpression */ - ASTInExpression jjtn000 = new ASTInExpression(JJTINEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - CmpPathExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[24] = jj_gen; - ; - } - jj_consume_token(IN); - jj_consume_token(LPAREN); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case string_literal: - case FALSE: - case TRUE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - Literal(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[25] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.eltnum=1; - label_5: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[26] = jj_gen; - break label_5; - } - jj_consume_token(COMMA); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case string_literal: - case FALSE: - case TRUE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - Literal(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[27] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.eltnum++; - } - jj_consume_token(RPAREN); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void LikeExpression() throws ParseException { - /*@bgen(jjtree) LikeExpression */ - ASTLikeExpression jjtn000 = new ASTLikeExpression(JJTLIKEEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - CmpPathExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[28] = jj_gen; - ; - } - jj_consume_token(LIKE); - PatternValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ESCAPE: - jj_consume_token(ESCAPE); - jjtn000.third=true; - EscapeCharacter(); - break; - default: - jj_la1[29] = jj_gen; - ; - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void NullComparisonExpression() throws ParseException { - /*@bgen(jjtree) NullComparisonExpression */ - ASTNullComparisonExpression jjtn000 = new ASTNullComparisonExpression(JJTNULLCOMPARISONEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - SingleValuedPathExpression(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[30] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jj_consume_token(IS); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[31] = jj_gen; - ; - } - jj_consume_token(NULL); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void EmptyCollectionComparisonExpression() throws ParseException { - /*@bgen(jjtree) EmptyCollectionComparisonExpression */ - ASTEmptyCollectionComparisonExpression jjtn000 = new ASTEmptyCollectionComparisonExpression(JJTEMPTYCOLLECTIONCOMPARISONEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - CollectionValuedPathExpression(); - jj_consume_token(IS); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[32] = jj_gen; - ; - } - jj_consume_token(EMPTY); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void CollectionMemberExpression() throws ParseException { - /*@bgen(jjtree) CollectionMemberExpression */ - ASTCollectionMemberExpression jjtn000 = new ASTCollectionMemberExpression(JJTCOLLECTIONMEMBEREXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - if (jj_2_11(2)) { - SingleValuedCmrPathExpression(); - } else if (jj_2_12(2)) { - IdentificationVariable(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case input_parameter: - InputParameter(); - break; - default: - jj_la1[33] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NOT: - jj_consume_token(NOT); - jjtn000.not=true; - break; - default: - jj_la1[34] = jj_gen; - ; - } - jj_consume_token(MEMBER); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case OF: - jj_consume_token(OF); - break; - default: - jj_la1[35] = jj_gen; - ; - } - CollectionValuedPathExpression(); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ComparisonExpression() throws ParseException { - /*@bgen(jjtree) ComparisonExpression */ - ASTComparisonExpression jjtn000 = new ASTComparisonExpression(JJTCOMPARISONEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - if (jj_2_13(2147483647)) { - StringValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - t = jj_consume_token(EQ); - break; - case GT: - t = jj_consume_token(GT); - break; - case GE: - t = jj_consume_token(GE); - break; - case LT: - t = jj_consume_token(LT); - break; - case LE: - t = jj_consume_token(LE); - break; - case NE: - t = jj_consume_token(NE); - break; - default: - jj_la1[36] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - StringExpression(); - } else if (jj_2_14(2147483647)) { - BooleanValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - t = jj_consume_token(EQ); - break; - case NE: - t = jj_consume_token(NE); - break; - default: - jj_la1[37] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - BooleanExpression(); - } else if (jj_2_15(2147483647)) { - DatetimeValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - t = jj_consume_token(EQ); - break; - case GT: - t = jj_consume_token(GT); - break; - case GE: - t = jj_consume_token(GE); - break; - case LT: - t = jj_consume_token(LT); - break; - case LE: - t = jj_consume_token(LE); - break; - case NE: - t = jj_consume_token(NE); - break; - default: - jj_la1[38] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - DatetimeExpression(); - } else if (jj_2_16(2147483647)) { - EntityBeanValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - t = jj_consume_token(EQ); - break; - case NE: - t = jj_consume_token(NE); - break; - default: - jj_la1[39] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - EntityBeanExpression(); - } else if (jj_2_17(2147483647)) { - ArithmeticValue(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - t = jj_consume_token(EQ); - break; - case GT: - t = jj_consume_token(GT); - break; - case GE: - t = jj_consume_token(GE); - break; - case LT: - t = jj_consume_token(LT); - break; - case LE: - t = jj_consume_token(LE); - break; - case NE: - t = jj_consume_token(NE); - break; - default: - jj_la1[40] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - ArithmeticExpression(); - } else { - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ArithmeticValue() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - CmpPathExpression(); - break; - case ABS: - case LENGTH: - case LOCATE: - case MOD: - case SQRT: - FunctionsReturningNumerics(); - break; - default: - jj_la1[41] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void ArithmeticExpression() throws ParseException { - /*@bgen(jjtree) ArithmeticExpression */ - ASTArithmeticExpression jjtn000 = new ASTArithmeticExpression(JJTARITHMETICEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - ArithmeticTerm(); - label_6: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case MINUS: - case PLUS: - ; - break; - default: - jj_la1[42] = jj_gen; - break label_6; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS: - t = jj_consume_token(PLUS); - break; - case MINUS: - t = jj_consume_token(MINUS); - break; - default: - jj_la1[43] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - ArithmeticTerm(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ArithmeticTerm() throws ParseException { - /*@bgen(jjtree) ArithmeticTerm */ - ASTArithmeticTerm jjtn000 = new ASTArithmeticTerm(JJTARITHMETICTERM); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - ArithmeticFactor(); - label_7: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case MULT: - case DIV: - ; - break; - default: - jj_la1[44] = jj_gen; - break label_7; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case MULT: - t = jj_consume_token(MULT); - break; - case DIV: - t = jj_consume_token(DIV); - break; - default: - jj_la1[45] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jjtn000.ops.add(new Integer(t.kind)); - ArithmeticFactor(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ArithmeticFactor() throws ParseException { - /*@bgen(jjtree) ArithmeticFactor */ - ASTArithmeticFactor jjtn000 = new ASTArithmeticFactor(JJTARITHMETICFACTOR); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t=null; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case MINUS: - case PLUS: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS: - t = jj_consume_token(PLUS); - break; - case MINUS: - t = jj_consume_token(MINUS); - break; - default: - jj_la1[46] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - break; - default: - jj_la1[47] = jj_gen; - ; - } - ArithmeticPrimary(); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.ops.add(new Integer((t!=null)?t.kind:EJBQLConstants.PLUS)); - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ArithmeticPrimary() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - CmpPathExpression(); - break; - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - ArithmeticLiteral(); - break; - case LPAREN: - jj_consume_token(LPAREN); - ArithmeticExpression(); - jj_consume_token(RPAREN); - break; - case input_parameter: - InputParameter(); - break; - case ABS: - case LENGTH: - case LOCATE: - case MOD: - case SQRT: - FunctionsReturningNumerics(); - break; - default: - jj_la1[48] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void StringValue() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - CmpPathExpression(); - break; - case CONCAT: - case SUBSTRING: - FunctionsReturningStrings(); - break; - default: - jj_la1[49] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void StringExpression() throws ParseException { - /*@bgen(jjtree) StringExpression */ - ASTStringExpression jjtn000 = new ASTStringExpression(JJTSTRINGEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LPAREN: - case CONCAT: - case SUBSTRING: - case string_literal: - case IDENTIFIER: - StringPrimary(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[50] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void StringPrimary() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - CmpPathExpression(); - break; - case string_literal: - StringLiteral(); - break; - case LPAREN: - jj_consume_token(LPAREN); - StringExpression(); - jj_consume_token(RPAREN); - break; - case CONCAT: - case SUBSTRING: - FunctionsReturningStrings(); - break; - default: - jj_la1[51] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void DatetimeValue() throws ParseException { - CmpPathExpression(); - } - - final public void DatetimeExpression() throws ParseException { - /*@bgen(jjtree) DatetimeExpression */ - ASTDatetimeExpression jjtn000 = new ASTDatetimeExpression(JJTDATETIMEEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - DatetimeValue(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[52] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void BooleanValue() throws ParseException { - CmpPathExpression(); - } - - final public void BooleanExpression() throws ParseException { - /*@bgen(jjtree) BooleanExpression */ - ASTBooleanExpression jjtn000 = new ASTBooleanExpression(JJTBOOLEANEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t=null; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - CmpPathExpression(); - break; - case FALSE: - case TRUE: - BooleanLiteral(); - break; - case input_parameter: - InputParameter(); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - if (t!=null) jjtn000.ops.add(new Integer(t.kind)); - break; - default: - jj_la1[53] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void EntityBeanValue() throws ParseException { - if (jj_2_18(2)) { - SingleValuedCmrPathExpression(); - } else if (jj_2_19(2)) { - IdentificationVariable(); - } else { - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void EntityBeanExpression() throws ParseException { - /*@bgen(jjtree) EntityBeanExpression */ - ASTEntityBeanExpression jjtn000 = new ASTEntityBeanExpression(JJTENTITYBEANEXPRESSION); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - EntityBeanValue(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[54] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void FunctionsReturningStrings() throws ParseException { - /*@bgen(jjtree) FunctionsReturningStrings */ - ASTFunctionsReturningStrings jjtn000 = new ASTFunctionsReturningStrings(JJTFUNCTIONSRETURNINGSTRINGS); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case CONCAT: - t = jj_consume_token(CONCAT); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - StringExpression(); - jj_consume_token(COMMA); - StringExpression(); - jj_consume_token(RPAREN); - break; - case SUBSTRING: - t = jj_consume_token(SUBSTRING); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - StringExpression(); - jj_consume_token(COMMA); - ArithmeticExpression(); - jj_consume_token(COMMA); - ArithmeticExpression(); - jj_consume_token(RPAREN); - break; - default: - jj_la1[55] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void FunctionsReturningNumerics() throws ParseException { - /*@bgen(jjtree) FunctionsReturningNumerics */ - ASTFunctionsReturningNumerics jjtn000 = new ASTFunctionsReturningNumerics(JJTFUNCTIONSRETURNINGNUMERICS); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LENGTH: - t = jj_consume_token(LENGTH); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - StringExpression(); - jj_consume_token(RPAREN); - break; - case LOCATE: - t = jj_consume_token(LOCATE); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - StringExpression(); - jj_consume_token(COMMA); - StringExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - jj_consume_token(COMMA); - jjtn000.third=true; - ArithmeticExpression(); - break; - default: - jj_la1[56] = jj_gen; - ; - } - jj_consume_token(RPAREN); - break; - case ABS: - t = jj_consume_token(ABS); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - ArithmeticExpression(); - jj_consume_token(RPAREN); - break; - case SQRT: - t = jj_consume_token(SQRT); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - ArithmeticExpression(); - jj_consume_token(RPAREN); - break; - case MOD: - t = jj_consume_token(MOD); - jjtn000.ops.add(new Integer(t.kind)); - jj_consume_token(LPAREN); - ArithmeticExpression(); - jj_consume_token(COMMA); - ArithmeticExpression(); - jj_consume_token(RPAREN); - break; - default: - jj_la1[57] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void PatternValue() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case string_literal: - StringLiteral(); - break; - case input_parameter: - InputParameter(); - break; - default: - jj_la1[58] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - final public void EscapeCharacter() throws ParseException { - StringLiteral(); - } - - final public void AbstractSchemaName() throws ParseException { - /*@bgen(jjtree) AbstractSchemaName */ - ASTAbstractSchemaName jjtn000 = new ASTAbstractSchemaName(JJTABSTRACTSCHEMANAME); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(IDENTIFIER); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= t.image; - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void IdentificationVariable() throws ParseException { - /*@bgen(jjtree) IdentificationVariable */ - ASTIdentificationVariable jjtn000 = new ASTIdentificationVariable(JJTIDENTIFICATIONVARIABLE); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(IDENTIFIER); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= t.image; - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void Identifier() throws ParseException { - /*@bgen(jjtree) Identifier */ - ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(IDENTIFIER); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= t.image; - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void Path() throws ParseException { - /*@bgen(jjtree) Path */ - ASTPath jjtn000 = new ASTPath(JJTPATH); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(IDENTIFIER); - jjtn000.value= t.image; - jj_consume_token(DOT); - t = jj_consume_token(IDENTIFIER); - jjtn000.value = jjtn000.value + "."+t.image; - label_8: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DOT: - ; - break; - default: - jj_la1[59] = jj_gen; - break label_8; - } - jj_consume_token(DOT); - t = jj_consume_token(IDENTIFIER); - jjtn000.value = jjtn000.value + "."+t.image; - } - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void Literal() throws ParseException { - /*@bgen(jjtree) Literal */ - ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case string_literal: - StringLiteral(); - break; - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - ArithmeticLiteral(); - break; - case FALSE: - case TRUE: - BooleanLiteral(); - break; - default: - jj_la1[60] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void StringLiteral() throws ParseException { - /*@bgen(jjtree) StringLiteral */ - ASTStringLiteral jjtn000 = new ASTStringLiteral(JJTSTRINGLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(string_literal); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= t.image.substring(1,t.image.length()-1); - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void ArithmeticLiteral() throws ParseException { - /*@bgen(jjtree) ArithmeticLiteral */ - ASTArithmeticLiteral jjtn000 = new ASTArithmeticLiteral(JJTARITHMETICLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INTEGER_LITERAL: - IntegerLiteral(); - break; - case FLOATING_POINT_LITERAL: - FloatingPointLiteral(); - break; - default: - jj_la1[61] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (Throwable jjte000) { - if (jjtc000) { - jjtree.clearNodeScope(jjtn000); - jjtc000 = false; - } else { - jjtree.popNode(); - } - if (jjte000 instanceof RuntimeException) { - {if (true) throw (RuntimeException)jjte000;} - } - if (jjte000 instanceof ParseException) { - {if (true) throw (ParseException)jjte000;} - } - {if (true) throw (Error)jjte000;} - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void IntegerLiteral() throws ParseException { - /*@bgen(jjtree) IntegerLiteral */ - ASTIntegerLiteral jjtn000 = new ASTIntegerLiteral(JJTINTEGERLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(INTEGER_LITERAL); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= new Long(t.image); - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void FloatingPointLiteral() throws ParseException { - /*@bgen(jjtree) FloatingPointLiteral */ - ASTFloatingPointLiteral jjtn000 = new ASTFloatingPointLiteral(JJTFLOATINGPOINTLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(FLOATING_POINT_LITERAL); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= new Double(t.image); - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void BooleanLiteral() throws ParseException { - /*@bgen(jjtree) BooleanLiteral */ - ASTBooleanLiteral jjtn000 = new ASTBooleanLiteral(JJTBOOLEANLITERAL); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case TRUE: - t = jj_consume_token(TRUE); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= Boolean.TRUE; - break; - case FALSE: - t = jj_consume_token(FALSE); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= Boolean.FALSE; - break; - default: - jj_la1[62] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final public void InputParameter() throws ParseException { - /*@bgen(jjtree) InputParameter */ - ASTInputParameter jjtn000 = new ASTInputParameter(JJTINPUTPARAMETER); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000);Token t; - try { - t = jj_consume_token(input_parameter); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - jjtn000.value= new Integer(t.image.substring(1)); - } finally { - if (jjtc000) { - jjtree.closeNodeScope(jjtn000, true); - } - } - } - - final private boolean jj_2_1(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_1(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(0, xla); } - } - - final private boolean jj_2_2(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_2(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(1, xla); } - } - - final private boolean jj_2_3(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_3(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(2, xla); } - } - - final private boolean jj_2_4(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_4(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(3, xla); } - } - - final private boolean jj_2_5(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_5(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(4, xla); } - } - - final private boolean jj_2_6(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_6(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(5, xla); } - } - - final private boolean jj_2_7(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_7(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(6, xla); } - } - - final private boolean jj_2_8(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_8(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(7, xla); } - } - - final private boolean jj_2_9(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_9(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(8, xla); } - } - - final private boolean jj_2_10(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_10(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(9, xla); } - } - - final private boolean jj_2_11(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_11(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(10, xla); } - } - - final private boolean jj_2_12(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_12(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(11, xla); } - } - - final private boolean jj_2_13(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_13(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(12, xla); } - } - - final private boolean jj_2_14(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_14(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(13, xla); } - } - - final private boolean jj_2_15(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_15(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(14, xla); } - } - - final private boolean jj_2_16(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_16(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(15, xla); } - } - - final private boolean jj_2_17(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_17(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(16, xla); } - } - - final private boolean jj_2_18(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_18(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(17, xla); } - } - - final private boolean jj_2_19(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_19(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(18, xla); } - } - - final private boolean jj_3R_120() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_102() { - if (jj_3R_95()) return true; - return false; - } - - final private boolean jj_3R_23() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3_1() { - if (jj_3R_9()) return true; - return false; - } - - final private boolean jj_3R_69() { - if (jj_3R_25()) return true; - return false; - } - - final private boolean jj_3R_26() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_69()) { - jj_scanpos = xsp; - if (jj_3R_70()) return true; - } - return false; - } - - final private boolean jj_3R_65() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_63() { - if (jj_3R_87()) return true; - return false; - } - - final private boolean jj_3R_25() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_122() { - if (jj_3R_90()) return true; - return false; - } - - final private boolean jj_3R_119() { - if (jj_3R_116()) return true; - return false; - } - - final private boolean jj_3R_101() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_88() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_101()) { - jj_scanpos = xsp; - if (jj_3R_102()) { - jj_scanpos = xsp; - if (jj_3R_103()) { - jj_scanpos = xsp; - if (jj_3R_104()) return true; - } - } - } - return false; - } - - final private boolean jj_3R_64() { - if (jj_3R_88()) return true; - return false; - } - - final private boolean jj_3R_22() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_64()) { - jj_scanpos = xsp; - if (jj_3R_65()) return true; - } - return false; - } - - final private boolean jj_3R_62() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_21() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_62()) { - jj_scanpos = xsp; - if (jj_3R_63()) return true; - } - return false; - } - - final private boolean jj_3R_92() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(6)) { - jj_scanpos = xsp; - if (jj_scan_token(11)) return true; - } - if (jj_3R_91()) return true; - return false; - } - - final private boolean jj_3R_121() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_118() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_113() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_118()) { - jj_scanpos = xsp; - if (jj_3R_119()) { - jj_scanpos = xsp; - if (jj_3R_120()) { - jj_scanpos = xsp; - if (jj_3R_121()) { - jj_scanpos = xsp; - if (jj_3R_122()) return true; - } - } - } - } - return false; - } - - final private boolean jj_3R_76() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(8)) { - jj_scanpos = xsp; - if (jj_scan_token(5)) return true; - } - if (jj_3R_75()) return true; - return false; - } - - final private boolean jj_3R_74() { - if (jj_3R_90()) return true; - return false; - } - - final private boolean jj_3R_117() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_30()) return true; - return false; - } - - final private boolean jj_3R_112() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(8)) { - jj_scanpos = xsp; - if (jj_scan_token(5)) return true; - } - return false; - } - - final private boolean jj_3R_91() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_112()) jj_scanpos = xsp; - if (jj_3R_113()) return true; - return false; - } - - final private boolean jj_3R_58() { - if (jj_3R_31()) return true; - return false; - } - - final private boolean jj_3R_84() { - if (jj_scan_token(input_parameter)) return true; - return false; - } - - final private boolean jj_3R_98() { - if (jj_3R_89()) return true; - return false; - } - - final private boolean jj_3R_75() { - if (jj_3R_91()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_92()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_19() { - if (jj_3R_31()) return true; - return false; - } - - final private boolean jj_3R_106() { - if (jj_scan_token(FALSE)) return true; - return false; - } - - final private boolean jj_3R_124() { - if (jj_3R_126()) return true; - return false; - } - - final private boolean jj_3R_105() { - if (jj_scan_token(TRUE)) return true; - return false; - } - - final private boolean jj_3R_89() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_105()) { - jj_scanpos = xsp; - if (jj_3R_106()) return true; - } - return false; - } - - final private boolean jj_3R_30() { - if (jj_3R_75()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_76()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_47() { - if (jj_3R_31()) return true; - return false; - } - - final private boolean jj_3_17() { - if (jj_3R_29()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_30()) return true; - return false; - } - - final private boolean jj_3_16() { - if (jj_3R_27()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - if (jj_3R_28()) return true; - return false; - } - - final private boolean jj_3R_126() { - if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; - return false; - } - - final private boolean jj_3R_73() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_29() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_73()) { - jj_scanpos = xsp; - if (jj_3R_74()) return true; - } - return false; - } - - final private boolean jj_3R_9() { - if (jj_3R_31()) return true; - return false; - } - - final private boolean jj_3_15() { - if (jj_3R_25()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_26()) return true; - return false; - } - - final private boolean jj_3_14() { - if (jj_3R_23()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - if (jj_3R_24()) return true; - return false; - } - - final private boolean jj_3R_125() { - if (jj_scan_token(INTEGER_LITERAL)) return true; - return false; - } - - final private boolean jj_3_13() { - if (jj_3R_21()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_22()) return true; - return false; - } - - final private boolean jj_3R_45() { - if (jj_3R_29()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_30()) return true; - return false; - } - - final private boolean jj_3R_56() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_97() { - if (jj_3R_116()) return true; - return false; - } - - final private boolean jj_3R_44() { - if (jj_3R_27()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - if (jj_3R_28()) return true; - return false; - } - - final private boolean jj_3R_43() { - if (jj_3R_25()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_26()) return true; - return false; - } - - final private boolean jj_3R_123() { - if (jj_3R_125()) return true; - return false; - } - - final private boolean jj_3R_116() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_123()) { - jj_scanpos = xsp; - if (jj_3R_124()) return true; - } - return false; - } - - final private boolean jj_3R_42() { - if (jj_3R_23()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - if (jj_3R_24()) return true; - return false; - } - - final private boolean jj_3R_12() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_41()) { - jj_scanpos = xsp; - if (jj_3R_42()) { - jj_scanpos = xsp; - if (jj_3R_43()) { - jj_scanpos = xsp; - if (jj_3R_44()) { - jj_scanpos = xsp; - if (jj_3R_45()) return true; - } - } - } - } - return false; - } - - final private boolean jj_3R_41() { - if (jj_3R_21()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(9)) { - jj_scanpos = xsp; - if (jj_scan_token(13)) { - jj_scanpos = xsp; - if (jj_scan_token(7)) { - jj_scanpos = xsp; - if (jj_scan_token(18)) { - jj_scanpos = xsp; - if (jj_scan_token(10)) { - jj_scanpos = xsp; - if (jj_scan_token(16)) return true; - } - } - } - } - } - if (jj_3R_22()) return true; - return false; - } - - final private boolean jj_3R_61() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_50() { - if (jj_scan_token(ESCAPE)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3R_95() { - if (jj_scan_token(string_literal)) return true; - return false; - } - - final private boolean jj_3R_86() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_60() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3_12() { - if (jj_3R_20()) return true; - return false; - } - - final private boolean jj_3R_53() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3_11() { - if (jj_3R_19()) return true; - return false; - } - - final private boolean jj_3R_48() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_18() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_11()) { - jj_scanpos = xsp; - if (jj_3_12()) { - jj_scanpos = xsp; - if (jj_3R_60()) return true; - } - } - xsp = jj_scanpos; - if (jj_3R_61()) jj_scanpos = xsp; - if (jj_scan_token(MEMBER)) return true; - xsp = jj_scanpos; - if (jj_scan_token(45)) jj_scanpos = xsp; - if (jj_3R_58()) return true; - return false; - } - - final private boolean jj_3R_96() { - if (jj_3R_95()) return true; - return false; - } - - final private boolean jj_3R_83() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_96()) { - jj_scanpos = xsp; - if (jj_3R_97()) { - jj_scanpos = xsp; - if (jj_3R_98()) return true; - } - } - return false; - } - - final private boolean jj_3R_59() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_77() { - if (jj_scan_token(DOT)) return true; - if (jj_scan_token(IDENTIFIER)) return true; - return false; - } - - final private boolean jj_3R_17() { - if (jj_3R_58()) return true; - if (jj_scan_token(IS)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_59()) jj_scanpos = xsp; - if (jj_scan_token(EMPTY)) return true; - return false; - } - - final private boolean jj_3R_51() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_85() { - if (jj_3R_83()) return true; - return false; - } - - final private boolean jj_3R_57() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_31() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(DOT)) return true; - if (jj_scan_token(IDENTIFIER)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_77()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_52() { - if (jj_3R_83()) return true; - return false; - } - - final private boolean jj_3R_46() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_55() { - if (jj_3R_9()) return true; - return false; - } - - final private boolean jj_3R_16() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_55()) { - jj_scanpos = xsp; - if (jj_3R_56()) return true; - } - if (jj_scan_token(IS)) return true; - xsp = jj_scanpos; - if (jj_3R_57()) jj_scanpos = xsp; - if (jj_scan_token(NULL)) return true; - return false; - } - - final private boolean jj_3R_54() { - if (jj_scan_token(COMMA)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_85()) { - jj_scanpos = xsp; - if (jj_3R_86()) return true; - } - return false; - } - - final private boolean jj_3R_14() { - if (jj_3R_47()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_48()) jj_scanpos = xsp; - if (jj_scan_token(LIKE)) return true; - if (jj_3R_49()) return true; - xsp = jj_scanpos; - if (jj_3R_50()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3R_20() { - if (jj_scan_token(IDENTIFIER)) return true; - return false; - } - - final private boolean jj_3R_15() { - if (jj_3R_47()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_51()) jj_scanpos = xsp; - if (jj_scan_token(IN)) return true; - if (jj_scan_token(LPAREN)) return true; - xsp = jj_scanpos; - if (jj_3R_52()) { - jj_scanpos = xsp; - if (jj_3R_53()) return true; - } - while (true) { - xsp = jj_scanpos; - if (jj_3R_54()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3_10() { - if (jj_3R_18()) return true; - return false; - } - - final private boolean jj_3R_81() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3_9() { - if (jj_3R_17()) return true; - return false; - } - - final private boolean jj_3_8() { - if (jj_3R_16()) return true; - return false; - } - - final private boolean jj_3_7() { - if (jj_3R_15()) return true; - return false; - } - - final private boolean jj_3_6() { - if (jj_3R_14()) return true; - return false; - } - - final private boolean jj_3_19() { - if (jj_3R_20()) return true; - return false; - } - - final private boolean jj_3R_13() { - if (jj_3R_30()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_46()) jj_scanpos = xsp; - if (jj_scan_token(BETWEEN)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(AND)) return true; - if (jj_3R_30()) return true; - return false; - } - - final private boolean jj_3_5() { - if (jj_3R_13()) return true; - return false; - } - - final private boolean jj_3R_104() { - if (jj_3R_87()) return true; - return false; - } - - final private boolean jj_3_4() { - if (jj_3R_12()) return true; - return false; - } - - final private boolean jj_3R_38() { - if (jj_3R_18()) return true; - return false; - } - - final private boolean jj_3R_37() { - if (jj_3R_17()) return true; - return false; - } - - final private boolean jj_3R_36() { - if (jj_3R_16()) return true; - return false; - } - - final private boolean jj_3R_82() { - if (jj_3R_95()) return true; - return false; - } - - final private boolean jj_3_3() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_11()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_35() { - if (jj_3R_15()) return true; - return false; - } - - final private boolean jj_3R_34() { - if (jj_3R_14()) return true; - return false; - } - - final private boolean jj_3R_33() { - if (jj_3R_13()) return true; - return false; - } - - final private boolean jj_3_2() { - if (jj_3R_10()) return true; - return false; - } - - final private boolean jj_3R_79() { - if (jj_scan_token(AND)) return true; - if (jj_3R_78()) return true; - return false; - } - - final private boolean jj_3R_10() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_32()) { - jj_scanpos = xsp; - if (jj_3R_33()) { - jj_scanpos = xsp; - if (jj_3R_34()) { - jj_scanpos = xsp; - if (jj_3R_35()) { - jj_scanpos = xsp; - if (jj_3R_36()) { - jj_scanpos = xsp; - if (jj_3R_37()) { - jj_scanpos = xsp; - if (jj_3R_38()) return true; - } - } - } - } - } - } - return false; - } - - final private boolean jj_3R_32() { - if (jj_3R_12()) return true; - return false; - } - - final private boolean jj_3R_80() { - if (jj_3R_95()) return true; - return false; - } - - final private boolean jj_3R_68() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_49() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_80()) { - jj_scanpos = xsp; - if (jj_3R_81()) return true; - } - return false; - } - - final private boolean jj_3R_115() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_11()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_111() { - if (jj_scan_token(MOD)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_110() { - if (jj_scan_token(SQRT)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_72() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_109() { - if (jj_scan_token(ABS)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_108() { - if (jj_scan_token(LOCATE)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_22()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_117()) jj_scanpos = xsp; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_40() { - if (jj_scan_token(OR)) return true; - if (jj_3R_39()) return true; - return false; - } - - final private boolean jj_3R_114() { - if (jj_3R_10()) return true; - return false; - } - - final private boolean jj_3R_94() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_114()) { - jj_scanpos = xsp; - if (jj_3R_115()) return true; - } - return false; - } - - final private boolean jj_3R_107() { - if (jj_scan_token(LENGTH)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_90() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_107()) { - jj_scanpos = xsp; - if (jj_3R_108()) { - jj_scanpos = xsp; - if (jj_3R_109()) { - jj_scanpos = xsp; - if (jj_3R_110()) { - jj_scanpos = xsp; - if (jj_3R_111()) return true; - } - } - } - } - return false; - } - - final private boolean jj_3R_93() { - if (jj_scan_token(NOT)) return true; - return false; - } - - final private boolean jj_3R_78() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_93()) jj_scanpos = xsp; - if (jj_3R_94()) return true; - return false; - } - - final private boolean jj_3R_100() { - if (jj_scan_token(SUBSTRING)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_30()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_99() { - if (jj_scan_token(CONCAT)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(COMMA)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_87() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_99()) { - jj_scanpos = xsp; - if (jj_3R_100()) return true; - } - return false; - } - - final private boolean jj_3R_67() { - if (jj_3R_89()) return true; - return false; - } - - final private boolean jj_3R_39() { - if (jj_3R_78()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_79()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_103() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_22()) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3R_71() { - if (jj_3R_27()) return true; - return false; - } - - final private boolean jj_3R_28() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_71()) { - jj_scanpos = xsp; - if (jj_3R_72()) return true; - } - return false; - } - - final private boolean jj_3R_11() { - if (jj_3R_39()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_40()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3_18() { - if (jj_3R_19()) return true; - return false; - } - - final private boolean jj_3R_27() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_18()) { - jj_scanpos = xsp; - if (jj_3_19()) return true; - } - return false; - } - - final private boolean jj_3R_70() { - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_66() { - if (jj_3R_47()) return true; - return false; - } - - final private boolean jj_3R_24() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_66()) { - jj_scanpos = xsp; - if (jj_3R_67()) { - jj_scanpos = xsp; - if (jj_3R_68()) return true; - } - } - return false; - } - - public EJBQLTokenManager token_source; - SimpleCharStream jj_input_stream; - public Token token, jj_nt; - private int jj_ntk; - private Token jj_scanpos, jj_lastpos; - private int jj_la; - public boolean lookingAhead = false; - private boolean jj_semLA; - private int jj_gen; - final private int[] jj_la1 = new int[63]; - static private int[] jj_la1_0; - static private int[] jj_la1_1; - static private int[] jj_la1_2; - static { - jj_la1_0(); - jj_la1_1(); - jj_la1_2(); - } - private static void jj_la1_0() { - jj_la1_0 = new int[] {0x0,0x0,0x0,0x4000,0x0,0x200000,0x200000,0x10000000,0x4800000,0x4800000,0x800000,0x10000000,0x10000000,0x0,0x4800000,0x4000,0x8400000,0x8400000,0x4000,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x4000,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x52680,0x10200,0x52680,0x10200,0x52680,0x80000,0x120,0x120,0x840,0x840,0x120,0x120,0xa0000,0x2000000,0x2020000,0x2020000,0x0,0x0,0x0,0x2000000,0x4000,0x80000,0x0,0x1000,0x0,0x0,0x0,}; - } - private static void jj_la1_1() { - jj_la1_1 = new int[] {0x100000,0x8000,0x10,0x0,0x80000001,0x0,0x0,0x0,0x80081140,0x80080140,0x80140,0x0,0x0,0x80000000,0x80140,0x0,0x0,0x0,0x0,0x2400000,0x4000,0x0,0x400,0x400,0x400,0x23e00000,0x0,0x23e00000,0x400,0x0,0x80400000,0x400,0x400,0x400000,0x400,0x2000,0x0,0x0,0x0,0x0,0x0,0x80020224,0x0,0x0,0x0,0x0,0x0,0x0,0xa2420224,0x80040000,0x80640000,0x80240000,0x80400000,0x81c00000,0x80400000,0x40000,0x0,0x20224,0x600000,0x0,0x23a00000,0x22000000,0x1800000,}; - } - private static void jj_la1_2() { - jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; - } - final private JJCalls[] jj_2_rtns = new JJCalls[19]; - private boolean jj_rescan = false; - private int jj_gc = 0; - - public EJBQL(java.io.InputStream stream) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - token_source = new EJBQLTokenManager(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - public void ReInit(java.io.InputStream stream) { - jj_input_stream.ReInit(stream, 1, 1); - token_source.ReInit(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jjtree.reset(); - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - public EJBQL(java.io.Reader stream) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - token_source = new EJBQLTokenManager(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - public void ReInit(java.io.Reader stream) { - jj_input_stream.ReInit(stream, 1, 1); - token_source.ReInit(jj_input_stream); - token = new Token(); - jj_ntk = -1; - jjtree.reset(); - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - public EJBQL(EJBQLTokenManager tm) { - token_source = tm; - token = new Token(); - jj_ntk = -1; - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - public void ReInit(EJBQLTokenManager tm) { - token_source = tm; - token = new Token(); - jj_ntk = -1; - jjtree.reset(); - jj_gen = 0; - for (int i = 0; i < 63; i++) jj_la1[i] = -1; - for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); - } - - final private Token jj_consume_token(int kind) throws ParseException { - Token oldToken; - if ((oldToken = token).next != null) token = token.next; - else token = token.next = token_source.getNextToken(); - jj_ntk = -1; - if (token.kind == kind) { - jj_gen++; - if (++jj_gc > 100) { - jj_gc = 0; - for (int i = 0; i < jj_2_rtns.length; i++) { - JJCalls c = jj_2_rtns[i]; - while (c != null) { - if (c.gen < jj_gen) c.first = null; - c = c.next; - } - } - } - return token; - } - token = oldToken; - jj_kind = kind; - throw generateParseException(); - } - - static private final class LookaheadSuccess extends java.lang.Error { } - final private LookaheadSuccess jj_ls = new LookaheadSuccess(); - final private boolean jj_scan_token(int kind) { - if (jj_scanpos == jj_lastpos) { - jj_la--; - if (jj_scanpos.next == null) { - jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); - } else { - jj_lastpos = jj_scanpos = jj_scanpos.next; - } - } else { - jj_scanpos = jj_scanpos.next; - } - if (jj_rescan) { - int i = 0; Token tok = token; - while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } - if (tok != null) jj_add_error_token(kind, i); - } - if (jj_scanpos.kind != kind) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; - return false; - } - - final public Token getNextToken() { - if (token.next != null) token = token.next; - else token = token.next = token_source.getNextToken(); - jj_ntk = -1; - jj_gen++; - return token; - } - - final public Token getToken(int index) { - Token t = lookingAhead ? jj_scanpos : token; - for (int i = 0; i < index; i++) { - if (t.next != null) t = t.next; - else t = t.next = token_source.getNextToken(); - } - return t; - } - - final private int jj_ntk() { - if ((jj_nt=token.next) == null) - return (jj_ntk = (token.next=token_source.getNextToken()).kind); - else - return (jj_ntk = jj_nt.kind); - } - - private java.util.Vector jj_expentries = new java.util.Vector(); - private int[] jj_expentry; - private int jj_kind = -1; - private int[] jj_lasttokens = new int[100]; - private int jj_endpos; - - private void jj_add_error_token(int kind, int pos) { - if (pos >= 100) return; - if (pos == jj_endpos + 1) { - jj_lasttokens[jj_endpos++] = kind; - } else if (jj_endpos != 0) { - jj_expentry = new int[jj_endpos]; - for (int i = 0; i < jj_endpos; i++) { - jj_expentry[i] = jj_lasttokens[i]; - } - boolean exists = false; - for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) { - int[] oldentry = (int[])(e.nextElement()); - if (oldentry.length == jj_expentry.length) { - exists = true; - for (int i = 0; i < jj_expentry.length; i++) { - if (oldentry[i] != jj_expentry[i]) { - exists = false; - break; - } - } - if (exists) break; - } - } - if (!exists) jj_expentries.addElement(jj_expentry); - if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; - } - } - - public ParseException generateParseException() { - jj_expentries.removeAllElements(); - boolean[] la1tokens = new boolean[66]; - for (int i = 0; i < 66; i++) { - la1tokens[i] = false; - } - if (jj_kind >= 0) { - la1tokens[jj_kind] = true; - jj_kind = -1; - } - for (int i = 0; i < 63; i++) { - if (jj_la1[i] == jj_gen) { - for (int j = 0; j < 32; j++) { - if ((jj_la1_0[i] & (1< jj_gen) { - jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; - switch (i) { - case 0: jj_3_1(); break; - case 1: jj_3_2(); break; - case 2: jj_3_3(); break; - case 3: jj_3_4(); break; - case 4: jj_3_5(); break; - case 5: jj_3_6(); break; - case 6: jj_3_7(); break; - case 7: jj_3_8(); break; - case 8: jj_3_9(); break; - case 9: jj_3_10(); break; - case 10: jj_3_11(); break; - case 11: jj_3_12(); break; - case 12: jj_3_13(); break; - case 13: jj_3_14(); break; - case 14: jj_3_15(); break; - case 15: jj_3_16(); break; - case 16: jj_3_17(); break; - case 17: jj_3_18(); break; - case 18: jj_3_19(); break; - } - } - p = p.next; - } while (p != null); - } - jj_rescan = false; - } - - final private void jj_save(int index, int xla) { - JJCalls p = jj_2_rtns[index]; - while (p.gen > jj_gen) { - if (p.next == null) { p = p.next = new JJCalls(); break; } - p = p.next; - } - p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; - } - - static final class JJCalls { - int gen; - Token first; - int arg; - JJCalls next; - } - -} diff --git a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.jjt b/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.jjt deleted file mode 100644 index 9c885e8c16..0000000000 --- a/jonas/modules/libraries/jonas-deployment/src/main/java/org/ow2/jonas/deployment/ejb/ejbql/EJBQL.jjt +++ /dev/null @@ -1,668 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * - * Initial developer(s): Christophe Ney for France Telecom. - * Contributor(s): - * - * -------------------------------------------------------------------------- - * $Id:EJBQL.jjt 11129 2007-08-03 07:15:41Z durieuxp $ - * -------------------------------------------------------------------------- - */ - - -/** -* This is the JJTree grammar file that was used to generate -* All files of this package -* @author Christophe Ney [cney@batisseurs.com] -* contributor(s): -* - Helene Joanin: Fix the bug about the unary minus operator. -* - Helene Joanin: Add the flag 'third' for operator with optional third operand. -* - Helene Joanin: Add the counter 'opNbEnum' for the IN operator -* to count the number of string_literal. -* - Helene Joanin: Add the ORDER BY clause -* - Helene Joanin: Take into account the EJBQL version 2.1 syntax -* - Cyrille Blot: Add the LIMIT clause -* -**/ - -options { - // javacc options - LOOKAHEAD = 1; - CHOICE_AMBIGUITY_CHECK = 2; - OTHER_AMBIGUITY_CHECK = 1; - STATIC = false; - DEBUG_PARSER = false; - DEBUG_LOOKAHEAD = false; - DEBUG_TOKEN_MANAGER = false; - ERROR_REPORTING = true; - JAVA_UNICODE_ESCAPE = false; - UNICODE_INPUT = false; - IGNORE_CASE = false; - USER_TOKEN_MANAGER = false; - USER_CHAR_STREAM = false; - BUILD_PARSER = true; - BUILD_TOKEN_MANAGER = true; - SANITY_CHECK = true; - FORCE_LA_CHECK = false; - - // jjtree options - BUILD_NODE_FILES=true; // this creates all AST* classes - MULTI=true; - VISITOR=true; // create a visitor method - NODE_FACTORY= false; // build nodes using a factory - NODE_PACKAGE=""; // package of node classes - NODE_PREFIX="AST"; //prefix for generated classes -} - - -PARSER_BEGIN(EJBQL) - -package org.ow2.jonas.deployment.ejb.ejbql; - -public class EJBQL { -} - -PARSER_END(EJBQL) - -SimpleNode EJBQL() : -{} -{ - SelectClause() FromClause() ( WhereClause() )? ( OrderByClause() )? ( LimitClause() )? - { return jjtThis; } -} - -void FromClause() : -{} -{ - IdentificationVariableDeclaration() ( IdentificationVariableDeclaration() )* - -} - -void IdentificationVariableDeclaration() #void : -{} -{ - CollectionMemberDeclaration() | RangeVariableDeclaration() - -} - -void CollectionMemberDeclaration() : -{} -{ - CollectionValuedPathExpression() ( )? Identifier() -} - -void RangeVariableDeclaration() : -{} -{ - AbstractSchemaName() ( )? Identifier() - -} - -void SingleValuedPathExpression() : -{} -{ - Path() -} - -void CmpPathExpression() : -{} -{ - Path() -} - -void SingleValuedCmrPathExpression() : -{} -{ - Path() -} - -void CollectionValuedPathExpression() : -{} -{ - Path() -} - -void SelectClause() : -{} -{ - -

    -device where the alarm comes from: -

    -severity level of the Alarm Message: -

    - Severe Alarm
    - Warning
    - Informative Message
    -
    -

    -number of messages that will be sent: -

    -timeout in seconds: -

    - - - - diff --git a/jonas_tests/examples/base/examples/alarm/web/images/alarmArchi.gif b/jonas_tests/examples/base/examples/alarm/web/images/alarmArchi.gif deleted file mode 100644 index 18e45cc9bd6e73fc5dab1c7735856c5017cf19b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51084 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 z 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 diff --git a/jonas_tests/examples/base/examples/alarm/web/images/logo_jonas.jpg b/jonas_tests/examples/base/examples/alarm/web/images/logo_jonas.jpg deleted file mode 100644 index 3fe9b43072176d2275d8725eb977b781a9730306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3293 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 diff --git a/jonas_tests/examples/base/examples/alarm/web/images/return.gif b/jonas_tests/examples/base/examples/alarm/web/images/return.gif deleted file mode 100644 index af4f68f4a3a13e0ef1dc0045b04c2c93354cdf40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 zcmeH`(Q6!46vppnx0|bNlG}7iZ{rg7+D*+Z5i>Q#4vn(x+N>Q)$&RbyXeH}5khoAZ zgHYWn8m8H>&V#9A@nKri+6f7CAZX^n(t)JHP^8RL7z)bJ*uqp1CeXrcK^P~G{tuqV z^BsQQ$2pwh@zEn}1p^F%5QJd}Aw&paj0qu>(zUfUmSs7P<9S{Xgle@~tJOqNtk>(3 zB+0U@D2l48nx^TxZWsoa&$A3e34s7$jDj$XWIqfUmW{ZO5C9=SDAKGTH2r`GRm|~r z5L$j98>Zp~kYOR42b6JwQ1b%S^%chx9UoE#D+ZEvK&b8ovKvT_U$;Hc_5{o0Esv@u zV|vtZNi@a@L^X--U`fN84f8w{M0eXUG$N)K%8oDDURAev)u`Ei)$*#g&zml%+l*qc z5u_%u5lz+^!=({{P?YDX?hsigszo##*Hy@JNK{Z=MY4eu6Y@37k1~gfg@L4*NB(TMHD`z5Mi$4{3$K3Fd0=2+ z2&SJ^4mHd1^M91~z5jb@w)hR4@9nxce6>IZv*odP-zSex6`o(pw(oi7X69J;zL6Ew zmMCYwj%&NFbnm5LWxe~Y@k3x5DnB+pXsm90nHrr#zmNkgMYcdmxvLDB z3k3wE&!9rlKuzGPY8;a- zBi9R*frQ3fG0HGx<2Ev@GR53BXC{m%G)VNLfCm<(3@d!93@{LZo_h$0rKE)ez={AR zgN!_u;fgt_k*ub?wkzoZv`}`Ys26raPFHm$%%BQT?K!Jd*G5{=2gTkKm85a{lvhHM zq%hB6VYfiyxgkqU9BLfq5RU* z2xlq)4&Xs{t#U;v$CFDj&NmWlD78X3I~6kLRd#bsr!75?4-CS74p59TK!KLf(JWu{ zs2v*S6ek^IHWKo4`3Crh2n(HYAT;)8-4N!?Qv zNbi9l1PcSqNrRkkR)i&s4h%q4MFf=5oO?=aIRu&^c=rJw0k{aKqKI;+K%I56kbr3( zT^9|EFF~oypO-Kx)_@a?poNQXGV3h=heLGfTx2gvE6D=$^|mAimqz*Qx6i`q0EiqZ zX{>b0T!2TWRdNdMyA7Df-B5uH!I}}iQP5DR3&J@iyZ|@QpsyT3VN?@)6_TL?|JvGb zsR2JbFnZ>Em8}t9itts#&O#Tl#4NP8&A=BMaR>)2aO~^~Du2x3z~t)k)w%Hy0Wb|N zf17BMQk3jS7A-St-iA4YT*F$sb-+w3wCY?#(cjA3oB($E+yrXkHtlSK1V9}%g5$L? z4jxm=8#ISec@1urM2z!T!(E(>UmR+KtH75H9xTQonZA6CVvE^3jNEGf8?Dt{4bgYM zB8}xx0fgr)FOFfvw|E2Nu^`I-E1+OfSsnpQ6FIyCXB@^}X!r0#Q?Ha1Tqt*iKKj-* zbZu`Hd;Pnc4;4Jdc?Pd1&`RjkM63YE4c>dh0Ym&NF1B{PqBjP@eV!ELIakRle2Onf z!}iJE#RJVc2-}0!;N}Fr2?j5C`v(gnatq2yDd;Sm3ncK%`!KwXpTQ?+TmTTKffX(5 zeh_;T4ald1=DBZMCtzJt5WE%0q#&l0rBXp38ywnN(Lc7mOyr?ig~*8{&%esThK=OkAph3=niSAp+oHso - - The JOnAS Alarm Demo - - - - - - - - - - -
    JOnAS LogoThe JOnAS Alarm DemoTomcat LogoJetty Logo
    - -

    Goal of this demo

    - This little demo intends to show how you can use JOnAS, Tomcat or Jetty, and Joram - together to get a complete application using EJBs, servlets, html, JSPs, and - message driven beans. - -

    Running this demo

    -When you click to access this demo, your web browser should open a dialog box -asking you a user ID and a password. -Enter as login/password jonas/jonas. -

    -Click Here to Start the Demo -

    -Notice that the first time, Tomcat or Jetty has to compile each JSP and this may take several seconds. - -

    Description of the different parts

    - - - - - - - - - - - - - - - - - - -
    AlarmGeneratorAlarmGenerator is a servlet that generates alarms by -publishing messages on a topic. Once the JOnAS Server is running, this -servlet may be used to feed the Message Driven Bean listening -on the topic. -Click Here to Generate new Alarms -
    Session bean ViewA Session bean is used to provide a remote access to the Alarm Service. Each user -will create its own session that will be reached from JSP pages or servlets.
    Entity Bean AlarmRecordWhen a new alarm type is received, an entity bean is created. If the Alarm is already -known, its count is incremented only.
    Message Driven BeanJMS is used to access asynchronously to the service. A Message Driven Bean is used -to collect Alarm sent by AlarmGenerator. It will then inform the AlarmManager -that will process it.
    -

    Architecture

    -Alarm Demo Architecture - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/createfilter.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/createfilter.jsp deleted file mode 100644 index 52750066d9..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/createfilter.jsp +++ /dev/null @@ -1,12 +0,0 @@ - -create filter - - -<% - String device = request.getParameter("device"); - String level = request.getParameter("level"); - String profil = myview.newProfil(device, level); -%> - - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/current.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/current.jsp deleted file mode 100644 index 70a68e686c..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/current.jsp +++ /dev/null @@ -1,115 +0,0 @@ - -current page -<%@ include file="top.html" %> -<%@ page import="org.objectweb.alarm.beans.AlarmData" %> - -<% - String error = myview.getErrorMessage(); - if (error != null) { -%> -

    -An error occured in the JOnAS Server: -<%=error%> -<% - } -%> -<% - AlarmData[] adlist = null; - boolean history = request.getParameter("listType").equals("History"); -%> - -<% - if (history) { - adlist = myview.getAllAlarms(); -%> - Log of all -<% - } else { - adlist = myview.getNewAlarms(); -%> - Current list of -<% - } -%> - alarms received on <%=myview.getProfil()%> - - - - - - - - - - - -<% - for (int i = 0; i < adlist.length; i++) { - AlarmData ad = adlist[i]; - int sev = ad.getSev(); - int state = ad.getState(); -%> - -<% switch (sev) { - case 1: -%> - - - - - - - -<% - } -%> -
    identdatefrommessagecountstate
    -<% - break; - case 2: -%> - -<% - break; - case 3: -%> - -<% - break; - default: -%> - -<% - break; - } -%> -<%=ad.getNum()%><%=ad.getDate()%><%=ad.getDevice()%><%=ad.getMessage()%><%=ad.getCount()%> -<% switch (state) { - case 1: -%> -received -<% - break; - case 2: -%> -processed -<% - break; - default: -%> -removed -<% - break; - } -%>
    -
    -

    -<% if (history) { %> -View only the current list of Alarms for this filter. -<% } else { %> -View the full log of Alarms received for this filter. -<% } %> -

    -Return to the list of filters - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/list.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/list.jsp deleted file mode 100644 index 37879e8ec5..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/list.jsp +++ /dev/null @@ -1,107 +0,0 @@ - -list page -<%@ include file="top.html" %> - -<% - String error = myview.getErrorMessage(); - if (error != null) { -%> -

    -An error occured in the JOnAS Server: -

    -<%=error%> -

    -<% - } -%> -<% - String[] plist = myview.getProfils(); -%> -You have been authenticated by web container and you can access now the list of -alarms received for each filter. -The color used shows the current level of alarm: - - - - - - - - - - - - - - -
    SEVERE ERROR
    WARNING
    INFO
    NO ALARM
    -
    -

    - - - - - -
    -You can see the list of alarm received for a special filter by -choosing in the list here after. -

    - - <% - for (int i = 0; i < plist.length; i++) { - String profil = plist[i]; - %> -<% - switch (myview.alarmLevel(profil)) { - case 1: -%> - -<% - break; - case 2: -%> - -<% - break; - case 3: -%> - -<% - break; - default: -%> - -<% - } -%> - - - - - <% - } - %> -
    -<%=profil%> - ->See details - ->Remove filter -
    -

    -You can create a new filter by using -the following form. -
    -

    -device name: -

    - Only Severe Alarms
    - Warnings and Severe Alarms
    - All Alarm Messages
    -

    - -

    -
    -Return to index page - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/remove.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/remove.jsp deleted file mode 100644 index ef063c4751..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/remove.jsp +++ /dev/null @@ -1,13 +0,0 @@ - -remove page - - -<% - String alarmPK = request.getParameter("alarm"); - myview.forgetAlarm(alarmPK); -%> - - - - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/removefilter.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/removefilter.jsp deleted file mode 100644 index a66d56d0e3..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/removefilter.jsp +++ /dev/null @@ -1,11 +0,0 @@ - -remove filter - - -<% - String profil = request.getParameter("profil"); - myview.removeProfil(profil); -%> - - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/setfilter.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/setfilter.jsp deleted file mode 100644 index e22ebc4d45..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/setfilter.jsp +++ /dev/null @@ -1,13 +0,0 @@ - -set filter - - -<% - String profil = request.getParameter("profil"); - myview.setProfil(profil); -%> - - - - - diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/top.html b/jonas_tests/examples/base/examples/alarm/web/secured/top.html deleted file mode 100644 index ece8a76459..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/top.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - -
    JOnAS LogoThe JOnAS Alarm DemoTomcat LogoJetty Logo
    diff --git a/jonas_tests/examples/base/examples/alarm/web/secured/unsetfilter.jsp b/jonas_tests/examples/base/examples/alarm/web/secured/unsetfilter.jsp deleted file mode 100644 index 4b53e8f355..0000000000 --- a/jonas_tests/examples/base/examples/alarm/web/secured/unsetfilter.jsp +++ /dev/null @@ -1,10 +0,0 @@ - -unset filter - - -<% - myview.setProfil(null); -%> - - - diff --git a/jonas_tests/examples/base/examples/build.properties b/jonas_tests/examples/base/examples/build.properties deleted file mode 100644 index 80ebd7c47f..0000000000 --- a/jonas_tests/examples/base/examples/build.properties +++ /dev/null @@ -1,42 +0,0 @@ -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999 Bull S.A. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# Initial developer(s): ____________________________________. -# Contributor(s): ______________________________________. -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# Properties defined in this file could be customized - -# options for java compiler -opt.javac.debug on -opt.javac.optimize off - -# To use the jike compiler -#build.compiler jikes - -# genic args -#verbose=true - -# protocols for Carol (jrmp,iiop) -protocols.names=jrmp,iiop -genicargs=-verbose diff --git a/jonas_tests/examples/base/examples/build.xml b/jonas_tests/examples/base/examples/build.xml deleted file mode 100644 index 4240b897ce..0000000000 --- a/jonas_tests/examples/base/examples/build.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/cmp2/README b/jonas_tests/examples/base/examples/cmp2/README deleted file mode 100644 index aaf9dfe63b..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/README +++ /dev/null @@ -1,109 +0,0 @@ - - -Example Overview -================ - -This example shows how to use new features of container managed persistence -in EJB 2.0, like Entity Relationships and EJB-QL. - -The code of the EJBs used in this example comes from the book: - "Enterprise JavaBeans(TM)" Third Edition - by Richard Monson-Haefel - [O'REILLY edition ISBN 0-596-00226-2] - -We have packaged this example as an ear since the client is implemented -as three servlets. - - -Directories structure -===================== - -The "src" directory contains: - -- eight Entity beans: - CustomerEJB, - AddressEJB, - PhoneEJB, - CreditCardEJB, - CruiseEJB, - ShipEJB, - ReservationEJB, - CabinEJB, - Sequence. - The seven first beans shows the seven relationship types, - the last is used for an automatic generation of primary keys. - -- three Session beans: - TravelAgentEJB, - RTravelAgentEJB, - SequenceSession. - -- three servlets: - ServletTest - shows one to one relationship unidirectional or bidirectional, - ServletTest2 - shows one to many, many to one, many to many - uni and bidirectional relationships - ServletTest3 - shows example of finder methods using many EJB-QL examples - -The "etc" directory contains: - -- the "xml" directory which contains all the deployment descriptors - used for this example : - application.xml (ear file), - ejb-jar.xml and jonas-ejb-jar.xml (jar file), - web.xml and jonas-web.xml (war file). - -- the "resources" directory which contains all the resources for this - application - "web" directory contains all resources used by the servlets - - -Compiling this example creates an .ear file that represents the application -including : -- all the beans used by the web application, -- a web application that will be used by Tomcat or Jetty to run the servlets. - - -Prerequisites -============= -First, you must have installed a web container (ie : Catalina or Jetty) -as the web container service - -You have to set the environment variables - CATALINA_HOME and CATALINA_BASE as indicated in the Tomcat 4.1.x documentation. -or JETTY_HOME for Jetty 4.2.x - -(See the howto on ObjectWeb : http://www.objectweb.org/jonas/doc/index.html) - -As for the other JOnAS examples, you have to configure a datasource. -It's JNDI name must be 'jdbc_1'. -The 'datasource.mappername' property value must be up-to-date. - - -Building this example -===================== -Under $JONAS_ROOT/examples/cmp2, do - $ ant install - - -Running this example -==================== -Commands are given for an Unix system, similar commands can be done on -Windows. - -1) Run a JOnAS server: - $ jonas start - -2) Load cmp2.ear (if you have not added it in the ear service descriptors list) using jonasAdmin -management application (http://:/jonasAdmin) or the 'jonas admin' command. - -3) Lookup at http://:/cmp2 to start this example - - is the name of your machine (localhost by default), and - - the port number (9000 by default). - -4) Stop the jonas server - $jonas stop - - diff --git a/jonas_tests/examples/base/examples/cmp2/build.xml b/jonas_tests/examples/base/examples/cmp2/build.xml deleted file mode 100644 index c1a80645a1..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/build.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/cmp2/etc/resources/web/index.html b/jonas_tests/examples/base/examples/cmp2/etc/resources/web/index.html deleted file mode 100644 index 28695422eb..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/resources/web/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - JOnAS example cmp2 - - - - -

    cmp2 : EJB 2.0 Container Managed Persistence

    - -

    This example shows how to use new features of container managed persistence - in EJB 2.0, like Entity Relationships and EJB-QL.

    - -

    The code of the EJBs used in this example comes from the book - "Enterprise JavaBeans(TM)" Third Edition by Richard Monson-Haefel -
    [O'REILLY edition ISBN 0-596-00226-2] -

    - -

    Examples Showing One to One Relationships:

    -
      -
    • One to One Unidirectional Relationship: -
      Customer --> Address

    • -
    • One to One Bidirectional Relationship: -
      Customer <--> CreditCard

    • -
    • One to Many Unidirectional Relationship: -
      Customer --> Phone

    • -
    - - - - - - -
    - Run the tests? - -
    - -
    -
    - - -

    Examples Showing Many to One, One to Many, and Many to Many Relationships:

    -
      -
    • Many to One Unidirectional Relationship: -
      Cruise --> Ship

    • -
    • One to Many Bidirectional Relationship: -
      Cruise <--> Reservation

    • -
    • Many to Many Bidirectional Relationship: -
      Customer <--> Reservation

    • -
    • Many to Many Unidirectional Relationship: -
      Reservation --> Cabin

    • -
    - - - - - - -
    - Run the tests? - -
    - -
    -
    - -

    Examples Showing EJB-QL:

    -
      -
    • SELECT OBJECT(s) FROM JE2_Ship AS s WHERE s.tonnage = ?1
    • -
    • SELECT OBJECT(s) FROM JE2_Ship AS s WHERE s.tonnage BETWEEN ?1 AND ?2
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c
    • -
    • SELECT OBJECT(c) FROM JE2_Cruise AS c WHERE c.name = ?1
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c -
      WHERE c.lastName = ?1 AND c.firstName = ?2
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName = 'Smith90'
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c -
      WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.hasGoodCredit = TRUE
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c -
      WHERE c.homeAddress.city = ?1 AND c.homeAddress.state = ?2
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c -
      WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 AND c.homeAddress.state = ?3
    • -
    • SELECT OBJECT(c) FROM JE2_Cabin AS c WHERE c.deckLevel = ?1
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c -
      WHERE c.homeAddress.state IN ('FL','TX','AZ','CA')
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.reservations IS EMPTY
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS cust, Cruise AS cr, IN (cr.reservations) AS res -
      WHERE cr = ?1 AND cust MEMBER OF res.customers
    • -
    • SELECT a.zip FROM JE2_Address AS a WHERE a.state = ?1
    • -
    • SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.homeAddress = ?1
    • -
    • .....
    • -
    - - - - - - -
    - Run the tests? - -
    - -
    -
    - - - - diff --git a/jonas_tests/examples/base/examples/cmp2/etc/resources/web/style.css b/jonas_tests/examples/base/examples/cmp2/etc/resources/web/style.css deleted file mode 100644 index 4f852c2a87..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/resources/web/style.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - background : white; - color : black; -} -h1, h2, h3 {font-family : sans-serif; } -h1 {font-size : 175%; color : DarkCyan; text-align : center;} -h2 {font-size : 150%; color : DarkCyan; - border-bottom : solid; - border-bottom-width : 1; -} -h3 {font-size : 125%; } -strong { font-weight : bold; } -hr { size : 1; width : 100%; } diff --git a/jonas_tests/examples/base/examples/cmp2/etc/xml/application.xml b/jonas_tests/examples/base/examples/cmp2/etc/xml/application.xml deleted file mode 100644 index 945d7cc97d..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/xml/application.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - cmp2 example EJB2.0 container managed persistence - cmp2 servlet - - - - cmp2.jar - - - - - cmp2.war - cmp2 - - - diff --git a/jonas_tests/examples/base/examples/cmp2/etc/xml/cmp2.xml b/jonas_tests/examples/base/examples/cmp2/etc/xml/cmp2.xml deleted file mode 100644 index c24df0a211..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/xml/cmp2.xml +++ /dev/null @@ -1,715 +0,0 @@ - - - - - Deployment descriptor for the cmp2 JOnAS example - cmp2 example - - - - CustomerEJB - com.titan.customer.CustomerHomeRemote - com.titan.customer.CustomerRemote - com.titan.customer.CustomerHomeLocal - com.titan.customer.CustomerLocal - com.titan.customer.CustomerBean - Container - java.lang.Integer - false - 2.x - JE2_Customer - id - lastName - firstName - hasGoodCredit - id - - ejb/AddressHomeLocal - Entity - com.titan.address.AddressHomeLocal - com.titan.address.AddressLocal - AddressEJB - - - ejb/CreditCardHome - Entity - com.titan.customer.CreditCardHomeLocal - com.titan.customer.CreditCardLocal - CreditCardEJB - - - ejb/PhoneHomeLocal - Entity - com.titan.phone.PhoneHomeLocal - com.titan.phone.PhoneLocal - PhoneEJB - - - - - findAllCustomers - - - SELECT OBJECT(c) FROM JE2_Customer AS c - - - - findByName - - java.lang.String - java.lang.String - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 - - - - - findSmith90 - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.lastName = 'Smith90' - - - - - findByExactName - - java.lang.String - java.lang.String - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.lastName = ?1 AND c.firstName = ?2 - - - - - findByNameAndState - - java.lang.String - java.lang.String - java.lang.String - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 AND c.homeAddress.state = ?3 - - - - - findByGoodCredit - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.hasGoodCredit = TRUE - - - - - findByCity - - java.lang.String - java.lang.String - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.homeAddress.city = ?1 AND c.homeAddress.state = ?2 - - - - - findInHotStates - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.homeAddress.state IN ('FL','TX','AZ','CA') - - - - - findWithNoReservations - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.reservations IS EMPTY - - - - - findOnCruise - - com.titan.cruise.CruiseLocal - - - - SELECT OBJECT(cust) FROM JE2_Customer cust, JE2_Cruise cr, IN (cr.reservations) AS res - WHERE cr = ?1 AND cust MEMBER OF res.customers - - - - - findByState - - java.lang.String - - - - SELECT OBJECT(c) FROM JE2_Customer c - WHERE c.homeAddress.state = ?1 - ORDER BY c.lastName,c.firstName - - - - - - AddressEJB - com.titan.address.AddressHomeLocal - com.titan.address.AddressLocal - com.titan.address.AddressBean - Container - java.lang.Object - false - 2.x - JE2_Address - street - city - state - zip - - - - findAllAddress - - - SELECT OBJECT(c) FROM JE2_Address c - - - - ejbSelectZipCodes - - java.lang.String - - - SELECT a.zip FROM JE2_Address AS a WHERE a.state = ?1 - - - - ejbSelectAll - - - SELECT OBJECT(a) FROM JE2_Address AS a - - - - ejbSelectCustomer - - com.titan.address.AddressLocal - - - SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.homeAddress = ?1 - - - - - PhoneEJB - com.titan.phone.PhoneHomeLocal - com.titan.phone.PhoneLocal - com.titan.phone.PhoneBean - Container - java.lang.Object - false - 2.x - JE2_Phone - number - type - - - - findAllPhones - - - SELECT OBJECT(c) FROM JE2_Phone c - - - - - CreditCardEJB - com.titan.customer.CreditCardHomeLocal - com.titan.customer.CreditCardLocal - com.titan.customer.CreditCardBean - Container - java.lang.Object - false - 2.x - JE2_CreditCard - expirationDate - number - nameOnCard - creditOrganization - - - - findAllCreditCards - - - SELECT OBJECT(cc) FROM JE2_CreditCard cc - - - - - CruiseEJB - com.titan.cruise.CruiseHomeLocal - com.titan.cruise.CruiseLocal - com.titan.cruise.CruiseBean - Container - java.lang.Object - false - 2.x - JE2_Cruise - name - - - - findAllCruises - - - SELECT OBJECT(cc) FROM JE2_Cruise cc - - - - findByName - - java.lang.String - - - SELECT OBJECT(c) FROM JE2_Cruise c WHERE c.name = ?1 - - - - - ShipEJB - com.titan.ship.ShipHomeLocal - com.titan.ship.ShipLocal - com.titan.ship.ShipBean - Container - java.lang.Integer - false - 2.x - JE2_Ship - id - name - tonnage - id - - - - findAllShips - - - SELECT OBJECT(cc) FROM JE2_Ship cc - - - - findByTonnage - - java.lang.Double - - - - SELECT OBJECT(s) FROM JE2_Ship s - WHERE s.tonnage = ?1 - - - - - findByTonnage - - java.lang.Double - java.lang.Double - - - - SELECT OBJECT(s) FROM JE2_Ship s - WHERE s.tonnage BETWEEN ?1 AND ?2 - - - - - - ReservationEJB - com.titan.reservation.ReservationHomeLocal - com.titan.reservation.ReservationLocal - com.titan.reservation.ReservationBean - Container - java.lang.Object - false - 2.x - JE2_Reservation - amountPaid - date - - - - findAllReservations - - - SELECT OBJECT(cc) FROM JE2_Reservation cc - - - - - CabinEJB - com.titan.cabin.CabinHomeRemote - com.titan.cabin.CabinRemote - com.titan.cabin.CabinHomeLocal - com.titan.cabin.CabinLocal - com.titan.cabin.CabinBean - Container - java.lang.Integer - false - 2.x - JE2_Cabin - id - name - deckLevel - bedCount - id - - - - findAllOnDeckLevel - - java.lang.Integer - - - - SELECT OBJECT(c) FROM JE2_Cabin as c WHERE c.deckLevel = ?1 - - - - - findAllCabins - - - SELECT OBJECT(cc) FROM JE2_Cabin cc - - - - ejbSelectAllForCustomer - - com.titan.customer.CustomerLocal - - - SELECT OBJECT(cab) FROM JE2_Customer AS cust, - IN (cust.reservations) AS res, IN (res.cabins) AS cab - WHERE cust = ?1 - - - - - - TravelAgentEJB - com.titan.travelagent.TravelAgentHomeRemote - com.titan.travelagent.TravelAgentRemote - com.titan.travelagent.TravelAgentBean - Stateless - Container - - ejb/CabinHomeLocal - Entity - com.titan.cabin.CabinHomeLocal - com.titan.cabin.CabinLocal - CabinEJB - - - - - - RTravelAgentEJB - com.titan.travelagent.RTravelAgentHomeRemote - com.titan.travelagent.RTravelAgentRemote - com.titan.travelagent.RTravelAgentBean - Stateless - Container - - ejb/CabinHomeRemote - Entity - com.titan.cabin.CabinHomeRemote - com.titan.cabin.CabinRemote - - - - - - - - - Customer-Address - - Customer-has-a-Address - One - - CustomerEJB - - - homeAddress - - - - Address-belongs-to-Customer - One - - - AddressEJB - - - - - - Customer-CreditCard - - Customer-has-a-CreditCard - One - - CustomerEJB - - creditCard - - - CreditCard-belongs-to-Customer - One - - - CreditCardEJB - - customer - - - - - Customer-Phones - - Customer-has-many-Phone-numbers - One - - CustomerEJB - - - phoneNumbers - java.util.Collection - - - - Phone-belongs-to-Customer - Many - - - PhoneEJB - - - - - - Customer-Reservation - - Customer-has-many-Reservations - Many - - CustomerEJB - - - reservations - java.util.Collection - - - - Reservation-has-many-Customers - Many - ReservationEJB - - - customers - java.util.Set - - - - - - Cruise-Ship - - Cruise-has-a-Ship - Many - - CruiseEJB - - ship - - - Ship-has-many-Cruises - One - - ShipEJB - - - - - - Cruise-Reservation - - Cruise-has-many-Reservations - One - - CruiseEJB - - - reservations - java.util.Collection - - - - Reservation-has-a-Cruise - Many - - ReservationEJB - - cruise - - - - - Cabin-Ship - - Cabin-has-a-Ship - Many - - CabinEJB - - ship - - - Ship-has-many-Cabins - One - - ShipEJB - - - - - - Cabin-Reservation - - Cabin-has-many-Reservations - Many - - CabinEJB - - - - Reservation-has-many-Cabins - Many - - ReservationEJB - - - cabins - java.util.Set - - - - - - - - - - - - CabinEJB - * - - - RTravelAgentEJB - * - - - TravelAgentEJB - * - - - CustomerEJB - * - - - AddressEJB - * - - - CreditCardEJB - * - - - PhoneEJB - * - - - CruiseEJB - * - - - ShipEJB - * - - - ReservationEJB - * - - Required - - - - - SequenceSession - * - - - Sequence - * - - Required - - - - - - diff --git a/jonas_tests/examples/base/examples/cmp2/etc/xml/jonas-cmp2.xml b/jonas_tests/examples/base/examples/cmp2/etc/xml/jonas-cmp2.xml deleted file mode 100644 index 147cfb33b7..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/xml/jonas-cmp2.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - CustomerEJB - CustomerHomeRemote - jdbc_1 - - - - AddressEJB - - jdbc_1 - - - - - CabinEJB - jdbc_1 - - - - PhoneEJB - - jdbc_1 - - - - - CreditCardEJB - - jdbc_1 - - - - - CruiseEJB - - jdbc_1 - - - - - ShipEJB - jdbc_1 - - - - ReservationEJB - - jdbc_1 - - - - - - RTravelAgentEJB - RTravelAgentHomeRemote - - ejb/CabinHomeRemote - CabinHomeRemote - - - - diff --git a/jonas_tests/examples/base/examples/cmp2/etc/xml/web.xml b/jonas_tests/examples/base/examples/cmp2/etc/xml/web.xml deleted file mode 100644 index 7d15267747..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/etc/xml/web.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - ServletTest - servlets.ServletTest - - - - ServletTest2 - servlets.ServletTest2 - - - - ServletTest3 - servlets.ServletTest3 - - - - ServletTest - /test1 - - - - ServletTest2 - /test2 - - - - ServletTest3 - /test3 - - - - ejb/CreditCardHomeLocal - Entity - com.titan.customer.CreditCardHomeLocal - com.titan.customer.CreditCardLocal - cmp2.jar#CreditCardEJB - - - - ejb/CustomerHomeLocal - Entity - com.titan.customer.CustomerHomeLocal - com.titan.customer.CustomerLocal - cmp2.jar#CustomerEJB - - - - ejb/AddressHomeLocal - Entity - com.titan.address.AddressHomeLocal - com.titan.address.AddressLocal - cmp2.jar#AddressEJB - - - - ejb/ShipHomeLocal - Entity - com.titan.address.ShipHomeLocal - com.titan.address.ShipLocal - cmp2.jar#ShipEJB - - - - ejb/CruiseHomeLocal - Entity - com.titan.address.CruiseHomeLocal - com.titan.address.CruiseLocal - cmp2.jar#CruiseEJB - - - - ejb/ReservationHomeLocal - Entity - com.titan.address.ReservationHomeLocal - com.titan.address.ReservationLocal - cmp2.jar#ReservationEJB - - - - ejb/CabinHomeLocal - Entity - com.titan.address.CabinHomeLocal - com.titan.address.CabinLocal - cmp2.jar#CabinEJB - - - - ejb/PhoneHomeLocal - Entity - com.titan.adress.PhoneHomeLocal - com.titan.address.PhoneLocal - cmp2.jar#PhoneEJB - - - diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressBean.java deleted file mode 100644 index 1c59356ade..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressBean.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.titan.address; - -import java.util.Collection; -import java.util.Set; - -import javax.ejb.EntityContext; -import javax.ejb.FinderException; - -import com.titan.customer.CustomerLocal; - -public abstract class AddressBean implements javax.ejb.EntityBean { - - public Integer ejbCreateAddress(String street, String city, String state, String zip) - throws javax.ejb.CreateException { - setStreet(street); - setCity(city); - setState(state); - setZip(zip); - return null; - } - - public void ejbPostCreateAddress(String street, String city, String state, String zip) { - - } - - // select methods - public abstract Set ejbSelectZipCodes(String state) throws FinderException; - - public abstract Collection ejbSelectAll() throws FinderException; - - public abstract CustomerLocal ejbSelectCustomer(AddressLocal addr) throws FinderException; - - // Public Home method required to test the private ejbSelectZipCodes method - public Collection ejbHomeSelectZipCodes(String state) throws FinderException { - return this.ejbSelectZipCodes(state); - } - - // Public Home method required to test the private ejbSelectCustomer method - public CustomerLocal ejbHomeSelectCustomer(AddressLocal addr) throws FinderException { - return (CustomerLocal) (this.ejbSelectCustomer(addr)); - } - - // persistent fields - public abstract String getStreet(); - - public abstract void setStreet(String street); - - public abstract String getCity(); - - public abstract void setCity(String city); - - public abstract String getState(); - - public abstract void setState(String state); - - public abstract String getZip(); - - public abstract void setZip(String zip); - - // standard call back methods - - public void setEntityContext(EntityContext ec) { - } - - public void unsetEntityContext() { - } - - public void ejbLoad() { - } - - public void ejbStore() { - } - - public void ejbActivate() { - } - - public void ejbPassivate() { - } - - public void ejbRemove() throws javax.ejb.RemoveException { - } - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressHomeLocal.java deleted file mode 100644 index 7bac2363c4..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressHomeLocal.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.titan.address; - -import java.util.Collection; - -import com.titan.customer.CustomerLocal; - -// Address EJB's local home interface -public interface AddressHomeLocal extends javax.ejb.EJBLocalHome { - - public AddressLocal createAddress(String street, String city, String state, String zip ) - throws javax.ejb.CreateException; - - public AddressLocal findByPrimaryKey(Integer primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllAddress() - throws javax.ejb.FinderException; - - // Home method, requires ejbHomeSelectZipCodes method in bean class - public Collection selectZipCodes(String state) - throws javax.ejb.FinderException; - - // Home method, requires ejbHomeSelectCustomer method in bean class - public CustomerLocal selectCustomer(AddressLocal addr) - throws javax.ejb.FinderException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressLocal.java deleted file mode 100644 index 360a00bbe9..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/address/AddressLocal.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.titan.address; - -// Address EJB's local interface -public interface AddressLocal extends javax.ejb.EJBLocalObject { - - public String getStreet(); - - public void setStreet(String street); - - public String getCity(); - - public void setCity(String city); - - public String getState(); - - public void setState(String state); - - public String getZip(); - - public void setZip(String zip); -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinBean.java deleted file mode 100644 index 5919fe467e..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinBean.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.titan.cabin; - -import java.util.Set; - -import javax.ejb.EntityContext; -import javax.ejb.FinderException; - -import com.titan.customer.CustomerLocal; -import com.titan.ship.ShipLocal; - -public abstract class CabinBean implements javax.ejb.EntityBean { - - public Integer ejbCreate(Integer id) throws javax.ejb.CreateException { - this.setId(id); - return null; - } - - public void ejbPostCreate(Integer id) { - - } - - public abstract Set ejbSelectAllForCustomer(CustomerLocal cust) throws FinderException; - - // Public Home method required to test the private ejbSelectAllForCustomer - // method - public Set ejbHomeSelectAllForCustomer(CustomerLocal cust) throws FinderException { - return this.ejbSelectAllForCustomer(cust); - } - - public abstract void setId(Integer id); - - public abstract Integer getId(); - - public abstract void setShip(ShipLocal ship); - - public abstract ShipLocal getShip(); - - public abstract void setName(String name); - - public abstract String getName(); - - public abstract void setBedCount(int count); - - public abstract int getBedCount(); - - public abstract void setDeckLevel(int level); - - public abstract int getDeckLevel(); - - public int getShipId() { - return getShip().getId().intValue(); - } - - public void setShipId(int sp) { - ShipLocal sl = getShip(); - sl.setId(new Integer(sp)); - setShip(sl); - } - - public void setEntityContext(EntityContext ctx) { - // Not implemented. - } - - public void unsetEntityContext() { - // Not implemented. - } - - public void ejbActivate() { - // Not implemented. - } - - public void ejbPassivate() { - // Not implemented. - } - - public void ejbLoad() { - // Not implemented. - } - - public void ejbStore() { - // Not implemented. - } - - public void ejbRemove() throws javax.ejb.RemoveException { - // Not implemented. - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeLocal.java deleted file mode 100644 index 32a6bc30fb..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeLocal.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.titan.cabin; - -import com.titan.customer.CustomerLocal; - -import java.util.Collection; -import java.util.Set; -import javax.ejb.EJBException; -import javax.ejb.CreateException; -import javax.ejb.FinderException; - -public interface CabinHomeLocal extends javax.ejb.EJBLocalHome { - - public CabinLocal create(Integer id) - throws CreateException, EJBException; - - public CabinLocal findByPrimaryKey(Integer pk) - throws FinderException, EJBException; - - public Collection findAllOnDeckLevel(Integer level) - throws FinderException; - - public Collection findAllCabins() - throws FinderException; - - // Home method, requires ejbHomeSelectAllForCustomer method in bean class - public Set selectAllForCustomer(CustomerLocal cust) - throws FinderException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeRemote.java deleted file mode 100644 index d5c2dea860..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinHomeRemote.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.titan.cabin; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.FinderException; - -public interface CabinHomeRemote extends javax.ejb.EJBHome { - - public CabinRemote create(Integer id) - throws CreateException, RemoteException; - - public CabinRemote findByPrimaryKey(Integer pk) - throws FinderException, RemoteException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinLocal.java deleted file mode 100644 index 40a1872192..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinLocal.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.titan.cabin; - -import javax.ejb.EJBException; -import com.titan.ship.ShipLocal; - -public interface CabinLocal extends javax.ejb.EJBLocalObject { - - public String getName() throws EJBException; - public void setName(String str) throws EJBException; - public int getDeckLevel() throws EJBException; - public void setDeckLevel(int level) throws EJBException; - public ShipLocal getShip(); - public void setShip(ShipLocal ship); - public int getBedCount() throws EJBException; - public void setBedCount(int bc) throws EJBException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinRemote.java deleted file mode 100644 index 29faff6fdc..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cabin/CabinRemote.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.titan.cabin; - -import java.rmi.RemoteException; - -public interface CabinRemote extends javax.ejb.EJBObject { - public String getName() throws RemoteException; - public void setName(String str) throws RemoteException; - public int getDeckLevel() throws RemoteException; - public void setDeckLevel(int level) throws RemoteException; - public int getShipId() throws RemoteException; - public void setShipId(int sp) throws RemoteException; - public int getBedCount() throws RemoteException; - public void setBedCount(int bc) throws RemoteException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseBean.java deleted file mode 100644 index 3373f90cec..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseBean.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.titan.cruise; - -import javax.ejb.CreateException; -import javax.ejb.RemoveException; -import javax.ejb.EntityContext; -import com.titan.ship.*; -import java.util.Collection; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -public abstract class CruiseBean implements javax.ejb.EntityBean { - - public Integer ejbCreate(String name, ShipLocal ship) throws CreateException { - setName(name); - return null; - } - - public void ejbPostCreate(String name, ShipLocal ship) { - setShip(ship); - } - - // persistent fields - public abstract void setName(String name); - public abstract String getName( ); - - public abstract void setShip(ShipLocal ship); - public abstract ShipLocal getShip( ); - - // relationship fields - - public abstract void setReservations(Collection res); - public abstract Collection getReservations( ); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws RemoveException {} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseHomeLocal.java deleted file mode 100644 index 6b6e30d8a5..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseHomeLocal.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.titan.cruise; - -import com.titan.ship.*; -import javax.ejb.CreateException; -import javax.ejb.FinderException; -import java.util.Collection; - - -// Cruise EJB's local home interface -public interface CruiseHomeLocal extends javax.ejb.EJBLocalHome { - - public CruiseLocal create(String name, ShipLocal ship) - throws javax.ejb.CreateException; - - public CruiseLocal findByPrimaryKey(Object primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllCruises() - throws FinderException; - - public CruiseLocal findByName(String name) - throws FinderException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseLocal.java deleted file mode 100644 index e632bedf37..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/cruise/CruiseLocal.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.titan.cruise; - -import com.titan.ship.*; -import java.util.Collection; - -// Cruise EJB's local interface -public interface CruiseLocal extends javax.ejb.EJBLocalObject { - - public String getName(); - public void setName(String name); - - public ShipLocal getShip(); - public void setShip(ShipLocal ship); - - public void setReservations(Collection res); - public Collection getReservations( ); - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/AddressDO.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/AddressDO.java deleted file mode 100644 index cae7e22182..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/AddressDO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.titan.customer; - -public class AddressDO implements java.io.Serializable { - - private String street; - private String city; - private String state; - private String zip; - - public AddressDO(String street, String city, String state, String zip ) { - this.street = street; - this.city = city; - this.state = state; - this.zip = zip; - } - public String getStreet(){ - return street; - } - public String getCity(){ - return city; - } - public String getState(){ - return state; - } - public String getZip(){ - return zip; - } -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardBean.java deleted file mode 100644 index 5855282576..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardBean.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.titan.customer; - -import javax.ejb.EntityContext; -import java.util.Date; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -public abstract class CreditCardBean implements javax.ejb.EntityBean { - - public Object ejbCreate(Date exp, String numb, String name, String org) - throws javax.ejb.CreateException { - - setExpirationDate(exp); - setNumber(numb); - setNameOnCard(name); - setCreditOrganization(org); - return null; - } - - public void ejbPostCreate(Date exp, String numb, String name, String org) { - } - - // relationship fields - - public abstract CustomerLocal getCustomer( ); - public abstract void setCustomer(CustomerLocal cust); - - // persistent fields - public abstract Date getExpirationDate(); - public abstract void setExpirationDate(Date date); - public abstract String getNumber(); - public abstract void setNumber(String number); - public abstract String getNameOnCard(); - public abstract void setNameOnCard(String name); - public abstract String getCreditOrganization(); - public abstract void setCreditOrganization(String org); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws javax.ejb.RemoveException{} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardHomeLocal.java deleted file mode 100644 index 1e20caf818..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardHomeLocal.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.titan.customer; - -import javax.ejb.CreateException; -import javax.ejb.FinderException; -import java.util.Collection; -import java.util.Date; - -// CreditCard EJB's local home interface -public interface CreditCardHomeLocal extends javax.ejb.EJBLocalHome { - - public CreditCardLocal create(Date exp, String numb, String name, String org) - throws javax.ejb.CreateException; - - public CreditCardLocal findByPrimaryKey(Object primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllCreditCards() throws FinderException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardLocal.java deleted file mode 100644 index 0311d0b6a6..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CreditCardLocal.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.titan.customer; - -import java.util.Date; - -// Credit Card EJB's local interface -public interface CreditCardLocal extends javax.ejb.EJBLocalObject { - - public Date getExpirationDate(); - public void setExpirationDate(Date date); - public String getNumber(); - public void setNumber(String number); - public String getNameOnCard(); - public void setNameOnCard(String name); - public String getCreditOrganization(); - public void setCreditOrganization(String org); - - public CustomerLocal getCustomer(); - public void setCustomer(CustomerLocal cust); - -} - diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerBean.java deleted file mode 100644 index df280a5207..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerBean.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.titan.customer; - -import com.titan.phone.*; -import com.titan.address.AddressLocal; -import com.titan.address.AddressHomeLocal; - -import javax.naming.InitialContext; -import javax.ejb.EJBException; -import javax.ejb.EntityContext; -import javax.ejb.CreateException; -import javax.naming.NamingException; -import java.util.Date; -import java.util.Collection; -import java.util.Iterator; -import java.util.Vector; - -public abstract class CustomerBean implements javax.ejb.EntityBean { - - public Integer ejbCreate(Integer id) throws javax.ejb.CreateException{ - this.setId(id); - return null; - } - - public void ejbPostCreate(Integer id){ - } - - - // business methods - - public Name getName() { - Name name = new Name(getLastName(),getFirstName()); - return name; - } - public void setName(Name name) { - setLastName(name.getLastName()); - setFirstName(name.getFirstName()); - } - - public void setAddress(String street, String city, String state, String zip) - throws EJBException { - - AddressLocal addr = this.getHomeAddress( ); - - try { - - if (addr == null) { - // Customer doesn't have an address yet. Create a new one. - InitialContext cntx = new InitialContext( ); - AddressHomeLocal addrHome = - (AddressHomeLocal)cntx.lookup("java:comp/env/ejb/AddressHomeLocal"); - addr = addrHome.createAddress(street, city, state, zip); - this.setHomeAddress(addr); - } else { - // Customer already has an address. Change its fields - addr.setStreet(street); - addr.setCity(city); - addr.setState(state); - addr.setZip(zip); - } - } catch (NamingException ne) { - throw new EJBException(ne); - } catch (CreateException ce) { - throw new EJBException(ce); - } - } - - public void setAddress(AddressDO addrValue) throws CreateException, NamingException { - String street = addrValue.getStreet(); - String city = addrValue.getCity(); - String state = addrValue.getState(); - String zip = addrValue.getZip(); - - setAddress(street,city,state,zip); - } - - - public AddressDO getAddress() { - - AddressLocal addrLocal = this.getHomeAddress(); - if (addrLocal == null) return null; - String street = addrLocal.getStreet(); - String city = addrLocal.getCity(); - String state = addrLocal.getState(); - String zip = addrLocal.getZip(); - AddressDO addrValue = new AddressDO(street,city,state,zip); - return addrValue; - } - - public void addPhoneNumber(String number, byte type) - throws NamingException, CreateException { - InitialContext jndiEnc = new InitialContext( ); - PhoneHomeLocal phoneHome = (PhoneHomeLocal)(jndiEnc.lookup("java:comp/env/ejb/PhoneHomeLocal")); - - PhoneLocal phone = phoneHome.create(number,type); - Collection phoneNumbers = this.getPhoneNumbers( ); - phoneNumbers.add(phone); - } - - public void removePhoneNumber(byte typeToRemove) { - - Collection phoneNumbers = this.getPhoneNumbers( ); - Iterator iterator = phoneNumbers.iterator(); - - while(iterator.hasNext()){ - PhoneLocal phone = (PhoneLocal)iterator.next(); - if (phone.getType() == typeToRemove) { - phoneNumbers.remove(phone); - break; - } - - } - } - - public void updatePhoneNumber(String number, byte typeToUpdate) { - - - Collection phoneNumbers = this.getPhoneNumbers( ); - Iterator iterator = phoneNumbers.iterator(); - while(iterator.hasNext()){ - PhoneLocal phone = (PhoneLocal)iterator.next(); - if (phone.getType() == typeToUpdate) { - phone.setNumber(number); - break; - } - } - } - - public Vector getPhoneList() { - - Vector vv = new Vector(); - Collection phoneNumbers = this.getPhoneNumbers(); - - Iterator iterator = phoneNumbers.iterator(); - while(iterator.hasNext()) { - PhoneLocal phone = (PhoneLocal)iterator.next(); - String ss = "type = '" + phone.getType() + "', number = '" + phone.getNumber() + "'"; - vv.add(ss); - } - - return vv; - } - - - // persistent relationships - - public abstract AddressLocal getHomeAddress(); - public abstract void setHomeAddress(AddressLocal address); - - public abstract CreditCardLocal getCreditCard(); - public abstract void setCreditCard(CreditCardLocal card); - - public abstract java.util.Collection getPhoneNumbers( ); - public abstract void setPhoneNumbers(java.util.Collection phones); - - public abstract java.util.Collection getReservations(); - public abstract void setReservations(java.util.Collection reservations); - - - // abstract accessor methods - public abstract Integer getId(); - public abstract void setId(Integer id); - - public abstract String getLastName( ); - public abstract void setLastName(String lname); - - public abstract String getFirstName( ); - public abstract void setFirstName(String fname); - - public abstract boolean getHasGoodCredit(); - public abstract void setHasGoodCredit(boolean flag); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws javax.ejb.RemoveException {} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeLocal.java deleted file mode 100644 index ec021688a6..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeLocal.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.titan.customer; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.FinderException; -import java.util.Collection; -import com.titan.cruise.CruiseLocal; - -public interface CustomerHomeLocal extends javax.ejb.EJBLocalHome { - - public CustomerLocal create(Integer id) - throws CreateException; - public CustomerLocal findByPrimaryKey(Integer id) - throws FinderException; - - public Collection findAllCustomers() - throws FinderException; - - public Collection findByName(String lastName, String firstName) - throws FinderException; - - public CustomerLocal findByExactName(String lastName, String firstName) - throws FinderException; - - public Collection findByNameAndState(String lastName, String firstName, String state) - throws FinderException; - - public CustomerLocal findSmith90() - throws FinderException; - - public Collection findByGoodCredit() - throws FinderException; - - public Collection findByCity(String city, String state) - throws FinderException; - - public Collection findInHotStates() - throws FinderException; - - public Collection findWithNoReservations() - throws FinderException; - - public Collection findOnCruise(CruiseLocal cruise) - throws FinderException; - - public Collection findByState(String state) - throws FinderException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeRemote.java deleted file mode 100644 index d240be88ab..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerHomeRemote.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.titan.customer; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.FinderException; - -public interface CustomerHomeRemote extends javax.ejb.EJBHome { - - public CustomerRemote create(Integer id) throws CreateException, RemoteException; - public CustomerRemote findByPrimaryKey(Integer id) throws FinderException, RemoteException; - -} - diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerLocal.java deleted file mode 100644 index 8238a42dd7..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerLocal.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.titan.customer; - -import com.titan.address.*; - -import javax.ejb.CreateException; -import javax.naming.NamingException; -import java.util.Date; -import java.util.Vector; -import java.util.Collection; - -public interface CustomerLocal extends javax.ejb.EJBLocalObject { - - public Name getName(); - public void setName(Name name); - - public boolean getHasGoodCredit(); - public void setHasGoodCredit(boolean flag); - - public void addPhoneNumber(String number, byte type) - throws NamingException, CreateException; - public void removePhoneNumber(byte typeToRemove); - public void updatePhoneNumber(String number, byte typeToUpdate); - - public Vector getPhoneList(); - - public AddressLocal getHomeAddress(); - public void setHomeAddress(AddressLocal address); - - public CreditCardLocal getCreditCard(); - public void setCreditCard(CreditCardLocal card); - - public Collection getPhoneNumbers( ); - public void setPhoneNumbers(Collection phones); - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerRemote.java deleted file mode 100644 index c35c1193a7..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/CustomerRemote.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.titan.customer; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.naming.NamingException; - -public interface CustomerRemote extends javax.ejb.EJBObject { - - public void setAddress(String street, String city, String state, String zip) - throws RemoteException, CreateException, NamingException; - - public void setAddress(AddressDO address) - throws RemoteException, CreateException, NamingException; - - public AddressDO getAddress() throws RemoteException; - - public Name getName() throws RemoteException; - public void setName(Name name) throws RemoteException; - - public boolean getHasGoodCredit() throws RemoteException; - public void setHasGoodCredit(boolean flag) throws RemoteException; - // public String getHasGoodCredit() throws RemoteException; - // public void setHasGoodCredit(String flag) throws RemoteException; - // public double getHasGoodCredit() throws RemoteException; - //public void setHasGoodCredit(double flag) throws RemoteException; -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/Name.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/Name.java deleted file mode 100644 index 33e856a461..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/customer/Name.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.titan.customer; - -public class Name implements java.io.Serializable { - - private String lastName; - private String firstName; - - public Name(String lname, String fname){ - lastName = lname; - firstName = fname; - } - public String getLastName() { - return lastName; - } - public String getFirstName() { - return firstName; - } -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneBean.java deleted file mode 100644 index 7b40bead92..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.titan.phone; - -import javax.ejb.EntityContext; -import java.util.Date; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -public abstract class PhoneBean implements javax.ejb.EntityBean { - - public Object ejbCreate(String number, byte type) throws javax.ejb.CreateException { - setNumber(number); - setType(type); - - return null; - } - - public void ejbPostCreate(String number, byte type) { - } - - // persistent fields - public abstract String getNumber(); - public abstract void setNumber(String number); - public abstract byte getType(); - public abstract void setType(byte type); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws javax.ejb.RemoveException{} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneHomeLocal.java deleted file mode 100644 index 1bbae830ef..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneHomeLocal.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.titan.phone; - -import javax.ejb.CreateException; -import javax.ejb.FinderException; -import java.util.Collection; - -// Phone EJB's local home interface -public interface PhoneHomeLocal extends javax.ejb.EJBLocalHome { - - public PhoneLocal create(String number, byte type) - throws javax.ejb.CreateException; - - public PhoneLocal findByPrimaryKey(Object primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllPhones() - throws javax.ejb.FinderException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneLocal.java deleted file mode 100644 index 59f03b92d0..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/phone/PhoneLocal.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.titan.phone; - -// Phone EJB's local interface -public interface PhoneLocal extends javax.ejb.EJBLocalObject { - - public String getNumber(); - public void setNumber(String number); - public byte getType(); - public void setType(byte type); - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationBean.java deleted file mode 100644 index 46b011bbd0..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationBean.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.titan.reservation; - -import com.titan.cruise.*; - -import javax.ejb.CreateException; -import javax.ejb.RemoveException; -import javax.ejb.EntityContext; -import java.util.Date; -import java.util.Set; -import java.util.Collection; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -public abstract class ReservationBean implements javax.ejb.EntityBean { - public Object ejbCreate(CruiseLocal cruise, Collection customers) throws CreateException { - return null; - } - - public void ejbPostCreate(CruiseLocal cruise, Collection customers) { - setCruise(cruise); - Collection myCustomers = this.getCustomers(); - myCustomers.addAll(customers); - } - - // relationship fields - - public abstract CruiseLocal getCruise(); - public abstract void setCruise(CruiseLocal cruise); - - public abstract Set getCabins( ); - public abstract void setCabins(Set cabins); - - public abstract Set getCustomers( ); - public abstract void setCustomers(Set customers); - - // persistent fields - public abstract Date getDate(); - public abstract void setDate(Date date); - public abstract double getAmountPaid(); - public abstract void setAmountPaid(double amount); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws RemoveException {} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationHomeLocal.java deleted file mode 100644 index 9c649f0081..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationHomeLocal.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.titan.reservation; - -import com.titan.cruise.*; - -import java.util.Collection; -import javax.ejb.CreateException; -import javax.ejb.FinderException; - -// Reservation EJB's local home interface -public interface ReservationHomeLocal extends javax.ejb.EJBLocalHome { - - public ReservationLocal create(CruiseLocal cruise, Collection customers) - throws javax.ejb.CreateException; - - public ReservationLocal findByPrimaryKey(Object primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllReservations() throws FinderException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationLocal.java deleted file mode 100644 index 9a4442856c..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/reservation/ReservationLocal.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.titan.reservation; - -import com.titan.cruise.*; - -import java.util.Date; -import java.util.Set; - -// Reservation EJB's local interface -public interface ReservationLocal extends javax.ejb.EJBLocalObject { - - public Date getDate(); - public void setDate(Date date); - public double getAmountPaid(); - public void setAmountPaid(double amount); - - public CruiseLocal getCruise(); - public void setCruise(CruiseLocal cruise); - - public Set getCabins( ); - public void setCabins(Set customers); - - public Set getCustomers( ); - public void setCustomers(Set customers); - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipBean.java deleted file mode 100644 index b3923d703c..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipBean.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.titan.ship; - -import javax.ejb.EntityContext; -import javax.ejb.CreateException; -import javax.ejb.RemoveException; - -public abstract class ShipBean implements javax.ejb.EntityBean { - - public Integer ejbCreate(Integer primaryKey, String name, double tonnage) throws CreateException { - setId(primaryKey); - setName(name); - setTonnage(tonnage); - return null; - } - - public void ejbPostCreate(Integer primaryKey, String name, double tonnage) { - } - - // persistent fields - - public abstract void setId(Integer id); - public abstract Integer getId(); - public abstract void setName(String name); - public abstract String getName( ); - public abstract void setTonnage(double tonnage); - public abstract double getTonnage( ); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws RemoveException {} - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipHomeLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipHomeLocal.java deleted file mode 100644 index 80028c831f..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipHomeLocal.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.titan.ship; - -import javax.ejb.CreateException; -import javax.ejb.FinderException; -import java.util.Collection; - -// Ship EJB's local home interface -public interface ShipHomeLocal extends javax.ejb.EJBLocalHome { - - public ShipLocal create(Integer primaryKey, String name, double tonnage) - throws javax.ejb.CreateException; - - public ShipLocal findByPrimaryKey(Object primaryKey) - throws javax.ejb.FinderException; - - public Collection findAllShips() - throws FinderException; - - public Collection findByTonnage(Double tonnage) - throws javax.ejb.FinderException; - - public Collection findByTonnage(Double tonnage1, Double tonnage2) - throws javax.ejb.FinderException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipLocal.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipLocal.java deleted file mode 100644 index 539b05b1d3..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/ship/ShipLocal.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.titan.ship; - -// Ship EJB's local interface -public interface ShipLocal extends javax.ejb.EJBLocalObject { - - public Integer getId(); - public void setId(Integer id); - public String getName(); - public void setName(String name); - public double getTonnage(); - public void setTonnage(double tonnage); - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentBean.java deleted file mode 100644 index e33e41900f..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.titan.travelagent; - -import com.titan.cabin.CabinRemote; -import com.titan.cabin.CabinHomeRemote; -import java.rmi.RemoteException; -import javax.naming.InitialContext; -import javax.naming.Context; -import javax.ejb.EJBException; -import java.util.Properties; -import java.util.Vector; - -public class RTravelAgentBean implements javax.ejb.SessionBean { - - public void ejbCreate() throws javax.ejb.CreateException { - // Do nothing. - } - - public String [] listCabins(int shipID, int bedCount) { - - try { - - javax.naming.Context jndiContext = new InitialContext(); - Object obj = - jndiContext.lookup("java:comp/env/ejb/CabinHomeRemote"); - - - CabinHomeRemote home = (CabinHomeRemote) - javax.rmi.PortableRemoteObject.narrow(obj,CabinHomeRemote.class); - - Vector vect = new Vector(); - for (int i = 1; ; i++) { - Integer pk = new Integer(i); - CabinRemote cabin = null; - try { - cabin = home.findByPrimaryKey(pk); - } catch(javax.ejb.FinderException fe) { - System.out.println(">>>> Caught exception: "+fe.getMessage()+" for pk="+i); - break; - } - - // Check to see if the bed count and ship ID match - if (cabin != null && - cabin.getShipId() == shipID && - cabin.getBedCount() == bedCount) { - String details = i+","+cabin.getName()+","+cabin.getDeckLevel(); - vect.addElement(details); - } - } - - String [] list = new String[vect.size()]; - vect.copyInto(list); - return list; - - } catch(Exception e) { - throw new EJBException(e); - } - } - - public void ejbRemove() {} - public void ejbActivate(){} - public void ejbPassivate(){} - public void setSessionContext(javax.ejb.SessionContext cntx){} -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentHomeRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentHomeRemote.java deleted file mode 100644 index 398027d8bf..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentHomeRemote.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.titan.travelagent; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; - -public interface RTravelAgentHomeRemote extends javax.ejb.EJBHome { - - public RTravelAgentRemote create() - throws RemoteException, CreateException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentRemote.java deleted file mode 100644 index d374852dce..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/RTravelAgentRemote.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.titan.travelagent; - -import java.rmi.RemoteException; -import javax.ejb.FinderException; - -public interface RTravelAgentRemote extends javax.ejb.EJBObject { - - // String elements follow the format "id, name, deck level" - public String [] listCabins(int shipID, int bedCount) - throws RemoteException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentBean.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentBean.java deleted file mode 100644 index 429d50148b..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.titan.travelagent; - -import com.titan.cabin.CabinLocal; -import com.titan.cabin.CabinHomeLocal; -import java.rmi.RemoteException; -import javax.naming.InitialContext; -import javax.naming.Context; -import javax.ejb.EJBException; -import java.util.Properties; -import java.util.Vector; - -public class TravelAgentBean implements javax.ejb.SessionBean { - - public void ejbCreate() throws javax.ejb.CreateException { - // Do nothing. - } - - public String [] listCabins(int shipID, int bedCount) { - - try { - - javax.naming.Context jndiContext = new InitialContext(); - Object obj = - jndiContext.lookup("java:comp/env/ejb/CabinHomeLocal"); - - - CabinHomeLocal home = (CabinHomeLocal) - javax.rmi.PortableRemoteObject.narrow(obj,CabinHomeLocal.class); - - Vector vect = new Vector(); - for (int i = 1; ; i++) { - Integer pk = new Integer(i); - CabinLocal cabin = null; - try { - cabin = home.findByPrimaryKey(pk); - } catch(javax.ejb.FinderException fe) { - System.out.println(">>>> Caught exception: "+fe.getMessage()+" for pk="+i); - break; - } - - // Check to see if the bed count and ship ID match - if (cabin != null && - // cabin.getShipId() == shipID && //getShipId only exist in Remote interface - cabin.getBedCount() == bedCount) { - String details = i+","+cabin.getName()+","+cabin.getDeckLevel(); - vect.addElement(details); - } - } - - String [] list = new String[vect.size()]; - vect.copyInto(list); - return list; - - } catch(Exception e) { - throw new EJBException(e); - } - } - - public void ejbRemove() {} - public void ejbActivate(){} - public void ejbPassivate(){} - public void setSessionContext(javax.ejb.SessionContext cntx){} -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentHomeRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentHomeRemote.java deleted file mode 100644 index 9ff3a8a764..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentHomeRemote.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.titan.travelagent; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; - -public interface TravelAgentHomeRemote extends javax.ejb.EJBHome { - - public TravelAgentRemote create() - throws RemoteException, CreateException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentRemote.java b/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentRemote.java deleted file mode 100644 index 4b41e145c3..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/com/titan/travelagent/TravelAgentRemote.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.titan.travelagent; - -import java.rmi.RemoteException; -import javax.ejb.FinderException; - -public interface TravelAgentRemote extends javax.ejb.EJBObject { - - // String elements follow the format "id, name, deck level" - public String [] listCabins(int shipID, int bedCount) - throws RemoteException; - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest.java b/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest.java deleted file mode 100644 index 0efa9b1d8c..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest.java +++ /dev/null @@ -1,410 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package servlets; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Calendar; -import java.util.Vector; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.titan.address.AddressHomeLocal; -import com.titan.address.AddressLocal; -import com.titan.customer.CreditCardHomeLocal; -import com.titan.customer.CreditCardLocal; -import com.titan.customer.CustomerHomeLocal; -import com.titan.customer.CustomerLocal; -import com.titan.customer.Name; -import com.titan.phone.PhoneLocal; - - - -/** - * This servlet is used to test O'Reilly examples - * @author JOnAS team - */ -public class ServletTest extends HttpServlet { - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request - * the client has made of the servlet - * @param response an HttpServletResponse object that contains the - * response the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException { - - boolean ok = true; - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - out.println(""); - out.println(""); - out.println(""); - out.println("O'Reilly Examples"); - out.println(""); - out.println(""); - out.println(""); - out.println("

    Examples 1:1 Relationships

    "); - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - out.println("

    ERROR: Cannot get initial context for JNDI: " + e + "

    "); - return; - } - - out.println("Back to Menu"); - - - out.println("

    Example showing CreditCard/Customer relationship

    "); - - out.println("

    (ie Setting reference in a one-to-one bidirectional relationship)

    "); - - // Connecting to CustomerHomeLocal and CreditCardHomeLocal thru JNDI - CustomerHomeLocal customerhome = null; - CreditCardHomeLocal cardhome = null; - AddressHomeLocal addresshome = null; - - try { - customerhome = (CustomerHomeLocal) - initialContext.lookup("java:comp/env/ejb/CustomerHomeLocal"); - cardhome = (CreditCardHomeLocal) - initialContext.lookup("java:comp/env/ejb/CreditCardHomeLocal"); - addresshome = (AddressHomeLocal) - initialContext.lookup("java:comp/env/ejb/AddressHomeLocal"); - } catch (Exception e) { - out.println("

    ERROR: Cannot lookup java:comp/env/ejb/XXHomeLocal: " - + e + "

    "); - return; - } - - out.println("

    Creating Customer 'Smith'.

    "); - Integer primaryKey = new Integer(71); - CustomerLocal customer = null; - try { - customer = customerhome.create(primaryKey); - } catch (javax.ejb.CreateException ex) { - out.println("

    Cannot create customer: " - + ex + "

    "); - return; - } - customer.setName(new Name("Smith", "John")); - - out.println("

    Creating CreditCard.

    "); - // set Credit Card info - Calendar now = Calendar.getInstance(); - CreditCardLocal card = null; - try { - card = cardhome.create(now.getTime(), "370000000000001", "John Smith", "O'Reilly"); - } catch (javax.ejb.CreateException ex) { - out.println("

    ERROR: Cannot create creditcard : " + ex + "

    "); - return; - } - - out.println("

    Linking CreditCard and Customer.

    "); - customer.setCreditCard(card); - - out.println("

    Testing both directions on relationship:

    "); - String cardname = customer.getCreditCard().getNameOnCard(); - out.println("customer.getCreditCard().getNameOnCard() = '" + cardname + "'
    "); - Name name = card.getCustomer().getName(); - String custfullname = name.getFirstName() + " " + name.getLastName(); - out.println("card.getCustomer().getName() = '" + custfullname + "'
    "); - if (!cardname.equals(custfullname)) { - out.println("

    ERROR: The name must be the same

    "); - ok = false; - } - out.println("

    Content of Tables:

    "); - try { - listCustomers(out, customerhome); - listCreditcards(out, cardhome); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - } - - out.println("

    Unlink the beans using CreditCard, test Customer side:

    "); - card.setCustomer(null); - CreditCardLocal newcardref = customer.getCreditCard(); - if (newcardref == null) { - out.print("

    Card is properly unlinked from customer bean

    "); - } else { - out.print("

    ERROR: Whoops, customer still thinks it has a card !

    "); - ok = false; - } - // relink to avoid side effect on further test - card.setCustomer(customer); - - - out.println("

    Example Showing Customer/Address Relationship

    "); - out.println("

    (ie Setting reference in a one-to-one unidirectional relationship)

    "); - - // Find Customer 71 - primaryKey = new Integer(71); - try { - customer = customerhome.findByPrimaryKey(primaryKey); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - - AddressLocal addr = customer.getHomeAddress(); - if (addr == null) { - out.println("

    Address reference is NULL, Creating one and setting in Customer:

    "); - try { - addr = addresshome.createAddress("333 North Washington", "Minneapolis", "MN", "55401"); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - customer.setHomeAddress(addr); - } - out.println("

    Address Info: " - + addr.getStreet() + ", " - + addr.getCity() + ", " - + addr.getState() + ", " - + addr.getZip() + "

    "); - // Modifying Address - - out.println("

    Modifying Address through address reference:

    "); - addr.setStreet("445 East Lake Street"); - addr.setCity("Wayzata"); - addr.setState("MN"); - addr.setZip("55432"); - out.println("

    Address Info: " - + addr.getStreet() + ", " - + addr.getCity() + ", " - + addr.getState() + ", " - + addr.getZip() + "

    "); - - out.print("

    Creating New Address and calling setHomeAddress():

    "); - AddressLocal addrold = addr; - try { - addr = addresshome.createAddress("700 Main Street", "St. Paul", "MN", "55302"); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - out.println("

    Address Info: " - + addr.getStreet() + ", " - + addr.getCity() + ", " - + addr.getState() + ", " - + addr.getZip() + "

    "); - customer.setHomeAddress(addr); - - // Note: Original Address remains in database, orphaned by setHomeAddress call.. - - - out.print("

    Retrieving Address reference from Customer via getHomeAddress():

    "); - addr = customer.getHomeAddress(); - out.print("

    Address Info: " - + addr.getStreet() + ", " - + addr.getCity() + ", " - + addr.getState() + ", " - + addr.getZip() + "

    "); - - out.print("

    Content of Tables:

    "); - try { - listCustomers(out, customerhome); - listAddress(out, addresshome); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - return; - } - - - out.println("

    Example Showing Customer/Phone Relationship

    "); - - // Display current phone numbers and types - out.println("

    Starting content of phone list:

    "); - - Vector vv = customer.getPhoneList(); - listPhones(out, vv); - - // add a new phone number - out.println("

    Adding a new type '1' phone number to Customer 'John Smith'.

    "); - try { - customer.addPhoneNumber("612-555-1212", (byte) 1); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - - out.println("

    New content of phone list for customer 'John Smith':

    "); - vv = customer.getPhoneList(); - listPhones(out, vv); - - // add a new phone number - out.println("

    Adding a new type '2' phone number to Customer 'John Smith'.

    "); - try { - customer.addPhoneNumber("800-333-3333", (byte) 2); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - out.println("

    New content of phone list for customer 'John Smith':

    "); - vv = customer.getPhoneList(); - listPhones(out, vv); - - // update a phone number - out.println("

    Updating type '1' phone numbers.

    "); - try { - customer.updatePhoneNumber("763-555-1212", (byte) 1); - } catch (Exception e) { - out.println("

    ERROR: Exception : " + e + "

    "); - return; - } - - out.println("

    New content of phone list for customer 'John Smith':

    "); - vv = customer.getPhoneList(); - listPhones(out, vv); - - // delete a phone number - out.print("

    Removing type '1' phone numbers from this Customer.

    "); - customer.removePhoneNumber((byte) 1); - - out.println("

    Final content of phone list:

    "); - vv = customer.getPhoneList(); - listPhones(out, vv); - // Note that the phone is still in the database, - // but it is no longer related to this customer bean - - // Remove newly created beans for clean - out.println("

    Remove newly created beans for cleaning.

    "); - try { - customer.remove(); - addrold.remove(); - } catch (Exception e) { - out.println("

    Exception : " + e + "

    "); - return; - } - - if (ok) { - out.println("

    Servlet is OK.

    "); - } - - out.println("Back to Menu"); - out.println(""); - out.println(""); - } - - private void listCustomers (PrintWriter out, CustomerHomeLocal chl) throws Exception { - out.println("

    Customers Table Content:

    "); - out.println("
      "); - java.util.Collection clc = chl.findAllCustomers(); - if (clc == null) { - out.println("
    • Customers table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CustomerLocal cl = (CustomerLocal) iterator.next(); - String name = cl.getName().getLastName(); - String number = cl.getCreditCard().getNumber(); - out.print("
    • customerLastName = '" + name + "', creditCardNumber = '" + number); - if (cl.getHomeAddress() != null) { - String city = cl.getHomeAddress().getCity(); - out.print("', city = '" + city); - } - out.println("'
    • "); - java.util.Collection phoneNumbers = cl.getPhoneNumbers(); - java.util.Iterator phiterator = phoneNumbers.iterator(); - out.println("
        "); - while (phiterator.hasNext()) { - PhoneLocal phone = (PhoneLocal) phiterator.next(); - out.println("
      • phoneType = '" + phone.getType() - + "', phoneNumber = '" + phone.getNumber() + "'
      • "); - } - out.println("
      "); - - } - } - out.println("
    "); - } - - private void listCreditcards (PrintWriter out, CreditCardHomeLocal cchl) throws Exception { - out.println("

    Creditcards Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllCreditCards(); - if (clc == null) { - out.println("
    • CreditCards table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CreditCardLocal ccl = (CreditCardLocal) iterator.next(); - String number = ccl.getNumber(); - String name = ccl.getNameOnCard(); - out.println("
    • creditCardNumber = '" + number - + "', nameOnCard = '" + name + "'
    • "); - } - } - out.println("
    "); - } - - private void listAddress (PrintWriter out, AddressHomeLocal cchl) throws Exception { - out.println("

    Addresses Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllAddress(); - if (clc == null) { - out.println("
    • Addresses table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - AddressLocal al = (AddressLocal) iterator.next(); - String city = al.getCity(); - String street = al.getStreet(); - out.println("
    • city = '" + city + "', street = '" + street + "'
    • "); - } - } - out.println("
    "); - } - - private void listPhones(PrintWriter out, Vector vv) { - out.println("
      "); - if (vv.size() == 0) { - out.println("
    • phones list is empty
    • "); - } else { - for (int jj = 0; jj < vv.size(); jj++) { - String ss = (String) (vv.get(jj)); - out.println("
    • " + ss + "
    • "); - } - } - out.println("
    "); - } - -} diff --git a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest2.java b/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest2.java deleted file mode 100644 index c6d8f96452..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest2.java +++ /dev/null @@ -1,857 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package servlets; - -import java.io.IOException; -import java.io.PrintWriter; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.transaction.UserTransaction; - -import com.titan.cabin.CabinHomeLocal; -import com.titan.cabin.CabinLocal; -import com.titan.cruise.CruiseHomeLocal; -import com.titan.cruise.CruiseLocal; -import com.titan.customer.CustomerHomeLocal; -import com.titan.customer.CustomerLocal; -import com.titan.customer.Name; -import com.titan.reservation.ReservationHomeLocal; -import com.titan.reservation.ReservationLocal; -import com.titan.ship.ShipHomeLocal; -import com.titan.ship.ShipLocal; - -/** - * This servlet is used to test O'Reilly examples - * @author JOnAS team - */ -public class ServletTest2 extends HttpServlet { - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request the - * client has made of the servlet - * @param response an HttpServletResponse object that contains the response - * the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - - boolean ok = true; - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - out.println("O'Reilly Examples (Suite)"); - out.println(""); - out.println(""); - out.println(""); - out.println("

    Example Showing Cruise/Ship and Cruise/Reservation Relationships

    "); - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - out.println("

    ERROR: Cannot get initial context for JNDI: " + e + "

    "); - return; - } - - // Connecting to ShipHomeLocal thru JNDI - ShipHomeLocal shiphome = null; - CruiseHomeLocal cruisehome = null; - ReservationHomeLocal reservationhome = null; - CustomerHomeLocal customerhome = null; - CabinHomeLocal cabinhome = null; - UserTransaction tran = null; - try { - shiphome = (ShipHomeLocal) initialContext.lookup("java:comp/env/ejb/ShipHomeLocal"); - cruisehome = (CruiseHomeLocal) initialContext.lookup("java:comp/env/ejb/CruiseHomeLocal"); - reservationhome = (ReservationHomeLocal) initialContext.lookup("java:comp/env/ejb/ReservationHomeLocal"); - customerhome = (CustomerHomeLocal) initialContext.lookup("java:comp/env/ejb/CustomerHomeLocal"); - cabinhome = (CabinHomeLocal) initialContext.lookup("java:comp/env/ejb/CabinHomeLocal"); - tran = (UserTransaction) initialContext.lookup("java:comp/UserTransaction"); - } catch (Exception e) { - out.println("

    ERROR: Cannot lookup java:comp/env/ejb/XXHomeLocal: " + e + "

    "); - return; - - } - - out.println("Back to Menu"); - - out.println("

    Example Showing Cruise/Ship Relationship (Fig 7-12)

    "); - out.println("

    (ie Sharing a bean reference in a Many-to-One Relationship)

    "); - - out.println("

    Creating Ships

    "); - // Create some Ship beans - manually set key - ShipLocal shipA = null; - ShipLocal shipB = null; - try { - shipA = shiphome.create(new Integer(1001), "Ship A", 30000.0); - shipB = shiphome.create(new Integer(1002), "Ship B", 40000.0); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - out.println("
      "); - out.println("
    • id = '" + shipA.getId() + "', name = '" + shipA.getName() + "', tonnage = '" - + shipA.getTonnage() + "'
    • "); - out.println("
    • id = '" + shipB.getId() + "', name=" + shipB.getName() + "', tonnage = '" + shipB.getTonnage() - + "
    • "); - out.println("
    "); - - out.println("

    Creating Cruises

    "); - // Create some Cruise beans - automatic key generation by CMP engine - // Link 1-3 to Ship A, 4-6 to Ship B - CruiseLocal[] cruises = new CruiseLocal[7]; - try { - cruises[1] = cruisehome.create("Cruise 1", shipA); - cruises[2] = cruisehome.create("Cruise 2", shipA); - cruises[3] = cruisehome.create("Cruise 3", shipA); - cruises[4] = cruisehome.create("Cruise 4", shipB); - cruises[5] = cruisehome.create("Cruise 5", shipB); - cruises[6] = cruisehome.create("Cruise 6", shipB); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - out.println("
      "); - for (int jj = 1; jj < 7; jj++) { - CruiseLocal cc = cruises[jj]; - out.println("
    • '" + cc.getName() + "' is using '" + cc.getShip().getName() + "'
    • "); - } - out.println("
    "); - - out.print("

    Changing 'Cruise 1' to use same ship as 'Cruise 4'

    "); - ShipLocal newship = cruises[4].getShip(); - cruises[1].setShip(newship); - out.println("
      "); - for (int jj = 1; jj < 7; jj++) { - CruiseLocal cc = cruises[jj]; - out.println("
    • '" + cc.getName() + "' is using '" + cc.getShip().getName() + "'
    • "); - } - out.println("
    "); - - out.println("

    Content of Tables

    "); - try { - listCruises(out, cruisehome); - listShips(out, shiphome); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - } - - out.println("

    Example Showing Cruise/Reservation Relationship Using set() (Fig 7-14)

    "); - out - .println("

    (ie Sharing an entire collection in a One-to-Many bidirectional Relationship Using set() )

    "); - out.println("

    Creating some Cruise beans

    "); - // Create some Cruise beans - leave ship reference empty since we don't - // care - CruiseLocal cruiseA = null; - CruiseLocal cruiseB = null; - try { - cruiseA = cruisehome.create("Cruise A", null); - cruiseB = cruisehome.create("Cruise B", null); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - } - out.println("
      "); - out.print("
    • name = '" + cruiseA.getName() + "'
    • "); - out.print("
    • name = '" + cruiseB.getName() + "'
    • "); - out.println("
    "); - - out.print("

    Creating Reservations

    "); - // Create some Reservation beans - automatic key generation by CMP - // engine - // Link 1-3 to Cruise A, 4-6 to Cruise B - ReservationLocal reservations[] = new ReservationLocal[7]; - Calendar date = Calendar.getInstance(); - date.set(2002, 10, 1); - // Leave the Customers collection null in the create() call, - // we don't care about it right now - try { - reservations[1] = reservationhome.create(cruiseA, null); - reservations[1].setDate(date.getTime()); - reservations[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[2] = reservationhome.create(cruiseA, null); - reservations[2].setDate(date.getTime()); - reservations[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[3] = reservationhome.create(cruiseA, null); - reservations[3].setDate(date.getTime()); - reservations[3].setAmountPaid(6000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[4] = reservationhome.create(cruiseB, null); - reservations[4].setDate(date.getTime()); - reservations[4].setAmountPaid(7000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[5] = reservationhome.create(cruiseB, null); - reservations[5].setDate(date.getTime()); - reservations[5].setAmountPaid(8000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[6] = reservationhome.create(cruiseB, null); - reservations[6].setDate(date.getTime()); - reservations[6].setAmountPaid(9000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - out.println("
      "); - DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); - for (int jj = 1; jj < 7; jj++) { - ReservationLocal rr = reservations[jj]; - CruiseLocal thiscruise = rr.getCruise(); - String cruisename = (thiscruise != null ? thiscruise.getName() : "No Cruise!"); - out.println("
    • reservationDate = '" + df.format(rr.getDate()) + "', amountPaid = '" + rr.getAmountPaid() - + "', for '" + cruisename + "'
    • "); - } - out.println("
    "); - - out.println("

    Testing CruiseB.setReservations(CruiseA.getReservations())

    "); - // show the effect of a simple "setReservations" on a cruise - Collection areservations = cruiseA.getReservations(); - cruiseB.setReservations(areservations); - // Report information on the 6 reservations - String[] cruisename = new String[7]; - out.println("
      "); - for (int jj = 1; jj < 7; jj++) { - ReservationLocal rr = reservations[jj]; - CruiseLocal thiscruise = rr.getCruise(); - cruisename[jj] = (thiscruise != null ? thiscruise.getName() : "No Cruise!"); - out.print("
    • reservationDate = '" + df.format(rr.getDate()) + "', amount paid = '" + rr.getAmountPaid() - + "', for '" + cruisename[jj] + "'
    • "); - } - out.println("
    "); - if (!cruisename[4].equals("No Cruise!") || !cruisename[5].equals("No Cruise!") - || !cruisename[6].equals("No Cruise!")) { - ok = false; - } - - out.print("

    Content of Tables

    "); - try { - listCruises(out, cruisehome); - listReservations(out, reservationhome); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - return; - } - - out.println("

    Example Showing Cruise/Reservation Relationship Using addAll(..) (Fig 7-15)

    "); - out.print("

    (ie Using Collection.addAll() in a One-to-Many bidirectional relationship)

    "); - // Show how to combine reservations using Collection methods - // Operations such as this must be done in a transaction, usually done - // within a - // stateless session EJB using declarative transactions rather than - // manually like this - - date.set(2002, 10, 1); - // Remove previous reservation - for (int jj = 1; jj < 7; jj++) { - try { - reservations[jj].remove(); - } catch (Exception ex) { - out.println("

    ERROR: exception caught = " + ex + "

    "); - } - } - // Reinit the reservation as before the previous test - try { - reservations[1] = reservationhome.create(cruiseA, null); - reservations[1].setDate(date.getTime()); - reservations[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[2] = reservationhome.create(cruiseA, null); - reservations[2].setDate(date.getTime()); - reservations[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[3] = reservationhome.create(cruiseA, null); - reservations[3].setDate(date.getTime()); - reservations[3].setAmountPaid(6000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[4] = reservationhome.create(cruiseB, null); - reservations[4].setDate(date.getTime()); - reservations[4].setAmountPaid(7000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[5] = reservationhome.create(cruiseB, null); - reservations[5].setDate(date.getTime()); - reservations[5].setAmountPaid(8000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[6] = reservationhome.create(cruiseB, null); - reservations[6].setDate(date.getTime()); - reservations[6].setAmountPaid(9000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - - Collection breservations = null; - try { - tran.begin(); - areservations = cruiseA.getReservations(); - breservations = cruiseB.getReservations(); - breservations.addAll(areservations); - tran.commit(); - } catch (Exception e) { - e.printStackTrace(); - try { - tran.rollback(); - } catch (Exception ex) { - ex.printStackTrace(); - return; - } - return; - } - // Report information on the 6 reservations - out.println("

      "); - for (int jj = 1; jj < 7; jj++) { - ReservationLocal rr = reservations[jj]; - CruiseLocal thiscruise = rr.getCruise(); - cruisename[jj] = (thiscruise != null ? thiscruise.getName() : "No Cruise!"); - out.print("
    • reservationDate = '" + df.format(rr.getDate()) + "', amount paid = '" + rr.getAmountPaid() - + "', for '" + cruisename[jj] + "'
    • "); - } - out.println("
    "); - - out.print("

    Contents of Tables

    "); - try { - listCruises(out, cruisehome); - listReservations(out, reservationhome); - } catch (Exception e) { - out.println("

    ERROR: exception caught = " + e + "

    "); - return; - } - - out.println("

    Example Showing Reservation/Customer Relationships (Fig 7-17)

    "); - out.print("

    (ie Using Collection.addAll() in a Many-to-Many bidirectional relationship)

    "); - - out.println("

    Using 'ShipA' and 'CruiseA'

    "); - cruiseA.setShip(shipA); - out.println("
      "); - out.println("
    • cruise.getName() = '" + cruiseA.getName() + "'
    • "); - out.println("
    • ship.getName() = '" + shipA.getName() + "'
    • "); - out.println("
    • cruise.getShip().getName() = '" + cruiseA.getShip().getName() + "'
    • "); - out.println("
    "); - - out.println("

    Creating two sets of customers, one with 1-3, and one with 4-6

    "); - // create two sets of customers, one with customers 1-3 and one with 4-6 - Set lowcustomers = new HashSet(); - Set highcustomers = new HashSet(); - CustomerLocal cust = null; - out.println("
      "); - for (int kk = 1; kk < 7; kk++) { - try { - cust = customerhome.create(new Integer(kk)); - } catch (Exception e) { - out.println("

      ERROR: exception caught = " + e + "

      "); - } - cust.setName(new Name("Customer " + kk, "mike")); - if (kk <= 3) { - lowcustomers.add(cust); - } else { - highcustomers.add(cust); - } - out.print("
    • customer '" + cust.getName().getLastName() + "' created
    • "); - } - out.println("
    "); - // Remove previous reservation - for (int jj = 1; jj < 7; jj++) { - try { - reservations[jj].remove(); - } catch (Exception ex) { - out.println("

    ERROR: exception caught = " + ex + "

    "); - } - } - - out.print("

    Creating Reservations '1' and '2', each with 3 customers

    "); - try { - reservations[1] = reservationhome.create(cruiseA, lowcustomers); - reservations[1].setDate(date.getTime()); - reservations[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations[2] = reservationhome.create(cruiseA, highcustomers); - reservations[2].setDate(date.getTime()); - reservations[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - // report information on the reservations - reportReservations(out, reservations, 2, tran); - - out.print("

    Performing customers_a.addAll(customers_b) test

    "); - // Finally we can perform the test shown in Figure 7-17 - // Operations such as this must be done in a transaction, usually done - // within a - // stateless session EJB using declarative transactions rather than - // manually like this - try { - tran.begin(); - Set customers_a = reservations[1].getCustomers(); - Set customers_b = reservations[2].getCustomers(); - customers_a.addAll(customers_b); - tran.commit(); - } catch (Exception e) { - e.printStackTrace(); - try { - tran.rollback(); - } catch (Exception ex) { - out.println("

    ERROR: Exception caught " + ex + "

    "); - return; - } - } - // report information on the reservations - reportReservations(out, reservations, 2, tran); - - out.print("

    Sharing an entire collection in a Many-to-Many bidirectional relationship (Fig 7-18)

    "); - out.println("

    Creating four sets of customers 1-3, 2-4, 3-5, 4-6

    "); - // create four sets of customers, 1-3, 2-4, 3-5, 4-6 - Set customers13 = new HashSet(); - Set customers24 = new HashSet(); - Set customers35 = new HashSet(); - Set customers46 = new HashSet(); - out.println("
      "); - for (int kk = 1; kk < 7; kk++) { - try { - cust = customerhome.create(new Integer(kk + 500)); - cust.setName(new Name("Customer_1 " + kk, "bill")); - } catch (Exception e) { - out.println("

      ERROR: exception caught = " + e + "

    "); - return; - } - if (kk <= 3) { - customers13.add(cust); - } - if (kk >= 2 && kk <= 4) { - customers24.add(cust); - } - if (kk >= 3 && kk <= 5) { - customers35.add(cust); - } - if (kk >= 4) { - customers46.add(cust); - } - out.print("
  • customer '" + cust.getName().getLastName() + "' created
  • "); - } - out.println(""); - - out.print("

    Creating Reservations 1-4 using three customers each

    "); - ReservationLocal reservations1[] = new ReservationLocal[5]; - try { - reservations1[1] = reservationhome.create(cruiseA, customers13); - reservations1[1].setDate(date.getTime()); - reservations1[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations1[2] = reservationhome.create(cruiseA, customers24); - reservations1[2].setDate(date.getTime()); - reservations1[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations1[3] = reservationhome.create(cruiseA, customers35); - reservations1[3].setDate(date.getTime()); - reservations1[3].setAmountPaid(6000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations1[4] = reservationhome.create(cruiseA, customers46); - reservations1[4].setDate(date.getTime()); - reservations1[4].setAmountPaid(7000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - reportReservations(out, reservations1, 4, tran); - - out.print("

    Performing reservationD.setCustomers(customersA) (Fig 7-18)

    "); - try { - tran.begin(); - Set customers_a = reservations1[1].getCustomers(); - reservations1[4].setCustomers(customers_a); - tran.commit(); - } catch (Exception e) { - e.printStackTrace(); - try { - tran.rollback(); - } catch (Exception ex) { - out.println("

    ERROR: Exception caught " + ex + "

    "); - return; - } - } - reportReservations(out, reservations1, 4, tran); - - out.print("

    Example Showing Reservation/Cabin Relationships (Fig 7-20)

    "); - out.print("

    (ie Removing beans in a Many-to-Many unidirectional relationship)

    "); - out.print("

    Creating Cabins four sets of cabins, 1-3, 2-4, 3-5, 4-6

    "); - // create four sets of cabins, 1-3, 2-4, 3-5, 4-6 - Set cabins13 = new HashSet(); - Set cabins24 = new HashSet(); - Set cabins35 = new HashSet(); - Set cabins46 = new HashSet(); - CabinLocal cabin = null; - out.println("
      "); - for (int kk = 1; kk < 7; kk++) { - try { - cabin = cabinhome.create(new Integer(kk)); - } catch (Exception e) { - out.println("

      ERROR: exception caught = " + e + "

    "); - } - cabin.setName("Cabin " + kk); - if (kk <= 3) { - cabins13.add(cabin); - } - if (kk >= 2 && kk <= 4) { - cabins24.add(cabin); - } - if (kk >= 3 && kk <= 5) { - cabins35.add(cabin); - } - if (kk >= 4) { - cabins46.add(cabin); - } - out.print("
  • cabin '" + cabin.getName() + "' created
  • "); - } - out.println(""); - - out.print("

    Creating Reservations 1-4 using three cabins each

    "); - ReservationLocal reservations2[] = new ReservationLocal[5]; - // leave Customers collection null, we dont care about it for this - // example - try { - reservations2[1] = reservationhome.create(cruiseA, null); - reservations2[1].setCabins(cabins13); - reservations2[1].setDate(date.getTime()); - reservations2[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations2[2] = reservationhome.create(cruiseA, null); - reservations2[2].setCabins(cabins24); - reservations2[2].setDate(date.getTime()); - reservations2[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations2[3] = reservationhome.create(cruiseA, null); - reservations2[3].setCabins(cabins35); - reservations2[3].setDate(date.getTime()); - reservations2[3].setAmountPaid(6000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations2[4] = reservationhome.create(cruiseA, null); - reservations2[4].setCabins(cabins46); - reservations2[4].setDate(date.getTime()); - reservations2[4].setAmountPaid(7000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - reportReservations(out, reservations2, 4, tran); - - out.print("

    Performing cabins_a collection iterator.remove() test

    "); - // Finally we can perform the test shown in Figure 7-20 - try { - tran.begin(); - Set cabins_a = reservations2[1].getCabins(); - Iterator iterator = cabins_a.iterator(); - out.print("
      "); - while (iterator.hasNext()) { - CabinLocal cc = (CabinLocal) iterator.next(); - out.print("
    • Removing '" + cc.getName() + "' from 'cabins_a'" + "
    • "); - iterator.remove(); - } - out.print("
    "); - tran.commit(); - } catch (Exception e) { - try { - tran.rollback(); - } catch (Exception ex) { - out.println("

    ERROR: Exception caught " + ex + "

    "); - return; - } - } - reportReservations(out, reservations2, 4, tran); - - out.print("

    Example Showing Reservation/Cabin Relationships

    "); - - out.print("

    Creating Cabins in ShipA

    "); - CabinLocal cabins[] = new CabinLocal[4]; - try { - cabins[1] = cabinhome.create(new Integer(10)); - cabins[1].setShip(shipA); - cabins[1].setDeckLevel(1); - cabins[1].setName("Minnesota Suite"); - cabins[1].setBedCount(2); - - cabins[2] = cabinhome.create(new Integer(11)); - cabins[2].setShip(shipA); - cabins[2].setDeckLevel(2); - cabins[2].setName("California Suite"); - cabins[2].setBedCount(2); - - cabins[3] = cabinhome.create(new Integer(12)); - cabins[3].setShip(shipA); - cabins[3].setDeckLevel(3); - cabins[3].setName("Missouri Suite"); - cabins[3].setBedCount(2); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - out.println("
      "); - for (int jj = 1; jj < 4; jj++) { - CabinLocal cc = cabins[jj]; - out.print("
    • cabin '" + cc.getName() + "' is on ship '" + cc.getShip().getName() + "'
    • "); - } - out.println("
    "); - - out.print("

    Creating Reservations

    "); - ReservationLocal reservations3[] = new ReservationLocal[3]; - try { - reservations3[1] = reservationhome.create(cruiseA, null); - reservations3[1].setDate(date.getTime()); - reservations3[1].setAmountPaid(4000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - - reservations3[2] = reservationhome.create(cruiseA, null); - reservations3[2].setDate(date.getTime()); - reservations3[2].setAmountPaid(5000.0); - date.add(Calendar.DAY_OF_MONTH, 7); - } catch (Exception e) { - out.println("

    ERROR: Exception caught " + e + "

    "); - return; - } - reportReservations(out, reservations3, 2, tran); - - out.print("

    Creating Links from Reservations to Cabins

    "); - Set cabins1 = new HashSet(2); - cabins1.add(cabins[1]); - cabins1.add(cabins[2]); - Set cabins2 = new HashSet(2); - cabins2.add(cabins[2]); - cabins2.add(cabins[3]); - reservations3[1].setCabins(cabins1); - reservations3[2].setCabins(cabins2); - reportReservations(out, reservations3, 2, tran); - - out.print("

    Testing reservation_b.setCabins(reservation_a.getCabins())

    "); - try { - tran.begin(); - Set cabins_a = reservations3[1].getCabins(); - reservations3[2].setCabins(cabins_a); - tran.commit(); - } catch (Exception e) { - try { - tran.rollback(); - } catch (Exception ex) { - out.println("

    ERROR: Exception caught " + ex + "

    "); - return; - } - } - reportReservations(out, reservations3, 2, tran); - - out.print("

    Cleaning all tables

    "); - try { - Collection clc = customerhome.findAllCustomers(); - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CustomerLocal cl = (CustomerLocal) iterator.next(); - cl.remove(); - } - clc = shiphome.findAllShips(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - ShipLocal sl = (ShipLocal) iterator.next(); - sl.remove(); - } - clc = cruisehome.findAllCruises(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - CruiseLocal cl = (CruiseLocal) iterator.next(); - cl.remove(); - } - - clc = reservationhome.findAllReservations(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - ReservationLocal rl = (ReservationLocal) iterator.next(); - rl.remove(); - } - clc = cabinhome.findAllCabins(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - CabinLocal cl = (CabinLocal) iterator.next(); - cl.remove(); - } - - } catch (Exception ex) { - out.println("

    ERROR: during cleaning exception caught = " + ex + "

    "); - } - if (ok) { - out.println("

    Servlet is OK.

    "); - } - out.println("Back to Menu"); - out.println(""); - out.println(""); - } - - private void listCruises(PrintWriter out, CruiseHomeLocal chl) throws Exception { - out.println("

    Cruises Table Content:

    "); - out.println("
      "); - java.util.Collection clc = chl.findAllCruises(); - if (clc == null) { - out.println("
    • Cruises table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CruiseLocal cl = (CruiseLocal) iterator.next(); - String cname = cl.getName(); - String sname = (cl.getShip() != null ? cl.getShip().getName() : "No Ship!"); - out.println("
    • cruiseName = '" + cname + "', shipName = '" + sname + "'
    • "); - - } - } - out.println("
    "); - } - - private void listShips(PrintWriter out, ShipHomeLocal cchl) throws Exception { - out.println("

    Ships Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllShips(); - if (clc == null) { - out.println("
    • Ships table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - ShipLocal ccl = (ShipLocal) iterator.next(); - double tonnage = ccl.getTonnage(); - String name = ccl.getName(); - out.println("
    • shipName = '" + name + "', tonnage = '" + tonnage + "'
    • "); - } - } - out.println("
    "); - } - - private void listReservations(PrintWriter out, ReservationHomeLocal cchl) throws Exception { - out.println("

    Reservations Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllReservations(); - if (clc == null) { - out.println("
    • Reservations table is empty
    • "); - out.println("
    "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - ReservationLocal ccl = (ReservationLocal) iterator.next(); - Date date = ccl.getDate(); - out.println("
  • reservation date = '" + date + "'
  • "); - } - out.println(""); - } - } - - private void reportReservations(PrintWriter out, ReservationLocal reservations[], int nb, UserTransaction tran) { - DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); - // report information on the reservations - out.println("
      "); - for (int jj = 1; jj < nb + 1; jj++) { - ReservationLocal rr = reservations[jj]; - CruiseLocal thiscruise = rr.getCruise(); - String cruisename = (thiscruise != null ? thiscruise.getName() : "No Cruise!"); - // Operations such as this must be done in a transaction, usually - // done within a - // stateless session EJB using declarative transactions rather than - // manually like this - String customerinfo = ""; - CustomerLocal cust = null; - String cabininfo = ""; - try { - tran.begin(); - Set customerset = rr.getCustomers(); - Iterator iterator = customerset.iterator(); - while (iterator.hasNext()) { - cust = (CustomerLocal) iterator.next(); - customerinfo += cust.getName().getLastName() + " "; - } - Set cabinset = rr.getCabins(); - iterator = cabinset.iterator(); - while (iterator.hasNext()) { - CabinLocal cabin = (CabinLocal) iterator.next(); - cabininfo += cabin.getName() + " "; - } - tran.commit(); - } catch (Exception e) { - e.printStackTrace(); - try { - tran.rollback(); - } catch (Exception ex) { - out.println("

      ERROR: Exception caught " + ex + "

      "); - return; - } - } - out.print("
    • reservationDate = '" + df.format(rr.getDate()) + "', amountPaid = '" + rr.getAmountPaid() - + "', for '" + cruisename + "' with :
    • "); - out.print("
        "); - if (!customerinfo.equals("")) { - out.print("
      • customers: " + customerinfo); - } - if (!cabininfo.equals("")) { - out.print("
      • cabins: " + cabininfo + "
      • "); - } - out.print("
      "); - } - out.println("
    "); - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest3.java b/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest3.java deleted file mode 100644 index 661cf4eae4..0000000000 --- a/jonas_tests/examples/base/examples/cmp2/src/servlets/ServletTest3.java +++ /dev/null @@ -1,777 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package servlets; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.Vector; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.titan.address.AddressHomeLocal; -import com.titan.address.AddressLocal; -import com.titan.cabin.CabinHomeLocal; -import com.titan.cabin.CabinLocal; -import com.titan.cruise.CruiseHomeLocal; -import com.titan.cruise.CruiseLocal; -import com.titan.customer.CreditCardHomeLocal; -import com.titan.customer.CreditCardLocal; -import com.titan.customer.CustomerHomeLocal; -import com.titan.customer.CustomerLocal; -import com.titan.customer.Name; -import com.titan.phone.PhoneHomeLocal; -import com.titan.reservation.ReservationHomeLocal; -import com.titan.reservation.ReservationLocal; -import com.titan.ship.ShipHomeLocal; -import com.titan.ship.ShipLocal; - -/** - * This servlet is used to test O'Reilly examples - * @author JOnAS team - */ -public class ServletTest3 extends HttpServlet { - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request the - * client has made of the servlet - * @param response an HttpServletResponse object that contains the response - * the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - - boolean ok = true; - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - out.println(""); - out.println(""); - out.println(""); - out.println("O'Reilly Examples"); - out.println(""); - out.println(""); - out.println(""); - out.println("

    EJB QL Examples from Chapter 8

    "); - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - out.print("

    ERROR: Cannot get initial context for JNDI: " + e + "

    "); - return; - } - - out.println("Back to Menu"); - - // Connecting to CustomerHomeLocal and CreditCardHomeLocal thru JNDI - CustomerHomeLocal customerhome = null; - CreditCardHomeLocal cardhome = null; - AddressHomeLocal addresshome = null; - ShipHomeLocal shiphome = null; - CruiseHomeLocal cruisehome = null; - ReservationHomeLocal reservationhome = null; - CabinHomeLocal cabinhome = null; - PhoneHomeLocal phonehome = null; - try { - customerhome = (CustomerHomeLocal) initialContext.lookup("java:comp/env/ejb/CustomerHomeLocal"); - cardhome = (CreditCardHomeLocal) initialContext.lookup("java:comp/env/ejb/CreditCardHomeLocal"); - addresshome = (AddressHomeLocal) initialContext.lookup("java:comp/env/ejb/AddressHomeLocal"); - shiphome = (ShipHomeLocal) initialContext.lookup("java:comp/env/ejb/ShipHomeLocal"); - cruisehome = (CruiseHomeLocal) initialContext.lookup("java:comp/env/ejb/CruiseHomeLocal"); - reservationhome = (ReservationHomeLocal) initialContext.lookup("java:comp/env/ejb/ReservationHomeLocal"); - cabinhome = (CabinHomeLocal) initialContext.lookup("java:comp/env/ejb/CabinHomeLocal"); - phonehome = (PhoneHomeLocal) initialContext.lookup("java:comp/env/ejb/PhoneHomeLocal"); - } catch (Exception e) { - out.println("

    ERROR: Cannot lookup java:comp/env/ejb/XXHomeLocal: " + e + "

    "); - return; - } - - String cities[] = new String[6]; - cities[0] = "Minneapolis"; - cities[1] = "St. Paul"; - cities[2] = "Rochester"; - cities[3] = "Winona"; - cities[4] = "Wayzata"; - cities[5] = "Eagan"; - - out.println("

    Example showing Sample EJB-QL

    "); - - out.print("

    Creating a Ship and Cruise

    "); - ShipLocal shipA = null; - CruiseLocal cruiseA = null; - try { - shipA = shiphome.create(new Integer(10772), "Ship A", 30000.0); - cruiseA = cruisehome.create("Cruise A", shipA); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - out.println("
      "); - out.println("
    • cruise.getName() = '" + cruiseA.getName() + "'
    • "); - out.println("
    • ship.getName() = '" + shipA.getName() + "'
    • "); - out.println("
    • cruise.getShip().getName() = '" + cruiseA.getShip().getName() + "'
    • "); - out.println("
    "); - - out.print("

    Creating Ship Beans with Various Tonnage Values

    "); - out.print("
      "); - for (int jj = 1; jj <= 10; jj++) { - try { - ShipLocal ship = shiphome.create(new Integer(jj), "Ship " + jj, 30000.0 + (10000.0 * jj)); - printShip(out, ship); - } catch (Exception ex) { - ok = false; - out.print("

      ERROR: Exception caught : " + ex + "

      "); - } - - } - out.print("
    "); - - out.print("

    Finding Ships with Exactly 100K Tonnage

    "); - out.print("

    SELECT OBJECT(s) FROM JE2_Ship AS s WHERE s.tonnage = ?1

    "); - Collection ships100k = null; - try { - ships100k = shiphome.findByTonnage(new Double(100000.0)); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - out.print("

    Number of ships = " + ships100k.size() + "
    Expected = 1 ships

    "); - if (ships100k.size() != 1) { - ok = false; - } - Iterator iterator = ships100k.iterator(); - out.print("
      "); - while (iterator.hasNext()) { - ShipLocal ship = (ShipLocal) (iterator.next()); - printShip(out, ship); - } - out.print("
    "); - - out.print("

    Finding Ships with Tonnage between 50K and 110K

    "); - out.print("

    SELECT OBJECT(s) FROM JE2_Ship AS s WHERE s.tonnage BETWEEN ?1 AND ?2

    "); - Collection ships50110k = null; - try { - ships50110k = shiphome.findByTonnage(new Double(50000.0), new Double(110000.0)); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - out.print("

    Number of ships = " + ships50110k.size() + "
    Expected = 7 ships

    "); - if (ships50110k.size() != 7) { - ok = false; - } - iterator = ships50110k.iterator(); - out.print("
      "); - while (iterator.hasNext()) { - ShipLocal ship = (ShipLocal) (iterator.next()); - printShip(out, ship); - } - out.print("
    "); - - // creating cruise for future use - cruiseA = null; - CruiseLocal cruiseB = null; - try { - ShipLocal ship1 = shiphome.findByPrimaryKey(new Integer(1)); - cruiseA = cruisehome.create("Alaska Cruise", ship1); - cruiseB = cruisehome.create("Bohemian Cruise", ship1); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - out.println("

    Creating Customers

    "); - for (int kk = 80; kk <= 99; kk++) { - CustomerLocal customer = null; - AddressLocal addr = null; - try { - customer = customerhome.create(new Integer(kk)); - customer.setName(new Name("Smith" + kk, "John")); - customer.addPhoneNumber("612-555-12" + kk, (byte) 1); - addr = addresshome.createAddress("10" + kk + " Elm Street", cities[(kk - 80) % 6], (kk % 2 == 0 ? "MN" - : "CA"), "5540" + (kk % 5 + 1)); - } catch (Exception e) { - ok = false; - out.println("

    ERROR: exception caught = " + e + "

    "); - } - customer.setHomeAddress(addr); - customer.setHasGoodCredit((kk % 4 == 0)); - //printCustomer(out, customer, addr); - } - - // Creating Customers 1-6, each with 2 reservations for 2 cabins - Calendar date = Calendar.getInstance(); - date.set(2002, 10, 1); - try { - - for (int kk = 201; kk < 207; kk++) { - Collection customers = new ArrayList(); - CustomerLocal cust = customerhome.create(new Integer(kk)); - cust.setName(new Name("Customer " + kk, "Mike")); - cust.setHasGoodCredit((kk % 2 == 0)); // odds are bums - AddressLocal addr = addresshome.createAddress("50" + kk + " Main Street", "Minneapolis", "MN", "5510" - + kk); - cust.setHomeAddress(addr); - //out.print("

  • Customer name= - // "+cust.getName().getLastName()+"
  • "); - customers.add(cust); // put this single customer in the - // collection - - //printCustomer(out, cust,addr); - - Collection reservations = new ArrayList(); - - for (int jj = 0; jj < 2; jj++) { - - ReservationLocal reservation = reservationhome.create(cruiseA, customers); - reservation.setDate(date.getTime()); - reservation.setAmountPaid(1000 * kk + 100 * jj + 2000); - date.add(Calendar.DAY_OF_MONTH, 7); - - Set cabins = new HashSet(); - CabinLocal cabin = cabinhome.create(new Integer(1000 + kk * 100 + jj)); - cabin.setDeckLevel(kk - 200); - cabin.setName("Cabin " + kk + "0" + jj + "1"); - - cabins.add(cabin); - cabin = cabinhome.create(new Integer(1000 + kk * 100 + 10 + jj)); - cabin.setDeckLevel(kk - 200); - cabin.setName("Cabin " + kk + "0" + jj + "2"); - - cabins.add(cabin); - - reservation.setCabins(cabins); // this reservation has 2 - // cabins - //out.print("
      "); - //printReservation(out, reservation); - //out.print("
    "); - } - } - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - String fnames[] = new String[5]; - fnames[0] = "John"; - fnames[1] = "Paul"; - fnames[2] = "Ringo"; - fnames[3] = "Joe"; - fnames[4] = "Roger"; - - String[] lnames = new String[3]; - lnames[0] = "Smith"; - lnames[1] = "Johnson"; - lnames[2] = "Star"; - - // Creating Customers 50-69 - try { - for (int kk = 50; kk <= 69; kk++) { - CustomerLocal customer = customerhome.create(new Integer(kk)); - customer.setName(new Name(lnames[(kk - 50) % 3], fnames[(kk - 50) % 5])); - customer.addPhoneNumber("612-555-12" + kk, (byte) 1); - AddressLocal addr = addresshome.createAddress("10" + kk + " Elm Street", cities[(kk - 50) % 6], - (kk % 2 == 0 ? "MN" : "CA"), "5540" + (kk % 5 + 1)); - customer.setHomeAddress(addr); - customer.setHasGoodCredit((kk % 4 == 0)); - - //printCustomer(out, customer, addr); - - // Some customers will have reservations already on one of the - // two cruises.. - if (kk % 3 != 0) { - Collection customers = new ArrayList(); - customers.add(customer); // put this single customer in the - // collection - ReservationLocal reservation = reservationhome.create((kk % 3 == 1 ? cruiseA : cruiseB), customers); - reservation.setDate(date.getTime()); - reservation.setAmountPaid(10 * kk + 2000); - //out.print("
      "); - //printReservation(out, reservation); - //out.print("
    "); - - date.add(Calendar.DAY_OF_MONTH, 7); - } - } - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - // Creating Customers 100-109 - try { - for (int kk = 100; kk <= 109; kk++) { - CustomerLocal customer = customerhome.create(new Integer(kk)); - customer.setName(new Name("Lennon" + kk, "Paul")); - customer.addPhoneNumber("666-543-12" + kk, (byte) 1); - AddressLocal addr = addresshome.createAddress("10" + kk + " Abbey Road", cities[(kk - 100) % 6], - (kk % 2 == 0 ? "FL" : "WA"), "5540" + (kk % 5 + 1)); - - customer.setHomeAddress(addr); - customer.setHasGoodCredit((kk % 4 == 0)); - - //printCustomer(out, customer, addr); - } - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - try { - listCustomers(out, customerhome); - } catch (Exception e) { - ok = false; - out.println("

    ERROR: exception caught = " + e + "

    "); - } - - out.print("

    Finding Customer having name 'John Smith85'

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName = ?1 AND c.firstName = ?2

    "); - CustomerLocal customer85 = null; - try { - customer85 = customerhome.findByExactName("Smith85", "John"); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - AddressLocal addr85 = customer85.getHomeAddress(); - printCustomer(out, customer85, addr85); - - out.print("

    Finding Customer 'Smith90'

    "); - out.print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName = 'Smith90'

    "); - CustomerLocal customer90 = null; - try { - customer90 = customerhome.findSmith90(); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - AddressLocal addr90 = customer90.getHomeAddress(); - printCustomer(out, customer90, addr90); - - out.print("

    Finding Customers having GoodCredit

    "); - out.print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.hasGoodCredit = TRUE

    "); - Collection mplscustomers = null; - try { - mplscustomers = customerhome.findByGoodCredit(); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - iterator = mplscustomers.iterator(); - out.print("

    Number of customers = " + mplscustomers.size() + "
    Expected = 16 customers

    "); - if (mplscustomers.size() != 16) { - ok = false; - } - while (iterator.hasNext()) { - CustomerLocal customer = (CustomerLocal) (iterator.next()); - AddressLocal addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Finding Customers having City = 'Minneapolis' and State = 'MN'

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.homeAddress.city = ?1 AND c.homeAddress.state = ?2

    "); - try { - mplscustomers = customerhome.findByCity("Minneapolis", "MN"); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - out.print("

    Number of customers = " + mplscustomers.size() + "
    Expected = 14 customers

    "); - if (mplscustomers.size() != 14) { - ok = false; - } - iterator = mplscustomers.iterator(); - while (iterator.hasNext()) { - CustomerLocal customer = (CustomerLocal) (iterator.next()); - AddressLocal addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Cabins Table Content

    "); - try { - listCabins(out, cabinhome); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - out.print("

    Retrieve a collection of all cabins on deck '3'

    "); - out.print("

    SELECT OBJECT(c) FROM Cabin AS c WHERE c.deckLevel = ?1

    "); - Collection cabins = null; - try { - cabins = cabinhome.findAllOnDeckLevel(new Integer(3)); - out.print("

    Number of cabins = " + cabins.size() + "
    Expected = 4 cabins

    "); - Iterator iter = cabins.iterator(); - out.print("
      "); - while (iter.hasNext()) { - CabinLocal cabin = (CabinLocal) (iter.next()); - out.print("
    • cabin '" + cabin.getName() + "' on deck '" + cabin.getDeckLevel() + "'
    • "); - } - out.print("
    "); - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - - try { - out.print("

    Finding Customer having a name exactly matching 'Joe Star'

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName = ?1 AND c.firstName = ?2

    "); - CustomerLocal customer = customerhome.findByExactName("Star", "Joe"); - AddressLocal addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - Collection customers = null; - - out.print("

    Finding Customers having a name like 'Jo S' (no wildcards)

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2

    "); - - customers = customerhome.findByName("S", "Jo"); - iterator = customers.iterator(); - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - out.print("

    Number of customers = " + customers.size() + "
    Expected = 0 customers

    "); - if (customers.size() != 0) { - ok = false; - } - - out.print("

    Finding Customers having a name like 'Jo% S%' (with wildcards)

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2

    "); - customers = customerhome.findByName("S%", "Jo%"); - iterator = customers.iterator(); - out.print("

    Number of customers = " + customers.size() + "
    Expected = 26 customers

    "); - if (customers.size() != 26) { - ok = false; - } - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Finding Customers having a name like 'Jo% S%' and living in 'MN'

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c
    WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 AND c.homeAddress.state = ?3

    "); - customers = customerhome.findByNameAndState("S%", "Jo%", "MN"); - iterator = customers.iterator(); - out.print("

    Number of customers = " + customers.size() + "
    Expected = 13 customers

    "); - if (customers.size() != 13) { - ok = false; - } - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Finding Customers Living in Warm Climates

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.homeAddress.state IN ('FL','TX','AZ','CA')

    "); - customers = customerhome.findInHotStates(); - out.print("

    Number of customers = " + customers.size() + "
    Expected = 25 customers

    "); - if (customers.size() != 25) { - ok = false; - } - iterator = customers.iterator(); - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Finding Customers With No Reservation

    "); - out.print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.reservations IS EMPTY

    "); - customers = customerhome.findWithNoReservations(); - out.print("

    Number of customers = " + customers.size() + "
    Expected = 37 customers

    "); - if (customers.size() != 37) { - ok = false; - } - iterator = customers.iterator(); - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Finding Customers On Alaska Cruise

    "); - out - .print("

    SELECT OBJECT(c) FROM JE2_Customer AS cust, Cruise AS cr, IN (cr.reservations) AS res
    WHERE cr = ?1 AND cust MEMBER OF res.customers

    "); - CruiseLocal crA = cruisehome.findByName("Alaska Cruise"); - customers = customerhome.findOnCruise(cruiseA); - out.print("

    Number of customers = " + customers.size() + "
    Expected = 12 customers

    "); - if (customers.size() != 12) { - ok = false; - } - iterator = customers.iterator(); - while (iterator.hasNext()) { - customer = (CustomerLocal) (iterator.next()); - addr = customer.getHomeAddress(); - printCustomer(out, customer, addr); - } - - out.print("

    Select the zip codes of the state 'FL'

    "); - out.print("

    SELECT a.zip FROM JE2_Address AS a WHERE a.state = ?1

    "); - Collection zipCodes = null; - zipCodes = addresshome.selectZipCodes("FL"); - out.print("

    Number of zip codes = " + zipCodes.size() - + "
    Expected = 5 zip codes (from 55401 to 55405)

    "); - if (zipCodes.size() != 5) { - ok = false; - } - Iterator iZipCodes = zipCodes.iterator(); - out.println("
      "); - while (iZipCodes.hasNext()) { - out.print("
    • zip code = '" + iZipCodes.next() + "'
    • "); - } - out.println("
    "); - - out.print("

    Select the customer which have the address 'addr85'

    "); - out.print("

    SELECT OBJECT(c) FROM JE2_Customer AS c WHERE c.homeAddress = ?1

    "); - CustomerLocal cust = null; - cust = addresshome.selectCustomer(addr85); - addr = cust.getHomeAddress(); - printCustomer(out, cust, addr); - - } catch (Exception ex) { - ok = false; - out.print("

    ERROR: Exception caught : " + ex + "

    "); - } - out.print("

    Cleaning all tables

    "); - - try { - Collection clc = customerhome.findAllCustomers(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - CustomerLocal cl = (CustomerLocal) iterator.next(); - cl.remove(); - } - clc = shiphome.findAllShips(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - ShipLocal sl = (ShipLocal) iterator.next(); - sl.remove(); - } - clc = cruisehome.findAllCruises(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - CruiseLocal cl = (CruiseLocal) iterator.next(); - cl.remove(); - } - clc = reservationhome.findAllReservations(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - ReservationLocal rl = (ReservationLocal) iterator.next(); - rl.remove(); - } - clc = cabinhome.findAllCabins(); - iterator = clc.iterator(); - while (iterator.hasNext()) { - CabinLocal cl = (CabinLocal) iterator.next(); - cl.remove(); - } - } catch (Exception ex) { - ok = false; - out.println("

    ERROR: during cleaning exception caught = " + ex + "

    "); - } - - if (ok) { - out.println("

    Servlet is OK.

    "); - } - out.println("Back to Menu"); - out.println(""); - out.println(""); - - } - - private void listCabins(PrintWriter out, CabinHomeLocal chl) throws Exception { - out.println("

    Cabins Table Content:

    "); - out.println("
      "); - Collection clc = chl.findAllCabins(); - if (clc == null) { - out.println("
    • Cabins table is empty
    • "); - } else { - Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CabinLocal cl = (CabinLocal) iterator.next(); - String name = cl.getName(); - int deck = cl.getDeckLevel(); - int bd = cl.getBedCount(); - out.println("
    • cabinName = '" + name + "', deckLevel = '" + deck + "', bedCount = '" + bd + "'
    • "); - } - } - out.println("
    "); - } - - private void listCustomers(PrintWriter out, CustomerHomeLocal chl) throws Exception { - out.println("

    Customers Table Content:

    "); - out.println("
      "); - java.util.Collection clc = chl.findAllCustomers(); - if (clc == null) { - out.println("
    • Customers table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CustomerLocal cl = (CustomerLocal) iterator.next(); - String name = cl.getName().getLastName(); - String fname = cl.getName().getFirstName(); - String number = " No Card! "; - boolean gc = cl.getHasGoodCredit(); - if (cl.getCreditCard() != null) { - number = cl.getCreditCard().getNumber(); - } - out.print("
    • firstName = '" + fname + "', lastName = '" + name + "'"); - out.println("
        "); - out.print("
      • creditCardNumber = '" + number + "', goodCredit = '" + gc + "'
      • "); - if (cl.getHomeAddress() != null) { - String city = cl.getHomeAddress().getCity(); - String state = cl.getHomeAddress().getState(); - out.print("
      • city> = '" + city + "', state = '" + state + "'
      • "); - } - out.println(""); - out.println("
      "); - } - } - out.println("
    "); - } - - private void listCreditcards(PrintWriter out, CreditCardHomeLocal cchl) throws Exception { - out.println("

    CreditCards Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllCreditCards(); - if (clc == null) { - out.println("
    • CreditCards table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - CreditCardLocal ccl = (CreditCardLocal) iterator.next(); - String number = ccl.getNumber(); - String name = ccl.getNameOnCard(); - out.println("
    • creditCardNumber = '" + number + "', nameOnCard '= '" + name + "'
    • "); - } - } - out.println("
    "); - } - - private void listAddress(PrintWriter out, AddressHomeLocal cchl) throws Exception { - out.println("

    Addresses Table Content:

    "); - out.println("
      "); - java.util.Collection clc = cchl.findAllAddress(); - if (clc == null) { - out.println("
    • Addresses table is empty
    • "); - } else { - java.util.Iterator iterator = clc.iterator(); - while (iterator.hasNext()) { - AddressLocal al = (AddressLocal) iterator.next(); - String city = al.getCity(); - String street = al.getStreet(); - out.println("
    • adressCity = '" + city + "', street = '" + street + "'
    • "); - } - } - out.println("
    "); - } - - private void listPhones(PrintWriter out, Vector vv) { - out.println("
      "); - for (int jj = 0; jj < vv.size(); jj++) { - String ss = (String) (vv.get(jj)); - out.println("
    • " + ss + "
    • "); - } - out.println("
    "); - } - - private void printShip(PrintWriter out, ShipLocal ship) { - out.print("
  • shipId = '" + ship.getId() + "', name = '" + ship.getName() + "', tonnage = '" - + ship.getTonnage() + "'
  • "); - } - - private void printCustomer(PrintWriter out, CustomerLocal customer, AddressLocal addr) { - out.print("
      "); - out.print("
    • firstName = '" + customer.getName().getFirstName() + "', lastName = '" - + customer.getName().getLastName() + "', goodCredit = '" + customer.getHasGoodCredit() + "'
    • "); - out.print("
    • street = '" + addr.getStreet() + "', city = '" + addr.getCity() + "', state = '" - + addr.getState() + "', zip = '" + addr.getZip() + "'
    • "); - out.print("
    "); - } - - private void printReservation(PrintWriter out, ReservationLocal reservation) { - out.print("
      "); - String cru = "no Cruise!"; - if (reservation.getCruise() != null) { - cru = reservation.getCruise().getName(); - } - out.print("
    • reservationDate: '" + reservation.getDate() + "' on '" + cru + "' amountPaid: '" - + reservation.getAmountPaid() + "'
    • "); - Set cabinset = reservation.getCabins(); - String customerinfo = ""; - CustomerLocal cust = null; - String cabininfo = ""; - Set customerset = reservation.getCustomers(); - Iterator iterator = customerset.iterator(); - while (iterator.hasNext()) { - cust = (CustomerLocal) iterator.next(); - customerinfo += cust.getName().getLastName() + " "; - } - iterator = cabinset.iterator(); - while (iterator.hasNext()) { - CabinLocal cabin = (CabinLocal) iterator.next(); - cabininfo += cabin.getName() + " "; - } - out.print("
        "); - if (!customerinfo.equals("")) { - out.print("
      • customers: " + customerinfo); - } - if (!cabininfo.equals("")) { - out.print("
      • cabins: " + cabininfo + "
      • "); - } - out.print("
      "); - out.print("
    "); - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/README b/jonas_tests/examples/base/examples/earsample/README deleted file mode 100644 index 022235e6bb..0000000000 --- a/jonas_tests/examples/base/examples/earsample/README +++ /dev/null @@ -1,94 +0,0 @@ - -Example Overview: ------------------ - -This example shows how to access an EJB deployed in a JOnAS EJB container, from - - a servlet deployed in a Tomcat/Jetty container (thin client) - - a client running inside the client container (heavy client) - -It also shows how to use security in Tomcat or Jetty to authentificate the user and in JOnAS -to authorize the user to access the EJB methods. This aspect is described in details -in the "Use Security in JOnAS with TOMCAT" howto of the JOnAS documentation. - -Besides, this example shows the uniform naming resource access supported in JOnAS. -The servlet gets a javax.transaction.UserTransaction object reference from the JNDI -using the "java:comp/UserTransaction" name. Moreover, it gets a reference on the -bean's home using an environment entry: "java:comp/env/ejb/". - -This sample contains an example of using ejb-link which allows to link the EJB to the -servlet. It is used in the web.xml file for both the ejb-ref and -ejb-local-ref tags. It implies that when the servlet performs a lookup on the bean, -the web classloader has got the visibility of the ejb class. -This is due to the classloader hierarchy between the ear classloader, ejb -classloader and the web classloader. - -Finally, this example shows how to add a resource adapter in an ear. - -The "src" directory contains - - An EJB that mimics $JONAS_ROOT/examples/src/sb with the addition of - security access to the bean methods. - - The servlet source of ServletOp. - - The source of a client which run inside the client container with uniform naming available - - The resource adapter source. - -The "etc" directory contains - - the "xml" directory which contains all the deployment descriptors used for this example : - * application.xml (ear file) - * ejb-jar.xml and jonas-ejb-jar.xml (jar file) - * web.xml, jonas-web.xml (war file) - * ra.xml (rar file) - * application-client.xml, jonas-client1.xml and jonas-client2.xml (two clients jar file) - - the "resources" directory which contains all the resources for this application - * "web" directory contains all resources used by the servlet - - -Compiling this example creates an .ear file that represents an application including : - - a session bean used by the web application - - a web application that will be used by Tomcat or Jetty to run the servlet. - - a resource adapter. - -Prerequisites -------------- -First, you must have installed a web container (ie : Catalina or Jetty) -as the web container service or you will use the heavy client - -You have to set the environment variables - CATALINA_HOME and CATALINA_BASE as indicated in the Tomcat 5.x documentation. -or JETTY_HOME for Jetty 5.x - -Compiling and installing this example: --------------------------------------- - ant install - -Running this example: --------------------- -Commands are given for an Unix system. -(Similar commands can be done on Windows) - -1) Run a jonas server: - jonas start - -2) Load earsample.ear (if you have not added it in the ear service descriptors list) using the jonasAadmin -management application (http://:/jonasAdmin) or the 'jonas admin' command. - -3a) Run your web browser (e.g., netscape): - netscape http://:/earsample - where is the name of your machine (localhost by default) - and the port number (9000 by default) - -3b) You can also lookup the Bean by using one of the client of the ear - - Use the default client (first found) - java -jar $JONAS_ROOT/lib/client.jar $JONAS_BASE/apps/earsample.ear -carolFile $JONAS_BASE/conf/carol.properties - - Use a specific client - java -jar $JONAS_ROOT/lib/client.jar $JONAS_BASE/apps/earsample.ear -jarClient client2.jar -carolFile $JONAS_BASE/conf/carol.properties - - -Notes : - a) that when you use the packages JOnAS-Tomcat and JOnAS-Jetty the earsample.ear is found $JONAS_BASE/apps/autoload directory. - b) the argument -carolFile is useless if you have rebuilt this example because in this - case the carol.properties of your environment is inserted in earsample.ear - -4) Stop the jonas server - jonas stop diff --git a/jonas_tests/examples/base/examples/earsample/build.xml b/jonas_tests/examples/base/examples/earsample/build.xml deleted file mode 100644 index 14a3222c22..0000000000 --- a/jonas_tests/examples/base/examples/earsample/build.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/jaas/jaas.config b/jonas_tests/examples/base/examples/earsample/etc/resources/jaas/jaas.config deleted file mode 100644 index 30ac6faa18..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/resources/jaas/jaas.config +++ /dev/null @@ -1,13 +0,0 @@ -earsample { - // Login Module to use for the example earsample. - - //First, use a LoginModule for the authentication - // Use the resource memrlm_1 - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - ; - - // Use the login module to propagate security to the JOnAS server - org.ow2.jonas.security.auth.spi.ClientLoginModule required - ; -}; \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/jetty.gif b/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/jetty.gif deleted file mode 100644 index 01f44a87f6801b200f142513d0d02b12cea0fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 zcmWlci93{w`^MjS-`V$JOfzDP!Po|4*AQb2$=0AF?PDoR9Su5K)mRb=Q@-OM~p#cy5c7Tk5SKLRid zgym{$I?v4CJo2fnF^AamUT+>DDus7VeS3iQCQFya%FLEK*q`dBOJCDw0`Am!b*-`II+;%&=rfxqt z$gzqJNo@1XHgH$H3K8b8O&mz-Koso zMMkm7=dJs8ywe~SX0eIJoS2vIohhu~+uVSL>uyZ*uuhNE&pewrQ<9m%4R7#bTf~eq z{A(FB`-ei8n8YIMRX?28JfmM&V%$Qm znp&?WFx*b?O(;CsoCnc}U)bX1*6Om*G^C9iH%qqJ^FMEvFs98R{fCKX8AIInmjm+` zt_^S9+zvY{PRsz8pX%U|r5DbbnLNMJRtFQdXFbM<|04urD*l6E5zbpR*Lr1|?NJuJ(CqS%!8D{BZ@P-@ zUKHZB@x2$DU@9WpWV56Cox?7>yZ>itFbT@qkg#<_GG|-b)>O{&)D4^^OCzO#_ERZQqTic|d6F48FQ|X%>SGlTsh4OE zc+HnZHGaRA%(Zs8{Zf7OpxIc_gG-suYGx;clap#I@*cv(DNXZ$s01tvYA$14P_ZxV zxLX`+<+6V0Nm<=}p7eTnOH+jL()U&_zdrL5l7yqrqN0j(@}K=y7W=?=j>kN^Vxt*C zQk;k@_l%UBl}KRJ@i@M^eAAc^0l-O1nl@=*n^idk?KyU3Lp;azN<%|1iWeJZJsI(W zt==WQdYg6FohxZNt0(S4wFg@ZpQf+4y8d+4wJqlWl8%jCp*pf`T>`~8kvrSTG3xq! zKB0?CG_1C58wlB#|KTmth~^T_jnKO%J!Iq8LaQw2UI+BOBmN$demV%_+lmeCC%xil z-{jVepByA@k9X@XG+vdTZ~8=ia)k7Gw+OY**c77pGh60H@?Ld_`}2;gpn}DiwhNP` zUJ4by)O#RwKj!+3ZpiV_L7jW5#TGfr3x(K(@}-4jcFhW7tARH&nKWP0(pQP~K4;X1gj^vznUQu|ZiZ->!>bqRl8NLw=z#w%DSE=OJK&EL$g z!7?br+1S-EO;@az4CgnV?Acb+s~O<#)(2k19JOTNk6iCdWD08vtFhRcLhyp@{!40@ zpMLhc&3Qe|)q=ZzfG;+)t=D1}9rw@$28;|(luHwq+?m=$)m$4T}3CHf~$vip^CYw2|%CK1eecs9&SM z`8I6L88MR{5IuHke|vw#_(}y={N{&DjKq#9+)pGVnY<4keRaSITvRQQD&1Z!S{%hi@d&ZYcj3Pw zywjBLYAO=`u|YsrL_b9uC-60ksfzGov>h|BC}_L@Yha5&yA}Yy+Q*8q-Y#T&cR{i7 z_-4)rX}8ZQgpU^J+wjyf-?7NGBxJh=RmtgfCByk4RT|noY6v-tb8uOW=0K$~*m#_Y zbl-W~EKn54l)^~MDHU!W=waEqmRP6&RMJ2mb?2;NX-!Z071a{jljy>@8V#zZ9=Z7Q zp#qPsw908%!d%mccOB?H@Or$TRVpY-uIVvLRqWpzs>1vJ3!)2Xf!y>Q8@v0Qtx?cH z>_bJbi;oVGMOC<=IQxn79LPDI=e}N=pC0Fq9kVXf$BXik!z$~>B#`}Gr9&DXsJFq2 zg>?#a_Eq3m;PyOU-0gC~bq;gLK0Zz{jx>%tRPoDM5c;zNM4uAgJH4(8`7W`GwR|Ek z_+Ktt5Z{Z->B3OPAwEf8h~kUN_xR|HKFa%W)10n1^iw2>F4(pB3PkZxRijrb{5bML z>*AA8@pAw}9?BzoeAE>Gb~e%G_4uHdm*&v#XA>=aR}QZ_dZG5*Ss&*|dAD~m+8Xw4 zPK~|xaA4ihi|&e_MMUQ{@cAnMSRGU&^FlhkeGG)r7EB1I{-!mwgmkXo}O1E0%*<$|GjjqYHJVeR1Hse6ws- z5$5!5fXbQd#!W+RyzHV{n{JcFl?xZ;C~%bF{0-}Y%%N`jWqN(9;;j4d`N`YuKGKum z^u8vet9Q}&Xh1~X0hErlVWJaBUm*E6j3T!xgr7mv@5$R?C9O@4aF#$oo4->(0tUsnVw>V2&7&A!bpK_Xx7;T27iLsV&9z{&jDEx zMHXXPi66fINjKkB!NnGizIqnO+^#_PI0S{Z-uH}LFfFKQJY0X0mv58OSCrf%!MD;% z^}{ayDz|1V#UShx#p-^Bg?+($Cg4KYEw*24%Q|ZH9`l_BGxdBhT~5+$ciw=qAX1DZlEGuAE-U5iE4Hg7jB|cH|k$v z>{|i6Th&SYxKANQ4xNyU>!?g1coEaG)Im~!_5FP0>uz+p7T6t@9DY<|kchfI)i~2M zut&5-0&W{|sZoxx*!=MXd9zxU;riiDj!gD;KGlk$ldT=z-goIuJwTB$^A_BgDM*4R zF<0Zi-m#zhn^t3GbnCOov$=I^>oU7n+p50aT_W1IbqYaDwC%Gp+mE~$+rZRIgB-86 z&eOi@i0jIV_`|OGp#yDLef$!uVM~Io-CdJtc}RG|Wpl^IC8a`@rP@AT{7099ega4$ z%)|M=X)U2j*pJsk0~4@T=2x^+)7gj0b3?_kO=HQ3_Jp*rIGScH;; zehlMsb%@V;D61{Pg^K>hK?jS#Y8k;s!5eJG+>{f)X-V@d@&>DjJETCN5`9mfe@}_- zk)!!i=}szA%z=VcV5&0WrT~3;&hDcY6EW(M{2mpBj7P|@o*bjNi{^)?J!Tb{r&Qtt z`Mw8Ia1YfkQh>clMF#3|3D}~<&$x}Bq01^fSqH3^WAVzUB)g*VyZHBdWIBhKDk{pd zE4s-c;#6q59FW`Xw-EsG+xHn(g%Zw5i)5#xk`$yYCCNpJsNz6+DtSc>dZi3VmpfL= z5H`K$|0Sip!UTI9+7$GMf4LO53NAgXLhV(M^g1LT#zhP8)cal}Dk@qZcYVgli;DUv zqmWJFY-N;BZA2Fus_QfIMb;JuO!=Wb=&i$(^yoWU=-g?PpQ`Mi(`Ana@TX+Nl`4?J zMBN3vub(D|sL>$+u|bYzCZd0rRcZlCJEvu zCWnd|5;?c($z%~ZCdTJd5%UVYv<3jLffff&LNg-Z5-($cb;e&g!bgXg?GiHS0j5>v zYArH=_~#aOLEwERirkkNpTrDT6Vj|?0u_`AKnXUoYii^Vo@ah0tE|g0N&sjn}dR3<=*5mn6UBV8b9Nc0LI*lH&1;F&Q z%^PApc^8q_l8<;Pfmd3f<49f0mAbPJ>RP|lsaeO`79G2|@)%VEWJn>TlxR-F4olHF zd5n6PmYQdr<4UflV(Whf;hT9l7@|`VvMY;A26gX=wV@B9;tt*s~>t< zU!q{#t-GHVP_*Zmf~dI-t<|%>i}I^$=Mh$yCeUjQt}^KKB_X0 zEx?UZ@!zNM?Q+6C!PXJA*$Zvbd{AJxmFSF*h10_=zV^$DHO2KO-;xx{loAA_9FrE$5PWbz`_(c7^UC)j*73i3Pvk%hSNtm zR6@OsdHGaYLOyv-Z0scU2-H>B94pR!7C>tj@`a4Q7=%nExaKQsG0gg;1S&NYBuwc= z;5s1R$5NmK4R$c}VtH4T2=zP*f0SsJvhC~ZkFJMfgW<$g5!j1_*)d(`=xCRZS z1u$)*p&BNToq+PHwQxlt|8$T~Y!h@`Q5WBYEK3Mp(9337ie_{k{YAJj5vekhFePWr z$~=1pL9*a%ik>{&MVeA!VMTr~`kw3v_gplBtwQ;Dlg09s@aSr(q^wNxo$ zMavAHLdC`b72f1e{CD-)7TJ10hhKft-`y%;Ul-Hji0T((-UfFI$1?-1JxKnL5BH&`ePM^dV{_tr?-~&~S50hg#wW~5T@o=~ z0>U^ApGigKy+)i#TG37ChZSeUPMvv|hvmM?5M)E+0Le;}{Z;|3prQl@xw@tDSN8%k zN9wcoK-M)**++Fz_h)vaBlEZpk)ua0`-!o>mUH1qd#Y!AB@M7HjmT!c%1+lZB9_mQ z&vCZ+D4}I4C`N#tn}+u5aJF!DZ4v)!az+tsg1qb5oy_##)VvZv!;iZ5V2ra>N2eVF z^|U~s*HaJ#HmL|c3h1XpbsS>0j$kXOk#KOYMX2R)H!Q_O!M}9s*=wG;_i;0v3InaI zQ%Vq?cI}ntjshzbkd*@JmP2<{=y~AAawW=JhnvZ&iXOE&pu>g5Qz9EP?;q+js=9GN zj}PDwj1E5bBVIBqW#Q2Lts5W+e+F4k*^jpL-N7C*n^)^{@2&0VHpe415ZaV?!1TD!zidn8F z2_sM#C8}16wSb2!MTl}Pj;`GKeGRsjgCY&N9i0f!s9T!<`C1@ z?ygh;t^K6^Mq{OO_Ej+MWESKxK-njHz-u5BDu`7aoTZ9)MTz*%K^4q(ED84fdJKE% zEb%%O%YJn}KGu_~plI^*U8ta32g;pnZItA`+{b-CfR`c!z(n67=I>Mijt1)gE{{`k zIrhKB*jIBQq6ulsjfhG;XeTEhR#O%a>`j|{grffOf~vSXjdU#mPjCQd0rs#6+@~9F zNCc|nXou%SiVYi6o3?H-bxV@{(Y}N)bT}P;TikVj$N| zhb)jqWhu#fM1)&1&;rKYRuZQ@N^Hm!TqP7Ji%OLf_rORBHFC%rg9mU)bfSnnThA!>i;d$VR^2N>O=`YriS)3;?l!yZM zlnqR<)Z@B1n2-P9_*4+$V7l}`{$$ArP}(@)D4?^Gc3*5a6TLHyXoM+D6(v@UY3;<| z)prI|=-Ybyb{W`l9KvT~ukXQbS0IB`_|-6FN=9jrz22{QJy?#ZP@z9G;h*U7H(USZ zDWOmu$y*NL07@u8y!!-yO8;t?k~9Gm9F$P!p4a$M;tC~tmx>agz*K1|E2N}n{@6!~ zd)9jL4`ofg(7okk_*$o~cE0#4!JYex@{hW#H6CLD+pYFISgl6=JNeXF6lR~&ZJ`6>6k`p><<~{Pm7AP<`oSb$W4~APl`>ELqS+5 zT#fA4Kpww=Y#naT`JdG=E^F@=01?!GDPD8RvX1e(uGmE*u&H~F4+Bc+R*$bR&ew>k zW34oM#^3~w@WXHMj!A{tiQvp)8CRj^@FKX0xoM$Ord&ylaNQ_ve{5I$EVV>S4=XH| z&YHcFF&*f)d@}jU*W2s|+tAg1o}twHzgV2h@#8=IMfvhhtuV)FZQHX6GIO)*+VJI@ zA8Jn&cNT}vUkWNLHOa)yQ89goPieNQj-Bzj{m9%m@lA1%wD)3S)L#*!k@K^r#ge^A zPLbOej1Eiwq?P!YJJJrN5i6c-4ec!`r`t#Uo39xFiG)nQ&q4$gQZGU6X!%m0`+#h_m8ZJT#EfGor97MZ8qRKSE z3)UC9hOknaH6aVP^wRQ7QXb3l>3flGp_cot+d{1>ByLM>s*~H6+Mb}haRA@{14#gp A+yDRo diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_jonas_logo.gif b/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_jonas_logo.gif deleted file mode 100644 index 1b56943a721f82a8cb81776030567772265433f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_logo.png b/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/ow_logo.png deleted file mode 100644 index 60617270bf0c0d21c9f40e4f7c85ef5bfdbda548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11700 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 Re0F?dK$vW)v>aKN{y(`9mQw%# diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/vcss.png b/jonas_tests/examples/base/examples/earsample/etc/resources/web/img/vcss.png deleted file mode 100644 index 9b2f596e016533327216d98a0a927738fe17384f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@@!3-or#C~03U|`e?@Ck7Ra+Q_kdEDnlhI%!W zMb4c&_g;@{HxGAjZ*NM+!7cOCYk@#Y{Pps{+}zwx_wR4FlUu4N92*~!s#T`6W<+- zt4%e$w+9&~i2E*D*W)T9Bhx(p?A&_0|7X(X^Ya7IW>?MPDaUzu zczTO0wr<^e|Jf%QG42CClNSR6E4d`dFZlmw6q^`8Jh0FrC=HPY3SEXN1j@jH0f@DT z;lF?am<8g&3^agg*jyz(n}LC8qNj^vNX4zUQ)`1SI|v-Rel?4G(T!h0t6h3r9Tx_% z{GPN=z+e1GN8qGw>eHn5|8FmNua|o1m5;W_zoO+QbMz<2znfQG#(ynM{=I#{0V!X> zqF)tO-~TK+p#QH~U+~Uxw*7OC?@4lzU=MuwAfY=*I-PyJf}6|jF4ry6#nK@bObtKJ z{jpr)a7XQvK=_v<_kY&OUtDf7N2Y`!=sAP5DASo0{WX7G;uf&=`Gs|Enroa;cP#bwBZgT0Vk8}Ij!pi@+JzOex~wA_|LQI>iZ4KOPMZj@RJmq z{=ckJgo`sg=^ee+rLf!@|1r#|1Qou-tz zozY_28jcOAqH_ZHT>9G+6r2tD{%tx^c*pF4-nNSOH_A#)UvDaE^>6pwzeB^b1utmshBn2mW1YZ#q&(r+Ne9lLHSPV z;lJMu*6nF1eX&Vu#au@n)2h{;1^hB;>x|=8`0r4N5Dq`3W>NpNuIHfS-r}72x2dtZ z|1vypS3P_!s?6%3q3f=mrP_V^@twUAXY`EwoTZxX&st-k^Kye`&fdVV(2iA`qSwCa zO3SD?y)^LM2F^-1=1_^hVN1d%c)e7=87<81^0{cK;`g>k^UAjGxu$SW%#%-OqR3cMOS7CD$Nw90jSF7TjZ+3b%7?`))PKP%lew!LZ} z9@4ntXMQ2~DY0cQL^+Gz9jsW~FI2w%Uw?1i^C{7@K5}j{esbPgg&e IbxsLQ074N#oB#j- diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/index.html b/jonas_tests/examples/base/examples/earsample/etc/resources/web/index.html deleted file mode 100644 index 51fea3aaac..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/resources/web/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - EarSample Example - - - - -
    - Jakarta Tomcat - Mortbay Jetty - JOnAS WebSite -
    - -
    - Earsample : Example of servlet accessing a protected EJB -
    - - - - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/etc/resources/web/ow_jonas.css b/jonas_tests/examples/base/examples/earsample/etc/resources/web/ow_jonas.css deleted file mode 100644 index 3c5d6ab29f..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/resources/web/ow_jonas.css +++ /dev/null @@ -1,222 +0,0 @@ -/* - Context Root css. based on css from http://jonas.objectweb.org - XHTML by Florent BENOIT -*/ - -.bodywelcome -{ - background-color: #FFFFFF; - color: #000000; - background-image: url(img/ow_logo.png); - background-repeat: no-repeat; - margin: 0; -} - - -img { - margin: 5px; - border:0; -} - -body -{ - background-color: #FFFFFF; - margin: 10px; - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - -} - -div.logos { - top: 5px; - width: 99%; - text-align: right; -} - - -div.links { - font-size: 14px; - margin-top : 40px; - margin-left : 100px; -} - - -div.titlepage { - margin-left: 200px; - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - line-height: 27px; - font-weight: bold; - border-color: #99C; - border-width: 0 0 4px 0; - border-style: none none solid none; -} - - -div.footer { - margin-top : 50px; - color: #FFFFFF; - font-size: 8pt; - text-align: center; -} - - -/*HTML elements */ - - - -ul, ol, dl -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; -} - -li -{ - color: black; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - font-weight: normal; - margin: 10px 0px 5px 0px; - -} -a -{ - color: #3F3975; - background-color: transparent; - text-decoration: underline; -} - -a:visited -{ - color: #9898CB; - background-color: transparent; - text-decoration: underline; -} - -a:hover -{ - color: #E06611; - background-color: transparent; - text-decoration: underline; -} - - -a:active -{ - color: #FFFFFF; - background-color: #E06611; - text-decoration: underline; -} - - -h1 -{ - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - line-height: 27px; - font-weight: bold; - border-color: #99C; - border-width: 0 0 4px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; -} - -h2 -{ - color: #99C; - font-family: Arial, Helvetica, sans-serif; - font-size: 20px; - line-height: 27px; - font-weight: normal; - border-color: #E06611; - border-width: 0 0 4px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; - -} - -h3 -{ - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 16px; - line-height: 27px; - font-weight: bold; - border-color: #E8EAF0; - border-width: 0 0 2px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; - -} -h4 -{ - color: #99C; - font-family: Arial, Helvetica, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: normal; - border-color: #E8EAF0; - border-width: 0 0 2px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; - -} -h5 -{ - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - line-height: 24px; - font-weight: normal; - border-color: #E8EAF0; - border-width: 0 0 2px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; - -} -h6 -{ - color: #99C; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - line-height: 22px; - font-weight: normal; - border-color: #E8EAF0; - border-width: 0 0 2px 0; - border-style: none none solid none; - margin: 10px 0px 5px 0px; - -} - -td -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - font-weight: normal; -} - -p -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -p.error -{ - color: red; -} - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/application-client.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/application-client.xml deleted file mode 100644 index 44291ed628..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/application-client.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Client of the earsample - - - envEntryString - java.lang.String - - Test of envEntry of application-client.xml file - - - - - - ejb/Op - Session - org.objectweb.earsample.beans.secusb.OpHome - org.objectweb.earsample.beans.secusb.Op - secusb.jar#EarOp - - - - - ejb/OpLink - Session - org.objectweb.earsample.beans.secusb.OpHome - org.objectweb.earsample.beans.secusb.Op - EarOp - - - - url/jonas - java.net.URL - Container - - - - org.ow2.jonas.security.auth.callback.LoginCallbackHandler - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/application.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/application.xml deleted file mode 100644 index 7d984a8a16..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/application.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - ear example secusb/servlet - earsample secusb/servlet - - - secusb.jar - - - - - earsample.war - earsample - - - - - client1.jar - - - client2.jar - - - - ra-sample.rar - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client1.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client1.xml deleted file mode 100644 index b7b0d3fdd1..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - url/jonas - http://jonas.objectweb.org - - - - jaas.config - earsample - jonas - jonas - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client2.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client2.xml deleted file mode 100644 index 1cf3ead282..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-client2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - url/jonas - http://jonas.objectweb.org - - - - jaas.config - earsample - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-secusb.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-secusb.xml deleted file mode 100644 index ca04b169db..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-secusb.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - EarOp - EarOpHome - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-web.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-web.xml deleted file mode 100644 index 069066e888..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/jonas-web.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - url/URL - http://jonas.objectweb.org - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/ra.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/ra.xml deleted file mode 100755 index 73edde1b46..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/ra.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - rar sample - rar sample - ObjectWeb - - 1.0 - - false - - - - - org.objectweb.earsample.resourceadapters.ResourceAdapterImpl - - - - JNDI name - jndiName - - java.lang.String - - - eisName - - - - URL for EIS instance - EisURL - - java.lang.String - - - EIS_URL - - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/secusb.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/secusb.xml deleted file mode 100644 index 531d055c2d..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/secusb.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - secured session bean JOnAS example - - secusb (earsample) - - - - EarOp - org.objectweb.earsample.beans.secusb.OpHome - org.objectweb.earsample.beans.secusb.Op - org.objectweb.earsample.beans.secusb.OpLocalHome - org.objectweb.earsample.beans.secusb.OpLocal - org.objectweb.earsample.beans.secusb.OpBean - Stateful - Container - - - - - - tomcat - - - jetty - - - - tomcat - - EarOp - * - - - - - jetty - - EarOp - * - - - - - - EarOp - * - - Supports - - - - - diff --git a/jonas_tests/examples/base/examples/earsample/etc/xml/web.xml b/jonas_tests/examples/base/examples/earsample/etc/xml/web.xml deleted file mode 100644 index 3366a4d289..0000000000 --- a/jonas_tests/examples/base/examples/earsample/etc/xml/web.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Op - - org.objectweb.earsample.servlets.ServletOp - - - - - Op - /secured/Op - - - - url/URL - java.net.URL - Application - - - - - Protected Area - - /secured/* - - DELETE - GET - POST - PUT - - - - tomcat - jetty - - - - - - BASIC - JOnAS Realm - - - - - tomcat - - - - jetty - - - - - envEntryString - java.lang.String - - This is a string from the env-entry - - - - - ejb/Op - Session - org.objectweb.earsample.beans.secusb.OpHome - org.objectweb.earsample.beans.secusb.Op - EarOp - - - - ejb/OpLocal - Session - - org.objectweb.earsample.beans.secusb.OpLocalHome - - org.objectweb.earsample.beans.secusb.OpLocal - secusb.jar#EarOp - - - diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/Op.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/Op.java deleted file mode 100644 index f4c31355da..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/Op.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.beans.secusb; - -import javax.ejb.EJBObject; -import java.rmi.RemoteException; - -/** - * Remote interface for the bean Op - * @author JOnAS team - */ -public interface Op extends EJBObject { - - /** - * Business method implementation. - * @param shares nb of shares to be bought - * @throws RemoteException if RMI failed. - */ - void buy (int shares) throws RemoteException; - - /** - * Business method implementation. - * @return the nb of shares bought - * @throws RemoteException if RMI failed. - */ - int read () throws RemoteException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpBean.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpBean.java deleted file mode 100644 index 65afb2722c..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpBean.java +++ /dev/null @@ -1,247 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.beans.secusb; - -import javax.ejb.EJBException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.ejb.SessionSynchronization; - -/** - * This is an example of Session Bean, statefull, and synchronized. - * @author JOnAS team - */ -public class OpBean implements SessionBean, SessionSynchronization { - - /** - * Actual state of the bean - */ - private int total = 0; - - /** - * value inside Tx, not yet committed. - */ - private int newtotal = 0; - - /** - * User client - */ - private String clientUser = null; - - /** - * Session context that the container provides for a session enterprise Bean - * instance. - */ - private SessionContext sessionContext = null; - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param user the user name - */ - public void ejbCreate(String user) { - total = 0; - // in case we are outside transactions - newtotal = total; - clientUser = user; - } - - /* =============== javax.ejb.SessionBean 2.0 implementation ============== */ - - /** - * The activate method is called when the instance is activated from its - * "passive" state. The instance should acquire any resource that it has - * released earlier in the ejbPassivate() method. This method is called with - * no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbActivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * The passivate method is called before the instance enters the "passive" - * state. The instance should release any resources that it can re-acquire - * later in the ejbActivate() method. After the passivate method completes, - * the instance must be in a state that allows the container to use the Java - * Serialization protocol to externalize and store away the instance's - * state. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbPassivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbRemove() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for applications - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, java.rmi.RemoteException { - this.sessionContext = sessionContext; - } - - /* - * ============== javax.ejb.SessionSynchronization implementation - * ============= - */ - - /** - * The afterBegin method notifies a session Bean instance that a new - * transaction has started, and that the subsequent business methods on the - * instance will be invoked in the context of the transaction. The instance - * can use this method, for example, to read data from a database and cache - * the data in the instance fields. This method executes in the proper - * transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterBegin() throws EJBException, java.rmi.RemoteException { - newtotal = total; - } - - /** - * The beforeCompletion method notifies a session Bean instance that a - * transaction is about to be committed. The instance can use this method, - * for example, to write any cached data to a database. This method executes - * in the proper transaction context. Note: The instance may still - * cause the container to rollback the transaction by invoking the - * setRollbackOnly() method on the instance context, or by throwing an - * exception. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void beforeCompletion() throws EJBException, java.rmi.RemoteException { - } - - /** - * The afterCompletion method notifies a session Bean instance that a - * transaction commit protocol has completed, and tells the instance whether - * the transaction has been committed or rolled back. This method executes - * with no transaction context. - * @param committed - True if the transaction has been committed, false if - * is has been rolled back. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterCompletion(boolean committed) throws EJBException, java.rmi.RemoteException { - - if (committed) { - total = newtotal; - } else { - newtotal = total; - } - } - - /* ========================= Op implementation ============================ */ - - /** - * Business method implementation. - * @param s nb of shares to be bought - */ - public void buy(int s) { - newtotal = newtotal + s; - return; - } - - /** - * Business method implementation. - * @return the nb of shares bought - */ - public int read() { - return newtotal; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpHome.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpHome.java deleted file mode 100644 index c27269138d..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpHome.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.beans.secusb; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean Op - * @author JOnAS team - */ -public interface OpHome extends EJBHome { - - /** - * Create an instance of the Op bean. - * @param user the user name. - * @return the Remote interface of the bean Op. - * @throws CreateException if the creation failed. - * @throws RemoteException if the RMI call failed. - */ - Op create(String user) throws CreateException, RemoteException; -} diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocal.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocal.java deleted file mode 100644 index f65b4b5543..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocal.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.beans.secusb; - -import javax.ejb.EJBLocalObject; - -/** - * Local interface for the bean Op - * @author JOnAS team - */ -public interface OpLocal extends EJBLocalObject { - - /** - * Business method implementation. - * @param shares nb of shares to be bought - */ - void buy(int shares); - - /** - * Business method implementation. - * @return the nb of shares bought - */ - int read(); -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocalHome.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocalHome.java deleted file mode 100644 index 730e996624..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/beans/secusb/OpLocalHome.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.beans.secusb; - -import javax.ejb.CreateException; -import javax.ejb.EJBLocalHome; - -/** - * Local home interface for the bean Op - * @author JOnAS team - */ -public interface OpLocalHome extends EJBLocalHome { - - /** - * Create an instance of the Op bean. - * @param user the user name. - * @return the Remote interface of the bean Op. - * @throws CreateException if the creation failed. - */ - OpLocal create(String user) throws CreateException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/clients/Client.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/clients/Client.java deleted file mode 100644 index 87aa7e493a..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/clients/Client.java +++ /dev/null @@ -1,189 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent Benoit - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.clients; - -import java.net.URL; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.transaction.UserTransaction; -import javax.rmi.PortableRemoteObject; - -import org.objectweb.earsample.beans.secusb.Op; -import org.objectweb.earsample.beans.secusb.OpHome; - -/** - * Heavy client doing some operations on a bean - * @author jonas team - */ -public class Client { - - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private Client() { - - } - - /** - * Main method - * @param args arguments of the client - */ - public static void main(String[] args) { - - Context initialContext = null; - System.out.print("Building a new InitialContext..."); - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - System.out.println("done !"); - - System.out.print("Looking up java:comp/UserTransaction ..."); - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - utx = (UserTransaction) initialContext.lookup("java:comp/UserTransaction"); - } catch (Exception e) { - System.err.println("Cannot lookup UserTransaction: " + e); - System.exit(2); - } - System.out.println("done !"); - - String envEntry = null; - System.out.print("Looking up java:comp/env/envEntryString ..."); - try { - envEntry = (String) initialContext.lookup("java:comp/env/envEntryString"); - } catch (Exception e) { - System.err.println("Cannot get env-entry on JNDI " + e); - System.exit(2); - } - System.out.println("done !"); - System.out.println("Env entry is : " + envEntry); - - URL url = null; - System.out.print("Looking up java:comp/env/url/jonas ..."); - try { - url = (URL) initialContext.lookup("java:comp/env/url/jonas"); - } catch (Exception e) { - System.err.println("Cannot get URL on JNDI " + e); - System.exit(2); - } - System.out.println("done !"); - System.out.println("Web site of jonas is at :" + url); - - System.out.print("Looking up java:comp/env/ejb/Op ..."); - // Connecting to OpHome thru JNDI - OpHome home = null; - try { - home = (OpHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Op"), OpHome.class); - System.out.println("done !"); - } catch (Exception e) { - e.printStackTrace(); - System.err.println("Cannot lookup OpHome: " + e); - System.exit(2); - } - - // OpBean creation - Op t1 = null; - try { - System.out.println("Create a bean"); - t1 = home.create("User1"); - } catch (Exception e) { - System.err.println("Cannot create OpBean: " + e); - System.exit(2); - } - - // First transaction (committed) - try { - System.out.println("Start a first transaction"); - utx.begin(); - System.out.println("First request on the new bean"); - t1.buy(FIRST_BUY_AMOUNT); - System.out.println("Second request on the bean"); - t1.buy(SECOND_BUY_AMOUNT); - System.out.println("Commit the transaction"); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - // Start another transaction (rolled back) - try { - System.out.println("Start a second transaction"); - utx.begin(); - t1.buy(THIRD_BUY_AMOUNT); - System.out.println("Rollback the transaction"); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // Get the total bought, outside the transaction - int val = 0; - try { - System.out.println("Request outside any transaction"); - val = t1.read(); - } catch (Exception e) { - System.err.println("Cannot read value on t1 : " + e); - System.exit(2); - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - System.err.println("Bad value read: " + val); - System.exit(2); - } - - // Remove Session bean - try { - t1.remove(); - } catch (Exception e) { - System.out.println("Exception on buy: " + e); - System.exit(2); - } - System.out.println("ClientOp OK. Exiting."); - } -} - diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/resourceadapters/ResourceAdapterImpl.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/resourceadapters/ResourceAdapterImpl.java deleted file mode 100755 index 0015535668..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/resourceadapters/ResourceAdapterImpl.java +++ /dev/null @@ -1,191 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.resourceadapters; - - -import java.net.MalformedURLException; -import java.util.HashMap; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.resource.NotSupportedException; -import javax.resource.ResourceException; -import javax.resource.spi.ActivationSpec; -import javax.resource.spi.BootstrapContext; -import javax.resource.spi.ResourceAdapterInternalException; -import javax.resource.spi.endpoint.MessageEndpointFactory; -import javax.transaction.xa.XAResource; - -/** - * A Resource adapter - * @author kemlerp - * - */ -public class ResourceAdapterImpl implements javax.resource.spi.ResourceAdapter, java.io.Serializable { - - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 3834312812943456568L; - - /** - * String should be the RA name when set, ie, EIS - */ - private String eisurl; - - /** - * The JNDI name - */ - private String jndiName; - - /** - * Initial context - */ - private InitialContext ictx; - - /** - * BootstrapContext - */ - private BootstrapContext bootstrapCtx = null; // set in start() - - /** - * EndpointFactories - */ - private transient HashMap endpointFactories = new HashMap(); - - - /** - * Start - * @param bootstrapCtx bootstrapCtx - * @throws ResourceAdapterInternalException if an error occurs - */ - public void start(BootstrapContext bootstrapCtx) throws ResourceAdapterInternalException { - this.bootstrapCtx = bootstrapCtx; - - try { - ictx = new InitialContext(); - ictx.bind(jndiName, eisurl); - } catch (NamingException e) { - e.printStackTrace(); - } - - } - - /** - * Stop - */ - public void stop() { - try { - ictx.unbind(jndiName); - } catch (NamingException e) { - e.printStackTrace(); - } - } - - - /** - * Called by the application server when a message-driven bean - * (MessageEndpoint) is deployed. - * @param factory MessageEndpointFactory - * @param spec activation spec - * @throws NotSupportedException if an error occurs - * @throws ResourceAdapterInternalException if an error occurs - */ - public void endpointActivation(MessageEndpointFactory factory, ActivationSpec spec) throws NotSupportedException, - ResourceAdapterInternalException { - endpointFactories.put(spec, factory); - } - - /** - * Endpoint Deactivation - * @param factory MessageEndpointFactory - * @param spec activation spec - */ - public void endpointDeactivation(MessageEndpointFactory factory, ActivationSpec spec) { - endpointFactories.remove(spec); - } - - /** - * Get XAResources - * @param specs A tab of specs - * @throws ResourceException if an error occurs - * @return Tab of XAResources - */ - public XAResource[] getXAResources(ActivationSpec[] specs) throws ResourceException { - return null; - } - - /** - * Get Eis URL - * @return Eis URL - */ - public String getEisURL() { - return eisurl.toString(); - } - - /** - * Set Eis URL - * @param eisURL Eis URL - * @throws MalformedURLException if 'eisURL' is not a URL - */ - public void setEisURL(String eisURL) throws MalformedURLException { - // ra.xml deployment supplies value - this.eisurl = eisURL; - } - - /** - * Get BootstrapContext - * @return bootstrapCtx - */ - public BootstrapContext getBootstrapCtx() { - return bootstrapCtx; - } - - /** - * Set BootstrapContext - * @param bootstrapCtx bootstrapContext - */ - public void setBootstrapCtx(BootstrapContext bootstrapCtx) { - this.bootstrapCtx = bootstrapCtx; - } - - /** - * Get used JNDI name - * @return A string - */ - public String getJndiName() { - return jndiName; - } - - /** - * Set JNDI name - * @param jndiName a string - */ - public void setJndiName(String jndiName) { - this.jndiName = jndiName; - } -} diff --git a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/servlets/ServletOp.java b/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/servlets/ServletOp.java deleted file mode 100644 index c72f0c9d2b..0000000000 --- a/jonas_tests/examples/base/examples/earsample/src/org/objectweb/earsample/servlets/ServletOp.java +++ /dev/null @@ -1,304 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.earsample.servlets; - -import java.io.IOException; -import java.io.PrintWriter; -import java.net.URL; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.transaction.UserTransaction; - -import org.objectweb.earsample.beans.secusb.Op; -import org.objectweb.earsample.beans.secusb.OpHome; -import org.objectweb.earsample.beans.secusb.OpLocal; -import org.objectweb.earsample.beans.secusb.OpLocalHome; - -/** - * This servlet is an example to show how to access a EJB from a servlet - * @author JOnAS team - */ -public class ServletOp extends HttpServlet { - - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request - * the client has made of the servlet - * @param response an HttpServletResponse object that contains the - * response the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException { - - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - out.println(""); - out.println("Ear Sample of Servlet accessing a protected EJB"); - out.println(""); - out.println(""); - out.println("

    Ear sample of Servlet accessing a protected EJB"); - out.println("

    \"Tomcat"); - out.println("\"Jetty"); - out.println("\"JOnAS"); - out.println("

    Initial context / UserTransaction

    "); - out.println("
      "); - Context initialContext = null; - try { - initialContext = new InitialContext(); - out.println("
    • Initial context OK
    • "); - } catch (Exception e) { - out.print("
    • Cannot get initial context for JNDI: "); - out.println(e + "
    • "); - return; - } - - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - utx = (UserTransaction) initialContext.lookup("java:comp/UserTransaction"); - out.println("
    • Get java:comp/UserTransaction OK
    • "); - } catch (Exception e) { - out.println("
    • Cannot lookup java:comp/UserTransaction: " + e + "
    • "); - return; - } - out.println("

    "); - - out.println("

    "); - out.println("Lookup on env-entry with java:comp/env/envEntryString"); - out.println("

    "); - out.println("
      "); - String envEntry = null; - try { - envEntry = (String) initialContext.lookup("java:comp/env/envEntryString"); - out.println("
    • Env entry is : " + envEntry + "
    • "); - } catch (Exception e) { - out.println("
    • Cannot get env-entry on JNDI " + e + "
    • "); - return; - } - out.println("

    "); - - - out.println("
    "); - - out.println("

    "); - out.println("Lookup on URL with java:comp/env/url/URL"); - out.println("

    "); - out.println("
      "); - URL jonasURL = null; - try { - jonasURL = (URL) initialContext.lookup("java:comp/env/url/URL"); - out.println("
    • URL is : " + jonasURL.toString() + "
    • "); - } catch (Exception e) { - out.println("
    • Cannot get url on JNDI " + e + "
    • "); - return; - } - out.println("

    "); - - out.println("

    Actions realized by the servlet and the EJB

    "); - out.println("

    With local interface

    "); - out.println("
      "); - // Connecting to OpLocalHome thru JNDI - OpLocalHome opLocalHome = null; - try { - opLocalHome = (OpLocalHome) - initialContext.lookup("java:comp/env/ejb/OpLocal"); - } catch (Exception e) { - out.println("
    • Cannot lookup java:comp/env/ejb/OpLocal: " + e + "
    • "); - return; - } - // OpBean creation - OpLocal opLocal = null; - try { - opLocal = opLocalHome.create("User1"); - out.println("
    • Create a bean
    • "); - } catch (Exception e) { - out.println("
    • Cannot create OpBean: " + e + "
    • "); - return; - } - // First transaction (committed) - try { - out.println("
    • Start a first transaction
    • "); - utx.begin(); - opLocal.buy(FIRST_BUY_AMOUNT); - out.println("
    • First request on the new bean
    • "); - opLocal.buy(SECOND_BUY_AMOUNT); - out.println("
    • Second request on the bean
    • "); - utx.commit(); - out.println("
    • Commit the transaction
    • "); - } catch (Exception e) { - out.println("
    • exception during 1st Tx: " + e + "
    • "); - return; - } - // Start another transaction (rolled back) - try { - out.println("
    • Start a second transaction
    • "); - utx.begin(); - opLocal.buy(THIRD_BUY_AMOUNT); - utx.rollback(); - out.println("
    • Rollback the transaction
    • "); - } catch (Exception e) { - out.println("
    • exception during 2nd Tx: " + e + "
    • "); - return; - } - // Get the total bought, outside the transaction - int val = 0; - try { - val = opLocal.read(); - out.println("
    • Request outside any transaction
    • "); - } catch (Exception e) { - out.println("
    • Cannot read value on t1 : " + e + "
    • "); - return; - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - out.println("
    • Bad value read: " + val + "
    • "); - return; - } - // Remove Session bean - try { - opLocal.remove(); - } catch (Exception e) { - out.println("
    • Exception on buy: " + e + "
    • "); - return; - } - out.println("

    "); - - out.println("

    With remote interface

    "); - out.println("
      "); - // Connecting to OpHome thru JNDI - OpHome opHome = null; - try { - opHome = (OpHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Op"), OpHome.class); - } catch (Exception e) { - out.println("
    • Cannot lookup java:comp/env/ejb/Op: " + e + "
    • "); - return; - } - // OpBean creation - Op op = null; - try { - op = opHome.create("User1"); - out.println("
    • Create a bean
    • "); - } catch (Exception e) { - out.println("
    • Cannot create OpBean: " + e + "
    • "); - return; - } - // First transaction (committed) - try { - out.println("
    • Start a first transaction
    • "); - utx.begin(); - op.buy(FIRST_BUY_AMOUNT); - out.println("
    • First request on the new bean
    • "); - op.buy(SECOND_BUY_AMOUNT); - out.println("
    • Second request on the bean
    • "); - utx.commit(); - out.println("
    • Commit the transaction
    • "); - } catch (Exception e) { - out.println("
    • exception during 1st Tx: " + e + "
    • "); - return; - } - // Start another transaction (rolled back) - try { - out.println("
    • Start a second transaction
    • "); - utx.begin(); - op.buy(THIRD_BUY_AMOUNT); - utx.rollback(); - out.println("
    • Rollback the transaction
    • "); - } catch (Exception e) { - out.println("
    • exception during 2nd Tx: " + e + "
    • "); - return; - } - // Get the total bought, outside the transaction - val = 0; - try { - val = op.read(); - out.println("
    • Request outside any transaction
    • "); - } catch (Exception e) { - out.println("
    • Cannot read value on t1 : " + e + "
    • "); - return; - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - out.println("
    • Bad value read: " + val + "
    • "); - return; - } - // Remove Session bean - try { - op.remove(); - } catch (Exception e) { - out.println("
    • Exception on buy: " + e + "
    • "); - return; - } - out.println("

    "); - - - - out.println("

    "); - out.println("Resource Adapter Properties"); - out.println("

    "); - out.println("
      "); - String eisName = null; - try { - eisName = (String) initialContext.lookup("eisName"); - out.println("
    • EIS Name is : " + eisName + "
    • "); - } catch (Exception e) { - out.println("
    • Cannot get eis name on JNDI " + e + "
    • "); - return; - } - out.println("

    "); - - - out.println("Sample is OK.
    "); - out.println(""); - out.println(""); - } -} diff --git a/jonas_tests/examples/base/examples/emb-sample/.cvsignore b/jonas_tests/examples/base/examples/emb-sample/.cvsignore deleted file mode 100644 index 378eac25d3..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/jonas_tests/examples/base/examples/emb-sample/README b/jonas_tests/examples/base/examples/emb-sample/README deleted file mode 100644 index e4a673003b..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/README +++ /dev/null @@ -1,70 +0,0 @@ -$Id: README,v 1.3 2005/07/08 14:02:52 pasmith Exp $ - -============================================================================== -ENTERPRISE MEDIA BEANS SAMPE README -============================================================================== - -As a pre-requisite, please deploy the emb-sample application. - -To visit the emb-sample Application visit: - - http://localhost:9000/emb-sample - -First you have to had some media to the database : - - to add default samples select Load - - to add your own samples by uploading it - -All your sample will be remove after session timeout - - -====================================== -DIRECTORY STRUCTURE: -====================================== - -emb-core/ customizes preset core application of EMB -etc/ all deployment descriptor -lib/ upload lib -resources/ JSPs, samples, images, html files. -src/ java files - - -====================================== -KNOWN ISSUES: -====================================== - -Here are some known issues about the emb-sample demo: - -1) By default the application is set to work only on localhost - -2) Cookies have to be accepted in order to use this sample - -3) If the user's session times out or if the user removes their - cookies, all generated media will be removed - -4) This sample needs some memory under quite heavy load, I advice you to start - JOnAS more memory than default (64MB). (if you got OutOfMemoryError) - To do this set JAVA_OPTS environment variable to -Xmx128m, in order to - set the maximum memory of the JVM to 128MB. - - -====================================== -HOW TO CUSTOMIZE EMB-SAMPLE SETTING: -====================================== - -Customize application : - emb sample have some few setting in order to limit the load of the server - in case of an on line demo. - - - in etc/web.xml : set the session timeout (in minutes - - in etc/embSampleSession.xml : - - set the env entry ejb/embSample/isCopyAllowed in order to copy or - to modify the media when using some conversion (limit numbers of ejb - entity). - - set the env entry ejb/embSample/maxMediaPerSession to set the - maximum of media that can be created (upload, convert if copy is - allowed) - - Some features are only avaiable by using some plugins such has streaming - capabilities, video conversion or more image format support. - For using this sample through a network (not localhost) see the - Enterprise Media Beans documentation. diff --git a/jonas_tests/examples/base/examples/emb-sample/build.xml b/jonas_tests/examples/base/examples/emb-sample/build.xml deleted file mode 100644 index 636d26ea75..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/build.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/emb-core/README b/jonas_tests/examples/base/examples/emb-sample/emb-core/README deleted file mode 100644 index e057cf6e18..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/emb-core/README +++ /dev/null @@ -1,9 +0,0 @@ -$Id: README,v 1.3 2005/07/08 14:02:52 pasmith Exp $ - -============================================================================== - EMB CORE -============================================================================== - -In this directory put your customized emb-core.ear -(orginal is in $JONAS_ROOT/lib/commons/jonas/emb/emb-core) - diff --git a/jonas_tests/examples/base/examples/emb-sample/etc/application.xml b/jonas_tests/examples/base/examples/emb-sample/etc/application.xml deleted file mode 100644 index 5d6f36240c..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/etc/application.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - JOnAS EMB sample - JOnAS EMB sample - - - - - emb-core-ejb.jar - - - - - emb-plugin-publisher-servlet-jonas.rar - - - - emb-plugin-publisher-servlet-jonas.war - - emb-plugin-publisher-servlet-jonas - - - - - - - - - emb-sample-ejb.jar - - - - - - emb-sample.war - emb-sample - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/etc/embSampleSession.xml b/jonas_tests/examples/base/examples/emb-sample/etc/embSampleSession.xml deleted file mode 100644 index ae2c91129c..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/etc/embSampleSession.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - EMB Sample Session Bean - - - MediaSampleSession - - emb.sample.session.MediaSampleSessionLocalHome - - emb.sample.session.MediaSampleSessionLocal - - emb.sample.session.MediaSampleSessionBean - - Stateful - Container - - This permit to copy media content instead of mdified it. It create more mediaEntityBean - - ejb/embSample/isCopyAllowed - - java.lang.Boolean - true - - - Maximum media per session, to avoid server over load. The demo has at least 10 media by default. 0 is no limit - - ejb/embSample/maxMediaPerSession - - java.lang.Integer - 0 - - - ejb/emb/MediaEntity - Entity - javax.emb.MediaEntityLocalHome - javax.emb.MediaEntityLocal - emb-core-ejb.jar#MediaEntity - - - - - - - MediaSampleSession - * - - Supports - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/etc/jonas-embSampleSession.xml b/jonas_tests/examples/base/examples/emb-sample/etc/jonas-embSampleSession.xml deleted file mode 100644 index 23c3e122cc..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/etc/jonas-embSampleSession.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/etc/web.xml b/jonas_tests/examples/base/examples/emb-sample/etc/web.xml deleted file mode 100644 index ee70939732..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/etc/web.xml +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - 10 - - - - - ActionDispatcher - - emb.sample.servlet.ActionDispatcher - - - - LoadSampleMedia - - emb.sample.servlet.LoadSampleMedia - - - - UploadSampleMedia - - emb.sample.servlet.UploadSampleMedia - - - - HomeSample - emb.sample.servlet.HomeSample - - - ListSampleMedia - - emb.sample.servlet.ListSampleMedia - - - - ExtractHeaderData - - emb.sample.servlet.ExtractHeaderData - - - - RetrieveSampleMedia - - emb.sample.servlet.RetrieveSampleMedia - - - - ConvertSampleImageBW - - emb.sample.servlet.ConvertSampleImageBW - - - - ConvertSampleImageHalfSize - - emb.sample.servlet.ConvertSampleImageHalfSize - - - - JAIConvertSampleImageBW - - emb.sample.servlet.ConvertSampleImageBW - - - - JAIConvertSampleImageHalfSize - - emb.sample.servlet.ConvertSampleImageHalfSize - - - - ConvertSampleImageFormat - - emb.sample.servlet.ConvertSampleImageFormat - - - - ConvertSampleImageChained - - emb.sample.servlet.ConvertSampleImageChained - - - - ConvertSampleImageSvgToPng - - emb.sample.servlet.ConvertSampleImageSvgToPng - - - - ConvertSampleVideoTo3GPP - - emb.sample.servlet.ConvertSampleVideoTo3GPP - - - - - ConvertSampleVideoToMpegTs - - emb.sample.servlet.ConvertSampleVideoToMpegTs - - - - ConvertSampleVideoToMpeg - - emb.sample.servlet.ConvertSampleVideoToMpeg - - - - ConvertSampleImageOverlayed - - emb.sample.servlet.ConvertSampleImageOverlayed - - - - ConvertSampleImageFrame - - emb.sample.servlet.ConvertSampleImageFrame - - - - - - ActionDispatcher - /index.jsp - - - HomeSample - /HomeSample - - - ActionDispatcher - /ActionDispatcher - - - UploadSampleMedia - /UploadSampleMedia - - - LoadSampleMedia - /LoadSampleMedia - - - ListSampleMedia - /ListSampleMedia - - - ExtractHeaderData - /ExtractHeaderData - - - RetrieveSampleMedia - /RetrieveSampleMedia - - - ConvertSampleImageBW - /ConvertSampleImageBW - - - ConvertSampleImageHalfSize - /ConvertSampleImageHalfSize - - - ConvertSampleImageFormat - /ConvertSampleImageFormat - - - ConvertSampleImageChained - /ConvertSampleImageChained - - - ConvertSampleImageSvgToPng - /ConvertSampleImageSvgToPng - - - ConvertSampleVideoTo3GPP - /ConvertSampleVideoTo3GPP - - - ConvertSampleVideoToMpegTs - /ConvertSampleVideoToMpegTs - - - ConvertSampleVideoToMpeg - /ConvertSampleVideoToMpeg - - - ConvertSampleImageOverlayed - /ConvertSampleImageOverlayed - - - ConvertSampleImageFrame - /ConvertSampleImageFrame - - - 404 - /ActionDispatcher - - - ejb/emb/MediaEntity - Entity - javax.emb.MediaEntityLocalHome - javax.emb.MediaEntityLocal - emb-core-ejb.jar#MediaEntity - - - ejb/embSample/MediaSampleSession - Session - - emb.sample.session.MediaSampleSessionLocalHome - - emb.sample.session.MediaSampleSessionLocal - emb-sample-ejb.jar#MediaSampleSession - - - - - - emb.sample.servlet.HttpSessionMgr - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/lib/README b/jonas_tests/examples/base/examples/emb-sample/lib/README deleted file mode 100644 index 6ab933bf41..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/lib/README +++ /dev/null @@ -1,2 +0,0 @@ -Version of jars file is located in versions.properties file. -Sources are located under JONAS_CVS/emb-jonas. \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/emb-sample/lib/commons-fileupload-1.1.1.jar b/jonas_tests/examples/base/examples/emb-sample/lib/commons-fileupload-1.1.1.jar deleted file mode 100644 index fc5763d0d33108308493ac19cbc0e4c2eadfca26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31909 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 z 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 P)^^{X3b1Q1Z__@AIE?|K9uDyQ;FXsxrT- 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 SWXJ%*08$K?4GTL;tsoWXyW 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 B#ybE2 diff --git a/jonas_tests/examples/base/examples/emb-sample/plugins/README b/jonas_tests/examples/base/examples/emb-sample/plugins/README deleted file mode 100644 index 88ee43011f..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/plugins/README +++ /dev/null @@ -1,8 +0,0 @@ -$Id$ - -============================================================================== - Plugins -============================================================================== - -In this directory put the plugins you want to use (*.rar) - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/icons/valid-xhtml11.png b/jonas_tests/examples/base/examples/emb-sample/resources/icons/valid-xhtml11.png deleted file mode 100644 index 2c63d93f8868d574b9e69eda2727b7e7bf7fc8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1917 zcmW-hc~}$I8pelBA{LE+8qo?tsg89Uwc@yEOjt%x9C8uH-9fDmRdLXg4k$}{1soM| zSfX)3j0+IJC50*@Zi!S&5U3+cjHqao`Vg^TRIs_>{+{>y-uFAtIp?qQoUF*DA)X$- z9smG%hJ{KohsQX|PvGL{^5I{a9Ok-N5+MPAi-!jFt#<a+&@A*z9(j%^{oB zp?+)@tIcku%odB;VzpZ+-eNVI&Ai!aH2x})7E|kZ zUQ3v@7^^e#T1>0e@*2#j!5OX5sKJz4qd|jn8eFL{SXk7cMmaUEQ{%MSU}g}GMJcsG z$KtyFz-d{WWmz>#o0SO5(mDnqSx(C!8U`m=j%8?uVOWMT(y&H}5DdptFs{_8X&6)L zj3mU;Fiq21k}whwOF0D76p7MWhJuw8Mo|<(YiSB&Nsu8S0}djTR!Kr6Ny3yyNk9~V z!K8*JAc7!B0)t461_L=%tV6{V4pBIW<2XpDaU3Nvki^6|h7uTvVUDEM!6FPpMK~+O zSpo&c7>l7Oj*1Z!6=JLs2604;Az}nUgeZd`r~qXJCKF#@2#uuxV31dTIW;}q z)8|-pPYjEYxi`8C1%t<}9K9QH+;cWeDv>9tb@{z3M#+5c&J{aNlH^0vSLbY8GIYXU zF*=!RUPxnfnS8=&DBWKcc?F9sIzO{ZQrhB6Mu{gp9dJ2Uz?ZFT32yrQNUch#eB0HX z<5zPmymOpt*>&1)#^b2pM$zL2m70oIj%@k0=;^Va+w&&f=qvYBEKL5o*XbYgjEaqJ z!I>fPm1{0^)fHN+%`;-b;ajDbLd%9q51$Xns0)8!sqy!C7xrdk_P2=_Z?BIWeRX51 zZC_P#=a`?$XMQZmyrV1pIjVVE8@fWNTT^XTIx7#Ycj%_y_&BEAyJ)A&J+)v9t7w z`vr9`0uCWfB}fu1PuISdb-JP zLBW{bsrpk38WF?Gtm3%Q2OdTJG8IUvqMQnU58Lk2Wr|hbs@QotcTNn>>A?5zeYZ(n zO}mMR*zGrb=6wK^sz2_pJ-b|V=t%XP;Q^mdgWRRxE~mD_ywcE)J+^mp{mbW- zkDk_i`A<)Brd;;pi94^~m5h+AEtAwhhX$8_tX|9Ld4BPmi#Jc^mbi7+JanCN`tpb6 z500OAo}Be++lV^u&6S5x*#1RxQm>>oPD=c1wUjap3brLJj5<=XHU0bcfx;Sj;Gy(& zciev2oA2d4W%Jr#%iFnWe>7X_lAnE&d}uTKuL|C@Zbe*?)VHB{Y}Sk&(USv@F49C? zlr8>ld~;Rx>abf8c=pY6_g!`d75b0;+v|bYJ*~OCa7xD6;O3A4-VztjYnd_gy#`dv z@=y1)#ljQwE-Ms?;9YZ5oVaX3LS5vRPn&#%*1gV`DiSZq%eS^FvkP9ijhK)v-Ew?+ zrO#t>(ebM0;#UXu zwzW53k>u?7_pV<5abMwv=AdCiN=vRbdcY+GtE_RUb3;`_*SrXuwySjRIsd}ho$52Y zl9R3-OlzFcP+OJsO-De)NqtMT{Qy5A=1FetiF-i7)ZgC(`+%;2Llw_U`ckI6H>pQ^ zwCyj`3{0aH`pEb%!Aifc`G=288r(4=Lp46LG(&$mBmVZVo9BH@ArH+rXXlWqiqLgs z2PZ%4C}`+WFYkQMjn5o=_nuE(>xvES_5YmeoYwL-kB}z(Fn@aDvx&r~!)T-O>#RRJ z|16&V{Oz+RVz1iXBEGx6#6NB!S#{=Q#^d9P@Pyu=2JxD{_GInb)}yLoRn*tf_dc+} z`E%qGTiDL->G5BqdTzg4wq-xLEoitYX-I;0Pc##9sdw#qySK)gpbGZ(P?-0;R;V}b zvQ@dbcRbm>{d$F`KF`|V>YS$PU6rPqI(1*2Y*HL8swle8GxfLk*50qSJ7>v0=zVXc Re0F?dK$vW)v>aKN{y(`9mQw%# diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/icons/vcss.png b/jonas_tests/examples/base/examples/emb-sample/resources/icons/vcss.png deleted file mode 100644 index 9b2f596e016533327216d98a0a927738fe17384f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@@!3-or#C~03U|`e?@Ck7Ra+Q_kdEDnlhI%!W zMb4c&_g;@{HxGAjZ*NM+!7cOCYk@#Y{Pps{+}zwx_wR4FlUu4N92*~!s#T`6W<+- zt4%e$w+9&~i2E*D*W)T9Bhx(p?A&_0|7X(X^Ya7IW>?MPDaUzu zczTO0wr<^e|Jf%QG42CClNSR6E4d`dFZlmw6q^`8Jh0FrC=HPY3SEXN1j@jH0f@DT z;lF?am<8g&3^agg*jyz(n}LC8qNj^vNX4zUQ)`1SI|v-Rel?4G(T!h0t6h3r9Tx_% z{GPN=z+e1GN8qGw>eHn5|8FmNua|o1m5;W_zoO+QbMz<2znfQG#(ynM{=I#{0V!X> zqF)tO-~TK+p#QH~U+~Uxw*7OC?@4lzU=MuwAfY=*I-PyJf}6|jF4ry6#nK@bObtKJ z{jpr)a7XQvK=_v<_kY&OUtDf7N2Y`!=sAP5DASo0{WX7G;uf&=`Gs|Enroa;cP#bwBZgT0Vk8}Ij!pi@+JzOex~wA_|LQI>iZ4KOPMZj@RJmq z{=ckJgo`sg=^ee+rLf!@|1r#|1Qou-tz zozY_28jcOAqH_ZHT>9G+6r2tD{%tx^c*pF4-nNSOH_A#)UvDaE^>6pwzeB^b1utmshBn2mW1YZ#q&(r+Ne9lLHSPV z;lJMu*6nF1eX&Vu#au@n)2h{;1^hB;>x|=8`0r4N5Dq`3W>NpNuIHfS-r}72x2dtZ z|1vypS3P_!s?6%3q3f=mrP_V^@twUAXY`EwoTZxX&st-k^Kye`&fdVV(2iA`qSwCa zO3SD?y)^LM2F^-1=1_^hVN1d%c)e7=87<81^0{cK;`g>k^UAjGxu$SW%#%-OqR3cMOS7CD$Nw90jSF7TjZ+3b%7?`))PKP%lew!LZ} z9@4ntXMQ2~DY0cQL^+Gz9jsW~FI2w%Uw?1i^C{7@K5}j{esbPgg&e IbxsLQ074N#oB#j- diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/footer.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/footer.jsp deleted file mode 100644 index 6abe0bfbf5..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/footer.jsp +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/header.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/header.jsp deleted file mode 100644 index fa91d53b21..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/header.jsp +++ /dev/null @@ -1,31 +0,0 @@ - - -<%@ page errorPage="templatePage.jsp" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> - - - -JOnAS Enterprise Media Beans (JSR 86) - Sample - - - -
    - - -

    JOnAS Enterprise Media Beans (JSR 86) - Sample

    - - -
    - -
    - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/mediaList.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/mediaList.jsp deleted file mode 100644 index 31920bbc7e..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/mediaList.jsp +++ /dev/null @@ -1,109 +0,0 @@ - - -<%@ page import="emb.sample.servlet.BaseSampleServlet"%> -<%@ page errorPage="templatePage.jsp"%> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> - - - -JOnAS Enterprise Media Beans (JSR 86) - Sample - - - -
    -
    -

    JOnAS Enterprise Media Beans (JSR 86) - Sample

    - - - - -
    - - - - - - - - <% - boolean lineParity = true; - - // get medias - javax.emb.MediaEntityLocal[] medias = (javax.emb.MediaEntityLocal[]) request.getAttribute("samplesMedia"); - String[] proxiesUrl = (String[]) request.getAttribute("proxiesUrl"); - - for (int i = 0; i < medias.length; i++) { - - String lineKind = "even"; - if (lineParity) { - lineKind = "odd"; - } - lineParity = !lineParity; - - %> - - - - - - - - - - - <%}%> - -
    Usable Media List
    - - - - <%= medias[i].getName() %> - - <%=medias[i].getName()%><%=medias[i].getMimeType()%><%= BaseSampleServlet.SIZE_FORMAT.format(medias[i].getSize() / BaseSampleServlet.BYTE_IN_KB) %> kB
    <%=(medias[i].getDescription() == null ? "" : medias[i].getDescription())%>
    -
    - - -
    -
    - - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/navigation.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/navigation.jsp deleted file mode 100644 index d560f25e71..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/navigation.jsp +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/templatePage.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/templatePage.jsp deleted file mode 100644 index 6a397249a5..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/templatePage.jsp +++ /dev/null @@ -1,67 +0,0 @@ - - -<%@ page isErrorPage="true"%> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> - - - -JOnAS Enterprise Media Beans (JSR 86) - Sample - - - -
    - - -

    JOnAS Enterprise Media Beans (JSR 86) - Sample

    - - - - - -
    -<% -if (exception != null) { - out.println("

    There was an Error

    "); - out.println("
    ");
    -    java.io.ByteArrayOutputStream ostr = new java.io.ByteArrayOutputStream();
    -    exception.printStackTrace(new java.io.PrintStream(ostr));
    -    out.print(ostr);
    -    out.println("
    "); -} - -Object workspaceContent = request.getAttribute("workspaceContent"); -if (workspaceContent != null) { - out.println(workspaceContent.toString()); -} - -Object errorMessage = request.getAttribute("errorMessage"); -if (errorMessage != null) { - out.println("

    There was an Error

    "); - out.println("
    ");
    -    out.println(errorMessage.toString());
    -    out.println("
    "); -} -%> -
    - -
    - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/uploadForm.jsp b/jonas_tests/examples/base/examples/emb-sample/resources/jsps/uploadForm.jsp deleted file mode 100644 index eb98a700d3..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/jsps/uploadForm.jsp +++ /dev/null @@ -1,85 +0,0 @@ - - -<%@ page errorPage="templatePage.jsp" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> - - - -JOnAS Enterprise Media Beans (JSR 86) - Sample - - - -
    - - -

    JOnAS Enterprise Media Beans (JSR 86) - Sample

    - - - - - -
    - - -

    Upload a new Media

    -

    -Choose a media to import, the media can be either a file or an URL location.
    -You can had a description if want to.
    -The file extension must supported (see below) -

    -
    - - -
    - -
    -
    - ("file://" or "http://" only) -
    -
    - -
    -
    - -
    -
    - -
    -

    Supported formats

    -<% -Object workspaceContent = request.getAttribute("fromatSupported"); -if (workspaceContent != null) { - out.println(workspaceContent.toString()); -} -%> -
    - - -
    - -
    - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/samples/Java_CompatEE.gif b/jonas_tests/examples/base/examples/emb-sample/resources/samples/Java_CompatEE.gif deleted file mode 100644 index 10997dfc3cb998e1d78c13183ea1f7fc26752bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 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 a>bm;Xu#UB?XHDx`+xphH&b3G)002ATq!>{E diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/samples/apache.svg b/jonas_tests/examples/base/examples/emb-sample/resources/samples/apache.svg deleted file mode 100644 index f12b00a67c..0000000000 --- a/jonas_tests/examples/base/examples/emb-sample/resources/samples/apache.svg +++ /dev/null @@ -1,759 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/samples/frame.png b/jonas_tests/examples/base/examples/emb-sample/resources/samples/frame.png deleted file mode 100644 index af8a33d61e3fb90dc8ad7b6366d3cb4563af8844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8358 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 diff --git a/jonas_tests/examples/base/examples/emb-sample/resources/samples/jonas.mp4 b/jonas_tests/examples/base/examples/emb-sample/resources/samples/jonas.mp4 deleted file mode 100644 index b8e0d71d9f9eb23aa959394d20b51ca967e785bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936410 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�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

    1a?-k(gVm!4 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%0DPng_8R zF0)3=VewO?`cSenr|}q5Y}JyBD_Z~?2^3AiWh4JWsw*Yxym9S;i*&p)VN4478MqB# zM9k*~^5~AiMMF}XKa&JiP`Y;$-S#IWoH~i*#0|5eRUs9EyXia-12?k7l^6+-n+2(2 zR!_?80wjG5uKgs|t@O@ch6c)3h#A}=wldGD6P`qOg{jZ%S6X}@-^<`wKuf~yw*uFn zWi`g!aaw(Hflmg6B8=Ot)%@kWJfde-ML2Z{ZBMmXoJzY!+IwS}Wh8+}5gZz?#)lf-G6UVeRO>G4%oH2F3>Ku6RR7ls!b@HNxS2*`~pyGvo^L11x zAyX$hy)KO3sEy2dc8RQaTv34h{o-1y5LAymXeF;uq`W@cOh=x+DF%3Jg&!DP#Pq?F)YJ~rp8%o+s+;hUa`JCDb`3R{r9sIt@}N6KZWE zdUofr4AB4DcqVT(Pc$qY?^fJg&aRUo{~nCeMj8G|Gdz3vRv&@gc$Ao0I~GbKp1>Qp z98lbv|K{#xRYq+L#=4@fx?pl5Dalv;4B-3g2ar8uXC$lmGoiQg=C~u&mT?WKF9ag~ zaz5_7Uw{?U)54%uCo}5HAKWjpGfBEDE>YX+&>ZxQO=~i<9@>{*Cnt z_q-uPm6cQ>gG=jW5>|2Q>%mI)52Wb$#LcPq+)^E7d=2)k|JM&FBSY(~{xgfV*oobH z`Y=an>+JnaxbC6uM-?x{LgLqw=0Li6)5RC=V~7ZRKJpnR!3)?8-7!nJA#EDXo+e7y zMJ9eaXeZCU zEYB#ZaPo%ohC`=GjJXhP8mNaT=JT2}9o~-Z8L(Ol`+|L@9K_pvH(4%Ii3qErZ<1Fa zlP6by-e87YlrUUhem$|3$mvz_X!;nwodHhDoDI_OJlga`MgHu@qr2w62?$n2A-{!P z8~3rnzV5R+ovJg@-VHBv4BZ@tYMb7bHqr>_ttIbV(W&deqS+N$=%I|98YbUVT3qUG z)n6%U(ducx?%a%UbPj4)v2SkMICAcpPjkJhA@QzfQFvPh>%>KgvM$(?OSP2+`BZCE zDH6TQ9WS-GXv6{5vjYMMm!9E45WFcq@W!NXd+j`gQ5p`L`_-F8PQ3!ymdX(~sgiU1 zla&{&+E(lMSR{C+Dw-3mwK}SbzJfTMXFA?(-yLXFnCd;MYuly8Ixd0S<*HJ+QEKy> zmXa5Q1|aCjk~)gCoE-jK2|hkl;~|W6Giiip7;=}_L6mk3`EE|KjlxQ`o9?v+eYVfw zEv^Q%^ssJ|G=wW=#hE${!S2)GQ)(1uJaLO9jROYFCEd6I4dC?q@1Q@a<~;x37~64^G5Q3XfKybDXQJ%=o7ch!rl8N3(J z&D(_qyoV@Q6{6j+L7|COvB(u=YU-1+CWhI%aO=Th9R7U8;%bm^JiWk{m+6tPZ@fa| z>LI&D*8R>)=f8yAV5Z_sx*=uA9)DsvQ@ZakZ1nxN8O)PozqhZ+Xi*=qXL7`I(j8is z2fCGE1KAC(i}c=6BDS(TBeGh%v`_{!Md|RihVeo3yi7Z44`7QI-*J6OyOTsdZ0|>H ztDipfI-D)*R)FPQdGnH!K-P>-xqE;KNGr=iU(a9@Pg`zB`*kX%IMp$Nu6mTs)^^}T zv3INECgaheftL|ZURymN<65nz#hpg0yz_}VPC)BlvH2jWCj9wXOS-&Gmgn?3&A!M_ zrp4Z2&Tu8~hn9n5@35ll{G~rCI((8V**YKI6Uvaj6}b24>Lk80J|-wOKIrw@<(0p@ zV*4cmZ59dqX#Oys1A6^Jq0$#uL5NH)MRzMroyPIdYDF>K187wAfgylNx2ZgG_h5P& z!D9AUY#CSb#V8x;=h%PGq>TFWZ=5&RgTuGYS5AE$&n{&;ri$yNsL=-0_X7z{yd-U_ZPOr&r&>@8(H^m^rAJfrWSB@{LmqN zO7kbv!pVz;6U)<`^w;E1&wg({b>-FhBCK)sM#H!nDzKQSbKAd?9K`jF)(3&so2)?vS3jtt(4i{WErk0nRRw zv3k>`Yxml3J`B4ynrQ4cG5xm4$#x|&k+!S;$)Nja=Fk3KMA=3Q@A9SdDIw5XD|y+ca6H#PYiSCv`859-{AEHZ%m446 ze+)pY_y1`jbtMF?NxI@QTA&Ro5X$G8?mGvDOo)l9yl*2oS}od1%YS-E^pDw znri-bra6Di+pE{Se}XN190>AyU`Jo|Uj-p0VA7HaMr=oXI2qLvC~c*3P~SmD*Ob3zbPB2Tj+0 z^?F*PXH$n0kMY-*v*N;zKYf2pX$Dn=!`V@^Sg&(>@H?1sZ+1OtQoPy5=1VaEKZzjY zkt&B#V}0N!!4{Jer(D6v^d5o4%mZF(16?nrUj|?Z3p~Q$&sX9>?y&&31-Vg_ie?ai zLK204m&vSFQru~9*fxx4v6SZl-6O=dZfN30ih4hUGT!8&Y)GAA>su=IE#s1do(^!; zk@xO3cq4N+Qhnq)2D=wo}<63DpZgIF}}+e zdU1`Ah7Da`f`BxRDM<#}cYWhNlExwjk z7h#Xy_Zf?sRF=HIxb{?Ye8llsK_kCEx@C=g{80&sSWK?$|B?Lk$WYDT5} ze96b`8w6F161(*?x96Ag`S_!Z7f4F=j%mVP%JtL!o#_^6SDgi2{mGkkQaplhCXqa3w!gT>vt4_W%LDn)`2uTSDO z;|H~#IN=~i_9r?c-)G5hZ?E3h`^B0VcB}tBC(GWg{3klE=aveGXx#gsoicA+xGkUQ za{8K7#jaMUbFWxcX|7Jy1mfB4vCkbrT0;^r-pVxp0L!w!v-M`tQj%X?^g(Ea(}lnn z2x0`g=t`^ohWZ6{IsG*9XLXynV{?npK{tB_s^are=a$G99JL+AS36!NGf*E%Dl$h|)d_CQPn#bHnZ*fnLG`=J#0x@etb)8#BFC_e#;RugKW>ZKZy$+|^DzU48S;qS zn^-z9!vFfBXHGKQSVZ%o%gZtC(;EJKh@7<*;)B`Z);k$9>lY_ecxr&7-%sDm>Ft%x z&1J?|iQQz4vY$UL-KR!LqXmSh?F-Mi?Q6L%6z9ZtR|{hF#I`nQ7B;cNbN`P$rt_3S{tv=2`HA$ z3$7Y{UF!+72#bg6>-O`pJSN^Kd7@P&wK6xm)D9RADkhBIXnC_;5`A&orEhcZ7Pwv| zY`xRa`Y+Mdse%SxIW`rdle=&|9NuCPdD-N0>U zC#s}@lo$JfujlXXK0WiBFFh@`PP}HYAMa0MD`JizUs9Oa{$Qq2iZ)zxF;~HH_*%Uv zn`!f#9lx@3(O$EiJn(x>YT7~(@LAwv&&6UA4z8RdZLkhLNS&_uOAj%#nY(%YD>cZZTFv}F z$(1M1=9ORPPYr*va0kmaJgxM{ZeFtjL;g*yh?yG}{dwh2>d!znS<@IL$<1b2-4mE^ zRGDdYR|5O}LNBPss}{BYZ@3_n{{e=zJvRHl{(GE8aS!i<*aU$N$qJ=d(}CSScqGZ3 zhq}OLA{aUc*M>vE*pD&<=5NWY)(+y|u)pAb8ofH{DVhHNaQ5c$P=4?K_-xErXH0~| zjF7F+MvG+(B3i~WsAPmTZIZHN8GEQuq}`Tc5EZ3tV@pw@OnVtyq{Sc^+syYGy+}8n{`%gJ$IN}7``qWg&wZbBopYUQd0vRcBE|?79)112A`7w}v?UXw|2Q|L@zO@8 zi{}0WM|kWCmFYM#^wZIQl{uYxVx!>b%}L>|iHQ7GPG-dR3C473+sd}@7q^G@@Gllr ziz0mCMLtxZh!9#6C`KZw*J1;n$dchPJZn*ztT+t`W4~NMTx&7}w~I2c)S~H7WyBWc z^k;R@PNEk>L6AcUj*ZoY$?IunU=%b)^@1ZYmDqCmxrdiO1_|!&w7eY2!DAdOZqyyx zXqXgsIbS+AAm6_0^t~s!3=e)g$msZVF*1+zD28om02O#D4ikVU9Go_02B&f3rLj;$ z72Fcn0XlGoh#@j~{F^Gyv5?%l5f^j7mk(14HFwq8uRg1;nCK!cz8g`khMgPZ;$gHn zvUR&mBG6g2K2Am}+206^g!kOc& ze&ALsZ&iF2QzeY|0%0P2$JPQn7Y{-PKKWZXU6YhK$ea{p2j<=;>GaNIw?q)?G4=@1 zc?oq^GNql6G0;1vI0)~1Gjs?OcoErb`ZL;1eQINKM}%_Q%kc2tL6z?s}jUA4MOSCr$z!bc5T zSt*~&k6ezBjN+2DaAfvjC-UwyA3wJTkePSq4t}mVOwhXf=xm9+jCudh{d?qFpBJXY z(e6%delv^lM$){G@}A(ocE=fIqa~0yrHzOj-bLxRPiwxJrR@)mY~2&v%X;0!yo4Md zE9Z}^Z>B8vD3GBVDn{LA(GmTL*9zUwj!{7DrNLg=fF%Qw2+Z0eY3y$ z+=AjamtGdkY`!M#B{sM6 zb!J~J-iP>S?Bf55{B)P{48ll9&%c@T+<=&1?7c<0bT}JUfUG&9R7=v-_Xj@o-CUyF z>><2fQbvf&Zh+QVA2yrG@98KqdtQ%Fv6tN4UQL7bM2P4uMax_9DgjuhNFATnj z7ematXkx&Q8Qr@nvVp{5`djgaXIkrlb>&Ub7Slp^CLAx73<*}(A?Xn#N@$}y?(t2* z+<38zN3P?tV8B?AR3Dku3O>1kbnZ&hONk|RX`|$bVtcojtZW7tum}8+oo=j0%nMub zV=!2epbo3UL9r}B#Zl%*NKjDA65EnR!J1}r>BM9XMsAsUB8imJQ~*w;!*g^AlzXcA zRA>PM;#jlv?>7(6O2cbT*$%WeRnX9Me02dtca0{bGPEsvW=WwEKApNd>QY)7+0odh zQkGmaVvddgP_2+%OBYr$PvN zI?1z#H(Ry|F#$_?m@AY_@l(5T_6VLV*n?5l6Pi+@x(nfoT~68Yj8UCxrC_aC1U$b9 zVt*JBhgKzXY;1UhXxyv{!bm0W9Zu{OA|#Y$>WIYiiyC=Wu%;l5r*N$d(cJepCS&s< z4)x`f+1t@qV8#?_T0<+S;BOyzDUofq$PzkQ9^z|x6rh>ri4jEWoawqm zbu`=GE@prxujf#HN~(CjI$9jM7B3brfnbYl%b0V9hK5NEN>qcST09m}X=TXq#GRsW zv5BO~p$o{3yE;2&xzN=HxS|CQb2UL8Uq5dM4FS}U7(#LaI}D9U(~Kw}<71=v1K3~jsp%5o0K97ROyDg1c$InpujizxIu;L-fCqr*SSb1$!tJn zM_TB6JkS-^3QJO6%HFh7G42rYjiTDw@&@LyvfBN74JD(WQ1|au;MpU|#kqeFRw{XC z&h#7Rie0YjJ#)$B$?$vgwNG)=AM1p@JomU_*UgI5C+bRA71`$Qf5`RkUI1|Ce>X40 zRX6~2cT6VixButt-yIim?Qb4RgrE<3^Vj?vHU9eFe2nNGJK*=<4Io`10ry3@!5;GF zulaY`tiSn~hp^uXzyEGrL^dQuWjDee^5(DkciEi3`IsxP_kiDjH!dO<5~8xEu!p?) zYyMp}?{EJ6yNFQu|GRM!Hz6S^D|%nZ`~SRe{@;9z==q-T`|rj@+=7IttP<=YZ~mHp zKlk?Ee2nNB4EX(b<01+mAu5Z8J><<_^Y5~SfAcY-_V9w=e>X0I1qmpNoPxaRv z`{dm|M0Qru{-!&v9xKFRZ&Ii0&)u*2r5ATqHamY|hGUxH*0YbcAIWbU63ETUt}YG8 zb<=tG;bz2ZqnV|x`A6vbI}gvu9>#xoaQi1>12O9D=aGy&-|V?h&7;@1YH@}(#4pvZ zIJluzJid8_<-ReKyo7gKofk50uk0X8ypy-}BE&9}ZIhMpkw?5xsJ^yrbf=)vaCzck zg`_Xvw)VEG1CnZr-G{AWQ3dZ8uRd%2YOBPe4XoWKqpFvO9om5D+Vi97oH*<3F+=Xx zp|^{-EwOT?C>yMGv?uj^Jka|>{qWou*N@wcS;gA=b?zQ#snZKRqqd44cUIct%V-SS zTJ^X(s5^e!28P#xq&}HBc8d`|=E%(Y&(2-3kqK_7$VWe&@=jhcto|;4<$<5O{z8Oz ze6V%U^<4?ChQ?2FjcGYe#JG#;5+xpiOI2J-mS5U$ zJ8ds5QE=*}UuLh>$&0~T&K7ICP4)Y|xyZKNSu*T?>cEM2x(Bs$?^HG!pzH}{13L0P z$}$_5r*yqxW`+07SJo1ZPVA8pOvQ#tm+^NiesKQx z_iL87EL)T?dilax{CbzOM#7`kk!PrW>4}J(4Pw@0BUNLwxD_|pyKDDHt}1<`Xg~Uj z!}%t6?^^gl2iB{TdkzHLL~wyF2Go-hwaGRJa);FY&9|K5og5x(K00nW znYr|u8$-z&_>HY0_G`5wuKtdgwyeUJXJ$@jZ!>b8uzoKoi_JI4yO zEN*QdcXQnu59*&o)aT-19)atbEKyW0Ec4zO}o)0bOc508LYn$*q?tVkA z50XZBF6unAGTz&GWbC2*cS4XOH}`X_%bre#{igMIG6VKsBd2cR;3^l2Lxh2}-IQO= zOX-g12VRZK?`X|U9$@<4L&rPL9DFYPRNWR5w_IBG`&pNq)rd>Sy_bKJHX$j_ihXTi zPjt*EdF{5oj~ey3M7H*v5$r3`oNS5sRm{H@kfd;R_3N%{USw-5LS|;sE4G)$(+96( zjwzH-3zly;c5J$|Ij~-gsxEWG{Ri{w+OU*MKVO#p+VGko^L}rvub8y~ZeO;YFv8(S z(JgO;&8^{bv#8wIQ)s&~wuyHxF`!YaqN40crh+}|fT@v;0eS5nQrV4VGe^#LWjKeF zUr!|7o*dG+_uXsYtwl?SDd~{Mp8ajHrw+|%D;mpFrJA%6ax(U>jDIGX=}k1zM?QzF z2+PkplZUoLF!8xx@2BhGgXCqN*Ow_LnK|vKOk3`EeQ^I~#6ndg%e!_P4?V^DVtpF> z!&7dAC)~}s;y-Y4|5l2NWrp-`iAAe_nFpqm*Q#&XN$Wau?!xMQh!6YExG&noE?X+I zn$!LMqf1fOn~(BWJR1YRvoRuh&Hl~Oxo?X3vem@*nHS2v>9QZLZoEi6?j-dwL8
    DG;DXEaxkag*=F-bF9Swb zpJ?8*JyuFx%W;2XzNEM`Di?8bPLXo^Lt6KDb2&EROlASmYnWW}5PG}mLCcn99d~gN( zx1zT=t+(8N{Uu`E_}RM_ce@MrHZh#Frf;6P$FEp>sp`pXks>-I0PO1;%uq45Z0heEA_1AWu|Q%c~Ke7*tqJnfy0}aKnOdWJ-zPS%wwYs zl)krX?1sNnWLD|7W_0O>zmjI0LP3OrISvfyV?rAQ# ztJ*%eImqbXy7VpmQ=clXJimD>t|56{k#b{}n)Q|~O%b{Klfo}i{Tud-^UJy%x)(ZA zFRHw{f>94?IsUV$Wysbnxjy?*jq#d2aNDLF$b-TgT$m-zIqEj=6bwz-34AWfqG+?R z7E?_#d&_v;gq7Q798mFu1UPRv%z^7TSyPT%bK<_cACy+zKgFGaSOeGBlS-b5kN0lP zy8PQB*|`jx?^=E@EoRAs{^H**506wkBMI9marHd(m=ssM-+zUef|r&;?vwivc7txRSj%!My6irxb~b4z&|TxpDepF$v{w1yqT)l|sAMaAKbC!opfXwW za{DugIjAVdWD6XYE#87qS8!T~&uJJmAoD zv%}!1y}tH?!$%F5F2ghz?q<3C@;iEBC^=v5R&TLeX~UQIs)d(s-g$n2sJU!=eYZ>BXJF7HDvdPh6sv?bsbdi9a#zOEl1 zMMWK|N+*3WedV*UVePd=e@5!XY^~1q*!vbx<1w!WmU`D5d5}}KzDNae;L7`f#MoT- zKLuNjed4}9_0H4ZI!k51O!C2?Q)*wNmI zP_a8B75OXlrPhmR|Az0EymqZ$-0rX`NBmRA-9IRq2T^ubd6&y#hn&A6zTZ|tVk}qS zjFeGor~~U7zE;ZegAV?sPAi@SR(WroPK@zvYoyUVah( z#b@eD>P!7<)#VYE{k2RxmGU#U&Rs4X%c=70RjOlT@$`1EUiU?2FfX@=`wMh}lP0e$ zKy|cdUUz@I+{D0FbFWt51-)mxq(Zfk!YZwO6`hv+l`q8eIr3+hXKNL%t-G`WvH!(^ z*zc4*1)U7MG+rY%>(40yF>~$BUyHl$a$*~%w@GNNkQ&*5s;1_aXxm(olXR)dHzG)O zKE+WN;QMRQmLZm9A>C&;{OTOYIKbShI``Tpq}BMt= z9ylgh)3)Stdrp<;)E_(?@2Xi6ZuYLYP(Nzf*&X++tXKcEyFz$ewKB5&yyub0siLfh zpYywZUUH!_Cfy7J^~0kG^y4R&(@X8QO{E(n6q9cH#^PorpX!v)tm+R89NX3Va-9$A z-Oz!$E3bS^lELnE4vVic*L@%JrxKpNZt^Eb5oF`p_uW#vw4Ij2p8y$Qr z<+<`!%bNFAqZOAvOSrs$V4Hd|p>3Ic{(?PzyO$O;2Of6We~IH{IQCLR-0PW?GMR(+CeNoBUtdFY$0)aUYb!7&jKHz6RQ~lE$7|2D7XJ!6ceyF@ z$iz}tJF+cT`bpBAjyC7Dk7}M`RMnPl9IBprv3(z};$+s7)r05VCDuGqP9wfsaL~2x za?O3G=ubB9PZYeru${92b5Ek_&avP8k1gZvHGi@T)jw`GX*;+Pn+h{8M@!~PoTl#6 zUJ8Gas-)9{>Z5xMOpfbhhNAQuTmuyM%0#suypyo0@Z@FrYu=q_6+7!qyaw%Z@AWnN zKA{ynmqc@}AF-*p{O84YUe@JZJFniKaGMJy@Cp5gu#24^%g!z`J8oRtbpKkDk7P4- z<{0IZuEUjhFK?GE9hDXS>3eStzbo-txN-B-Hndi|>daHD^Al#Ui;`zQvX5jyTC~#D z`&s+>m$J^wLN8%g%{}`K#W4(mcmDRP1iu!Il=mYxM$<-h^o%eh_Q>i8nrr3OO zJwtKl?8SJraDBx}mTIC%LVPr?^($Cyjgryxvg398*ge5~Xm9#*deZBxx zS4M}3v1wrYEi&a5Z_17m$%R37JxJ1Xvu&VeL#nN`R0nGfW9pj{(8)-6617VK!|dS~KG{(QJxq0U3jkrHjPLmUwQfC8!86 zdRom|P)2SyM$_Q*r7RIoEI9Q8wkycDuX24%*c&;~iNF*W0 zqCnO^8)8`wpTHk%u*0&ILZwaNVJAaFp^lGnJ^;z9mMO6ZZcT_;CK3zJ&`()z)Jil` zi8^08wb|C3`E#Q7@m0b#-pPjxKp=@)ChbJYjj2f^So3_B{UJMK~=kYfF9xK)7 z2?b)<B#tm2g7wwysuUdr^r?SEzG`q;;HyTx+kpTx#2yv=ub<0PMle6 zOS&r1c^0?%NXZ4kgApOW`V2kkSsw3L)?ecJpZ`b^QPJ}LQ41AIQI#m8L7bQqwAng# zE{_*>M=$#`(YEpDkH^`kDqlSH*NLt*bn6)_Et;{fIq0y(Z{@uak=|e+hD`xYF=#0; zVvzj&pDuxKAe`5NFjK^2pdPT<1^ixD4>KMGQBPJPL_KiSR4$A5z-DB|T42_AokFH3 zde)E>nQrx5FI889brg?8ifo`kn`Sq1sBSHO4;w6l1SRh3pA0VavCM1T@?N<5xc`>p zj8PfQO?HQL2l~diR97tPu8uO(im%QO)IcF_}=$HRl!Sdlo*oP-F7 z;$fkygA2TH?M1U$B6L&?dbbz^&FJNdR8Cf+f3~UoqfuSw`v$#B-`ak;^Jul)Rki`H z+4_gi=rVgloQ;qq;m69Ia8sE1VG2fNKP3s2mCq)`WEkLJoiohzqGe)?n5EbroD%n8-Ekbv#}0r9#-@y z%~?Cl8uMD0VkJV&*QsHxm|o%d_hFHhn`|seF*7p^ZEo%=LQHPh?tcMEDYnOH40s(( z>Iu!T=kOi!8z<~D8tr{qiY^TrSU$+)3jL@Jv;pe>0 z>@u)a{U+$XosiVWs9H(ilwkF~QhcpY$E_Q0P2XUa)!zB_yFHd(a{0ygaclsGIK8EM z?0SFU$f>PTZuq?TXWvYO0#s|+$>wR+hb-Li#aYgIdYyish!&Hs?Er@l|n|EAm7 zd8+ll|3CEl_n=!uwT@Q**tir+LF*3U)DX=+qde$X`NKl4C88sEEr!ximqIa8j~Xia zl0VD=hFiU>;Ju1F!C(`TR1S{M>qmAfLKG-z1x zw%S)T3&uh*Q=%op4)Mtq8%{;2>tu(6jpB?q&FD|85!3u&>yXh$AcwVrK4hG&R5n;V{II;lzy0%t-6g7CaT6`WHIl zB!e$|AfQh7)kvj!r;f@E;@%=+U9B_SJ8JeJ`_xp#E{d>PQci!MRfz3%>xnE#Q8m@< zDbx8W^)kZjNKmV8-Do|5S+R(zz_`PCXgj z7G zE6?-1+MgE;O7?pMwQKt%OxT5`RB215-S9HoUvcn9m=vqTeH7dtSUQ%(T5}g1`EUGy z)?x=;q-=d)kUtoyAcjk{<>7}9Nt=&4`a?fs!GoxYm8;x^C&d_)% z5o17XYd~c~$e5Pg9Tk4DWwIE#u^c|dfGA+u!=Mh9h4tlVlu{-zM}OKfWVy5U7{ko& zcrSL&%V2qp(WzidmtyEVG?lhgHN#PT7tE+6 z(Evpf;r$y-~8gQ8do)C^^xIBa#U*a-+tL=6R;6#eS z_~c}cK`yfw8C9uZh)^4TTgyNn7w-zJpCK#XrjZL8V8mx)OT9FhwPKQmv4~i$Onn1> zx+Gx_%I-H=agP33d~HEU-Q@c#A9u;i4vn!qp8$^T#PT-CX9L!j~DsJ3rMR3X4PZ3A?c}o>mJbtiEq&*&W)nEF5jSO@1BSYUm z^Z8k1wi>c=1m7|>gLwPnGczngJen}I`9o1_1F7YU+tl~n{u8#_6pNUP3o1nnbhm^t z5US_A@o$eSK~RjhiBE9qN6TYZr7P(F5eQ_zQnwj1at#B_>=6)2rWfKAY7wa3uMVGkFbcF8P&0a6B+i|d&K?}-~yF4J`DS=5Ul=e z+9C&~D6wAp_JN=V)Lk-E&PWC>jK~~8@Mi5`z*13p;kJB_^GCfd-^0?;SxRDx9DEszbUVEM<1A7}Zo+PK-)VNiQ-Ot78#EI{)C8y5;Ufc__hwlSq^x zgE2-XJ_9XIU+H_@u}W@D&BH4Z%dYe~%1M{>S>Gm1N~t_&5if{>NCD}*fG^cAk6?#0 z5{7&HhscP~d<)<=Nut(-G4>q{3cwHa^VRY6sAhYBQx`{tA{&1m+C&1^-q2LB!>c!UJ}|=Ns-l*qVg zWH&LA+0;B7RrYx1i%YS*WbT>#nWG6wH9Z9Dmp_kAR$G*`eYfNa#|=nbF+*A}^~R4Y zyqaK;e$D(2N1l^7GfOEx*BU4tqpZq^PAq*>E_1T`^k|mx^+JZi=JUoHr~;}(dGd4C z*Ulf$lt(sh-v9q|cisO*p7ZRsQ_MdT z_gNG<8re%r#iJ4Lu=v=N6b?|p10*jD$!+{>;7Z7lSOlMbeg1CASg8>@`2&pfA_iN4 zF|sfM6Pw6d`10#3Q_@o}X4}7WmUsGA!_1Weh_Nq;|CI{L-SOP!?RZd!9tW6^sFcr z3o+5F!N>|Yf@_;_deEDMs$c`9^!>uO zoHJCz?+#W!I$YZM2Kj-tC6{r3!fx72wM;pCuWu%2re`eMi)N$df1e;1MyZ1_k)Mz8n0mdth|zG+$;2AS519237-LP_wi=7s(hxzdYq*M%}P!| zF_z?!>o$CE!e>ISg@FZ+=DNm_jSxZ(O48Y%sV$d>>)h zjM8-!b98iv)Q20Jp8QCi6!O=>e23>#OoIzxfED?w3t_3r%cK~EX-Pm3RXUku{TQkz zn00u7!EMN;k>DHllkr|j&@C!|D`(5%0#|0kVwUOupYDK^@E1?iYZ>SwP?e~LB`3R9>1TlMn5vF4flq&5QO&C!~3}7Ox~G z7myPvYJk>^2S8ROLc^juD0v^H#8=+zTA)lxHz(fC2#6-|tL;b_3-ITDQ}jm<;!kD9 zTiQv6HvF2_uXCNZCRT+JQkAF1ip{X<;r|JHY=^D3$jj0HgO(jGzn$A^*^{j-w&be0 z=j~oQBLb{2uZ`T_e2QgpziPC1Hzz6m4QGOy9{dTB;`M9Sb60HdG&Z^B%(?WL;eJ2- zaanZv4iqxQqyOjb?4|YICpX{yQS!6s>&p;oMJeLu-j==y2d;PdOsMUE_Zs|WiL<;v z8yD>p3fG4nJ$}D-%Z?AVMx0m2ANu6#i_E%ST-yU{>2_FBH}^g;IX3l=&6dUYBSK-b zd$Gu|^WWQ~Xv%fg_-D%935~cJe2fSn&k&LGEodr{*&Ogy@+mF9=b_tRtt8-!BfKtZ zPV4g1wIsY58Tb~##K6?C6T&$~|5%0fKqE>bp7MnIMMC{wcUNF9QN$i?HZ*r42^w97 z4=3a_@e;c+BD272B7*xQ5`u{gq?NFpT27@XC9LH#xQY{@7FPAPv1eJ>23Bufyq^Ng z5aKZ1o%Di+hC3+(FwcB3dUProg&+|*BEGUtfJU-`$qO@$W5;VosJirL84k5?`Q7QOD9h#GSdL2mso4Gs78E+lSMx z?#SM4Be2fu(cR=V;;XkFb!~3oel2=Ag+6J}FW5W2O<-eU_MwpysJzsKQl`@SdS7V^ z<&+T~&(Xi%A#YJAxd1qZ~JpfBk|u{*o4 zu`3%c4C9%eFAqPAyfJq5W2cH-!PbcPKK_%!@jPfDX*HA>O$KI7h~dDFJOWjIM~;>V zR!7ZqL>@45z5=;XZz>f>*yJLUH?g1`uc+&G=7zF}+ATO8Or!{90yVm96VAS67{2I7 z(G2{t1COW|#sV{jql;i?MP~iIDWWu%j@b~y1{v!S?0bztjLgPW3orw_nMjrzAQofxqA&xr_GZD|%>1~wZCz_7C&}JI{MFdl1X30sl@2JiOf3nu zu~OOCY-s~lH9;yJuakPKJ2PdZ1TAzej3IFdf0T+%o1AociCHE$RH25`(4}PrT*m) zr)$$-g(0}mBu&}7ht3z+siF5@5UtN0Y8mDpTH)?9^|JMRHAC^? z+!2P3xw;rNhqsam%rSlcOdoF#nGNf2L8WNujwM)%(Wt`Y+fgFRVbn@4<+nkmDYAFF zKQ>WgWSbx*xj{LAC8?9&$dv&Qe!x{>!e0Xp{0Y5sqG7CRD46tzZ7~c6 z(jXKNL^fU06iI^(al7%+BDcc#u6Ot#pn0J0YS9yLXYqP@n+XBk{x%4nTZX&zTv+%c zdItR2nq6L%VOsc%Fu?5;LM)Ne4?cbDBNAwSiQB9e2+6QB+$a~vcYHF?`PKq;v@S83 zd)o7+`b!(P>|9de4M%(m_BAhzQ2&7GKL^zlBQJ*js*`FlK`T~)-U$Zk!UPyh7NkJk z)RTf4)>#r1l>-4~7Cn4plmgM>Uc5&+u3-1w!M5?@0vF}BDV3e4ikdegBP(_5u3qE^ z_4bgs2d`c5E~C2UY`Ni-L%mAI6uEeK+$q4AW(S`dI6*NQADGH+Ma+?g_zpGb4hI7R zo^T~ykG!{VM_s5QY9Yi%T|$F(bG}tsY*8=8QVgMkty7z0)Z;rn;(B+%FqE{i1#cTP zP%q&^v@XqzJ`+wyPRqo6${%idL?sCDPd>L*i?qngZ#&Uwd=;5Qs0v>tI z(S}5Q2IBOh&NC9x69I1)V>9Y`I+(21(nfB)CTj7^IYv#-vdHjJUIy38SW+yKcmDSB z^GJ4>q2LE=+1*Mj%;uWGe(yiB4{kjS0uM_IakN-x24j{_Al_bJIq>I}JI^#oXz|-u z7VRa_D@5=!z0(M`MmM5wQ_k1FzOb}s?~drMvzM@5Wo_Rmr3*&lm`P~ML9*Cl+U~+T z0rcsEFe%ejtX5@KVEk-y+wJO2{uhP)J2B5nyZHPw?YiraY63V)S!oZ^d~utY4eQIiXo*xiod_+Kh>1~W=#WypFiRJ$P-4t9v!ekS zEani=j3?t-Xg5WD?Jq{W*H-eceQj72RYXU@88gee3>3&B%UjD(2u>w*?r<1^sXsUsqx^`bD5^+Zc9*$hJpaZj>9 zj4=IY)l=$mr+NqMn^F{otsEg+o-y{lhi|3Iv2P%NUaN1wM&QV5fr0yHBGr9XUM(|x z0?hF5guBg_IMq$jzVEu~eELJ>5BYTqhgL@aMtH2$JETB~E66s^#Nj26w7-8~P1&YU zP$|~0!JlTins)cQozHBRuT+nS0nEk@bB|rw0f~BgrTQIvwGef)f#x`Sa3e;t6DTI{ z3S?O>(l`d z((EoUoNUVgw`?w^WA{TuY5H?9n?dWqCm8datYw9R!CZO&IqP=iFJDf$J?hU~{^9e> z`^Vc<1ji@eL~c0sF0;WR-zR)^bA3*?aFAMrQBjB`%VHMu1ZcpZf*H#ln2lTzOCI-9 z(~4b>tVh69N7ewLJXNj<@c$y)3+&y5DO?jwQV#86@#D;R%AiHldF~-t76+p5fTn`S z0L+lcD(kc*(Xr}bXc4yqQ9dc=glZ3&hY%{HErXS7BX|43xw}1pM#5W}rv1KGh=>%8 zs^YZL_b&P{s$B!WZn8GfOUHrp31=UTqhL^@8V@_2?vBJhg7~{`r+83X5a9dL&4>sSvG9*e7zMvj2@UqS6RuHrzYL6itNt@$i4R#9 z0OmVYtDg+|UjA<0E^uAHbH@jbZNXnXUbRzPzMnFVn!a#JBbaB}kI0LD8&e+O-e=*i zrY#IVYhtEFeI}*qLm2jYVvxG6lhxzpWfNJ(B}NHe9-e6rhsoMQutuz-$A1wxR#^A zP{3#taYzSY`Unb(?O`u6cML1ABh~{Cg|n27w9Y^N8_&Xd+gI4Ic}Dmt8{WlTT>Qvz zwj_W2H)teR!u&6_F9Q~Qf2{A4BSdN$9IiJz*l^0aELKY~IKopaB^qmeZ*(#_nWK*u z(COY4+ij2dJL<7YEqaHFhTAxWPg(oFxj2d4`nm1szb)|6X;|I#PvGmo-)jLBFTS5`P(OuB8)M7SX_H%Aj)pWqeZ z4!&D#Do95w7>>LIkjqWX5+JIrHoF)6=GHmYW$MQX4C@Ry9ziB6Zoc>}zv}Asa&>(F zcZpA3haYTcM@5wdXU(=%={wG$;-1$0 zo?spG;&A#5a-%2CiX&O4;);($Y;Z3c=sGct(_#mVBuCw)iQ`?m3*Uhl>0W!KHx;l2}2r z;@)$d?es#m$kyY%MgT@U(485vd9s0!zP?%w`IQra%djs3RQ5 z`7~pG_^39ovNE!V9H>>q&jhRpbR##Gkde4YIO_kqGL&(H#tLU-=*qS0W58V(r!hJT z%AO)-j);>67D|bb(ArjmNrg3%XpN46b`>p1L7<6LGU8Q+H2d^|&l*y=sLXP(+Vs4Q z*MaR5k`M;Ei76xUxHBeLA|f$qWHQs=l4#39GT*I?(hPBEKvllutIKjwxXDg;D)E?G zyA37KL7Y}_QY)G;tKO;qag0xhE!=-m>(!5LMa3;Ffrg&r30APqqpqqD@;UWYN40N# z+@_C_n*<{j^ehmg2))*d)Q0@)unB{S2xt8tT938Q%a4Gm$rL1WW1v$R1)Y1L8!sZq zjT6IWJ3-_|JrFRT0RoR~*9sk?-2R0|-u>)?g9u_JVoJO)FgaoMtF~&W_D#$B+(uok zINo79<7~mXIkTN-s+frYXHNR5%y0KB;bc!>b=AP9+t1 z=BpnMX=aDFT}kd;w|lK)iu^;1bw;vNJ95Vcj=7)7*>T5seH-(nd$5cSx^X0hIW*xI zT8ixC&M4rGA}7r0E@LdU=y>v7ZZcwyym5G#_mH#VQb6HXVA_MeV;&?tQ} z7`@<@Wy@97D zi*)3{7?AxJ_VONdq@npGIbi`X3}7T9G(d|6lR!1BfB?Zv_*O&*A!051W-Ue`fI9x{ z4f1QGuqbZWVX&BoErN#~+C)sRA3!&XMr7`VpW_kv!;fALV>AaCb!AU`)SFY2^UmTN4bKaD*=UBeuj;q(?I72_(Qv$X$?vlIX6MBQ; z?snOF>nkrGh-OU^kV$_OVvs%4EHNZPT~7_I<>KkVFfWjZQGU+tx#Jb!TbNr@a!WN> zX|L)Uxj-k0rQ5LQgd-o$TOuwR%WhRH;SLOLulG8VaKS4NX8F@m-Y5GqT5l;l@DfXR zoC-d#ndlWPzhryxth{7)x;c6nv`P}5Xq)E74_JkeL|N34I-G@2`2GK7(s%tI9XO4) zHXDsFg?TnWSj0;uh{PLMK=R8OEAZ4}?uRx3;^uY4jP>Yu)$GXOf!vb0_CG492Hb3< zZ53UDYMVi^%IC_1{>$7`3mU8y33ei;_}Lz5kjR6atOHaZZPA1b@RcP)cyhSn3dmGL zL4ozNfq>1771NmT=~=3Xp9S0kPdA60V7^0AEo19h$yced07%4QTOcKz&K0@k&-DBW zcUNz>H@l#{@0deV)G~DzpnhYgS)rcLWq|j`%%g5!f>XUN;%KjVk&%dZMZEXF2(f1^ zF$xr3Dh}eWglS4>^^Nk+W0R9JB&;U1yu2``Uibwb2%l#vdl4KIkf-9Pc3AY$C@U>=cCZ6K)f1aO^Jb>< z2wi2`%n=i%(O^eXOIhYxTtiD632oz=C?xuw%5o_Z+#lW9wsV;rzggAK1XT@T1D~E{ zz19(y9ycPiWb8b4v;X51)-T-ahfRN~^xb#Y(ya|#EQqx^H2AvyP?HLu9*9><^P(a; z@GL>;@9M}O;^@X!4{U#Wr?VHm7v=kN9|2)PmKxm!!da*KcU#5Q-su9u2xkXxslt z9l=a{94gAd3UccR`4 zWfK@b>R&ywwP&|{jF%RmR}3&Z)+3p5Y1fIrSarF^Pj+;ld^$EQ(-BOXYAWIJ9mGM@ zgXgo&6HU0E42cQQkrkQ#SUsB7m(0wf9GrTz7%|o#!dv!MA|pqGVUN zHOJ9GTb{l$22WL*qECg9BoHD6njex_oju9)Rv9Wb2>8+A`{1DS6*Xa{3sj~LPDi844A~glb8YeBSM!Hck+%Pi2 zUoB~hu8-!bSr8K*7m?E~GGD}Rays14plx$&$NoI~z2WlM4A<{R+uX=S^s0}K*B=d~ zYHUCC^Hc4d<4KR&Iu_`dw-FRcl%`e1CyzdugNYTBX~ zdv%k-o_`&2I%vE6S4zl?zJE~VdXCeY=Wsi{z*ul zh80CGtVze<91I6+Kk1vGD1gTK1=4ktJ2r+b1SKm<$!IZg$P~+mct1#_9avAGQ=$Eu zvPD{=AJF6?4D4?yL-S@8UNnUN1x!VtGMh&#fXCM`ouVsu=Ag;9c94A+V} zk*>%teX9AQi2SkG)yoo(wZ!_4oW^Ee~Sy?K)@Os`qBwE3uO|%WuSGmLUEXLwEnun&_#k& zTgL7nHt<$6dGDDaZUSVl9X2sS%|8gD8*0XqDL0OO!AW9=v8~k;YqqrvkI)k%(ZXU~ z-n1hA=6PhZ%@>z~utKL|dT$RgYQ*->&%WcxC|9$y?aTdbCu;^8jgHR^*OfSMz93Ts z?^ce;3-_DQSCr$oMa{H+p&v#QmpK`J_qZm$I3={1qT%1M)?IpwWjwoKZunTjPJ06^ zY2|v~PKBY8*aIJvFYnc~4x0nuh&utZiR}CzRE;y1!QJ~7^(ewf#C9%=mzG4xVB?sZ z)nl62i#(;5;mGW4m`dEms5sNj$N_ExI~e~4#+M$T*syA#9vVcYr6Q~hCX;_*P(R!% zH;|UzWb#Oz&@;?|5h=sPYHD#CIzX^s%T>amY+GVLkMy!&lCQZxr6Y_Xs0X0{F$zPV zk`nT`vLuGC@UiAQ4Rk+67J?Ss%^8bw{3 z8*3D=iEm0twEBh}W)*o&ZX|~^uQ1FjgWiewX?WG0^(}A~o4{NasSp-h9kFXv2gD_c&t1*kV6||R#nL?( z1;RD>V29v)t%Wi|4j#+RaVgpCl(SJW)5EpMxT5wZ89-*C-k@+4%)zxO&3&Cb9R-#e zUDD-SKqXe;*T#K42uVZY5EU12n24GG9#2=om77JdT}&WM5aawrQ)xycT)U0Tr`yo% zh_5&ezKEXy=1gcf+rd+3iK7-yU#x^n9mxcww7sjvbcM14#~I^qW-=fP1Qxgnnu5r| zR~K&OSalDb!TzGMc)3lfUjK)!D}jgd>;A(GGxi}n*_D0G5?Qll$-eI*QbG|~$G$Jg z7G=#g$WlVKu_aXY5@L`-$_Uxb|4zNX_x=C>pLaf=dggiVoyW{`?>*<-bH3+$E+N$x zooMOQmYgUoM9zb?w*hRBda%j|uzzCwnJQv?UEz2kXj?A4)}_aZ2BEHAd{``M9rUWY zcZKS{PHGB<8QGTw;0h)sE5?p}O*|@-h-n?-wBc@5{wShIoGT|I6ce6L1gIV9tT~y8 zYrt0bB>u#R5CPifGCn_V?>Gj%>ngy!t9Gexo2Vn%~{7a>CZt5B8x1}eHfio%OqdM;Cv{?(_&;*+6!E` z;AtqT5yF+xQJc!!a4O>j3a&i%W>OeLs0End+_1KlmH7fkEma)nIx46OEw;P+z8jTo zAJuc>fz5O*9s4ay=|`dh7II)%t|wu3)pL_wem51Mbq(jm8TkYY{6#rNZbCH{bFL12 z2in?s6_g2_rrkdUMz6tXZVkIk?g7bwBX|b8%v~%&Ix8it-i_EwFqT+HVkfNiS|qas zC*4O8A5cdl;z4@Wsv}lHnn=Iz6*6wS2)U1xg0ZQ#GcscN5Y$vHoSUb zZ>bN|LY^`_3YCT(qSwzKzvh&swqcNZRZJ9E#{^wAz`|%E!djpgRa> z;}QGqdUO=+_A4^_MZH`E>jE4888T{$aphnn<6ZIWSi%dNz~2-B5Fa} zK~+;64JipkjnpO?tl@qH6zinUDZGFB{&$HdE#N<*Id+E8W6`+!4y$Yj6=--DIV`uP zr460AQ2!LCj*eS7wzyQ_rd6mIUcJ9-(-l#;P+S2d?f-fG2^LxY8+T}8oOulsRhoUs{Tt_T%IbrUiJ2)nRDC!pOSt5O-iR$Nq%p|HsBhx|0)sSJxX0VY~P z)mN2IX3AzNz@$f!gF^Gf5jIVZ(D{9sm+_`Btuk+j#;K_Fd2&(Xpn4^7{0ps&;Dy7c zaLZltEFtqB=;7h1X%M0fz&B_p^B7iJC;&_%fFj^uS8F(WWG&)L$+a=Fi|ZeUj%O7qq)TPG^ytItB|MNQuT(f8uAKdzoysqe z-3gEkvj-(jZ#3k|zb3q0Zn8P9zNT}R_5lNF+$zg^leGn%jsg!2uVjx8WxB2c1M_l2 z19c}a85yoQ4Om7^Mm06nUGs|1r)+$`Y~tRk@WE5DniFQjN<}o-W5fu-zbRAQK7BQD z*TiuD)n{5Iwio{8t(S|dyYMzM;G=}Y4;Aai|&iqm!g5bbns|j}gT zX`M&{oCoL*$n+)n4<|wj5lCLLBO2v6b9x7?-CZy^U}H^)*ugj>6AXKh07wB=P$UsH z+KvbV06U{jZvg;aWr|=^^tW=?4U?6{# z%6wGMB2TbcAQV>oD=q%CY|3F|u$wX5W?mvdDp1qH5meobracI1aw-K7Z?f=C$6dFR zlMc@5iqIdp?FkgpD&qprZr)TRj{ca!zm>u4QK8N~2}g{{zCR163C_!sPjBPu4VXts zV-9J2pCTHa_n4Z`NvjKYoqP}ST&4dZ$x@Lao4?@22QzSf-5Y*c0=&r+aWzzi3&1^; zC2U5E)(zpXFA{jz!1$ZH{$Z&HCbmP$w|Nb0>5f0WwiCqT1WuNIt(oTt?^skhwpR>I zg?V> z5vsyoQb2_oW-c2b5m%ax9Sb$E_6Ww@dfhD5xgs;RtWH%>F1s`M3`Zo}b4ExB(7 z^$~O&?tva8EK#j=0daw6v&Dqq-UvE|%q7=vdbHe2#_8k%5AQ49h?O~4+y8y*To!^~ z`>@dW$?a#79!gqsgQB;-yHW6X{^*4WBs1pp@K{L-LzS(cBM5p11{6wRuxIN-EJ2kV+9Xq?<}A7iI${lHp_t9=Bm@5 zd?iW})USlyK@^CXW1L$gsZ%xA1LQuJ)@odwz5ta)bb36Wj(SQ~?QpuT7+z{b|ASdn z_39G;nH`2Ycs_o2U4BAcQm5b0_LjEVb5fLGCmZd3KJ@XW&&Rm$4H=i@yp^O*!&2*x zNu_soljE1@)N4|wFaAN)i+U#tnZJ8?}+ib zOx@#nvsR{fF8fV!#U|XVa@bbWGkcM?_jRjnqQ7|6Ca6#uQdABtQT8pN9XH|;9u7TU z?*8;ac?DSs3~B9=s&qP3I{&Q|LW7r(w;oxsdGHt%zIMwT5IX_ z_+EKGxp*D(^K!nishht>Uf=0$GrNZvAKqfSZ#6JTpIWElRw8G87Ji7~==y;w%j2rEi=3yH`2KJX8YKdt-A0M@+WbVT$#SmQ4xYM4~yR@eQ8~@LAU9 zk1thM&f+7};2q;3o!i$I@NAE6o<054|C+svHm)FV>eI#cJ#hRDPF6_i>UToAx)AsEj4ZC{Xgmtk3WI@ z!+M2^?$X3EB|_jg}nIN4r2vJ_y5vPU;`t3 zz7QNe{!2UIzJ&HkaJ=zf+6hc^pdCgAj-LOez2$E^^fox&{4ebUmNdfWDZug8e`$a9 zw;j3)j$Z$zz3p#1j0zkHf8+1#Kfk{nTp-*ZFwgyAM*G_iXt@5ooFEEL;_wK_IJu4NVRlfdTaQ1-|ASc!&DeDSf#|2h9(_Y(!z{@joB4ZP)lv7>zg*JJ+a z5AF{DwUF5Vod01*i~HyNf89?ET>EoBgajfU{&%MR_!s+I{6GD{IW2gf@SpQPY-|Lk zyuYviJU?-8;m`fZjY#83bN@6?fY0lKcS(Oc{~0PEu_4L->wE&dPx6WYki9 zKpE}Kj0g^gceW!{_M5LxC>agE@j3Ha z6`LKI%~@g}=;evrWv_`4xV9Dkn^xLSn=EF*S2Ev!$y7a-MswwD)dg1Ui*wl)cQ5$C zxU*yVcb?tfkW{-(ZujzR%2?j+Ewd_Y~J$8E3^Q0_`99)Zdxoe{(#(6eR zD$3I7Tu$j8r`9;crINEq5pVI?nVxF}gFwk0*}r^h3#?z8?`i1|bIt;XL* z&fDj2HWhmeP0d@FVeKd)$+}HK%G3;as_Z~UAn`dnF5(hnG7J-W>>Gi42)nhKPcDg$ z8J62%OVipVI=C5G$(Hqqtc^DJL5wrqv`Nf9k!#l*va+3s{yPKAC(j}zLlCJ#Fd;_y z#~iu8Q;)}1N;D`Qoy)se`!YRm-7rcE?b#Hpet*?7Nbv0~XM7YdN5R~Wyt+1)TQ?09 zQ^aJ8NxbhHAO@NSjHN!TLt0Q2$b5=;-_VGP6`R?&`Wmv)Jn;3ZOCJ>!QKtA-%B!-f zSp&2gJU-CDAT3Lh-ocR&%~#7RU2T!(&}HsiZ}Ob9@_W{qRNXj za93iy-f4aKVj~<-v;5OIVNuXlzJP)Dj+fXc+f#<$58v8-O;6NkjMCIWw49Gp6!Gm1fKvHRC_hy$UN=7qQa^*LjE6*`sF&(TAfiQ9 zFx2kRzAj8jp1As5&|B2+Y?(G!dR^8An)i8p_87qMpicefy~abB6BnedSBqJ{+-@m8 zyTjw$uQpvQr>KGK$BWq}L;hKT*OG$soiB<`{`3g-zjQBwNIH>{aw^SP1{!FyXE=VO zC9cd+1yUuhRTqDZ&!h-!BOXg@$P8HpetK&8jD#<=!S!Y|hUCz(?zh|N$)98W#ESA( z%WqI?(Z>B&aicwa6#3)k!E=xNncIpuV!=$mH5~6^7(I{J&mt2kxu>}NSB)t$?ZXRUgeZ{=2jPXC0aj?i_{O7g{A9|*f-5p%by5Fd{ff!KwTB|D9WOD9s5cKQON zQNOW1lT%wxHIY}-We$!&FCqh`{N0A1eW&wbRBGis(kx@%9_zKvJuP|hOliXz2NI;u zYpbBbTO>;5hi84NM9^17Cm&jV)9@y{E0Cp;;QRf<<(Q@qqDgPeFT*_E$&fpGu>_TJ zUAaXO?=_RcU~q9NV@ikReUoM&W3f~yBI4r;(qn!Ht0-!=3@M6x@l`Fd*s)V8-_%`c z=wkleh$_~@v8?YT9z^$$a8HwRljjrT#x66H9m)KtP8{3l7w;Wt_%!1e zBeSj1XiiK182m~q+SCVpc@TpL=hx(dmj&}YG%|LJHei&GQa-V$+{fis7x~br%57{X;(`OF(@|-4J?Y`wgSIW=k2DcBO=s8llP#IZYN7jra%JkaK2 zn;FlO8z~@VN->befyeYzl?Yus`G?vQI(YjK=tMZ$WHQF$Zjkw6LYWIj3_?#JS)!-S zOXlTv65(Tp(Qq{yIcJ$?X1vkUn~K0xzV}8gPHy$gbPq0H#?0$n3H|vVO_H^}o^}42 zw)3-z*SULhefWB5VR+W@Lb_pBY2=b<%%f$&3*O=dlv|>klPlgaerZ-dyr0gcmG6yv z985pTeZxVy8|g_sPW!F)OnJwof*ZfRtVIPm+even8Le+1?pML1Rk=*&VdHyCr@%oK)T|B*j$9RD zRmSf}oVY06x+z4?{8@eM%cia@85zWh#@UUO4uhrGZHBquICv5CmUvO8(u^EJJP}iI zpNKHlF#hytXIf-=Bv&+yI_c9Fht;0^8lBAQGh*GA4-Fn3Y4TYyi)>_kN}WNd9iYy& z>E=qCcJY2ep3Gz%$kvzNac<{&h0zfEApEP57(ryLp>RI7#d_0y>XAV5NR^tEbE{h- z>j05au+Y++^@kf&%w(b&X?Gq3J{OUhmrK0w7btTqfa|_xo9d|<^jM39)Aeg_p7O=< z8$|LZHe=#>o+GmBLW}q_B`e72uv)dxT7JDnpIAoTdi6<*3SZLEddFo98H{yeju-N? zYVfLdX3ia6SWDn>ID5bH(f77ffvG3FH(V;k&Jk#t7_u_roQmViBa!hiPU6)LrWm8Q zXhxGBJ&yC5=@Hsw$?PelA|fQG4*5I*V}q4djIFfqcZ5Ey`pI9YFJ6}ZHhhlwVQQu< zNqI!=luyh(qh}K9mFF@ozFbF@mZQfpEZ>b5{Y24=*5>9M;XHHjxv%k8iB7kD_F7yY z%UyM+esHbeG@1J7!B^+8y2KsJpU-YQy=Pk;U2R`NH@^BJ=Dw-_-O@8+u6wUk7(9l{ zG`5vOq>n4Q)Tv~sd7~a}(H$Bx@JLP4mpU;=3vm+nM&i)jzup#zwT-PHbm2A&L;{i- zB$TKGK%%OoWuswlD~9?Mnc_SwS}ZNa=Iq(|I7@Z$A&bc~U8)UR9d@mDbp?%}BR`7qZZOYqki67u-fX>`wvx3^vL#+C>6l4&oS84%~;$e3+IVws2ftSZag z??`ngWCoJBS4Vz%%y?oyTALN>t*n{e_Qx`f_ve8 z=CSQX<@Y1a%{L*f{Hk3JVIu*Wrkdstsw(!<@a?^USl%)ss)fBD-GL@1F(f5^KS#z+ ztRPVS!~v?9?arv;?F?205AwB_t||A>O@cfr(OIvF-g{EVi=GQ0dbf4Tqf92To_-&; zN~^|Iq28y@APE`y*~a7J$UVr+i&Z} zk7KvH7+~c=`aW`feq7J$A}6l*LIXUp7N%Oan5{Gq{E4`dTq_T6rbbRza||i{WO;!< z`@M>zVXdd8_UDXAeskjG`cK>A4aW8{WY1nY->XfYtX5_cp5v9V$^0Y`qe1>w{KfgI zQkG5r;uD>yS=&3Ky)$KJ0i6%;Rbx;49iUrk<5?RwE1*Fa;jd=4SK6qtrgCv+`2* z|GK3^7wK_N*#%)8yNZfR(>{njpGcyywvrxQb|!de=E=7{{X?^aG(W@Zew)M_xBL}( ze|arD{x$J(`3i5rZ+od-S=RlHmhlRTG1!`9u$pcz?!z+OWYT$@+d1_YZ|)k|N2X7= z^{8h4Or&h!%U(VnoV)I9c#g5fCIt~ON z9zW@b40na7z=97+H@9!Xd0)TzfOLQj@(5}<86&Kev5li65J|Z=-vtsy3nz(-;s{)@ zWVzWU>CviOzb`yDqx>v07;B?TtjBqF%lh_mn^%iYBei6}z2fk5)j?bSI?-nq1X%QT znjNlm?XMm+sog-)o-Gx(H| ze>-D+w&tpf+3GzsLzrzzeffi4k#=TWs<^$%H>fV!G~T_eQ%3L&=fW?UMw#j2+Y5Ll zZtCl26RVlLK90vjza5g^w5iFvW)j+9UQ_Kb_T)=E`SqdIr+%^@Z~94!J?oTfuyKfJ z=;QHszjFb9>-MRtkjpM#vZ)1wnth|6)0vOn+U0j`$xLA#OEWj!%UOM2t@|V842&+- zy*QiK9~8l2n~)l-Xuv|XzkJ&7anmlz#p)f~`hD~hN3425yo02iu&n_XYF!%ToENUA zf5vDuqnZyo>$fH%{n5VI5|hADd5I&EhTE{-U3ARg0G{~!R(YS#usD3ikmZMJ@e;mG zN%tu<6eD6v6B#M=QKe3eM~-A4keP1qCubTLM>|mwX?n9?m&>{%l&CpezY<>1DY$O; zC|+0TG-Pc`Ro>m_$UVF#&strp(Q1UX6~D2FvM{uqqR@2U+*VdT-=R<2erL2gxQfM2 zA>wE*P_dZ*S8z$XXtxStccURwIBnxE)y{&G3;Z|GVby?$?hZ+8nJ#l0r=% z{hckv7`U@GWFSYy(==!Duk!T!Bn94m-P!Qa$#$kz|2pE)jf5=APB~f$=9H_orn*JC ztueWee)fGW`njNv+nr;-$hJo-jz1?AY5@)Y-RaB8sYe$u(j`6f*V zDp6GxKT8vd$e>*0Y7e6!Arc2}|3!r6^5QXpGzJ71phyrfP(28Gfa8Mk{0$y(NfH2I zoBN=iM=ZI-B|Bxh9%fl#&X=z$9VmVE>A8AKaB2%tK3pIO0rH3O0$l35o|O;wLD|9! z+zA|JNWCr(2^=zXQ5byFZwPaHP)6#MZlHJS8is67=uthj&|%l>5cGZBCjT3o)SJ_| zpO4AUFN|D$fmmh*;6@_~Lbl#v5qKJD`+vZW1n@9rnURzeplMMBP)TBmNcgfNh8n~} ze&#@&)IhWyu)KkkQ~0qn@eUVhxN+HfQr;+vlAP@~3dc>Rxq{D|-Zg@!6{#=l;@9u& zlBY)TmmYjU;e6m}vrw2B^KD9NiduLQey+unxZqAtv?x0b*~L7}`XsX9%qwBGMN^Lg zS@t~Sz}zh@y?yfDAJ6?sb@Nl#E>kXgG<<^u>s!TF+f zgRr6y9gsyugaBw99(%fTqcnuv9T1qo1tRDHvVaqSPACBfhJ-o?v?sg=#CVWwD5uMG z5E%o=A`T3v6BvnV3%(pQAwynPg_G0?#BWfy$sjl+UxJVxRscl&z)hm)IY?nfvB=Jf z1u(GSFMwNuVA+%^0H2zZo$2j9CJ@;qL*uX@Q8%rxg9MV!AI+tX2enO(Rp8yI3n6?7 zB;6!N9CQP2z2loFrX<+Fu3p?Fl@z7~l682bPI{eok4~0(g1Td;vL*h~$iR|4>Dg#T zdN2t9xcJmF-4%S(?J4%_E_Fi@6=}?Qm!JVfgG`P%dON#(xI?}6t6KZRF8m%y9!b-i zs%}QFw}BFA9XDPbba|0q^}&#bo2T|={0>pUWle!(HU_%5g-KkP{Rv8+`TgF4V+&8A|;^?)U5eQJEd>E~Yscirw>hsoUwk36qXVvzqL zkfft?B=zMK3!lpEuRpJ*W*$>g*G(J;47N&tRZjy^j8i`Ez{ksOk8Q)cLR?#iyUn$#;H0hFKL#KbF0l8r)e3Mu*-x=S?9Nuh#!X56u`yLlk636N zD_xZBTi?7A<6s(fAW@z!@jf6k`))nG&?VJpShFd#l|ePqe^FLzOnUIW57~9<&&RaC zB8;R}AEQO1KSPzT%=?R33w9-qbl5-R zYc`R*+U<2ks$zAPO5>%`mU2FkdJFX>>H%NoXaVE}*$r;;5SNPa?)Q^dU2n*pp(^FJ zmb)DKJ`?HlvWWVPs%cQ8C3V+Zojli$+2JX;(4d|9z1l9l;ddDiUcQ`)GtE~^^nFRw zG}m~QZ|wC=EmhOw99@s;{ZG-`rCys<)|UrXZp%$(q2)cPB<{{z=bEyBLIf`n$3N3H)PNzT&*pJ)vW9x~XU$tZ_8m64pzcF3X%3 zpyemOeY2phv5Bqk5+ri$b@f-hm)~;3%C=j%x9pi6hS`#a1-8JnI|n0 zK??oz^YF|Z-!&HjL<|!?5J3t>L{RF8bDD&hks||{;pSm_KvOMR>NW1rTuqxw3mHNI z)eHCl8|uS(RR;ojH78v#rQ$GgiJ?x$j064e%ukscj5zlt-8G#A2X5ZI_dMUsV*J+i z+r5epviG7o)Z+T=vNd(5Rt$4wBkmpjUQ=ma7tNoZD(G-=%Z-w}D`-{fd`C-Fhumim zrHgps`%vbZ8|r6$cuuva8w=~$@UENkYHBp)^hfUWtEjJ6QXvQ3Y}&UDbrt4Qr}O$g z^Wl%*I8%a=+I0i$)X)>7K$-n#Jp|Uo z83IXyhZ+n505MizU}C|uxdZyX0e!=VYM>eq&UF(=0#M0NScC`x9p}blMY_)ovBbz& zNf7e)95G=Do+ue$X27w%{m|JTpfgZr1Y98XaNPQ;6b2Ins;@;;S?26??uS$i4Uh1A zvb5&)IVfBebp33}AY*o0Fj77td&BxUv13-1h2xJXK=ML!%uUHPCLX@HD<)1CT_*&< z+aySCn!Y0SA;$%4?CsOG9_ro1tj9kaPdXB%e8P#+Bffm&k|4|9YAT zi%~ZYt5M9Zh*LAkNTc0Hw!li;CWpC}4Jf}{yS-gKHjc80|7L;N@#z+jzvD50b>pZX zQ(H1}ZfSql+db6pn!XWRa@k3s3z0=^ZS4R8gnI*+kw*ZUk@5m^# zv)6ZnAo4-i#O;9Enl><{I^6HkM^$ zSlB}0)hu(v_3!+RO|o@YCE7hVGM#c*&ahuqKf044rC=0I_ z3YmvJ3kpj;d6d)to9Og*8c(eA4wCacJ{MFAq#SQEH$I~}-gaa*OfP&`@`E^)w%ZVw zhAr89rs;<7UKnt|aTr5>>qFOlm>1#-UeM3a8xr9$t|z-tRp*QV2&4>wD!=)oA_95I zkMXXB;AdBdS*l;la*Vp+BBO^It8C}U!&z=dBAc5W(xH#hu>7d4R0&m>A;^WZB3k>pX~}9_RIT40$jaQcqE7mpAX5h zC+FUNdi6OdSKH>p@2fbq5NSF6 zVDyhYxX!ILd>wm{mE1RUMs69AbLTTs>bZ{-~tz~KLbk5s`2rT-5Rzc{xX|8t7lV7%!N-Zw@p6{E5BWx5VmKN zNtn5-SPQ@5b@8pPWzE%q{HH~N%F##5W;|q|ubu0463rKl zTaK~~XzHBFI*`(A<%a(sp^wLJ62!jswSV>zrsIoZG<~hG2Ru;%bf{EeZdv{#9@Dw4?}38QpNpwB#fYUF5D)|K%kd*H!uvm2Re%3f@r9v8jg|;Zi*D z19v-{Ltm?iH1dA7R+7JTB3`gBwcM(m@m?7oTahfclW(eTOGjmWN zp&H*6MmOYC8UxlJ%!XzDMtvYWBFE^NW{`rnii-OrMDy#X)9afj7hgYLUa0!8A#U_h zIG^^LpT^6^u1twh_Q^C-oqKc=JnPVn7b$*Wt;UPr(}2G4oLT_P9i%x`CY9WOhOiqJ zT7Wi#c$`K{uB7Pln;hB)Pm!B@5}0*WNLPW$Q1lrM_;DZ@Le6KCc@D)Y*eGBD#vXjS zoCvTVN2?zZxJChc05LU2hM2B!MNCY&vcrheTo0XFE^Ak}GBiH&_IdIB!fLuhKJclL zHM3A7u(4Y*!tWaF4FJR+eGb!o$9nA&^{%F1uH&FeDi!8KG#rpv0JVaTzH)2?uV)Ub z0X)sMW_#KNiAlprannkiLL8cqQj7a;Ax+jn4g2_Y{K;YC?j3=y=Jrlwg%Tn0(js{x z(^v7G{Dqwj{5v_b%trvwD#34L8cZ(=HaX#HdRgeV#HiPh_lU%&t4v}!$b~`?q@KLx z>&F<{N!9T6Nxrj7A^D9Q@O%^{oGc=3h_r_yj;F|{ti;I|=OV-v<3-%7rJ;3c?Mw>O zjmWX2R3uJ=3($q=Z5|D+?0p^X#fY>IAASB}JUO@R*W4@*^1`!>jIaV>_G&Hs!dpJF zLKc*ydb6aa=0?uUATg;PFKzkllNY(ybd>MHy^MKnb(Xx?^#NaS3F zK3MzjlHK~T9cLE<Tc-95!9ad}yy+)M#Gx@g98Y{}hL=~nbROiw)D zthNQE`g^*`(S4JZdN)+~Z2Xx_idVJdJLel$`8SqkCIoF(-c4t{6{8w|tlu(}SbCCKwE1agyB^RbE z7){+0qMexxtFrkPRysQ)Rc1{dYtu>)a{~FVP9C@^>1FgthowmW#SXrRxu6U8o%XKH z+GA45+X5P8x@w%YgM(@be%e#SGDGh}YM&Y2@5P85B+j6VZig6`0GlEJDW}YQhTQh zL}ldsmv6e-DE`V~JZHfh-#L^2o^GEDnlbKFlT4zxd^!7Jy!OmGpCBW7u-afDr~)Q& z$>z~_yC*{W-DO_{9MBDH^g^H?g zUmxcY`FH$2>X2EeksRLLN~XnWeZ_}s+?e&MF5K*6GV6LA)oxl^9y)bCys1vcW3A?F zgH8LHs2C?HXl%*E-AlqqD<`rW0{k&{>`cTh{BQ;;k_bcE0rhj+su%{-fh(-Xcx}fL znZ(>*UbH8DrR^%4Rmax`k4ubeOv6g-YvXG^Xm}eCFDXSArr@>jiSPzZ33VY+-{cQ}#r|0$FcfDcoZZ zK&J2n-5#=#eF1YQsRJ+>Zv&|BdjMYrFjr_1hdrJtT2chqrl(dJ2rhQM8=;^}41t0P z+;0*{j!2MnWK(3c(u|n_1YoF10?Aws-g0pV2Q0@<^93ChNE3SyyeJ!<#ngRFiUBT< zVeEH?RX8w#K{5nnl{7&r$NLnX6v<2)fkpAh16rO;C@}fI^{f(ga+2z{KNCJSL-%{) z>H8hdo*tPA7UbX6w)udYHk0RsM(V&}RJ#PH3P@^$8U=FxQUe~BejmU)n@0G>KNCp$ z#~W1u$1jme-($0XQ4pwk5l;vo;-6TZf?h{ro56#w$9fCVgFdXyq#`WIa5a%i z)O$!EUePY7Vz(fE2zK4DrmyC1Z8zuRmD=BDpzkoG7OFI0qF_jv70rtbp^v+urwux6 z=suGZ=Z5uHqu;9@!=GBfl@4xuaBNr}G4EKenV()Ay`+?JwlA+iWP0IDIT;?Wg9Xna ztsB+?_5wbjM1$HN7v<^OPyw!JF0l3MD*}l_z^wR4*e^h%WB9RbKplc@pm;t>4 z!Fvg4OyT>U7+LDLQ5}n#V8{h%+)#mt^wy?YGp2$Lm?MhM#RSdlK*yG&{!^2FjszFA zkW7Cy3e`_O2MZ<@D;os*@nc-LUZ3H9pj~zUVTqCRXm;flMCijEX5@O4Ls!;t^^w2* z-YI3$kdi`Q0cY_1qt)smNsWliO@Z}mPFoTrQ|2$0TkmFOvg33E$Ka&>s zA09UpU8uEihh2uoqS8O(IK1&&4JxL0%e;^*(p%XQ$%m5N>5h=H0Qe26HT5Ew3T7$a z)o4kzSDc^qbMNStFq;CsWSPhN;sveg?O)pMZ8ubZE_!dK=*#)$$Y-nFHQC?!`MY2<~Bs56W3;q&QF!r{obQ$$Dg8$A-~G%X-n>hF^zrzE z!Bn>Jxj`N3fmJ(`T1X|kG@OIn&cZyoR3nfvLWh#v;k>&at`@@o!FH~;?sMH^TlqwN zrT-@mkN$|m(tqr0<0-({#f1vYKtNE)I4lZqddq{6cfv`W!GJOnK)4AKgv13l;E5-7 zMqGi+a%Cc;)4}W?=!QXI4LEkXK2$WANx)%lL_;_Hf*TWpfb~UiapjP4gM|PHqxUet z9ZN`SU^oW*`X+j+Xd2Z(8XQQ3z}-GE}>F{aGN3eqwZd4RW|7hAY+%RJ;y9JqX{VnIdD_?zs}$X~u6G z>4?Y5t=f_P*ez{6&vJ=@nimQ(K;Y))s)Ser$n@kUyEAeaMar}6mx>Ot-B2eQ43`iqrwDIqsa z?LJ%@F?o4)RzFq3^nv~neemOsPoGZquA8N>)qK4`ilsjm+ehNRJ+zp!QoO;5?&997 z)tTsdgjdB0hE>0t(drPHFVa|wM$DE>f5t~Gt5pKR( z*M&Qj5+`ZQ#u$t^PRteg_V+x??7U}`dR1cZ<3E5~=>qjzPNvjn2RfM!lrwE?Z=Ru{ zs6b9~NJ!1y*73Hj`6Kz!)if8QWsJK~g^zJ+N0LR7Hlw)UE}QCFPz>*gV2Q+*NgYwL zS+QjvZBe&92O?^pGR1P>v)(~&!Rd|P&B-r_r=Pe`z8AG=TyYyZt?c?ZbaMB!b^zGm zPLV_rlr7vqq~#IB2^i^XhcqORToAZX0a1V&kX%u+85YgJg+oe3LxA%h2*k5=7-A^VUA8o*2 z$ps+@eheXR1Q}G+9tOfGe-iy!`KuwDn#|x-Wi=9HIUYIvOwjyKIA2OvZ&y5eWNVQ#%K=v2)2Kz$l`@cR+(J>g? zZTIG(ZG4*yUCLC)gK{?CE=n^xL+TL=Vz2y3*xpQUjJ;V);-&Qy`LLE}%h(Z5Vvy+I zpkkqdHvgu?5InzQzA2PqC}hr4W-M3Q^^ZZG)ZJ@T6^UcNrs^SIFPua#p$N-+#~7m`U$-p`xT0Y5{Y{TaX1&JRg1 zb|ofL5QVe4LF6BVm=i@}p%dk}c^lqe44Lip6zlkc_e^Zbc_t4|9>A(sL z??Le5P=75gSTU?U92T*kqs|hTqbg5ug*Ji-fMfw#)j&f(5YR#Bb`zKdRItE5*!`EV z>xm`$!9M(02eP;ikD}rBr;EUa@AWK-PeL^!_-JS%KzNd{Mce`ke-MbM4ZuK!3ZJA& z;2#1vPy}HxBy(C1^F!YzM}lm;6~?c}g#!jsmghj131Hh&h#Pg1TXE>L1TqtP4NGIB zNIIo^${$H~rv;%dpl*b`RMP@I*(INf^2jU#pHsw*3?)r5b+6a;hvk(Yj=U+-9u=HY z@DSnz4or%q-!v4%r^%>TL+<;L4a-!-NaARS#yD4&xcwGXRVa?D9OIS`?ds+ei+<0Un(YUc zR)`vvHklNQP@6--7R(*r55s$l864wUMRsFPR6k;NA2^`f_=@h>Anv2hX~H`4UnwfX z?~J73!$+?NRY+BejTnz^(5DBYkC}g7`0(;c{*Qf$PjZy!X$DMETZUB!)RX-swX|#> zeF~i}r(zR7hBlvw!vso%3d9bZqF%F$|IFiGJh6-gJh13n67=|Ce0ov`zk1HAioav{42mm;FX})VT z;&Xt(rA-8EH6XL>bYQex(4?duX3*C~6{tfXyu?N$kst&BOfjM^0|apOoQwjCTn+2Q zMh7MZCn9WLDxU9{D=h*RMwG6*hYTzow?1LcwbL^rRR7Sl0*+@C$h)gDAtzhh*}q)6$Q2F| z;jF-KtC(*((!>F3bYl=t2C1=-Pj_7eL5TJU%l2zmH;DJZq)XJR{~9`6+bQgwsfW4& z#jzc4?Hsy!M;j)R`5Oc-PZbYasz1z7_LOG@!@L8Q%d8hZggeZPy`*a#Gh>S4+~;sBvj-kj>U&}Dpl+4|llkPotwIZTni#o<(D-GPjn*u}bk zw)Xv4?5nu!$YZ#A(tRSGNb0o)2vgCb)3F&S&*e>~zAwHiKXb5UCmuN+Z&>@ZXeA|v zx5k3{zgkDO%l}wMM$1!|w^sK<>{KA#f>y_`5~NUGh-+``;X67DfYAx0K2{7*G4)@3 zV}E$*pop4;yvgWQG=l@ejNoltKoHSjLW0O4V5dhUR3BX#&K-_g49q%I0aV1;y`eZX z_l`SB2_UBnd39h@cbbaXcstT$9un%5SmE~m+Od-P9KKQRQ(rYHk17uxw_44=oZfxwtHo+QpGJZ2e-^=@d5n7VrHFQt^@BfGYW5cxm&*;&-Ten$UVz#Oxxcg1cwLS$#aw zm9W&xSxC&qoAQ&`$R}Ma?Dag@d))$7?Dsx2o%E?+^6HYq%kgJv+uu^kHg&|im)NAG zbwl)^`;~;%y8u?YEMNChljqc5E-?;Zyk7J<6*5=RJ5~Xx2E57?bzGP@=Y5^kuFK+R zgePWyA3AxgTL_k=8Q61;5{RP{RPW`aMHf+tLzZwc+Us#cX2_hURbGy7Und>8yqGph8ywV~|| zO@~@rqyDp-Zv}>5Pg#60dS%5UU7jY21kMpWR+NA5L`7;aG^$C$--(_L`8d#eV9X5l zE=cH6KgYvCdeJFSmq+DaRb^TaD==1?#@c#sZ+2d*|E0x9<3#sN&`wb+L}Vk729XlN zO!3@ygYJcvxkku1PJ%_)tk$NOZEuj;-XM3}$$-82#>3XzUm6V!-ZkEPGhQU{Uh66l zBp_s!)E&$e6^nLihwZns%Pen)_p?Y;rOdyE7Mqgf$}F5-)fRueLk*tkuS_a#qvmYEI+5aLOln&BRz<>xK`GOWvq&9{6aspmUI6KhlN>)?(>>J|JMAEstO8F zCol8o_ss2Pl}=DMZmn({Lxte@><>a|OY6d(dFzQ)WRtA;p|!`bKQQX_Uv5A8Ktcd0b&puz(c zY3RC>D*@;%uz5ZkNz+9?O#r%0K$h?{aW!eMx*VFiY0tZ($8@LUbc;nBu3Sp;p&eQN{s2z?bGo46vr(oMb0+>dhy--^R_m(t6iEWxBO&vgs=7t zwl&BMzJBG(F7G8A(VLBSM^)V9eL%m#{5nJM`^DEdwWn{!7+p;Do=1gV<$aOI3V)2E zuhn`G?^AO(T2-*^js)-N^ZN%IF`0-5eN`*TpSC9S?`_@;lMz|3Q#JkW(yYi9Q2UC9C_ zXf#@~_#^&1OLnhx>Gh9SLi|xJBG|hPj;B?Qd*(Fs5sLy8skk5&+r1dfTLX9x9)yjg z26Ks89y7#fMLgR+m)fB`{&>^&^|==nax6pJU3mQ0*HTM3hkooLI#-;iXZrsM1Y0;s zE>yjHzshUjbe?Xy-*?|32P+!UZGFb7?*GXHkX}jj(*EB-NTWpxJe@fz5Dx4?WniC8 zXI6$GxY)32oEW17r(O*8-(r2933HO*|EV%My!*eLZ`jFD4@$J zY(crJTlpL19zn?k^#jJDBhX_m2q6rhFax)iZb`9xGY!hjf^92CtViSt;ee`ng1WhN=GX+Ooq3yEtBij05To#cL-Hmr#_DiBf`;CGHgPJUk z{adJpTW?cmG38qBD&w~|P6e;+D@-wknhJWvcj#Hwko(a%%y!cnXm3q9V|tL1Cc_RS zJKmEw%h?~0uuOgHr2IIMCJsNC)c~6);{Rdoz2ll{w*JwC00}h#K|p~}m7){{MQUh* zAW{Q}^dg8#6Qq;Sq^T4siUkBw2pvR_8oGi~6f7VTKop}$KuT!Io%o#RoacS-xxah= zxcl?L*=x_Z@i`H=bzi+@LQ~xWgjSpGyii z+6KDs&5SFP)%xLd_F?^rM|$y-KSc;zclMn1eD`}U|C72PZucG#D_Q@*W?{^wCSTM^$ zzJra+eugKdHbR`m1|9duGltv$G^Oz8KBGg3I*|fK>#!X*zcm05SrFba|H3`EncQYC)?u@WDY# zEK2}SoV8mGf$XlNkB;mY&5MUlN5_;8_s3@b{J19Yx^{h8`^ve&Ymcmo&IB2sr9J#1 zquhsET5TQ<*newa-!GMGeou!A2>rNs+SrQ{FW7&=gBRE|R%b4BH(4CJLsElKij-iKLYinYnHz*RrEh-gvUDE8979d zw%fWmH@&cCR$v-jFLz1ht?Ie6Rtv&J$EyKvDN z845fBqJ%Q2ws3n-(_&$&u}p89Q5?V@e&$y^YQ7!hH}g36IM5|O`v;robEgEn{~JF& zQjq)R5fmkeFTK~)kG@XH?UR4s>A;s%nDI{jf3b)^CMlclUl_Y?d3;!_~N6FET@!$>6U zNf>8lm;OXuf3xLC5E!Mbf=r{!TOC*8yMFk+6sO=zO<7rZ01zj;7f ze#9#3xdjc`!K_Eov+KY@-XV2j@6G;nNc-GTax;!s=cD-L0Bg1P%6nW-1$#NMs!EG) z_mT$l#togA(5Vxws{Y3h({ohbC|I~ZZV?}ke`QnV@`gKUo@n5ctV16+7`y7|0!?PR z)8lt@!p%@_D2<+BAgaP{Fa6jWGuz#I;||^9+`S5$L&wXm1#_441ccU^$MM)K`@A3w zW;X;U+WYZ!j;K+rb-YgJcdZ_oj=bJb_H@FvoE-WA5!wQoll~xSNsIh}c=ztd$>;NW za{lI~^syU;T+ngv!q4x7=5$z*DPQ2e6Zm@;k+&b$3{XFR^UP{A?3$+6r*|=R2r%=k zG(>>m`5qX3zg+<#CMbmurE9$|Ax^-5yXQc7pb$Ym3outlFz8;!R)i+VfIAe0&XbEW z@Q%P%iQ1o_EM>}TP@}(XOt4B@dXFQbR2pp=21rI<8?f*FwRb=@Zgv?jRb3h@E3u1%o@7+I0f8{h_p zQ{6rAztqi$iPcEQfuHS@Q3{Jg9o^+4z~;K>1lasQ|G>gFc`&U%ei>adof`ygVn5=A zrck3$%yBc6>_RaC0XBWo38TdBCBy?@3{~e%vS}FIZlME)gjD zFtUSfMQf|6tyTf6C!h4dV2+arVW6B8(9+-UT7(d3E{)PwpqF1+wh&cpVj&l7)#Ljo zr|zgUh0~5{SU0_|@@$eUT?t@Y{OEh_u%QF~Y>k4+acxc)r}mRsFWt^$97^LEaozpc z^>lH3SK0`zsQMqKD4<+D43w<@wmbcF)j+2LZRz67;p=u2y}19yGCCMig|o-M z6%#n*IIsmS(;8|G?ql-LAdTibu!6+3<+-Ygv@k>)k)qUB$fRemZr* zC?{6h_hHl)Mr*9^qT0aSpXN*HhfK6)uRu?4>?yG(Ta@rx>$jJtDj}V0T{tH3mKbvQ zU7NE3O)h+@rs{b<&tu**S%~1f98&3iHB#^%bWI`BeCnAA18a)^9 zx=m~6T>vb1gP)fVLt`AFn>Okzd|*JQ(TE9MfTzXP>|B&TSDeRIv!YV zz~q07(5GlR1N)3lCYbZtD1#dH>Iv;aATQ)0@k*wa{PJ<98A8n|O0E_{VB94(Ru3dB zwQ7h_yoyEJR5=nl=3~t0PHV<@2&Vhc^2@;@JEpuCo%#8>H*4}xmXxK#>WLJHXFVC?tTlQ_Ecr874zR`Gi;77W$TpJY=yYsNYg3GK(aWbX zTB~-y$xsprDXO|MBXz2xS8{Z#b~C6$kuQLAvz+TP>})Sr-J_5Le0|ZMj#>8=UDAIZ za{0EWAiY#bFX|C9G^A86GwCoI>Mr<-enigm(($;GtV^=8oe%H))_r;M`jn&aOGWb% zm%{FV1DwZMLC%E}F?vj66FqnKm)&D}K?$qw(n7NZ7;KdS?}jG|w698xo@Yly(vm2`2y@<)fB|Pz+wV1fUA+L*k^6}%R^UhuQ`SBHXsU>%hylqwaE`95f zro+j$eYYe#{$ZoRDmlZLf`Mgw`CoYympq`ORm(&J?th3Oi|*i&|8Yz+xQWZZePZkb z#l+-oQKoSyeNh26AT7dZ%7^xYl|Y2I3vr7hHmQ(U%*p~!sQm`E3QVXSm{E}~@R5&^ zj$Fgq*|1@#E<2@aIdGaN8~fr$tRAo-%LrR(D1e173N&R!0g`7=lXNF`jIu8o6btG3rIJ%Ht$cf6=nApuw=*a%d;qAvPonyX!U(Y^3X16T!n|<{?o!^g4k$9v zaH|?Ni(Aj|$);EemuaxbuyoXOfb4$w?u*g2LNVOLhc}D%-?()^87dmP^G-L`SUUa- zk^AFWS5X5_c1w!VnC!iijv>srb(wpMSvFi#_ukKU*gDP5P}ZZkVyVuo3o8P8OXiz5 ztm%*A`#wJ&KM{fv#jYI|fQ~L@d%ozYJnnI@y($Q)LnE-DbL2|~I=Kb%>LI_7kag(% z<)J~dRf0|P!^c8n`Lzot+I5Q))Oxk~rdLs=Y0M?jqOW*6b@%Vl5( z5S^=qA2=^_p6T=OwO%&!K(Xrn)+iD^Y4Vw0`C|y7^>KO{J$ixj2{Cf4V>P(E%Yoo5 z6?}3{QIWTCW1!Y7HcS5iYy-DjA}y$uRQ*V0RL+2*4FX)x?>_bnU#TR6Yo> z$;l|l0QDhPkWDNi_ z7&z>MSU>po44Yx$0LZDwFx3GCx*L~8c9BWxDO+eEK=WgYi(K7*$CMmL0{PO$kpStA z;h@Ex-pE$d z0OKkJ()Qi6k?3}XpHBVGWh6v=jFP!`SR z`@_ZN$))KI#j(L5Z;4};x$0ufPUOI!5!#-+TR3 zriy*?7b*+&h3uO!g9Ra1PF3`nm8vB4wdbJb%kWMA@<6lo-t574!!bqctF?Pq@60>j z;+M$lb?)71VRFmy+CrP#)N0e&Wh{~|3x|hxKe)(S4bx)8Sq>T zh^e5zF8=FZ5~S;|I_ThEb${;pCp=g8U-f^Wx32u_slN&mr01_Xs3Ryr-Jg5@`E2iB z^~{ez84UjZbC4i?fB?Sse_~g1Ue8_ison5`^&{81IVFR}fV2uj4=UufP>X{ZUYc z{ap?DPyOqE)uTWe{$J{c{#7pt%836`Km4zHM*ETfrGDgJ^=CjC^r-T^}N6D2Q&vbzx^K? zG6T-<{7wI(Jr!{6ul5k^KL2P>7hKQ(`+m@#892ZDANo&w_x`5;(Vi-}_NP781-Kx4 z4dV`|E$H7AIJwWD7zd!|K=I%Y@rQ=mf}-GWnt@ZH%w29EV{u*yWpCfW7xeCXYkA&j z6K93~iP_)lc~_15lFxEH8SOqb+lhz^hCQqC^WS5)p`|_ZoM+5DBUM^*LOVuTYUqd7 z!|^GX_KTc0*Tjxq{UY-GnJUi|M^2Xe$4Wy*V`ur%kVDI%*o}a!@la>3#%Hy^Ii-sC z8flxTjd9xS-8JHAwN{a@wh`l&^RL$~OVgh_Q?uiI5%;V<+`hU?x;*aZRbe^VvcxL3 zw|oV-Q-==TD=p54 z+T~LOA9F>aB(NDwrq$j6k4Ge{sM~n&vf~LvNm@2~J!UY@BF5s`w(;O+(+G?=t$6sBTxb%=?|+0GZ-UMrH16Oj>sts2-@|pTt88Wl_QZC3 ztKR*oDsH{(LQR86HJ9wP^%3G>7J=X2Irc7jz8CrpKNTs^d+@+7$@a{Z#G@a!?+C`<-l>X?>lXmt&0!)FRj}hPX3fNavE)+P1;KWT~obr zZ$?ih!$gHQg}GQoazfmVBpoMJ2UJi=lLI3 zM{YQ%E6)2pG;HJvLhM&__u@KIGG8~kQGD+fEwfA_5~o7`gPzfIhr$|E zB-A#b7w`6z^W4_YcoK0}+-N<*xqRtzowk9xkLQ&|bH5m;P@im9`D>k-tNWPQgAlqd zmDPb_B?__E#hCm+Uk{7q6LbkEcN7XZ-k55tHka`7G3V}Cc)xjVhZauCXSs1@YL04L zwQh5T7#x3>lP5`2MLxkV42D~OBqrhD-2McQ5O6E2erxyOHhZ>IlQ_q(%yvQNFL&AB z=k@s|ey{LX4feQ&{V|mo8e`|+9n;dJr=6*E!$4k=dIw(pUV63O%HgS(=!X29+?nb@ zv&qobZwYJ835LG%*3k+#)SmLY7?oV_!T27Sh{FadJssa^2w%*fnbVLway{%-&3o>5 zCtxwrDpr?O5|a)e)@JQmWpY!z2 zeXiGLzawHQg3eVRE2B--oc~ak=?+pP-rn@LoU)MXt?F8j4$0rc(VmGt+Jua_ru{BC zakt7j&E8HfG~N7quYW|gb49=GVf)arUx=Vc{Wp+nwG*R{tCF9r4w;=x|eB% z`r)nLID2LxpB_K##aYZx!ILs^3)$Tvub6UC$&BeM%#~FOrf;e%DnQMZDZ;llCr_|0 zAs6ALyKQ^zBu~vnjhnpk9%<6Q_=J9XTSisdQSSdxrFw;27`u8k&QJZPowG;d&Bjx4 z4|5L7V5p~*qiQQo>^C8_^CAos$y4TuqW9NUegzRU=EBa-yEzpnBfjXjDbMlyeQ>9_6!Ng{^d_Uy`nW zBDAz#v~fP>nrLLS)BE#6>9>}$-jjYMmww$%)IV%7en83N+*Fw?)JlaZS+8&b1tTih zuwV{cU}NeBedXu6o@`q4hooO{bFL~T4y!uk@3%MH`(1-7MpLf64uFYsrX}yv=!n5zIQo~TRWqz^R zZ12gq10I(%qXRX?#D2VLobHkvt1q~8$ivVD!+U+X;%Rx-nzi^-uF!uQ20F0eq9NvfeFhGofkG05kyIN0X6e7mK zTyl6O>Mlo#m|>i_>Xx>cW89bSk0S#u2@VM4uuyHL+Am(-vY!=QcfM6(orW((-94>0 zH6h)nJg;$n?@__BrVOOINJZ%Cr!OrTDdl^AB(A< z;@3$(IfURXiE2g;9$f0ZqC$476H8fdFAlwDf51anWPd(sn)g0@Ar2loj$JB^EtT)^ z9u6?EF^hbBh`8Ura{l@c#e5dh68F^GnsJY)iNU^Wo9R(CexK8|%`0wdG+=DT-Izl| ztZp#YTNMs5`A>TeLmcr_s8Rz7xj%ql%Es~7!m$^Yf&s!7f=>=#ZP&A4nooGVumzI- zOd*ge`QFh+fuE#RZrm`r>g27J);=8N_~nkyQr7jv(Av}0{qm9yt6$F-v9)IHB^ov5 zQ?JhL2`F`(8LAyWCK+h$Z1wAg`Zu2YJF_aKD@#k~I1Q}Z^$`15S;V^>>Z^OiKeRS+tElnAkKVm@T<^2Veva;?brF{B4rVi|H`~r%TsP&K zudf7*uZrJL`EjTNzn4=L zFFPE$^D{T}-g;0kCft%`NbB}z#F-2BIevb=AJ@p`+0|(NPc~*|0oweM&B}f9b|3i! zbG{alnsXH%pG)WL_Z=*`N>)CedgQs2p$1QZ=cmUNeXk-nY&JD3f| zO?HphGlvgfe9w(!Ua?N*WtH}^Cb-^i4&;5hdEvz8YDsp*hgWSoSd+fTm6occd^pti zErsfwGgZQz!qgpL5ZPJZ=yY$59QZgeF}`?9D+w)fB;tsGdvdwvj}L7*Q@=v4yNFY5 zk2W2 zsyI^UEcw}%-Vi-hmm)T>e}3vMFXDojTHl1%eWISY*Ru!TEIU2&3r9HJcBfPTP_e>s z52tV3cR6t=msEa^mrZ+{#MadU%pQ2tmtNS;qmS>z6g=`s*1xBgFrmN&6-yseNfJD0 z0sD#QrsmctUy3$DDIK2P)iM)Ba`iz?Y!b(3Qv*{don!5iJV?wx0nCLpB{nUfedl#K|t zaGIS8|DB?sQTbBlS$<~2n+z5voe8xr%r;iF;$#+PqA<1imbD7#SxFFoP2GN-hWdT` z!gg@FW8Mm(xa8o6-7We(6TOP!-zr_%r{2WNVS3100}=b*g`L*YD06sUS5J8LLwU0B zQ(VKu=yjt}PaI8ewM03Zyb>q%-lB4NaO+C%@~=C)@Bm!OfLPnpG!R_6k_oPV!0;=HD>1`#_F1L`4Z*6gn-Hw=sgQ*IRT`c$s1_h-xbYstKF z_u@y#grEOf^x?IW^L)tQY2Qq{-i+Js+gh?W_r3CdBz-}CcwF9z$z_~JaygLLc=hxd zzWWQ;Fo9ym!Ym}=M!e{>V%0IqxjqB0+Zkzi$RE_+v3br!n3wE`3Ez=N#+>^sy#!_| z&VLt3vp97~^qfhRi+m=k_kRAnY}R#M4hR2^E?a9ZpSUZ(ayaD?Jc1|nNXO*qvv~qacgXN%-fVL8L9o*VkZ8&L#wk6k}sNYH7 zk(OHy+jT?>#K_Te@<0Zg4uR3x>TPzB-d-vSr1POD}r;+nZEw`P^`HyGt#SnHU*aK%+Y7OgN4SD%{M0k48*Y63L6kY~) zlt(!J7f2Xns|IMs2NMd;ZtG%z#$1!PW9CqEL`=D;Kzg=7UL-3#53`PZBM(I_tR{P=YK2g+9lL(=YDgVr6oWQzBv~K9O{9K6HSH{=9^Gr zG7c<-g|Ejg9jZNCQj<&qC#QUUM<3rYh|i1I3=WOXqD{PeX1iYm>hkW8;pht@2r%7c z)BQ?7yTrfMC6(ZC%!JmfnwU3h(4J-40gY;=ATYzHr3&>AlP$ zF!lc#*T7WtKi!JT<8QK(nkrl9lU?TotNC4T%KujtJYXdj#rOgSBcapnb;1bcUmjRC z25@~`GGn5DIcO0y^J_=kEljVZ%U%yOj<32e z%`W-rM%hN&%c;f6lXuI_U@9TV`pNwx^5nA9JGE`ODxK>a15c8g9ohG>;K}JyBi8g1-Bh3Ko*|XQ(K3zRy>@o1f5a2tgmQ<<#GwQ#O=k8_+fnoi3NK zV+GQ+_yo$RA8r2mfX{f3J282kxEyNex>#+;_0&8jW3< zT)k;D7>l3H+9^;_Tv!MzjhvZ@W<92{_Cl-mMzmE^r9q#@{tEdQLl;ZG)=4l)sj*Lp zpsiagFKX7-h?Uenf~)A#*Yg!Az$gd22WhATU@ZfX0)Jd^fOQ`PAnD9)1~XiIOc>rk zbzJRW%%70cYv_K=WX%e?O(q4>KJBhc=9fF>u5 z;eRI0YE@=IW7yn*|Jg2xrP}gZjdJAF0(Llnp+av5_P`Gy*&&EOXJ#fREn`F=D{Jmn zIj)8AbY^xJlHW9esyrh}v#o$J*CbLbftMO!BR*otIQBLxEqELafDu4P4>gH1?W=J^ zgRHI0%+j+M(67R%lX>04IC72=0Mj}489AQ9-qYbyE{a^h>}&?C+1N>EKE8H7rt&oF zxNS0#m}Io_g`k!A`+a2?cb?B?i_zyS8JlRk5?10hDT^?jopJCkPF6(2*Kd~YAUEwP ze1|7ou+fffSu~`7$HgZh32Y`a50YPf!73ydzr1gDwr?x{8m9kyXV3T1y~mC&s5xHG z5N7`-xbq}>EH)$I_`Vx7g%iP}=k0kGO}l4Su0Z;}^D;34Dl~<@D(8%pmQ<#cofV9; zU~{4WF1Ap=*iQH!y|$F}EW)KP`Vw~0(q4OLnyPNoM!z!n4c_2?rSemH>$>4N$>IgK%LqNE~kK41GXonZyVrX~PZ;{pO=`eJ!2;(LamHsDNQKqo8qCc;G0* z=CNitK-YW}C56mM@mTX{W^FCATeM{@R_*IbUW@+Lre3{6`AXm5m&0n7IJ9UjJnklI ze&8>0NUD^4`*AnU)=;c_M4!5hSvO}!3ivPl*eyVp-qDmOw??Y=Q3Nk(@91$AgY0yx zPyKY(;Awc3800O8nsr3I?1ArRMr3YJecAXei}QAGV83hqF-mKPhU9||7Wm0P9#~io zmD%VZ*zx_Vrxcj^eZxO!vN9_khPJdGjZbHpLgt9BYsJ7)E@d17zO zTrQ|Bue&sBdbDDO=+T_)w4Junz^)zdF5$;w=Vu!n zLarsK{8W-347H(cuNv6-cSz)54L_}|jqZmmWh+D`4m3ZW9ngla*N(o6#pRXQ`Uu~9 zMDY{bd)Jz0EYNO&Tt3V_J{%$I)_OP4_OsBSPQk{y^UsU2$LSMuoLA4jk-D7=O{C#P z!HnhHDu99kr(%>~J#|~0l5B=V5%`t{%VE1Uk5U3IPAdRR!x%J@F?F;xVML0{3S$xh zySuR_{D&{#G2?*cB*sw~e#hAW3bqDd!UF#fCTO$t=m)V6sKGc8PPyZ&Kn0gN`I)F5%A5JE*1&`X#|nYSqL~-ptzYRBrKEQlP&!cv#?EtV=dp4eynUgIJ*4X z-KbS#L64W;(@$WV)=_`^QKT#o`xBLT*<>;***N^q^Jkw-3*u*a@aWghVC;9ck zGbyc}Y zxb5qA|8g@-tqJIny~xjy7yfb37@HEyxxXcefFrCnNM0zH3vn~zq5S*|BI;3u&PIRt zlmaVHe=K`m=VsXNsjU=T-0?Je)gZ~$Vh6=BPK~Cs`6hLbM@C~d0|R!DgqK)aSW}z% zmz6u&q>QktO}lw?%}y=3|W(WR*J&ueu0mby)uO^2;>rOGA0ZFT3;Xe0f1InS~Y z{t=xG?BgJ~D$&FT&hX1%cp>R#Uzz*h=qQyUP43S<3qay98Sq0ecl)iM?ZK=pA$EBE zv9kI^d>7}k3#m}H)km*r|6vb)<>jSstvVaE_E}HnW~Ot};nUb<65YtRV=bm``!meM zYw~t<3kOw0f%Qf4C($_c&&K2HUVpyBpCSwYGc)5)baPjbu4? zS%QjMj5}U~Tf#>x7Ko$=IaCOKaqrt8M~;48^wj^lJT-r>C9me>&f5A*<)GXl{1dVX zYyMM~BdzX8?B+>_PdsX+Og;DbPw@he?_U1bw{l0b452q2Pq@Ydzu~#e0Cu~}IQ!Q;6((gG zkceGvw5Yt@Qo4JyRxj_?hvG3Kn^KPG+w2xrw?qtbYRu#f672Vy#&_++own7%%H6O=;S_Nvu z)O;Uv5cxsybsPzA=pCEa<z*&uFUz>*S{R6U0ii@s%rXbu8PZwGn8Q&T`oAxRoeaP4t=> z8xCy_>%o!B$%B=;No@uVD3lR?%9bG_dm4ie<9(M61)v(ype^h5v|=)lcPC2Rn2~2G zI{eUIcvG`cq2?^zgByED7+zg`{H6oX$+;!|6bTD$bGnEZEpqDjf?L7H|JRo8Torouy`Vkt_u54uQ%-zIXNv`SA6+ zD^1+JUHBkzV{0sq1+@_KX~gYgP<0$W+y==h25~@v?xvh0%cHx4(!oAy8q0dvr-UAVwz6 z^RI{`aX?N2&;%Q>wkw4pgu#kG3PKci5e)I1f_~3HTme{$3~V!c9f*6z_<>0cypfre z7z;k2^%!&xl$jCV0HD?w5(6)A3D=nifeJzadQ>qBR~?cin+@_Uk%CSE)BiCNy7d7x z3e*>S0NDpf;Fit?$isk)0lQ49CMUZq1w9&1jF|+&%X$}k4IcO)gVuFPVgQ?iv7cZW z0npE}pTLg**Ll0Rz^EGlV)Rg$voz3}Ni%$`0on(G6a1iQ1Pi%;9stH?ai!+OQd|*( zx%Qvby=j!|PVprG#0@F<4X-IS{o1W=sgmlHFp$=nZw(T8$I-7xptOEYr%2NXN%1r9 zlTrs`o5}Qz_J%8MhS5Fmb*iAJsBg^oQiBxx z!2a*a#?}Z;z;cBUzomPb=ZEboJMpTrp7;XbTy^p-DLZW*hDa1BtGa^ z^7We;dVX)R++MofuM}hPdC|p(VS8xE50n)TJb!RqzLA?IL`{3?o}Gng@O`V(?Q)?? z`MTSg#@)+{)nXyOM?3ys{Ql}g8gbiUrXKvW6~fB@Pbvp%$-e~!zz~4*Eo7xce|A~w z6tC%yG_$x^bo?kaZ`Xn#+m2me#pclmS_cOS9fW*m$D&@3*%_KZdfF^Ox(r|eO_vPp zw%2`hQ&;Y5H_eJmnjbjc{RuYEF-wu9Pp4o!Bbst> zVo6ewT{4e=HJT@<(zXc^;b1rR`PiZs#`g3m_ zdJt@78H!A-0Rt738Az`nsAWm+Hj;&YA`E~F&Dw*Hngo1Hvb#Ykti*0nk-FlC)S6kmB>3Ccy?T+*KhV=5@Yy##y|oDOW-E5r>aO}^ zQVTuYh(0q-q~|cD=JkqNiiiE+i&353EbJ*xz0Q2-_yrgrUbcGW4aEYfWC|RoyM8Lz zIzI~6TC~G0{TimA@bABEn@3=e*sGPk?N;X;p+xTNtfVYW9@%N?@Ut&$YBl+I%eO{n zsZ?}7U+7|~-0^awrnR2LFAWKDmC9%cmVI=n(p zc!Ts*WR`YUV_1e>FGu^;N0KYq%%8;I^TT2w=24H3W1~U2u4y|^_fw4PA$=N zj&?B3cfka11#BaL6AyHZog-)kE5J+GvnZESWA(IQ6qr%QQH9qwQt__0C<$=DQW&@@ zpJ2KG{@lhHE(TagA<$w#1sMR}0L&4HA?lB!XDC~MyV0+kLKyp8gA5Gtb;lIh!a%r` zbP9$TB?g0Tp%O}5_d1pehV_h{_ zsXZ&6LV*pIW-b&0XLL~%b4G0Z@(%05KJ=z@p5>Zo-h}}1aEBx_jR_wX9T)Oh?8)Be z);{BBLpx6bwzEl3?=LbxoJuIP$jft?bM3C-8t+UpxJCB+sym($^1Qu1vdr_&hm#uP zA&&Dbdm{@JvY$Jl$!WEx!lPLiQlgD+Yg&{ZVT5f5us6m(4YHrpc{isgw?C@c)VVLh0}b=+SMnOm`(8ce-n$vs$?`Z|p*EOB0(DyeWAQctG&Lgwm zpc*XehQ9s82!Vl0s}iqOW6`bep-E)9=l2GLI6dOtts@5qo4C4W7S>K%ICE-%n6l@0 zja-vjDZi(OW7kAEDcn2ZGZWAHA1rOFmNmBLXMC?IiafY9cB*mxl+d$=6qgxUN8Z8M zYyvA!ED1LUK9$qp6D*)FGNS7&0AQUSrz;CHISwaMA zPonOf{h}$ZAGFbiggSbH_>?c((E_4J+ii_6=W`ybMuszAWoLz&x96B#yZq`*z0Zxj z^rvE@GEFe8d5@K4di|_RmB4^HC0h#mLBnqQX=}#-pQ||b*n@(`yhfZD?=TG)#llm! zri2=2!z5HU>oBWn^ZH~iAI9QEm>|F86;j6|h)KA`{70eu-KRzab7#5t>RWn7^9V89 znk5RwRC`(IV6n*E`nh4Il;*A+95%p+L@_KF(s+k^U1nQ;aGblpvADr*k`~tS5kN!@ z8~fMYY$IIpz2g@Av3)(Zh2B_eu>!qoCOsQSyn2cl=}-SGBj9g&3BVL6C;(0XlD*jV zlY~)512qxOsD!%tb1zC9s<%QEe1~kM*<1&(2~hejB^F2kK(WupLYnOLO{htLK0v?< zHMLU5adQh*^1t`$U!W@zd}}PyccAs3sjTH_Bs>5NLnc)dz6=<&5U~D$xgM?eoF58c zH8I-oaZ8DqJY-=mCp_snIjk8ZOSr|540>W^#Nt7;$Tq;71JZxrewE`3W|$gae$vhu*`m+iF$=wki5_1$Y&hnyJDswZraT#LfZ9PGjAd91F<6V1PXt=ahYn|6k7wG>dZGiK%)32yxO`!8?W3#n4rVj z>&E(KUe7|tOC-hFs!HCrqDd&fw1u2jL5LZPQ10q5YlkfThG<4PN^ejEL%>#&tDS}0 zM}#NGCEO$t7k6NH)ItRI23kigu?&@K?tRG|)nI7(L@#B<1sG0tpDSNY4{MG~w9nFB zt^Z>&lPd(vTbD3xD-RL|0`4FS41N$Oj=fVjrNC>D@`W@^5#M=k*M+WTeA?m+gt$bD zCB>zLx@EB_Y4g~uHP`N;T8K&uzUODiHA|$5s3N_9%QcEwmsm<2kuCjRS|zhv|MtzM zy~wl3&vtZ|ZQNENx6A4+1)^HHkBF@^yFA6x{1Ro$L~@&BoL0IZQ&b(l-;!KaZe19| z#)Qdotlolmp%ZEkg)5hPKl-@lL`{3#Z!%sg>N0X1veAK$HWr6|brmPN2?tlL&`%W! zi##5kt^GC*b$W-27y3#zPBBkv-@;_b=J*Y2@FTh_6+e$oiTYi6w%2}r z0DnWy_-@iZWVq1&Cz{0DN~CG}B4dLfVHs58st2I}MF6=_vkJ)e?NHLbQe3_?NR|QS zDK>UXBfiO5TSU%QyM5*EwtH)mbw5!A0CRzdI^w76=Dt z5OSa)fCNWB0|g+IoIsBF#+dF`7|;p(5?I`gZ)t)QD?rE*0G!}0!rgALGZw)ow*bex zGD7o%{NuSrUh%RFsx8h?)X?UX0-hL} z=}>~j?hear%wGQq>;32!7{Cm9vdK?iweGN{=rcnPc#rj7>4ZGD%kfEDmPoOA?(j(z zd*$1hOaVoZlI29cXF?HoNCrrPA(%~_-Sx&uyH1!xZ@tioACnrXioY`qZJ(5v#+T-M z&2x4FD=3us8%JL-@!qmK5mIQmpj0Ur`gH1&pq^XdkvCs50ywRN3d$xjPZiKN-_$D~ zm`G}b!!UbY_%Xn6f{j-Jh^x1^@li2VFs5u%g-g#ZvPT1hYA0$BamTATLGe<8C++YL z*IugW@K)HM25T>VaFLYm-lV%dR%0)pGAXGwI^Hrq(UXP}>DuSDhj#n@$`0E%)hpBg ze=!Oy>~A@uLZI;cq?YDGla5cTgwFijs%q^*_9($Sg5e(=s|R|3Wx_20O{j^f5GvzO zZalu|^rcbbyBYE!P8v-pvRH-b35p?;8f@7B)}*rw6#s3fn$n6IOd@u_nYR$U%2kjZ zoW_SGyDVh-^3k>NDfDgtF zmGOyrS!gQKT=C8zpAamAkuhRCMXpfX&>4XV7Uc6F)0SP7!k{zEFu6h-{8gl-%k)k%Lc^~5Ps|rjLe0*7>YQ?ijvar`v$!GiD`2ZeXNH8f)J;kp$WDVP1&BbJx`OirX~ck6kRThbvZi2_;5^`8d*F5oFP8! zn4-rWbIWYCZgmqR8rM)q&GaC-rA;P`=;j{@kVN7opr4>osUZ5@N}JJ7RSQi{cp(73 z0L^Fv)=jR74Px_}o5uj70l;5LLBaYvVY9jcnR@#YO?nz2d!f%#42hsIaQ|_NE^HOW zj1NPSP1CxN39({Lu>M&?pgBO!0re%VX$J)?Rbv8?M2ZqBk4=9@N<7^y40uUEmg0bl zghh^{6Hm(KTswkgk9g>k(=#wgD2O?{xp}C(U#`7)bYrI)LJ^;SWd-ll(_ul5t>r{B z5xVx(9Fs2N#9L33mkb^Z07I_penp#UO>JPy#dQ>anJ$1(5~N~(4M#cv&KSC>Ba|VQ zUZ`mR-70N!BFagJT~vQ~vO(*6*!xF`7IA&Mn7-L5bh+J!ft2NMPYqVzZUm^*Jh40> z*X_o(|J81A-uNLaorW5@H%7>#Z)DFsIDc)Glpx=;5fpKO$#I zRoBrF<*0*n`hAWYo|USFy(W=&n9mDJKs~QcKG#``JvFnZO{CnP;^Ci zEdPXgTvrk~cT9)>@V}iQW|FP`JH86`-@XtPd)u}>3H(tVv*MxkxDed8HVE+ClEW_2 ze`b>5!y{Ttqx8}otN`$`@|fK!MW(P1E{Wx7ZF3N44W|d2svXPeuxW&x5rEEt5sB(R zNuUmpsyo24FsH!V?&!q-nV?9?0`aNwq=z<+@GeebqCwqKp1?IX1Nw4+c=<|+Svlcg zVDpr_;o@A5oFV{i-N^3zkVCo#?@YjW@iF8FF|d@OEPiNH^btV;eBBhU_HYZOHG8<+ zL->HM9)Rp%3IJjMboQd}$I0UWyaoN6vG@hJYUSELia{9^AR7$75#JIYd>OPh)LwR( zY98}@nqyev9A+&KD{=K3GRO5Uny#U3%cDvR3NM_x;u=y+#=JMG_n|cLv8Pq0j-4wZ zB~es{zpzNL2xLF7RP4mllSmZYW{L|#zP1;E$J2Yn3Cz3zxGLV~#t+T%PN*$X6JatF z@c^rGbf?#a1(E09|9Qtc&^~LTT_DV4VbKX+bZ>)RU|Zz{a%x}`Y~ZkfwFJp}-IMzy zp-b{>9R)CDqjhLUjQ?(3Y#QAPMdnzW<>o%ZA{4d!~`9Lwf$ z+UY6;wJ~_Xo()Hz@QFbc5p-4+72~W*e2vC%-s4>)3j&pj+_g)>EeGYu%~ozDtLNS` z(`DC{0dH6dYy$L<9hwYe&JMr}9AV(3AN1{#*w-DvdzFCK1O@#$0ip|nnjs5dr$88s zVMzKjjHO@J#+g$Ka1#(Iw=B-s4J_!|vhN`RNLIYhF(kM_8Z=q(nHQ?3%|QGY!AHTM zY!>ucdsZM10C*GzF!m0^#0jAug8?2^0TyfJLjVRAqYiS=72?@>4z+;Rxbfj(ddz}4 zHri-`ylc+w1tKy2)j9$>P5L>&IBpU@vmPHrK$maOmq7wh7NT%z7+m)@;{RgnOW>jG z+W%+FU@S2vLbef#AzRUA8Cw{#k1e}WDJ3bp8C$kQA|++ZHj;hIz8A?762%ab7Godl z{Ll0}&-;7c|L46wAI^R5bMJHR>s;r$zSs9+Z1xROJH2tDdl+ZOPt5x|K1V7J;5$Tww&(S-+;@F&uq;C2%DFJTw0Zt_S2Vvj zzjKx9z^%Wr%YIZKw=Fn~(#BYSN1t+W>kXKQX_z%FKJyp6LF$`Z$7eO=d`@5E{_~&N zLem*Ouo74G-p)oHvQAUxeiYZ4srz2G&s4|=4De|pDT+ZWK?P7_@thomPWcMf+ zXGy+mqoYhZV&Rg5X;aNvU00^g0xPna6!zYj?7Y!Qme%x9quLy6>t+_&l#|CI5+C$u z-W&NR9RRCu^3P`&rzNk%*-o)VZzcFGOyq-0m{d!bUA3_L5vrDz#Hp-DQKI(NPi+fC z&P19k?`KqbeGtEJIy%H}_8g-`>xm!EZ?0c7HL>6a94Oj~bUW_%{hgD1NCB#cbRDCpmDZNxd%s)|8uR~l`IBC9;2DxTo@ zu|ckIj=o5j5--t6JMN}rwkn)5I{GcP4Kl_4#po>e&SM7Mp?x7I)ITX1K?>5ML$h0q zZ6Gy)`4#5IBw-}Vi7Y7kj5W|~YQ?)iK-4xv^>-p=zv~sQ(BD5fSo)W&+i3s2{9(eg z)cQvstKkO>k3=Ub%qdYq8lfgD5+<2oK&28kkA$*jVjK%Ck<9+Z&8{w)VCL-(WhIsN zgCr2&J$GP46`1Z<8Z-kd3+E(7kel!3F{c)iBiYESL4b$>g!Rl$E)(BLRtj9dk*&P< zhNSsHCGFqL9kr8~lI%YY+ zpMVXJ2sD9kh=&NY(xfS`XkZQD-oV@>YiTDQ@S&~WBa~DhtVYE(hUFctvL%jS)r~ohV2VkklB?C* z_t}d?^}j}nv zZiwoDo+?DLG^Y`FSUmr4(IcZOt0^YmWp0Q!tnZ$1y7!{el~E!L%Y8crK)Rn{&Uz*1 z!rhp~ul~|TL^k~~l};I3s8TS{yN$xl$H<5H!C+vihN^dvp!Fiwh>F_a-Hysj^2nKB z4zTS1N~cU7B=)_vOx!-DMSF5%BJ%kFQZghS&{gFCzdx-$}0Mt zp?>}aKNNplNp*G=)#<ZeUA=HEmQc}TrvSzkI}^>3Fx26(%g1xmM{I57xk;ZQ_dP` zIuw3b9>2wU7A?70z?5YosZ!SpuQaPy_?0Ddbl}pm{2u3%rs;c+Ejs5}??5MZmh0Sa zMte#Ird>v=COeopa;g~G|9bCwLvAbXLbLg>PVn~5%Y8v&yFC8K7p1uhxPRNXvc7H3 z3zyTuB)0=H!?{G3@JuNZ`&n_=@mEDUVvC-B<`;RTvt*0_Q$fyMR=?W-Yo9N0kQZ~| zn21TB`rhyn28uzfYgBBp zJ0TB^8g>$v`@+S9mfFgkzo6Ek{z2H3C7g6RPt`n?#x78M!e?+1DgpfJ+!XLdwHJ42 z;$9ag_{@3li)cacaRRqi=`>cJf`jeLqt2#8L)uy-xjUK;giDwhtTvyVoR4{<07=XdfWv(4@SnaeDPCOA2hwW;H-oV3ozB8FHWrfbc70Z);$9MeIQgz!k;T{>Ccg zNB7i|p!4>7t&Jszt=61w8{db#s6DLJ!U~e9v>8i2t@vDi^B7I~iZG8Sk@R*e$VAw} zkkoVQSU4@YL6IS4I)&FEHAe8;vzqe%mg}^?1p9vwLIcckaNE1EA6d2()9z zXOmoMZ?b=_1K+jln%o`Bn`3H?VQc(OLMaQxHS)T&>E39eVuex;AFf(PAD7_ z-6s16DdxAx;7szKQ1iN*ms8nCo`(ITYC@VLd3=M|T9T*+BD{uSQ(&?h4pcRDE_}2n zGJ{4AQb_^xzk z*Ae#Om6jN=e13OiOq;%PTYZ<*w+dp?F=8>7U=2j;E*uI7*D0v;25M$(PDT{iBLtv7@hUbMY(S~6X*}0obHSGYZ?Ib{v+T&s| zsc-C!$-M)uzszFZwpCzNOR&yTuDT}!)xG8NTSQ~^*_m0F6N9QlWY%NL=?a$yS^##F zsWGerMv-@nh&vF)M{VC0Nj0-ro}P6IKAzP|;+B?^g?$?N^uw9RD*f|_h2yPZb;b<- z!_rI4#mmokmMGls7yNT8MEyFP`|c z?eTC>Ny!V%O&B%G=R`%@<8Pw-#+_Q{QfcJ=nbzDBSo0DNyoL1E7q1L0i^GuVMO^W= zGRM4pFAzUWf_4Q)w~pBidTpnk`O?V=$qPN9Ytx(dYcDRSF}ZQ2V18AV9T72co3_HZK>ZcB zML#9**a2bw0NvEly_Y*uTEyku3_AT3)WWjJ_KDi*0?4OQbQ6}kEwAH|8>+apE-5!4 zAcpO1Hm7mAd==dw+>SDlTaK5RS_|uWY0g^LW8LN$dzSLH2-xFh&{SG9Ikg;^n+d>#y^5noTT9xH~ z*+3~Joe2y3SqFlVxma!S;_X9e=o@_&!SpncqctECtiIDEjM-3*=LvEQ{`l&)?sI!x3XpG&jwwVZER)&3n8>7HiGE*ecq>v! z*d(%ESbEc^!aMI;JnK~WgsK(kOwt&59E?$I@KU9FM}IH!e>i4(S^mK@udcs>Lqn6&Amu1(|=-T`^)K{}CO z6R~KWJ=w7LPWKBJHlMC6>e+En|#E5w#`naEj4R z3Im!^da6q#3h%e03M-3j>Mkk4e5)9eVt;*p)?R2 zjv7==5PuK@!cnXS(7;IJBmn37W59`+I?|jIM&5_e#A?a*A6FLvknW!hMDqz2)esJ7 z-SX6tZi~smB>?DQbnj}#Z@m`V%^()V^DaArpp&&b1x=*#%cA+_?ggsw5XskoT z-F)AV^Mdt3w4p-Mvd^HTOR$b7XNbLJj`My98u=}}lp=~(tEa5t`{JRR2%n<(YmCSZ zZ70_Q>UZza;J7C+JC)8Kj^9eXXWl?vvlMX*am}L~{m#CsR$Q)OnSVNKkUK(EAhM^ z?{Vk^g0;SQa=Grt>lW+{% zOy;)w6}!on%=?)=lsQ*=Sv0+P`Tfy?O4`Get;Qp5nL548pc901`UfW(1f0D7RyGlm zUEAJvXzE+E?uUz=lCDZcX)jv?-fxr_3I9DfC_RT7w->nmGE%Tm^-MmqrN!<0^n*G7 zt_s5wlJNHV*Tk;ms3BI<$gE=bC*qmZ5owqsL+JNm9s@ty^DMzk$8I^bGoBIAJ6&Mp zho9iLC`ihhqQtF^Toy}Tomn1X-K#%q0+iRBC{}-x2VR-9pTu-*>c&TgcqqOVRj7KW zEKn5FbB)kAdZD-#+-;tFWJyvGGvO*M^Q9?E>$*-5hWS}O4%EyWXPv$rLAY30* zkOau{>gM>4EVFzG(sGo_P8E%?7BHTLz96w{bNe;3&qML`Tj6A>V5#H>_lhjyDa*=Q zr}+{fIi4Jl76I~Gjfhqa-(+TL=kfF+ix6Cn&IJD0XMWOiSd7eP`B#Oo>gD@4&mQ3= z0)1Z)1r0Y7kxUJ?9uP_{Gbs$0ur#QUvrt*SS^V;IDWg&Jy3Gk26^8Tb0a;P0;m`gci&d;n|ob~wz-tf3%PO-7W&k z@c+^N>F;(aP)7WZ_OZX)SwKl=JN#<_^l5(Cc}6%E-Sq{{5c}`TSSgALcsH z_Gh0z)N6nCaQef@MnCp3s7L*M)L#V|G67aV8&u=3wmE{=A^=&p!V?cIvNocs3|wz~BEZWXLqA(2rFEC20Gz57_eeE>jR?u=W?b9F>W} zO6TN*KpnvApx;jhy+&U^oqqqBe=2|KPzO+C{Zs$f`A&dsf6j*(Wy)Y8|Jma+xV`{b zqu<}31)PuGk6!#;rJtYvZgc*r|Lc4w!M4BdkId}!e{6bx_Rsxie{lRyu%7p?I{lsG z|5N|h`A>f6m7YVWP4j>3cw3!0}|TQb4cK7f`1^Kj}~9PaWz4io$>D|2p4kuVD1T@D>&G zCt)rw30;Rp<%N8H&}#Pxu}i*NJccrQZ`wt*o}-T{8AjAME~*Is%s0prkBSQGE8n7} zuVh6`*i8F|nKX5kcfBa~36wJ&)^29!C>HsV+q~mwl`_T3j#f8Vpis}Oi+%V$E0@=| z)$YXNH4WL=S=WXr#a?aAI2pK_R<=!DyO4<3V!GYd`$=`4uRQLq$sI{UZk;ca(hBTu zu&Q^x6MEn0I$Q3aOI_dNbng>W@;)}wbF4)UrZnpIg1`5{162b97s2nkO8)Oma7Xmkd}2b)SZ#bb0f+=&N>{5e=8$rC$VF9 z8~r09GfMkkm3>#P8F_dj^)S=qxZ@4)!Lj|OzUFsiE~E7AuS+@i^6p-Eto}J(>+7YJ zU**5gCS;a<+o)ctziJlOEl0Jz+9;HPj6Z(2!v6589$(c>?H}ElVAY|$+^K|gMUkg@S>etHspORM@_CL$dIE;YKn1r#6#+P56 zaI=&=yNG=?_ULWry&$yroDk1tF*)+3%W5inC&VF`2*?A3H}i3bT{Y-MGdhoBMWeuz z3(22n7)~PP^q|D+O3YjzW#FAGu@@&41pO*v4j+0RV?oV8s9RpBuO@mKe)dcVl7Fad z5Z(;95-LuVxN1XKsyA-f3No+zauwya3hA1S8 z`@U!xQ9enJ9r`M)+I{3p5Wm;A7cUoT`?8<4xgS1SY-mO3F0pL$(9@gSc*Cf@hKJh- zd7t$EWh>1(Q8g-18$lkx>xX_AxubQmCo7&b{q2>&y5(-SlGMyE?bDL{0!YV^W*qad zBNVgxu8`FUq*?g73?2>Y%@k2yP?vi&y0dXS+2g13yHy9QBrl^8cm-cX6Q-PB=(VD` ze#XAd5vqVuG8kP|!Sg{LB3%_(|1 ze~kUeJH*%4tiM}SrKnl=d)sSY4W4%-;vUfy&|ya+wZnjq;taO3uF=&F42$X&+1L2Hb=&2fVsS)PbTqX4cu+%RnY^zDej+r-5v-=+CmYu@8gyxD$@rVpld_w!Pl$1{ zHTfpb`Oxhx&dZk@4W{q4KunFlUYv^kHdyERBm3N@|Fv%S%wq0@MfN*TtO=cksv!~e z#sERob;9xXyyVN~j;)k<>ytssxct_hRzKdl>O-yh_N%@B;KX9VPw8zt_k%$}y*f9Y zizJ$Ao*lJm4W1Z=vinQp99aSm(@a)I-^DaU&)F&5 zmV7-lcvK3h*Z=rQB_)q%D@ra;%;w+7f)KfjOYsU; zg*Q`@xY^hg>ZB8`^*zrOMs;Fqm%X{=Qmiq=%8|pH+d+b&HbtG*ukLGZuMc{1C&~y% ztshmHyghZ_ZGjrHp9o&curMnAQ0AznSb}$Ez=2NFn8HMaoR!lvh7eTSmnq{&;m{#1 zQAuBI6Tb5V{cz_C^|p73MCf@DGyex|!_QxJPbTAp!`z_My z#O>5l_d`h`^+Lka#fAl6_yZ<%9$TKu5RYmo4$UvSH0(cxT2No^jBz(iY?Q6eAua`y z3v*Kgc`H>NFEF~h<~jDRGRvt0-v2f6ir%>k{RcIn-@j*6&2Za~SJl86A>#G|VjsUP zS034ci4a}XH+QzznAMnS=MK5&Lb*~N`7-wE4P*D|&hii$t}#WbCoqy7nLZXpb()a0 zaN71`UtE3B9FU`5NCM6;W1sDPO@3dTH9ny#=W^2b2BEScUhhV>(CK$ zua)#bl*OO{lFHhkq`H@yN8H}#xs%r~k;YThh=+5C>B(0a#fzaz_QQA%dwS_yeZ8Q7Kf-QD96ddSF+k0w9qb>+2v?Y%p?-Wb zxNk-E_z9One-)G)^4mSz-L02z%|0vDu{+6-H_UHbLZU4*`#H||Z+($#ns&m49C8y4INxk-J9^dn-ltB(YIn9mEyXX!>+Bjo-^r=NTOgdxMUiCU16j?lu#P(nyv{pA`{O0n!AX@TPj`(Mw5 zX6QjA$ep7pp+p-W~sCKIXG) ze&D6A;!(~1S&N9txVLS>M<(?6`Jh%VnfdvWUOs2XNr$(|lPH9ys)hQI_#5X56$`J< zpD5pZWEk4yHNKn1Rw88fq;}2VQ^jq&e6z47x!V}7B+o}ao>H)x|^ zu)u!l;N|-S(oAj*3IdppM zUop3ojB+$)cVGk4JYwu3XDhFkudlc|S~&s9Jnh8W1M(_%|GK}E=^uBagI*fpXjI^o<^{W`NZH%E{B5~XaM z;qw2GMry}>eB@GylKcLZUmG32EM_e5a{2w-Myt*G+Zox}rz_!MU3Jf#g>pLs(mstd ztvLaZ-=eCT#wD@9x%{%PWiMasB&=7uq}@98V^`X?$K!q7_sMg(%=Q5{&8wG+e4bp| z&mpOu&!Ih27MC&9)lvI)5dn`t)LP9-i&agWRFY{P zNS1HaA0McxNL^WaB#PHWtKBd7UbOck{Jqk!?0IvcwMG5WWDO||Y!vH#(W^tfLQxNn zuweZdADb0eWc#~c94?TU=Te^PKX%H{YgPwyoKKIDn6dcc!1I-atA_lW4ubK~;Z7fr`CnB|e7ihZOJ;ogffvesKt6gpLf4 z0hJjDzqX^oE{9nlZXC~?`g2^?&lTLMe_fm6sa>N}cZ_o7k{rwMGs~o`DlR$GjjXy$ zTfV)A(0TVebRIt6cgHm2dLyYDwmt|cO5+G0GIh@;S=*H7Ip2+2Xt>&9)p6Ix;P+*t z>yrIbme;Sfy!aM5fo>M*-N$h&GepYC1o9^E;n;EETilzGHFuB`&Y8l;5zg>iCvbMq zcTXO$p&|Qytv!_A^zCO}nn^WtMWvc$Gdc|*k!+2Um(3Nf9UEgX3f}9o>9jd2tMcZK z_x__t1tUslr-av+998+PUoa9eYzH9X&@(ajMb9m1n`&BI7QoxYHWn0A3#MX9@I8Q$ zMnu%$O5rXav%z;}Wc!qGU-2~F^@38Yk$MUZmGULX{PQQ^L?Q>u|S9*e5ZWktuU zy?Rp#BQ}gW+1~c*^Hr~4xO8ZF3Jpa=4(B5g#Bg!_g(GlU=?5>z&oxWc)`3Bq{bR^c z(}t$Pf?vy}nR9x!>e)Ic7+&8LFqth#H(MJQRQ15zKk?~T3NOxMU(~{e1MWp|ld=1E zZHEk@!j1uz_YMso-0Lh$Ww)BhAIuI~&&4EtigSHGb7A#-zcliENa4Z0SMF_?rv2+f zWsaXlAJ{V)j%O{o_$=JC$+|$yBsx}=znD6dk$FI{j9ciqo(a47yea;%D&x`I#&@us z)vzcR&uF=4;Xz8JSep3n-nd66A7>eI-LZO5ZchD{mU+sS2GLFLYd!U7HCAJ_Q>*zz z>r_+|1}AACVRI$z7E4Fsqgj^~LD8$j?5AQPBw4V=oRDgb&<@s|9({cu|B~aTZudVP zUda`jZ@oV*`BtB5cM}nU;um^mAg5D=@UuXKmqXLKVxYesi~XK^IGu7?@%$KRN=(_- zMoYis{=MJ9V?Q2Gs2_i&=lfzpa}22b+U4j!XuG zHLmX4;D5;BmuGvLl*SGhI1{sZqD-IBSV~kgT0W-NooVw)6lM-JkazvX`IBS%my(l8 z_HjUR_?Vkv>vEY`#y2@THY2iRpegN&#zVCqAjM1h*n>4L&Yydki)WD-1T(YqISA1* z?kR+C?F?7dy?y6Rx!j+@XJ4fvQ4d_1LY!-dG)nmV)w8TZA~UjJBb>S}4xE>_Ct=+~mlqd~61ll?VlK%9 zVgJLEG(R3*f0y*3`bFA>M>V3n(HFZz;G)1yaoV0L9uEB8n|rU|oGe-;CYyAkDKu~= z1MpJuGz|uI27nJJ9kBr%E#FYsQw}ibs9H&_0qu86%Zg5SE1#sAx{$S62}o)dF?CqV zy>&@!5^tU5*kBXCzPfDQVu&f6uwwf`fbCg;jFO(h9MHr~vWjZxDNn7}s(XP=gLZKB zQ79y!tQcb4%15miWkCaUFJwN2ZN~u_%KDlVKT8oo9mFrsy4KCw#K7ZX8h(&XIN~us zH^|f)zB{Drj+>^pMeG(ECsO=uGk?+=I+VTZU?*+vAqoZ-QLSbbKY6C4AuV^F(r9|Z zbdIlYs75646tto;1@#e{*2%xF=@Bhm0nTeidEm3{*PzEz1py2{%mu3fILp9q)Q<(5u8Fe17Q;dQ+^R`n49jjo# z97?nVF1gUhiXsf`Aax$Nq8M=SA@D4icH%x+S=l6z_kGww7DRY#Puo_Sh`N;SifjSY zx4a-NGW`)=gIyo?b#Qx{@`mnP2ABtUBf<%U5QYKDHSluz{IE z5-jdL#FH>>q6gxTUNXEyb$Ln_xEcBUnTb1cr0_~jtfqy!h|OX%8_7L}q;E0lzNGo6 zP#}YJH)nC^3oLOC8hE21)`6X{B)d>5(!DZ)U%PeFz&H13+fo4fw}EV>#r>zcL+_h5 zeQ4RU*oXyI9ZW#t`HA&sCSp}$?=;z^pm|g20G{h5bDT-aCG=A%H1-@Y_U{ZfOLxVI zv~}S=G@I5>DtNP90lya8@QozS(Ty1ysWfe$Go$Y^-!cWxk)A<=QcA zvSe|Iw5(k1kGKhKS64Fsl*nK)M(cSsNnq@gX~eDZ1FccsnB7=F8`@3S^!Rqx>*qTo z#hrU&)<)ccqfAaiHOQb%bj~CCqKe*fbyYk?1?oD+$UiDlzZ2CEwmQ(-> zOEKEY)aArb;zn3QXLVZT4egm73t4ua@ksLTt&hH|W6=Ez6z0=Kc&=%Qp+g2lL%j08 z6wSX3!hS}tx&HX13zK`#L2OrHCy`UH4e#sDHFOtbu0GcuZ^QFpfw+}L00_2xPR!xebn(6JPXJPZ13$0hrdi<++NVXo zq9!4IfS3qo|2W7NIU&M=Ya~(YNR6lKuG@@?HFXbTYu}V>HR~Ao`9=@%UZ2Lsw+h&X`dus}$nVpMd#Tnb4@Azo>ZCKU~ zKdWTKK*iTonz2i9z^0#saU_27{^Cxq2ibd|nL9#)DYQ z5t~~#w6Aj2W2T_^hqS7hy3KdLP%#C{$;Fnz&m>=|gaW5r)?}MgdL8`;6s0nuhwSYXn zM4_UiA;f%r1ooghWa|~k=`;mR<24<+}xhd{=FJ9(beuJQay!3 zPfIqV1+zfe(IiW?0m?(Rb|N^3MZO+t80KA559>+Z31pS#iRY1i>;2VW-K`mOHAN|6 zQ2Clvgl==T2(LX=bYNq+m3BYdoRCgR29Epq8x31b;!NK0#4M5N#96OsTs)Uf zYz!C5q1rWnSuXa(sGqv{$>!0q1HR^`Ja=%g=0D7hg!c%>Y2EL>iQ?egghQEBDh^Qo z0SP@0STfjg_{FytFz6JOE;?KPz<-&ybGqk$A~o3QVHBU>T;Pq9mNVWLTCl6aGWgU% z2wZres#z&9 zj4S=U)yIUTh|E&~#1HG>NNm0foan}jWaT$6(F_PJ1P(1PNDO&PF&&UH+5S2u&aG}m zj)cE{V0<(-i+ z0X(+H-6g2j$|QG|Hx{Cfxz4z?+_;DKLgKJ?3cI7x2>@NMUh6 zX;%jCz9sFQ?uGfjDFF&hvzi@~#&c*l2=Q%{0;J9Y&#YXr?GTYAO7d@Mk(A%Y-x{QY zV4_IYGf(G|TJpDeFMgqROLOIO6RJ0xBJ%c5f0Fn>mV7VuXlCn$C6DrP@Cu7{iFXuq zMasjEUF?y4=T$6iF8eM+_ufSbOUGG=V^5x&vNl7^^y7N{659g%KILm@{q$H$bvCEt zoXZu{D9gt?>pkwl!mM)RkiL++FIu1$=^C~k&V=F>F?aKXPs*0!ov+{Wv7Y&k%5ZJ_ z-dH0XE4uw)N8}cvgI~TNuGb$1Kw%Mz_I1yqt|)kllI-|iS|e3eY58xTP5T*RVEx=J z54=+v;>ur-xyI0931%(6tUj}f6HLO?d(q4Kd_IjI2i1J?#=iQsI_1T`5VC$J$kOnm zlrMb0FGFl0p`nwU|>br*B|lE2d(f3h1B6h*{i1Y|6yi4$*a6Pz}}Y_4BQ+ zyFj_G*f)(hmW!puDw zK|MSo`t~kfjce)ATnS73ne0Q@VLXG%!*Ja*pC)jkLurzsgxixfIK?HyBguK2+WYGn zrNhx2T#f8JEIME39i4t}mJM_qw#cvR&Uyan#P#9_-FX>Hx?@pFl6@OrE7hiKwM6wv z79?KG^W~4hy}MPD!@u%0fJQ|H`G3i8dSb#3EygDYS+9dnX8u=w;;ozchJ~}^v({NU zR-chM(Si%;*LoM4werAVgexvlH8Vm^i$_D@XkP<41X>VDj*yQN{cteqUBuiCU#(g53%fXny;S)=4 zJ!T5zcU~MH5zcs=t~=zNFlp>e=Qos{PLVWwc!X=_FA@Jh!n@BFq;oN(1hbHy?5%9? zpocM3sMgf->*BUro?wvjHt**7Q@+7c-!F@U7&f*o%)nu3;gDG<1ZL1cxiGcQDmGb3 z9XkuFj`NL@N`r*}oEHhuQSIn6@&QTc%>E~kjUGF!{*{T&fy2obiUcIQUnv@J2s;?- zH@yJup7XpYFHqT7{-lEsN0UUPnL|T(r%kB-5-<>MfM9JQ%Fw&AFXtNQ4?^@{()U10 z>M>FEP{;K|QmnztfQ%-n&{f!FAZP_G)DYZ2*yas0> zf%OdZ{s=U9_P=h23S@k*Y#11{_JJoHpc4skf|V9d zRHo!s>SU_zIzgUABT9k%<>K)k%*LU2*2f>*Ui<#xyI$4)IvVY?(#2uTrr_SERgg}N z@)IM|F~v6t#wF1>c@=*D>$e-!LAQR&*At;q!?}6ll*^MY5^NzPoEN-gTRS`E_GC|= zBks_AKqNFxK6X~;1Fa$ENr~=4ualYjRt~Pr@k_?}XQHhB`Re!^YNUxu8qf8{^G7@q zjV52Gb_m-KkX*C1az#aV-1o_YAGW}Aos(@ehEj6#&C%yqMnn&1`|W=lFS)n=QpW zE&6(?;l^xCP~yy|+lSvN?Re<^Dw-3$aFN!M@ixNnIx)|QuW*5fW?pj9M3kBYi_J|L zRtOl%-C>S>Bz=JNG_CV{C~dCS=9sl7eMhs z)t_0zNm`JW&@XCgNoOUlS-g75MmuV1dSiU_UOv^lt9#o*o}(oyS>x$J&San9+RTlX zrw9Gw+&%{RR^%`Pc?1N%ul!wkFc!WP<)sD|***<;`;1GMYsu;GUmG#YWozz1(jIG1 zSkJmH7Bu1G7RMP9Zk#kym+fF&u!TL1t2)IG$y*>bq2f!8$Lbj)lQf;zhAmwUn1yf# z2N#c-iE#%X<1bCqU@_u6sG$RboV}^6!4m!*${(Ja^YU%#M%Sw>xA99{4Lj2_)E;8I zoMK#w&E8Q-_`N!_=)GdsMwSB5WiaJsx?*cBi-MOPV)45n_vk*LK8&p)x#d-#ZH$RD zv#FmS_o{l*y||FRXSp7SHM4stN{*la?uKd6$fR>-Zv{&;UU!cvJjOSleEpVIP!BgcfTRUXa1)_1%@pN;ZcT<#Av_~uC)lpQl<+N_ z;2X@GeQ}5$ZwsW&4ETzTkU%KtKB8g*2jXK@Q$zkuHMbbin763Y0kE>tSCJZTcTfOn{G!1ghYYJrIeqZfX z&i9q+=ohBz@m;SSa!JCT_1x}H8lGEbT4RFNrJHEKn0eMGx7AfGwl*ENXDta9J8W8_ zhNHlYK)+8ALLCwUM?*ZR1|@X9$!j3|;-)0{hX?vF*Y*S{6!M5JDg{ul>^^;G$>{AhVbH(uztqB``M!B7n|~K0$wYAQU}K=%SFx#aa?TWu+iL@G0Or zuw-7k*&~Uwkn)gn7jc42@nqTYgN7ggIRZ9|vf^XV7cQXz;e>JGF?(<{rzQIfZsC|= z1~8WFteNc8)PwhJHZ?^^Hn}SivgRlf%I~>rvTMx@hiFlD%}93q;5Grh;~vnHn8?E7 zBw$fefg>^~BHw^j1lj zj#;6F1n>1iv!#W6iTM2F^(1P;lfhpv6>PNckgN=Vl%5E(auvDAb@EvA3*8i%)F&Co zd~po%+ceOWhH?ePWf zkRE2MZ61#L(~O7mnNPo2SpYe}6FCu?#{xnp`KI--E=@Gr?zM}p=}iw~+;Z3sr9&TE z14bxfQcYdQ0_}&b*@*HBRus`wUQ&e#A9eu7#ynu#^gdwt6j#tjL%=rwm5>DUxfcwI z0}oO6t(1JuyG`tludYm{nqYzI;_FTT}GK0^sevi?}O_ozomo zSp%EiPn>Nz(j8R4vs-j&*IiNp6?(9e@#Cp2X4KW&r~=cEU>Gv9|0$AU&_nnYBY%6R z+~ls-V*HTw>I0)suU|KGCM_N3yT6zpRSQxy^ID* zgh8?|f!3X?&s;Z4rj#mF;%N9FvjXmdCd%*6G2(8x&mUNa{iQdC2Zq*zSMJ#BeMFY{ zO6{4?aa%a?NPOxk^&Q}2f-!`ciuo0@7V@OB%`WD8X-)M36~nsNa60q zFV0w_*g|mk*?BO}#?rhnB8XBMjL##3jH9+1oQA|KPcUz7&$(&Vw6`qj%%hMCzEDww z@J7#1tNv3B_kOr)EY~m_l=ENfe`FuSMs2?uTj9j0ZlM|q>-s>rT`ZgM>eV^!lYwI1 z*Gu~>ezM&-k(wM*jjADk^|Q`VnB4Qe6#5(tE-JlW^H(G^Xkcy?qI%`u~@Swp7Iw8_aINi@8){0 zRp+%neEx7y&qKIb-Ab2SUAFzz`C?N>$*!p2v`qXo78zwu=I&v^15_KuNZ&aOQa zbH}u8T}0cW87)kFb=>5nRG2&wI&FwxFe{bqD->pUV1?g3?gjAvdT8GOwiYdoy0t@= z47|xvZ3{()LL{^7Jrgl1JvGH2OE;;#1dzfKyMhZBLI52ElQ0P~4q^iY^7qL@qT=JGFA{+X#V8ckn&6fMCNE= zWV3=Eu%eKfj|1hPMH)#yf`gW-~-6kl+PHK%LbtnC>l(dN@8npWCTnYNj0Z>H7|8j$*?j%mFl)lHug zK(98xX`5l1B3*r9$1)d_y_mwe<6v(P+p{t93CtcCKy=L}_zZ=>lXOdfe_9~^kD~F1 z@n~-qJXb$32Z5?S72J_KpjVs%bV(NAwcs^Pz!2m*O#zt*E;GmDiN16KjV^9!gcjMf z0~g9I;%63N_x#F)oDcxJGm;}AqzFU@i5b^bnvC^-@da%Mze?L2OQzANg{W4MVY)7^ z&P*;~YN6#d+-T2;bfPx)n^AD2;ddT3Cy$5`ctR zNQN%S?d?_53NBXUhCuj`$+G+@I)u9CPpWP^D9Xt-T8xZjMAx>;=WXiWZayPh@=QTy z@}NP)>rJZ06y)8l;r7fHTi!)<=ceY_h*IK1MOdoS|?RJTJdOOAAMKNv+F@;M~s z?n!UdFmh+~ddD5Uj#e(5G(V925Hq}mai^q7R+`$r;@FAQgA*gy7>5bVVr(Jw@C9)BS|9qGDouSF!UTDtc&Rd3bZW5zdFYS5o(<#2;DpTYsIk5?kf-k6hNIi>OmxO}s4bzXlF?-SEyI z)daD$DOCA>pr@G4nom1UH%W!n-Gd3Bpd~mMgyj2R>NlPr)r&l!B9W4Rem&no&o+u` z-U{{9LM5k=mWxvsXB(4VZ}&P*konS#Km;xmS9nDdpA#|}&ZslF25eur=_iY%6?3L_ zeiQ>Ah=XUp$LEyK(Sd8G4NG&4JuZZ7C>iT!T;oe{6z|4>jx2>|Qrc92%BT(opnJyb^=@aHJF$4LZ@j1a z0Nci_rmDI^$H%0Z?@yU7aV9Ye2sHhPGeN~ClPD>)akRj*D-9Sv&X5WmlVe9#izL5> zmw)g4oojkbCTg}JBC)!I((6%g`cekIHNUUuWYc`Ew&a^km=#&uYU&Gk(qz>+qy?Ba z-AKC84k)%{>GV}Ab(wC}B9c(A(EUOCJNYyLi{g>sJJ-tLhV2#+y2*t?LE2V9K~uBY z?@Y2u7i7ZJ$JFqbhCT2<77M>6tt{V9vTf$SCBbqoNV3*y*!Y_*yQ->cEz1RW zW3r>SPp_dotC7DX5s7SMXPS0oYY0*X{JPAqX2PrNDyv?eP3t%FBKC8L1RHqNzP3Cf zn=@g%kx6(}Eq{LVl8=AIBBB{gP-H!F55is5Oj%we9^7#6P!X#;a=}-rKJ9TuOC}(u z`mf~=b^ZDOFp-S3QgYeh!zudsEz6|dgT%{BBv}h_TH9hgUPIt(w^~X9ce+r!N7ZHe z^y3fpCt4Ja)R2`!VHHUfV9aP?knT5)-(go3nZ#JyLHjwP)ns8GzwSJl&(sr$Y*x{i z%d%%=EtTQd+qGUr4v%KV2W^v;{0l=5iSdMAJeOSSt;uB$WR&@3z)wyfdM2s^JsA$< zABqC}z)(r7B@&P?AyMGVH3BY6)KW()=yglJ*Zs6muOMDIcL8l4a%LW(HS zOZ48-#30%rN)kPcmV$^Rh#(9J(Gs1(FlUYD`+c70`knJ$?|YrU&L3xA*UT-lGroCPt6TXx1oa5Y&~Wk{twRsS3vqin|BhWLv( z1RZ#}{Y~AC{j`V1OEZ&D!3ZbDJ43e~!6D8+VJg}f zKwEjbGlm??23&>7R>^F8bh=QK}sF`l+wGcYZV;H0AJe5!0N zfIZ;8*W7waLK4B4h{L$s(`MgWbg7n2t`s$p1^hpuqaXzDc z{R7TyBiM$T5$Jc(JcsdswVj%qF*|Iiode;xmu~)1hGiw%jQlpmi}C;~V;X6YITW&R zB3+Z`sD+l-dqEAK{PKX*P2`(lzJn6RtRb03%*)h5hR84HA@tT8q zka}5nUWd`PMuPV=tQWiALt?52?*WQ2gt2d z^HiDf2gNVv93hYr1RxMxsjW%UTOl>Q4^NR?-N3oPqn4O$a{13h@5K#OX*FRHv#)Qp zQO7m3YMzlld!@WM9!&xh&fw9W5nD4poSImpCUENDO2tmlKziX-_1MLI+sgGuT?99c zsuN4tiQFKuOuqZ3kC{m8OJho&aSf>O(ok+f{uE=IW?A5j=VR2_K)i?n+2Eu@cv?%b zL_v8%1=J4m8y4Hojn7?`H18c=wsj~s@lPxX@H@RcHTiPtxAoh?g3n2259_>A!Xjr# z(}Sj&T!3sm;sUY(am>OXyWT(w)5AeBn3STt68wy!E-?uIKH58{N)cXug07T;*> z$IzVzmwiEWx_`{e{ueLUMmBBSW)madQK}>W-hFivDZ z!@rlKv4!p5%q8=k;k$viFe+OouWeH66ZHqw{gjJmN6T8msAf!?1;)2v)2qU7r!0K^ z@W$~j)@h28RxUAaUASPQLwgdb^8v6DkMRQMH4I4SO)_cpDCh}oz}=y{hXt}G7Y9t> zzu+vRNT&Hp2F*Gk8+V8dp;WQBPI;-55fIKWwMPgpQS;}$DiX>J6qJ&?cT;D=$^R6n zxea>X89-{Q@)hxs2qrYc1{k8#=%ykm0TfD@HsY1N#cv3KjxV*QLjmdx4%H1U!z5%r&#ahk|uI~T#Qf@ zS<@>~krP+w3XUHGgI((5Q#(U{Gl_iucplQgw716D1#<~+Q z@%e>|Y9>*l@jI8McMg~`2!9fSH`$eJ%U4O2z-}xG_*|Gg{l@0v2YJU?+jBRa1itB* z<|Biddjv-j#HS*+GI_{>xrqfKFSdeg^W-abHe{M#_YYJ>#)M{+e}9-PG?*l^SUOv% z5}v9p;`ENkn9jVXF5(hG*pm|ocl4GdTI?yt{br(=d{1}}-D7j57kuqkuNLb)npG9G zVhLJI^v><vgEhW8?2B%_DP|2AIRBmEU--q%r<$d?!ChvFN3k0 z4{P1t2q|iMeX-c6Z-9MtvO#{UA&fxQko@S-fcBl`h~28~3IlPb2z5IYFXY18Azg{e zbCm}{dGa;E^f7%D&w(Y*x*t{f-7QTp;$ql>|8i0NGe#*84T_~e2JF%BFYT^`c{lOJ zc(3plPK&c?6PW3`tKobrj-k|tSf@V|&96qK^D{p7+|Eysw65B*y!t@5%wMNyV!W|P z(|X{IsA&kd5g{<_2_vERgRCZVqdH`oqnH&H3nq*6bOsixMJ;Ac-%FZ2uux()3VR_X zeqec_JzLT9DI+C_C~=TjyH)Ky%QeAu`2BG1T$m{b=p;9yI!I%5$;R@`DH27qj+RPw z^NW4$K3^0S7#lNbh}Gjte5pZVX5XJa-A-vz@qW`l-FL8sZhu`bw*AXzcXFi3_z^Ow z_p?bj*=kU4547KF-I2L5%;Q&5!Cf}T`Cvjy8PTy-Wk1GuQ2)NKeKxFk>Y=$qpE>oK zCS%r!X#erlK5Vs5_8$wb^%OUZgZ345Rf>G9*=(QK+pqOk!02^wh?J#uKh#9=D{|4& zp+e>A?X$N0;&VS0tFN?v@4JxRIO(m7x+)})h@@=)w;ll7?PNET-QQFtBY<#XCp(%U z+U~iCd8IzEtjcdqSp@D%-kN=HK*>$b!v^L};jJiCTe;QS1T`JaU}r1L@5}AAEBqRe@1lsCsZ20}N$# zR41}-O~l4mEj&;yAPX7+wOid-C$`|nJ7($nx@*@0zpg?llHAO;7ANiRUxGWenxb$C830spi>zbWB?e)Q15{mo=e~Xli_5zC65TW zj_bht1T1uF!04p%9ZaL3H_Bk0z<~r1m+0kqCjf#4&{%3jHzv9aTrnC9d&olwy@X&v z*4&>=1-|nrGW+Z@mg#NR6ss`8mnRY#$8bnhwR`vHx5s=g#sMfi@K=F3+wcfYZUh`W z04gGI2zlPB0UjXzzSyp50dN6zTdrHGU7gcBx^0#M(Y(Tqq0iw`kq(&VK)nL~-iTN~ zRbm^~5*WGUnQ4*&MxENLuZj6GfAGDP5A8b#mL^v;4FwM_XKO5^F+0HCy}I01wEuQ; zJ+-12F`R0Ws#sPgO(M-a2~|da5^>CaFTAl=7>BuvGlZS2kBaHz{#*Y^aPQv^h6hVY zz}BP~fykf~O)Ln=-1Y95blKxcrhrKCvQp$(OKD=mwr@zh8*0ODzCNJfxD4erTHP7a zTL1Q1HS|n{cCYF2aDU+OscbpO)zt8c#eWdf-5tfn#B&ih%x;u)evo1g%i1k>xukOm zhEu(|WZ{&{+WSBwL37Ac8YU%b`>A{37Jtw7_Fks-yW3PaW9Mc z^1vtW*Uscw1jJ^PRCH3>`aQR3FPzz8T1_=r5sh)iXCd7*q-XW4`wfHj zB~6N&tjEthOGO4`mFY`Z5%XK(N3SEudd`wkSxRCxOL=E!vbQG=d0(ps-+3m0neHH4 zXREbPdi2uTNDplXR|xabfWc(FU_MP{RaF0KR?b!j1lIPfrNOHzTac^EDV&-@ipVaG z5T%O%iaZ=wNF6pQY9-klk_2_8?^?JO^h!p=BU+Xz^a7UneORhQ>pcbVV?pML%r1I` z3r%x-nfM;95^yK{R#1HVZ}V)70MLMB%lFt82_(A9JLvwf9mS%V@dgF{TkT42)ZvsM zLfALm`oL$gk0U09>5k3@w?r+ctQRxzzf!uWg(b$4%ycY;?H`Q$*Vq}5$NTE$6|=KH zrcmxDR^9Cn%;v;6o4%rkse8XYL`VXQAC3$lps;5dN-8Xi%VsrtRJ%K1s|@YpZVJZ_ zgPM})aMp@_3)W4>iQjOm#?Jp?8${|%trrOGkWAzpyc}+yc4n7Pqf=snhWE2ai$Xgs zTHJm+6bAtNu7jF+n6~ek)j|)8(lh>j{r0<4-4`klxn0I>U zcx3FNWQc|S`AM&1HpZ<@U{DbL_0;d*BCY2ambYz=Zc7vV zi3H5p0a^CbKZj4bov|{ML^i5QyqIcU$E%wQrPgN7IVRXCH(UzTNSVBtA=9t=|A;TL z|2v{!m{NHc@U(BLfgV5&UZG=TWI36!IXYAz+?U7$lE_dyLv*RtjnyGjtdM|QAUb!4 zXq1aPO@g^YjMK<281fkJxgBM98Yt>SL_sSdz)Int=Krx}wZFVdY;4}-#C-oWR)}{G zu7E5i6Q?e&9JVYT=x0|*5ML~|Z#m|;<$e{f+v-}|1)`9e9yp1Bh!h7NCXl(Zg8=eW z+%(0Yz%>Dn3I&VPNjeO9mRFEleO9Y$*2OrJCj*;`Q(g#*%@D(MRn@TJ!3Y))q<3oe zuC=ha5i6Wak|_&?KZO3KRPlChY2Oy}kdd^sD@asUc*%a!Z0<}kUGc4AN3++tA2i$Q zLwQw5q!?oWA=-bS2xkJae<>Vzmk>Ow=!GZ`s(1$8C@AorAUdhDhAmdW>#YD3pdA3q zUf)E(7Gpv7-xXY>vZbI0FM!R*o6{kjA#LCRb=r}wTl#n&U~PllkKloG!g`k>q&=-L zN$SgGZ9$^M#RvgCv{(=S60r>~r$emnnsS6bjIv!RBkm0m%$W57;50at%qlet&R|)o zE6HSmg$$yYsw3Gnu-(;=0M&2+dyQs@1l(Oi?aI)_NQQk1dc>f~`|!J@=?6fyf}2tf6unmt-@YpLGV%D)L#-A)w-n-5@8G;861OTns;B z4LBDWg6T1&>YQ+wZ_4v1Ruy-Iipid*V0+%_R#H`{|YCYt2ty-PKk-Nv9a!abGVB zgu`5E9P5T{Axrf4&w3;oGVh9y%&>anE;3FK!S#fdB&kixT+&{M{E$G#kWs_~N=x$QX zOsOo3{M_}z#jC-M;T=_{eUE+^F-9<{<_fucny3Yp4G(Ko3E)lbx4guYx9VSb$Ju!I zEM|-3j3){iPhDf2){4Wq(_51LMS?w_>`h)3^Hj0x`(#~Y9>3-pD~!M%ESUf4VLGuU z<-)wiUMxXFK?%W2n%Swn1DP7aeWnP2|IGHqs{&a$f7UC*|B+$k7h4y`F|*(2xi5? zdT=iE@M@#7rbwk<7rV1vdt}TP@5>yAM;M_4^extgfc4vNf47P8fw==BN>1Zr(DEi~ zt4>Y}?|HbGC?Rb=c>{Lh;QksbV91;4(|YV;MENPH+hw5>Z^AK3(a(txfosA39lXooZ@tUjJgk>xq< z(-SVz>( z;Eh?u^O}3l7!#P00BMzLB=+Qo-%Si@%L+H}bK(uuop~LvjQu9a*nPwDkM6|uD=lEw zP^3!01uyMbm%r&UG-&x|zkHBg)e=X`se5lr^TpX0L+|NhBp4_dlGWBo`+#f^w&}k$ z>U8p3)5^Wi?|P+;gkhOe&JyQ(!$=3*O66o;Oy9Gm3{jIi!Jv3*>(6UTo)U zWxS~dVtAz8nNdWYZK`_$L z=>?!4L68LGuX$~_6PqB`98?17$%L~U%6L;d+0p^;q8`XjAw~*cO%sfV;gywR_GewU zOsp3iiBKnC@27$xc-=g7F?LddDYgqAF2MS3Dt0wwUNBX&*y~UQEzG1!$PPwCLI7-c zz(jbxW$x>anA0;@%zRewU2)2{Hw#!LAHv}IB!VeS4fv|S>)VeqRx9pW+ba+;&H&02 zy%x_L>bN^!My43#q7J=!!Jj2S%j&5#8A7DWBn1AISKzJ?s^lQJ6_Dfwq)dPvqN2h0 zXuUfP1!h=)0tQK2NI48}3<@&63VadHbh?M6Me^@SNC2MQc)bol>P?OYv(p_65T?1q z-a8ypj}x(9i1&J$gJ`Q)dgK#M$A}(|BIgJa0K^ z%f|m1rt?hLE-em6Y@Xk07iSL-!>M$wi7A8o8C7S3zv5m`Uw;+0=ARv`Z>ca^ZZy1m zxmrxp3frMM8FtcvA$*>|e5N|k=2jzL$9L|qh3p+s7e6oak(O`?_X{AN;C%{dvDo5c zZQx;q{>Pq!KmgCnt;oj|uJVe)dU|j%D*Ma;y_&zXw6di<*?vC^q(vX?i&5zseMpC| zHQwnXP&Wdx?Z~RO*RpgS77|~L>~V&$F(bp@QKr5o&CL}DwS#nGIj2}+RC+@KYpEqN zYueV%*F;S7Pqrvm)%%))xTH@3%)4d>ML8Wl=4wnM7Xq`N&G;70n}FL>Q=!+QrfXM75ApC z3C#Sn_r?1NQ2}W)?Sj^z%mM6d0Z@$c&OxMh9U3REH z5lZwAJ6?OjdeGD>@ihzUy)Sh>R*Z+mmE&gIK){3nxIck_B$W3IH5qS|lDqtF@0VdvmTo0wfuCAywHs5J>>R~!$}tJ-z|_&&-L z3@G01f$}L9v1wl^G!sM-M(!@##vmzLL_>nAI5&a<%&h_m^d4X! ziB6*oAe0BZpk%9|8xuhueH=+A*3fu$b+VJFudlm6jD+3~R?eI;3Cec4B(eD1bHQ}0 z?CBSEdR=^JZf-76wqFy5as%|OXe$S!?blb878$(T%#~rAckSC5tE;%7>x=BEZ)b-> zuAW|hz@o)K)W>rU}A|cFHdqgmdvGFzA|yiLZ1z zPirV(5!Ec5y~C3V5K74jv5OWJ08WZVK)}@!4yFk_xil1}g){Sl(R}z=b@p3n*DdKl zdQ5>(28(zHbSNP}FiIF3K~|z?u_(3Jd<1t{?d2NUin#?n&Fo`k=jAY~8mwWYX#)RGQDCQ@ExMIT{H$uEvK- zE&vw}>;;Yk1Foxv9?~%n?0o2h9EP`@x@llb4-?KnL4gHZY`jEvUGk%k(QGU><`HXW zicUXm{`63cTePUs?8be!u2p440^c>d4RyWmpb=b<2>1C*mmVmmTPpUFu$Z|V1gry&?A zKb;`~4==i~*YP(suh7hMFt)!__*jl$bf~gKg^(uJf|_y+!5cz#ZxN|}&|_)u-W+^a zutJit)p2be@KhzV7Tz+tNO<1y>vgSzHJvXir~>ws5q}u=xq+A#q-ck_?HVE=RU&zuYcAuXQsFaU7l(W)_XX#YkGnBAH0T&U9gTGw7B-0ehJ$v8Fk6 zcL2NzORf^kyVwY$pJ$+L034J^i2>o;xvW|)jt7@lcEhhqxln`HZ4ifcADJ~3H@Ph+ ztfH{u!#vIH~|x_PxWp?Yo8)HFh9-8FeqNnC)Vd z&kt6aT1;R&ssFIdY(b*0gZ)l_Qe^7mxrSlqsj`<~UQJH*rfM!*QG$gh-&iY+(o*PS zT36r2SD_~Ecjd~z9gk75q8uwe6Xw-xCjeI|lc<;sgn2M}1G@qmR32$_=S9m*RSe9+ z@z92IBF?ktrg`1rgvguD)zUmJETtlXoe6Zu%K#d+*S=R;KA!GWI(6_6gh>0zi7HoF z73WVHIeXJ|=F1tgZ(VvWEJpbbAX$Nf>^b)54d9tgrjM7u35@d1 zpY9t1vq3lfw0`mVa{aAGCLy0y$u_v5vem2xX=*vD>BZ}IhJk2^as0(W@{G5M*ymKz zi>rZFrso0(U^>X@%+F&?*&+k3eob1P7em(5Cs#Q7nSn?uh9mzdb7Ng?Z4S9bVaN0C zJQ`rQaaHd8YDoc&xv4!NMKI04PPt{-HYx&4@KC?&>C{f8J*=l_j}|QzsB|}NV4W;q z4`orLydXge;~5H39W}NqZ&^RHg}A{G==H>8Jr+`eccFxkXUUO7kjA6o-0=N@1%O_p z>11uKa-7|K^W(ffg`A_e<=G3mUwA!(Dtm%P0u9e5ykrh9UCg?#vD|)G+f6ZA2q@CI z{C%u-B{uAv(x^gDbC#r_IA*SE`;!Jzb@+~kBznrEY?`q4L&MEzJ%p(s#nTgs@Nj4R z-uJ$i0#)Fe>NIAszsp9n(_&ObrV86F4R@`RRf~q9D>rr? zUh4nm=2j;%(GrcG+t5|dMbkju074Z*WnJj;WA+LZX~UxCRIin)wDs?Zga0qaS`kfL z6UF$7oV3?0w)!!#?6oArn`&Ju^Kf;6m9AoE-{)I)@e;o=bB+i#vdR14{ex7aTGX)0-YUCMXmRwXYL%5VK0?y+m9WCX2k_TM5 zS0_4>qedyb>yy}r)I^*Z9=JGiqZxS`QMsWs5HPHXf^Mnny!9$xO|vI~R7rue4yFo4 zODv1Ymaf*TiH8BX>(brV<3whE056;+6}DEGJzRspO9&94Ko>Tag;`6k`Ep6_=wzxL zBjAal0>LevCIMWq&dX($!O!=h8M&7DO+CVbotdj+?qW99l28eJOhjt_Ei>F01DNLs z#i;{4T?_>S0mMjO#uAK>CB8;>dS}#A)H;9NNTS{aCR<9&@=8_%lCGMGWLkO=4fIvtd;Qn8wAff^RIqQCxlC9ZARoqB}!5aDWC-#mkNo%%Y3<#;V& zjJ->di4P;~n>VYI9I1Og|74u}>XEuIi~Qk;b=NDGn!h&zI~n%OYE+5Q>-E#VJirFU zW%uFXhoy~k>)+0O7HM72`&oW3=ZRipBT)s!-JPfnH!Q7^eai-dsY!P3hHHOU5L!Ty@n`WBbC_gQS@hu+#As%`+eI zyN?fr$pLL>Jl#=zf-)F0kT&U_OEE!Xu@TW=;BhSX;@Uy3a7wzUIbV-zv@+rpS;V`0 zGk6vVT5q`jDRbq})}_e9#;i}sh&l3^7oK}~@!;|^GfZwEhDT&Zr)2Mk6Uf|~*q8Xc z-@5GE&D)N8(|ph#&*!67NW1dNvPe1a#f{>~@X~lku8IsP-p_H_Gg=6r_Zqw+<~K&h zM2e3wwIT2(Z=gpx)K?O3+F1JIzNn{hQ#8Y zP9<9rD_wW_=9OxsuG>h^$jmZlt8RESe(sMcnsins!U#Of5Ywh<(kAVPCAnu;e&D?& zV1ilJc1TKnuOICVLCtqjs0dX%1a0VPiKkYlE^@v~e;Bq{5mb8FiyQoe(uQe?3`^Wl zyz#~tX+KVS_6bedJg-XqKKb459M6jV^XRKnkeMn0Smj`-#MrF;* znygBRSew%;W~$O@JFlsXTh?vldF8YgNqb7gi?Oz&o#R!B5L1VfOl@>y=L|r;qZ(VI z7&~53V*c2`EJr}#?0spF?&y*6rI0)$nG8V#NvP3Gu4sLGFR$!-j@Tv>ChN<3cmMnk zaehFibUs>~AV0twFk-`Fz#0UP|7*cReu6zRTlRIZ24zQej_9C|YB@n>|0+LX?@l^8 z_TMi&WbUsrs3%y1vZFfxZu{%6ayXeIIvITaS@4i~utWY`C9no%M|J+)cHysb_&cyp z0iS;sJY*5gP;sfuJiAioOy z)?ejt^0UkWpMMrSWE<>|+t!0MC_Ae2@3uRCl^@+p_CF2579K+QtL&&PDEq(NFZsVA z-){j}=YY>Y3m&oucF4ag0oI`Gs17*tpDNRk3t;PrfgDjoB}K(>bbJPM_YtsF{hwOo z?oaNYHUHY50o%3z-T&A56v45h^HH%;>rxpX)mQ}W$?r|wf9r$mp#j@3{@Fk3hcExT z|F83r`}AMu(?v=lMvrQYgY%L5^sE2Y2j|lU+vI0^w1Dz)u+i|J-GAS&GC20v{f<(_ z(UAG!AyA?J)NlN6eXvjNLrwqeLxsS0^MCjMb$u$}*k9MDO2tEkIjXS<+LPbOmZLrJ z1@_6Zq4i(;z|;KTUaOYvgANnB1gv4|x!t7l?u&2w zTi2o&`tPhS`|>NDeuR1ZTs`&LbINs9>)LSTwCa!dF4fixom4-g@K`N#9;W+2pMmq_ zy5Gs1aSHeIS>2&-q61IgAWhX}*0;CfbetHy6KVJ&{N_JGeS=QB%{w7#+3%NPxXFbf?{*y;cQN4&N%Bp1HUhg*ak5;^Ht#EephB)aC~%f;LS>c%>>_h_XO;4 z)QIoULiE&hbjc{2cE0!Ol+o{Tch>BdbIHQOCqAmdL zHO$R|=9W{4$Nj)#9yE_lJ17(yn0?a(;0iJ>?U%IskJoU_s9h^~J)LsKM6D1a@SKim zecY4#v$84e@iNi=h4H%sNKp^>=U?>REBjwkKmR!R5;T6BYTV&?UPuA9G`OSnW?Z8D zD{t4;>y2P?ZtjBwa(YY*&eSSvG!RoZ@j3Id_nkJzJfVJgZ^^gs5V?VFOZN}DJN!P} zAFEz+Wc8^q-#Rx9RZb9ySI2V{ZaN?_9TOJm=6a6J@_sQ{Nv@Z5;yS*Dyf?Zsh>6RH z1w^FFybq$u_vyrT2Ug`I+*?@gt;Q;G%yPaIgLIP4JCwOpUd7ny#hA?DbT!cF6{XX& z;0TlO>$J>s1~<|QU$A;MuRd1jFf?Yx8$q6$_>!*jd9)+1#bMY>pJgqCw>J6wU`hgKMW0h zwU*+AA5EGTw=4Noa+)9GickJ*qBR?+a3($f^i*kuTcM}9gVKSnQ~7A=QgEZV_+xPh z_2$H#=olu(v{k0zE8*ViUS*%2>|Qs)!#|V6Y2Kl&0FG;9Y`u9ImP9*aqoXIvBK!CkO?lohe6ccay z{d3i!#Uc^rkKg)huG-ZXf7>Qpiv`YeD2~iYDwr1IRB*9VieVp;ckPM9Vq{X4KBL53 zrCzXUxvgBVX0hX={yZ(=b65`V<7Fb6RpqDZqOQJvu<%YxZtSp(J>Od@#%iXaVUqS6 ze&`&F$I}$U{^*wKQ~ML0qxWR5_W1Rppia+tqW_p#ICJ0Ty_k6L?W}%Yz#D;ZH@;oA z>@dMSRnJU?8o3bOi2XANdzGq62g~I3^HJK%G3XE7F-tX@K@vX>CNFKm0|z0my`;jg z+Y^= zB>JcG;;l_c@-YGFbYw!MP`Pz!IYEQqzaB04?cFB1%sYX@p8po8vTg`0q zM*B@73kS_avBFr^JFiDdUi_0hKWn0YJvq&&?Xp((dM5rf)5V{?vMc#H$%$ezX`iJw zl=o7i9yAS0rptc5Ht0CjBD|CptFd1kt#(1%`vWV{o$2_+AL4;;oBNC`t}J!)2HGUQ ze@%14rS#<1JwcO`TkaVudCrTg&h@wQxR@Gq)p(sx6|%b(Z^*lH2iz%py!ld)=e5O|g>ON3>$YeVi5dMBJX}%o zKY#ehWOUou$i1wV_@iLXeBYw6e}{;%O8AA}IQ2c8ZHwZZU;-yg8@1ZZ)pd4x`hEeP zXw6-4i)oG=-`sHsi-mdplfGZD)fA^g;y0^CUm=Vycae1&*TYANg1q7U5Jxowj5{{t za-{v_%M0Rw3E_%m}rTZ+eCeEx#BAy4l zDcg|#F!J@4fR23fu5wp873}%qo3_z9gy#TK;Ndl#mrf8*zJ999{S?1T^gk|PtMj~w z6XKO$5}m}w+=3Th>oBhT7npAY8P$Ifb6n%})oSdF+|Av{Z;w74zg=W{!(6PCqMOKsd-X%k1-)(LeV|@~hX!)u;$_qub&qxakBABt7Q3ZWpM9Q9qvMk-N}^iE)dye4A`p zFL;vc|GDE1gyNHifZOwQyJ+TQ%kpGz zXAyWfAfy8Kc$(`;qF`LO+UB6vlXI$K@J|;dIOsx_O3g;mnsGw4h9!5HV_dI%T|+RO zx+h$m<{S%wg;)kSO35EnfXrR^RO0&#zf^Vi+Ijp9K|5K7(|e3A*C~9y`CNRJ(K@cl zR8tfnevR+NS-lji9nMcml!|cylYw;ncQfW>eo(@jPA&6ItFn*mX#_^hAE*EL`OTF* zNO`PAS=>u6*LeQ7W78$ROX^lek5~a`4zwnO7T!6OU9`dIy z3o=8blADhr7B6mt`zarx{nP7S0Eeu^NTKah9);)2fwp*-&&GBJa1CJrK0L43usC~G z%Bct8YO4!{BZ9(~V7|gSUT`k@H8Wa=AES0$J}t}OQDuu$m*sOm4aXvhAw*zP*+KXO zlGDTN6eVGh`?>hRNSg$G&vR1t`W4>A!Rv?g(A(x`H07UqFUx+;q}4c&@BP~Mjs9u+ zW%!d;ic{|yqaRLu%v?$6Z+-8LUYCq6Wm4SDyFd75GWUdBAw$zK4%Fa#8^<0<|m2xr7|`9d+na43(B(@EY-=d{N}rC18Pyai3;O&*JAOjOwun=F88Ky#!K+Hndu65*dD9x{W`fl z9w^n2jWbL8JvFZNwaJ%%Ux?-1Rd*X|M$gZ;_v>+2rLz1k^)Mc597YOR>G18>(8Dfr zX<}}zDnu(qL`Hi!RWQHnwJ2@~%u3<67{HaQGl3{OJs@)-hmmoTPsm!^fkGmF8g3q&W6EC1y}e zB>2mf6U-UQO1&Kz!c14=uf*ZYTgs>5DK`veaq3=VsX)*Y#Y+?02;-I)3bnhQpYEsko;DEDM5<43`pz5ER|*#MoXEXY>Gr-^ zAWwA^^=0z}3o9cH@LfUc8DP*P^oRE3`opv1gmIrA-v6K2Oc+N3SFlPHPR$g|U<0`7 z2G1&kcs)Ov8}%eWKHVqB`5o7JpZHl?5YFJ1xq}N}uKEE9pqEqwvx3~kT)OAy!{#z~ z_3u#Lv%Tf#aZ#FNu-@*xE6kp4S!&#@uoI$n z3$7>M@cNKQG9h>E?f`l}1~c$uDd0M&w`o*kqXv&riwjVz>w6`>)$4ogX?*`(7IpG& zA>pCDaaj<$dLc^{doHnA>h192{n|^j!%=ZMwmuwr2R~O3cjD`kz+?ti#mzyE%IUUy z*r?zLTs9}p%(ytI{_)u!Vu95m!YQJGZj=m}xaC02IWr|x&N5I_WxboewQ`5<+)DX_ zDXDs4@79s$VN+jdDTH&-s5S<5h-$~62G{(mMtmnk3V*9ARlx8;&;=%6-(Kx+QEMNu z?tPD%IDIZpe394Zf-{aTEtXNy!0`9;F0f=9p!!tSctU2nyEY@O-Zta-G##17K4c3O ziMn!3^^}*l+63k&7cpv^=)i5RB0uF|-gAG-Gi{rRNW1!pF|;yX?M0FX-F%LKAk%ZL zz*+i%nm+oMRWfJjoo!h|4(Y2!$0aQGX6ZDwqi@zvy%`VV^d@>Yto`pcSHA&}hb(}& zsruv9(a=xxid1Xl4ge0MJRJmKI%+v&jNuO~V|3OB5VymI!krfjbG`1Pf_LsTnR*bh zcqi$Ywb>WC3;WJeWDHvi90l4&qF@xdfZgT*1o1Oqo-w>Fs*a4~rrI}F2FK(P@sLOb zu39YdbM2>_w^d-t6zO?rp>{CMc8bQLzMIAR%Y~QkTqyy3VH?CF3#4kS2B6m7suoq| zqGZ`#23#OyCUoIJkpGa;HSzu{w<$QP?}cprTGshWa~y^X69s*)>^=i+EM^rw099t#bmPITH#Bf5%-( zg~FqyppHqSsdK1XVp{#&NxQ;!*>7lF&7dc!jS3ODSeCFYro9uJfSLwVYPMA2hug(YAmR)BpF-fkd4T5kyKL-qHdix!FyjJuZfu)( z+PchB^9*VVn!7cbY!Xw!^{00F#i1XLnKi7CSWZ!z`f3@DW%M{q-MW!;Y4D0`ib39Z z7bpLoio49^9)&u&0%tq9v>T0a1&qI+rSofL`tbdHr8o3lwT`<8I4(0O+^A}D;YlE% z!I-{2&z3H?{Hfv4PIs~~U829l%qu=2Vvz)Y|E^h*oQqn3I+q}&16BMrXcrv|w)auXv(pJ;( zwb0tSJ3l-wbm&)&sgF?*L|#U;ADEC}i#RHgU$SNw)x==@E}Zarqn<1inZUx5=TWJ_ zh-3F(EB)+n$2p11b?QZx^uMSdaO_Hc(ICxWts%!vGw$SJyTZ0Z9T2uUyMed-CA-P& zUuJ?VJiDmyE8u_isQ#rW$G!X7ezHjI)?GvOG%{*64Twbd)WUv#z(_{sAbMV%xbVy7 zk+ELMV{w&+ou8p;MB7x4uwhvufsGbMZ-2~B%^4ADB~xE5xlWma8*T76=Jt;Lkm=*} z11AJ+&zvOPNwpcfAR(|l!=r&w;R_VJTM zw4^AwV$#}}vLs~InHsc^B1f=>rVgzJI0(=Hn}1&$HMz9Ym`g6Fk6sa>0-7c2zWJSwx)VLEol*AqVDP1)75U9mA=;10if)bKV`ZTX5X(=GO z3b2eMVM3F!)Rix)HaYUeDok^exAMdmxyvqnw|Vx(ydta2%i~4@Uu35)U|63A`wand)E=ZssI}IjL-hGmdwg zECE5gB++t;lV}u13LOsMU;uvq2;l0jGieqh`#RAW5Fi2i1R1QK!*GN?VM@fGI|5^Z zXUqZ)0|z8zRD)|T(3q-%3XqEFn^O@T$|xeV9Rxjyy2kX_Y*dG;Qbxx@K$e3bbsN#6 zZA(j$F6dp)6towbu-fwD^I{o8G{!x9XO{FZ-$w#}rnj2KbW8T$!W!w2sx-QVNX7~2 z?!-PN(Qd-p1P=A+oG)YCD8Ejw7vIsdV7}Atoxoxw#dmePVY`3nrWR&3Y&RFRbO{A$ zs71GzVJ}~s)*i03>kP8tN7wR;bQ^y^3qq(RZK!GTeg6P6yHVf%*zjw`uM&gn+LXqw z>=t=NQ&;R%mHh!VKWU@5S7R0P+wvUT^2^Lm@|zX)a2uNb;I}C-)v2itW>t)}86v`W z;w^p(>7;Zh>PFB`{&{T@z_EKgB3zo;(di6dfh68H33Pgrs>$y0fr>Qz*JT*L6lmPn zN_Dt(>#XjXgYYZv3=vrfRRA*WTU&q8yDmi{b+M^D4wV^JBQ_kvO2QoZENGuem0Qc0 z$59-Wu#Nk4J_ipT#6g*L04x+bDD;bhv*V*(h*@{IH^LWjNfJ_rHx{+Qu~l;BPod4V zpS!}&Dtb`0))XA9N)bhE0_P<2)5a3rMIPfLh>F`PgN&_ly~fVqu*><+~Q z9W?yeu;_YR0QjprNON?u=2V5*rwqkXk&WOqGgiOaRRxXD!sPc}eT-2u=8cjEFCt4A zcZEDdM2)n?tixKdj>Woc2uOsj?$hP?muUL?`v`h%@;6;q86#wno+&yUgp#Yu2MYv; zg2?oPnkd>xYUw-)ONMM30C+!C$p&GqUnd*z1waUa=SnfGdY{@A10rJ%ffyr_aLUTm zMriDI>M)#Q9k45qZRc?~11Jad<#0p+(tw~w?Zmmp!-k?^3O*L^qN}zRRK}2vD#@)t z$20jkK4I3{n!CNF*Dm_hLXx!Qb*T7s)6wc@URWdp5f%MM~bqCk%qRX7e~THu(yjPSPG++Gc+)XLf2soKe_x^+GK zAoI!8#``~Lq>pXBC6>^tyM=RJiNNDg$rle^^y1cQOi^$1&8w3f77Xl$s%n8vq^1efMKJ`3N!{eS$L3sE>SW@ADt{_J-3V$s3$Mh*8GnBfKcYeW`$h$AAcVOvI z85UZtM3&8xtJ!-{$K>M9(Na~+dJo5ihD$ffX0`=g{x8D5JRYh){CCETnIW0sOQaZU z24!tgSq7D@W$cn&N>WKGWEoqLibUG8hOsL}wi!!`LVZnXVZr_wJ(` zD$%J%VptylJzj+9K`#%+CkJ+X7$+!+S?NG0+~yLpCM3`az>Glf5u{oOkih*HRwZ#J z1mF@B_2B;}C{Yu=@$mais*sWh2jyc?MD*l%%}&Woni=$)F~MOvI|fjkI1(Ff`4`86 zjL}eFK#@dBLV;+ls1l{YN?Wo|)8&ip+$May;F(9TXhh4mYOQ9zE`kjjs+3GU+1d$h zXH3Yc`@8b#r&?z>Nj68AGG5%;5#0+w`WY4p?%nA zGhVWJ<{1Z>gsZn-hZ!rh|0K$s(h|itIhSvLZ2Z(v{CNNYXY86(kGhVY-_Y>O)5&Px z3G1_8mad6fUd4Zt-$XC5czFR*YVCD{w(q}SXyA$Y0-Ua}diqF^M2YLIM?pU2_anc( zdg-_NdyIj_jX zU>I#_P?aYjz(UDJ0EI;~V*%|>vJ4*KAsS4aua$yi3xN--?x-Rx&0tuGu;2mkLP4y+ zzCuVAXSN#Q5z%%$&nB{nA7`^u&z!+@Q&EGJv!~h-sAj^zWn~#~%UgiiWO_eE1uLQ_ z1u)~Lg90=iPQW%Pm~$*7+x($cz*InBrP;}_UC&RP8fTX{=Y~6u=_ZaieBi~@jcgs5 ziD)vkCMXerKv6RhRTQ|Zm`LCmNK&dSTnYIH3A$8CZ$KFoN6JF}gujswnVY6;*f{Tc z*@PTBUQ`QT3l_&NF_(6szajW>%pIiY=BY%>c&-JG=2@gDqNq@0J3ZRuu8RC^T|^nn zk5tnf2mo>wJQ8~~6mw>z({j+UT+8@b(l~8n)?9Ig%vvR#_!>lI_qx0lAup zDUM?S(|ThC930Umhbd_Y%k$`Wa;{azRkXM+&IVM~w`C^)S^~J-HqsGP^I$0O5S#=2 zUz#{#@Dn&uB?I&03Pyg0= zxcPF>=%+GkcDx2TwW|+n=q{FBYlB5|FG_1Vu_%}&j0&u<4L-x__JffRlOuV9Aa>%> zceh2Pp6n&-<9OS(*FTIS z-oG@tnwhe7b>J78$X@3~(9HHw0{Z%EyU-#WqX-GfJv1OI)^Bdowa9(DV#gRaW%rh9$#7%dAO6yu~PL+IXcQTn-BlJSyjj_6@);PNUXHZhj%Lt=GK z!cq$LOgS{HH*rMxl7M)KQ>^=t{!RkuaB#bU)CM6;o~D}cYcXe-F!j$@fj<#Q%v{z& z9;*iDe3|!}11A4=2|JbV@ga7LmxdkBrZ5wxYk^;9Uvy`T52=E#ZTcRHFzp(YVFKz$~fuPy$PyN>G|*I-zPK`y8 zlCoN8eR*(cAl_uIiE!f&QPNx-Rhn*TZPSsB>d16*cVlJd6)b|==Yb+*+Ke8OD-CEAsq}U}UYFG)1 zEnr+aM=ELZ(@192rSzB&>=?e%Y&6kQAjq8E=gKja5{$>m050uJ7^SN?7}EXQH8mn0 zRsc{rH!80u>q1knf-_#;;b?)I*af2h4P4+1RX(rA=<(Ri*a4abZ<#aw>q7fdKlNvN ze`Z#lQ^#qj4~w!7F9p`2sfG#<)&*BNb2q#AB@YK+e%dyBH!*$2~UL7qx>5V_q6%J?U(l2oqjdc+=+ z+=sW2Xlr@;;9>io^Y=L?mWVZpDdh|;-fW zfJJb6OhO}YREdIoYs}f7wKfVRzr0?rl(JzA{C*KF_}%Uh{!JkGrQZ0tx#7~eKU+uq zCRGp*G_I|BNYzFX0~o3SX0lT3S*9h6zuooX6!5NQ(J^8 z#mNbJtBJ%&_mW}D6v0T~1f3FLQfW)@YtGUFd7(>8%_M$05H<&b{yF!uDXz!1X%^5> z%A;K7%Iuqew-#uR+()mX*HS`Ma5OJ^YjEe%7r~?&6vg)8O@o%}1vfA1)Z&i1rChu& zjvgBAJE{J|_ETi7QgnQa;LT>R{(nxN9rt`*d=0aUOf^lg%+nDxy!c6 z<#?O(abe-S6D5L+M(Jt)qLk`>O0uDyOaLzbCxX#L;P=w}ZivO(pN9Y%dp= z{g`v;agbRbqtler&`5V_F?zY-&+QJqpyJsDfEvYzGIT>ym?;-Tp!Z)EJVO=qkqm_; z3zMo!5F4Vx6ryF*NJ1FjU9rG}p>c=c!;Bfhh9NBy$hPNp8g)mgWw`aC&H%W-K|6Ri+`g?m~pi|Mbt>ux6p$ArFA ztPHJR(ObP2i(VF+QyE@Dn|qc&2H7nn7K^_of%pRGak+3#fjsY93^YxtI|D;Jce-( zg(-sG)e%jeQ_|{b_adOhteguwO-;lIK180^h&*4)MAAuyF;F7^o!0gCNokzit*u3q ziYxB=6z{3)+27_dm#c1jWV4&yhpQG$$MHki(U-l?e_(!HxvW7xFTG>=>>DCc&}^{c zR{F5B)v=p?dLqi9^h;$g42(FylU31kh2mtv;ai|jYdh=~Wfho~zf}ou&p=-jUMT;? zt~UGgdeYl(zY1FS$H4l&dF4-m;P>(h!J9|72G;&}!Nc}qp_xPLKSGwa7EBGS-s(sb zHY&2YGlO&P&Tz)Ig^E^=iKi#@#bU)$)nGN3s{t3aH^sde@pKm31eHs(B5H%$Wim)7 z7tF|btSCd!5$Bp2=@sNWl$|Y$X2uW0JQBPwtHq1cjp{&S682{*nAiz4C9##Do|}^_ zbod$N(Xj%oo|;=O2dwr_G+I^|=J#xozB4`(QAXW?kd8EzgAP{>kQ7{^BnUAz2!9c0 z+A0&&WWu67)c{yWcZCi)tj?{#J7%D%J@C5yXrg4h3Yg!s(1_{Sz|C7f9e5|J!|f|h zjB04DcSF z)L)=f=;%l`xU12_biWd{u%d|XBtumsdLhyp?D&O;*{4l~@r_)=ax_QWv0|iiC{m}{ ziBU(6dU44Q9`M?$wVV)ce|WtAQa+V3^yt^BTHNZx2Ki4iVqS(+SmrhDy32Gps?oLi zm~WZ`;o%jrz5$cuw$=Mg1^S|D^pIvvg0guvciqq$C+FH9mH|egG2=zRVJFpgpJc~Q zjv3*n3phvv(g5mh9c=^$w0{nfz>jf!rMIf`fPX81<~hSu-4&RT7S}Jz+1?_;&u_CR z;?&rf%H?2-Lln`{R+kNzS4#h!TdQ16Ue6*OvUehb zr}@GCm(T!IAULuS8c>{jCHS`AxMB4FTGLPog1+zQ_m3Q>ZNLvoF5okXb86xVnK6{9{Xi%hvxD0jE~FwF6`a6x)}qru*q)m4;{VQ}>k z<9Puwc3=iS!}=@AxWv1|vcP$O*#1mSilYfQD<2o~leBO*(Z@FuAV!sp4&EG-8XqWaGUU zY^sM^gx?BkAW z6yG_2O0I4;Kh#8mhtVh)zfu&nr0@CY#KaA;%Aa+yt4UQZfsCRkr@`WH zJEBTULu6v&47o}Sm&wr|1I{>XMS>0nox>L_+&eyEBREyif9UkfH=^Z?iQN)k&5s}2 zX*VgKEZ54~e%$8N%&}EI5xD}HtY|HXQkU_Zs@{pb*M7@Dhc75*yCx zMOeydru5B-zEL(5lsNI6%~m09>x%GV$s#C62Hd7i3^6x)E2K5mpSQq7}%;1kI)ytrYTunLv>Lk<5Z1 z@VdN#2?GxgLS$3$r7r(P@I6ETEVesiv|UtfiYE$T2T_5|R-T-q9sw`73A`u2S$O!$ z*JNMXG}{T&$_0ghbLn%`#jQF{>}5OWEx9uhCHH5xJI$6xmXf~rP_(rL4?S^~>|I>T zc}dn*jkonDezB$#3bvmbINR}n?(cbloiwfffEc>%W5(89O;s|-mfy^0c8mw;QkbS+ zW#WnWkv>r&lsT6x%Fxl);W=VI(YLz>ztY`kuwHa(J#j_Zq)Y>5CG*T%(N>G`c$NXZO(=LwCNT0)mMSN)&rzR19 zc=k#)xKPX}!IuW^A?kiJq&Qhs#4CQW0R`xTGud2{I{3d9-YKCDgi-B1OKX+*wJ|~x zVVTk|#!77@hmPwMZc991WjmAsfweC-rRzS~KiOW&Z+;SE#g6d968 ztf>A4Xbs|U?XH=mv!aNusr6*0GrlT}J}bOJ+BM6{8j zX_?0}?kskhx2*Cw=AB$L)8Og%Lchun3t&5zd1cPRg;fntP_rqM@(Eub9;xGL*5^{j zt)7+HRSl#rX)u*+%Apw%=PE&1HfIsb-2^e#tfEOBJdPU4g!O3DULTKf|-f8Kr z?oHhn7>T0T?G8Fw2a*EgR@>)(x@&TWr0jRCrfOH%(<+T0D>wS@_gm8QAoJp8+s76D z9v255Wgd)bJ7XggRI+V5J{vmV>5H1`2s*$UAobVMM12mS`zvxyVbLu{`X1xL8l*f4 zip*>f(+jnVs4zTamcEl*!XkjpbKFeKCf6;|hE-|H{S_IGLE@$KGvh@tXgpB6A(flY9?2|mlF~TKidO{Z#n(LUnVYxCbIt73)W9njY&N@1=G8q7TKX(7sq?60 zW^jNaCiO#v>-qo*A|^5WM=<)9{%=KBaYo-Qr=J@t1D<3DzdeIantT|0?@y8bk%?1^ zNtgDlPPktv@uT{6aSFkD%c$F3QN~Zl+>wHZmAkE*1)RRiCkUOBnNlaePzyZ5Z@bk! z`?{`J$FBX)!yoqVWW|icOa`xy=vUKFh?B|=j=(u$5cVlcS1%_0YsDkU+xs#mOSrJ2yz6^_zY`4Q5eXu-OUj?gT&fNk>hd z6Er3o43qMI-yUru<<-nvt~%Q+n6%Fwv9qZO96MK3-}Sbwte;~ds)=SaM}UPIrzTSb zkV2PBBaP`#GK(-H?*_AC`qIRAl{^if?;Aeh5_hlcA?Hq{ph?AP4JY;6fy`rn{?0zO&U(de%jo`h&2}f# zpV@_UwhOPe+Z8=SO*7RY2jN(%iddmZ?o5pmUNBy>zC@dr=foHcw~!=XlsOV}YOwgt z^|HR2N|Ei24!*BZg7ops-C5UO&ulL3wh`OSzb*y9?Rp<_E!PKa>37Ax-L<*y*~J9& zM>b|g!l6d|vExBckD%__97zb5dGM}3pXr?-5PU`+>t~n=GRy=RPO)nhFu!0D)L}OU zo-NXOB6=K>{I0+%N8~c(uIdADY(H24-dyq+@EoMEbPQNo3rV2XXLp)$6um%l3^KVS zu&a!Sh%5o`A4?lfjYGVzQmJrl$e0tHv%$g-BVvJU4`08sfDDjv!YI6mZge?BjWImk zFye?A$227y5Mhxu|8p^^BN#*lBuB!ex8mvZ5Tp4@gYytisk0g#LM&DwWe8F*yr19$ z;X>*@Xugpex!k-GXa7B_%Z|Rh?Go>hNNva(0vnEcVB6w*Or`_;Hm4~kNmU6t!P1Yh&}I>F zBc9Q0Q%Uwf2`KsOUY((z+T;jt1DlkFV%m&-fon-SGe0|VZ05ni9p1W{9aZD9LzPAz10j%W%Mw(7Zx5J6#S|xd~n_rj{Ntv z7@>Ez_*Y4(+NMSDBKY80s7O-VMT!;hk;KV)8mWZ<4O2-S!`mezb7+(RgRLw=j9GP* zTc#qPCLB9F47vywtN6x*rbZ9Q0DXQb&_n|G&GVSR7`!1a4+QoGsD=TP#plbO;!&e4 zn@nKRLNO>K+u0fnGmJbFb?a>LQJ${9J~Yw-B3dH=2LPf}G=PjE!4>JD%dO@jOO=R_ zT%+BbONH>*TotbwWFcY_{nku@w!1-ot)z8#M2 zwF}HFNqn*JMWJWcyjye0oYU}#O{RFq$cUf`x+aJN++x^QwgQCq`oN7EseoVb3NX;T zXA|dE?525Owm3 zY3CxI$kmYq1#){}(QMp#I$?{_@yv&HOKA5(9JfpLoTbP)7d7ctbW(qvygPlHy>hN@ z-YJW`@6ce;BW;#Kkc6p<%)yTPXiH-84|b{-^xU?VT7U8@Yy3d-=(^%dWl7g| z(OtsRL)@>QGATep)9CdK*O3`qLFjeOF2tF@y;=^-@fu(1n z7TMh5NQSryTB@ zQ_#V&RyQchq;6nft9X+UWr0O^qguB`qlax8kndoeelIMBWCoBq^i*TLuZ4sXZ!)fh z@6mh637vro<2O+tB>CV)7$D!_0yDP?w^%kt=P_kfi5XgX&Gtjz+XFW?-ga2g;PY(P zI;X5T#bhOHv}eVy63MO>k(eegUf}n^fz+=KP292Y&rE{ZrZ%CdeKqbvx2y9SSfelY zMefns%B!^dZB%z$C(b(Z;;r9$m#kE_tCnWV`9@D}I6PZi+_8137xO8Oe%EvbzAS|l zx@-;R96?%RCc{W4&?MPq1+627|q??dnnKfHMtt*nmEb zl7(vSL83ov`A08U|2MDp0G9Q>X2HRY-$qUU%Mf7uFP`vkxZlopfgrStxfY!DXhIsP zMH-%42BMS$!^go4jd0DKRkehL0QqpS%bqAqFyfLB_D1wrA-NnKOQswIcMK7Q0ghwt zNhvbJ8k9s(pm8pYrIGMFDqk^Ku^UhVxq$czj)FNQRD+F9B2a}q(48-wRzxNjlfkk> z5<9?n#poh4ezJvzPtdiC9UkI>Z1b)9eUOp(p|ChEVZ~YIdN;96V5O2LVO~24q~?XZ ziFg)O6P;^yaRMtbJ;6Fdj~_920v+InqF1jE$Ba7%!3zZp`D~QqvunjJ?2_w)GMYRW zUg(ljt@UoS&0%&%_pLSu^y~h@2tkqjV%h_mki|s!QX9~Au)iAfNi0}!h|xx18WCAC zC`f*cx$h3G(;*iHZUenYpU20jG3aeY_4}!YvQitqp*iM~DP3Q2HbsibG^;BwntzY3 zEu-okk{ksBCz9ir>QR;pJ8Iuk&=J^ke2N@4yQy?Ltx&#waN}HOo@}v5p}_dkZNBXG zf(^Bbf4rj=b}F5mGtnWl?J0apN=8!Ow&}jTO+Wj-+wrDNy{E6c?qBb>>}0}@$@8-p zYO+H{-!cu$?MY!{=#B@QaC;wRuW;J4O7Fw>^(tyrHHm+e_KTMGJ-R=>Q;F%6B98iX zr8v06t?vxtSwv=(VjBn1eLiO;%#c^nPbC=;+vXrg4YRf+<;y}ngWw_T1sGvPffkVR zhSSiqcC|LG7p7PdXaZfNh}BahouCKvfpdaLpJrzzLyjYyx!#lvGJ`~l6Gwu&stMAX ztTWWbivqjN(n1&G)lJ)v)WY{A+TQZ?C zfv|O)1HZZ!041L*DkTdu72FBt?)L8a^@4LUvBLr)b28={IazodA7_WD(dx-*t6c0s!eZZ#`0dC zoOUW{cKLneFNpY(GQl`R!5(gIcvf-!*Bg&j-D|CcZnL8#yS`1F8Be$n-$vC`BQ}?K z5xbhRx5#!G%y|ekx1SIy+DF`gl3)F1U73t27tE~XV>u2GO-XC?;PB(+5q z0M5WRXX;uLEO=C|=?_HjQ-URtkAT0af`A4;`d>|RTvbzzRN*_YoYAs#whGjxsKwxUlUbk{d6Ljou0K9N=SqU&qG?QB5A-%5J~86# zE{11k9h;Bas-tkq5ohBaK;%aa^SyZ9&!7yplHzfavs;7pNhUdlU@?wwOCRD%+O`!? zL!*mqEP?q4Ns$Rk^?Y)>Cu@t6wvu_pFNzx&MhD?q9~p8$4)I`#e&@$&-J5 z#yOyBwchLQ@AotX^Q%Byn)W!GAiVYqi0}o3r~l?Kb3iMb8_$MbK}_)fV)Qw&Ta5k@#77!p#GZG>CHwB;@DT#r22GY0<@x$#?-d+6 z+7ZK!2NjF>%L&b;F~Hj7lE{EZn=y!CAsGZ{3iy%LT6xD4sjWQ-7a=HNqVuS;u~WBY zvThwp@%Pj{W>XVANIU~x4Q_%iG1qmXm16|X zu?BaqiQzOm^zbAl{KZ0-aXhzMb!FAjy50MCM@(+pNt|m+^)20A_!H@a%m{(M+f>2sX;#qU z;e*IQd&hPCfD8P%3n@Q;1u>!;5GUt{u;v~=lmBI3z8ZZzk35duOLJJzBnidej;Ni z8Tf=TEOHJUS$s!evjoVV5DL=)pI84r`k(Q|6JZ>?1jerY597!Q$oG%J=k@<#9QlXH zI0EJL*KZ>y{rmf9%-`dE@Ocv%T73QQaV+d3-$x+HZv8cg9Qk{TgBC{i;Qn^O=k33b z{&yVr_qa2BX8#Z4_`k=c;4|lc7$^Kajtu4g590_#7xMdZ@R|4jj1QrxaBLC!ijais z$I} zSJ-0xb3W`NG|}>({ZFvn`p^Eq&u<824#)nvUH~2eWdm5RzpvM}xCd{rkHFNm|7Rb8 z{(AJ!{(r7#0muHjUOzq!uef-|NBBNM-w2H@zF;4j&&Pl7BG>;2+fV-4|IhWdz_Guc zAAyjBOa}5W;Q1jG(7Ct^Z+}0}uK(;Kn@|7QhdL82<7IXdsQ8(+W0m^xS|_$tCwX2T zbJmHjzsEuU>3ooZsU2&vo$fzcL;0F9O!eJM{wC|xo4-%0p7}`A@$>Oa zuL)}8*|iwRo;dP3zc4)L!Si?QB3bKOmsW4;`nV~;BYvB2+owRU$G2p+_c|RFH2Xd_Nk%dwX?M@rN85|>h{wUVbQSBwT{Z;zv zzHcuQhV;U$s=vHXl0fUClyNi~mR{+K5)#T5ZmB^Lwg)R_>{#DsT>Fe7XMN$tK1Z5N z|Is(Ej&!CoM!LR?xF!bIw631R2TZ*-Sn>38XNc^m%W~##)#rH1yhpY~Ii5^oO?93e zozE#OJHF)M8;QwfdD&67kMCy6&7tH&Le=!AYot^i{M%35QR{v%UH0ADiFfDy!;-1E z#;b-)<-32PN$7gt9!6nh^G$^VH%zrw?MI_>t?m`8hyVG9WX;J18QrPz;4Q^TVOPS} z*chr`)l*QbQ?6CsVtwa&sDgXoxuvR%)Ark}B`VeX4=y<{i_s4B^8Cj3u<1)Vy_-+G zB%@HiLnO0x=N?i=L__7$d7tr=5lY=%r#c*7L4|havizfRxs@6(>H{O+@C=81{? zv$Y{}y$2JHjs#To`-t_?V!K~9#q2zJJoo+U`eNszTjysg6ze^*Xb#J#YE?BNs089*|tZ zU8|B`e^C9MN(RY?#r{2}d&J{dUD1(!A5~2HZ0htTCv!+cchVfzzt_H3Gn6jtd&B(n zdG9jpvCLS#mqWt&;+1bUmLJXCbm!X1YV|C3U_jZ<2XbeA?9RIPnJZlXhZ$i#e&Snn z%D~Fn{h7|ovm!dz?HKf}G#|C_Ub|i>?Ax)m!>rGfE))0GIqEju*?#qjUWe=obzS@O z7Sx%_O&T>Q8&hNF!}t8$d>@ha*2~g304##ps;Y@LsPvHOeVy`1!&=);+qO}td-D?F zw8IBW{@i?MfZmAi1}6_nfrf9$63VxTlI%yRqR9)#yUSi35L#bK8R75QVG(9%;fgk1 zPG-F;eMHf(nI9Pmb`CX~nnobUTK_%>_pZW-lsdLk^bZ!;w=r zOQZ-FHjceKP;kJ&_T`k#gH$n<7k{ojB2qDHzj5x7tlrtPEG9Ci)^b~@7fELom!Ni^ zWN0MnWo)ZbtZ#G`Kji+5yOwKvWF6~t>+mks+Z4U~`Pn()#&f@UYWDUmJFTTYI2Oj& zRXmp5?beeyeXpVXkfgNXq0+&!x+`T@5)$;TS;(Bh^iPbx`thp7A$Ps3SX{^H`wzT` zy7{}VO`%oA?u+>4rhhXI5cXd^{qwwRf=r}u^dq(xP33gEnoq22iunOm9bw0VLSkM) z#KPk33nrWg=ZuWUy@$TIkUonAW13VZ1us@uwyh<;6Eno}~0H zB&%FW+iON3$gQnrvhIdiFAs_1L_U6xxA;jvy5;v;|Ma$3vX!X3`8Qv++|1IxulTaf za(CJrb5UIQ>H8PW&5sU+A3rBEv}quoLfM%TpHmUomGUt|EiWlyUoP16^ zW;)#P41N2$K|^oAq0ocw*xcIJzAxucMQ*3a=0RzLU81g%g)hlQ3Lo)V(U!NS6?>dJ>eP1lo@ZHMER*9# zZVJcJl_Ras_4%r%%mqKcSN87i_OXXS-5LAqlECYGAG7qy zng{CF2L2o`JH0LPCi>8rnXu~Sy%nQZx`QHReLh|J*wAJ7=)1fZ)%U=m3d0@(p1hon z5+`1rZOQrJvp3*kt!ZN2Q2TnXB_f|#&HPvrO6p87GgMAaJ0rUZdnhYw6Z=8K@5`r1 z2gG&G?39rft(-W#&FTgy1=7jcNdRB?SV@*(9M^p@RMcPEw!ZChW`wlm!})d3XRdAO z-d+5=_gS>vAsln%UYy*>Ht+o8Praqd1`mr&Mf(fxp5MEr-)>4cNv&P)ozPhC_*n;G z^*w9H0uI+c7wS*ialV+nZO8dn_e>7!=v#$k2ai6a*A~v=CGVum=9*@^5qakrU+?ew z)O@T6hiB)XY7uhAt+Fu~949C4>|DuVikGN;d<%VVE$$l@F#6*z*dH(`{xvaSec@bw z#uaIGCM`|WJvr=dpL)Kms^H~_^w(go)l_v=sz@nG z6-yOCtpt&@gKYUmLC9@&+K&9p<;$zvmD^OeToEp&W@TtN$^@2{GA{b2U@nG#l^)hU zr&~S~EF-s?w#!+4{>svq2Z>@jeIcttL%b&hg|AQy^U?>!qxc!G3=7nyx^Q?%j z*9(e5xsLq0+Vpjel1)#aJ)7ApPHb}WOcg0j`gC(`dyorW@?Na|iLEv91Jdm|&z3Q~ zgcCnuM_s-=GJbOGnd3Wi+QiJSK8W6}Id^bAy8P>>Wtm(5FkYc2qEfA=z~8BJuKb+d zxvwIBbeAT4Rk`TZ*4U+QmlNTx`LoBkW9*Ryw#ni*bugjbK$o5tr@PTrUVkUE+Jt#} zx1)yRO3mtO232RXNKD=YM}yO+cKJ+&YXHtbfy|xve6O;s6g`k9#nCrj|9*>Vn|O_t zl>d33P0w-OZ$DFIqj}ZT5g*i#O*bj1P0k1Dm;#g#2PJF>5?)nLY6~?v!#qtk8c(f} zU7>k3#OdiW+%ai7C0C^^WZ-iDJ&vJUKwhR^PnvN_2FY8{~=%tOqD4+5S z%CQAqwg-AU->=Y4{#(Ol2Xf+Q(27YTN>0l~W`tg&z}7q8*65sU)AJTPt4rHe$Cz&0 z^n54PiYDgPdB6R&OZ4L8o{pc!$Nd`AC~m^4?Ps2ZG#$L;-{`-37Rn}TaQ8sjw-0C|^KE*1tR98%YE3_{^y;SnGiS{!`N}U>=ea|NT zkF8YP2Kjw`lYW|4#m8*M4yi85|1)&^OJQi)S6uP>K;uE@KMKuF)edfZHdgMP6gx2O zeI?H8c^aoXE9KsUr&-I#((Ntw2VFD1<9*`5$MCPF^fG>K)w`=PM33zq3veqD{^2fzDtuIy zc#rDh=yPdpwQ}yg-KTHuOsAB{X>TUDqecAEWK>bwC?R^bDqd;Fh~;y~DD=ITn%8%{ zxw2zOdbf+p3O(C(J12sq-GlG2WAl&NnxOGaYktP1-pH+uKZ_GFa<=_}N= z4Q5e<>o*SNyOT!`spvd-HQkqZVpJ&ovfR)S^)}HvH_9g%FJzj;zv(ANdbgIWd~51= z{tN-v=kKw8NN3*@%DVC|iED}|w~c6zAI9#DC@rzG|D)GQ`$2Ztx3h77_C1ISYWy5v zbv0o|+;QdC3vQRTh)`e36r_4T>1Vn_hJ-pM ziFfoli}eib`eS30m1xsCY4@GwB&R37Kd1I*x0@*48kr+HC|*upeS66&-0C+&IT8i? z_l}wwe%Tcr`*f;ge*k~QOVZb{dg-6i+EOo8U+Ek*-mTrEu%K||j{MTHvL4@ARs9!p z>nb*fmWxlkTle$sz_;z|XTk$pMBkw(I93|vVRrRRx@L3JvI!FPtnZ6j;V=aKQjb)r zB>UJ`*A=zqd&9Hds%OvMsg13Y;7Q53Iw!BPIU@Nn4n=<;a&6b;ZeFxr5~>b!_ehkP zL`yBM=*8$;+oHywr|JVgxC;%B#A=-_2_+1CAI(6mjCM+U#%vf4X&T}2P9!vr=VW~6 z8AR20b6QS)+IFcd<&m`YXP5Qtly8#tZ#SJbIF1uvyhpv^h)_DKFRIJ$G119*{LQKlg_=y9NJuc=N_TXBiLhS4S$9r9?$pM(=0I? z@N9=F@#|YBN4uaBic3e5SDHr&PFA`UY^8-{V3A3|ct-&gAdTQKRkXbx!vZbt^x!m` za<-#suE}oZNYkC5E@MGwPvdX7Fgug9U64TGEuWWzL@E?zNz}C%odjAC67!0zZ|~ab z>k5U>q1N0BL}64dlI^#N)aD(xTyug6)$|PcUZjwg0uJc$ggY6Jjr$Sue)E4TwJA$ zQ@NEL9qy{};~Qc8z=1=%I^6D@94uRJcbOvW{KvNS$ID}PPYxeW)!L@ww5e|iMWK>8 z{ch)WsSe)E@r5vA(PS`LhrAFM7lQ8fS!pwzJHF{{q;Y&5RYi?YW)z214d+bY$1{rT znuTRLGIw3|JL})Hd5Z7#z(h<`r`>b<%m6w1wQXj&TMmC^uE)JbtJJ4ue==K?V>#)0 z<6E|RE@(n#LZRJWm%MU~tiikEDCPF0F;@mZj>_3t*1sIjBrRzjuV3}Zjr)lr@3-fh z)eox^%6m7Z{W{M0^B_|#WcU;@W?}ETz^_myfh(~upjlugAXu>wGNQl;#&rBtV!MRc zm=yecc%dUuiow<|rcwG^|IXJ`=PVw83= z`Q!D+VG4&)x+}$^?P8UqugI<4E^Z=p(FO0lN?Ji#WkdJHK)Tz&lwM!n9|=Yh1XGAZ zb*Ya`{~o1R*OFO+zN})0Q?~PSE`j4C&nKf^POzOqWp7d`^=ou;mD4A-qP*6*JC_~8 zT&((Z%@+Oa%zj^=v~{*wa#pV*-lV+!CiJ@Xv?+L_H|rHbNtuC{pys@B!-4<0r(qks zh_L2c|BYSIWz|H~enJ4klpZ#xh*bn+hZcwyVtkSGHR!aZBe|t|1VR^|6V@$OMb$#E zK|n|^k_|P<=90f9E4xxzicv$VvQijGtd>rYO)>N+8k_~;s;f*+R$Yn`kEM)Ia zl`8C#i8r=XNL9Ry&y;E5dIJC;iobBwEII+g>>_4R=ZAW}N@&>v1cgtdv%?fce03G+ z{wO9~grk7NniAvH$WzU!(ynD*!?&SBmeb(jz~l#OLwj}#TL77TPKKXfmaIrea&B%| zqxfoki03cV!c%Al3J$V@_VLzvEG?uz)qJHGmMBv~&Jr<$tZ)3>Fa+&|vlU9M98Cy* zycpC7wey(1ku9d3*-u*1agUf_8kZEAEh}}29%U<6dR+OmPFO^$=~>tIph|aqMz*j> z@Jo%f&}WQ%+%{uc0#Qp&*x=FTJqK3ZPdl2B)v2}7;j8WW?i~X^8VolyWyPtrU&Co` z_qXtzbI3mKI%av5=l7*wIci&x#N9JxhuiNvAAWXw?>2{t3(r=KU3g)8_K)$iAB;jh zR#P^=58&+*ut*Vja2WBc*&_VMLfbR+XG2u8~oUPRPsv6=9nSX3AR3epufK>D33G=``5VcK#&(&d4eMuB}Cv>XQt z`JlrGF73_Lm8A#p72^YRf7(b=4fRn>e^H>P74WUwOnPZFq;+Z>4K~6`E1?vGgpYFh z53>fL6z>+Wh@`*hNh(2zV^q<~(qckI-@+9{YW&sU{tS01cPt8<7}!w>t&by%3=C!~ zvfqA>eNKU;P_LJ{mB}ToNNw;ewo10lbxre9lc$;6*d$q)@ z&S`hAHs0U&XTRRuKmzeex`>4RY1`%@etN}f3Dj_ny=xjX5}T;_Ex`Xp`kR;OqEDOT z(~^9-&_9r+E3B19&v_7g_J;S9!cv8^D-WNUc4dCdFcn3j+SM$j$N3h;)b|WjM{WKR zucTXE_~XTqp$_p^l;=Je%Nvw4sOGUQWDB>>IL^ik$+XBcvoq(E9;@xn>!o3h@bPpbgXyA`j%BysRf-%J zer9-6U0^SxSs)O0tT8#}waj+xaSFfW1=@6G)lZIt@gFroaqH^3zFZGCuI=*J+bgv< zxW&Q9VSFIf@t9+UY4=p-iX*46J__iqM_rg_1V)(;3?yspXG^BY5q+oQuCim9_VbSK zEnr- zPSx)Cq94!p4@G1KX3|#YpYjoj$?P>OT+ksbW12Q;>&PFD8Mb86U&nm1>vP68OH&Fn zqKeORzIW+udYB)2)(ays_Wu4$1@slSEmD4uj{3iKKkCcH3(f@1p7KsGdQb>VGYXma^-n>TV&@bomA zBTMRF0WjJeNCR=;A@9l1)EbLO4Zaa}siFdUJTqcWF%>w5KhPRU7O2WZl^&c?f_~@; zlY=xL#plv46NJaT&3Ql}=c%|7NzguYg@Hss+su{*ZbVwckc@^>1>n+L(sCfzbYxzxj7x-U8_#dv(3Z$)m#&3Jen0xXyy3`#SX}jCpzlgdcu{9 z^D4rN^^4Ofn5Liv_HZ6u4SjOWO*`@0dwu6?&yp1S3r2>$ zI(Rk>qi1eSH%g!CYOo#JB-5Vo^ZGk`PVRRYVCVcFFNhnW@4I3C(Ln6l zDzxS#v9O4zS=a_ecr+$Rnu3K6nWY$Qnj_X=oxKv7j@L+@vl!?m_}{)(P`4_|%0SKq zgscT!B;Qil@gb5At%y0pQ4lkVA6LV01QV8VUPX9F%~2x8A{kGh3`_!zJ%O41h{&Fp zK4P*Obe31#j1Y-zYTHGf8TzpigzKcX6|*=1LZr!Vk8z+&<@{723QT1*o92KlF@79k zcYI*QoGm2Eag_Y+NoQg)on3Temp(1$rFmb}2r@&r8_MirD!MXT1Y0#@zTEA^M(w7i zl>H%W!2l!zcdsTmf5BwBkH2(QW5tG^*Aw@L|6)xf`&a~A@=(E_wt{s-lUkA z*7xo^#S4$m{VIVE!z(H{6$WTc&_8?qA%S_uT+;AijriBSV|J-|IWNCGI~)^rKTrl^ zFz+Dv*+9Cp)wN{&ml@}a=^U@}Vf5wa%`wUqthESHWBqi(EB1&T! zd$v+;Dw47@wrmMyX=Mm8cBPPIY!xb0V@nKDwisK+I`1`g-_P^>-}m`{-t+lzo$FlZ zoH^@te%EjL{^tHVQ(tP)e{EHN5UwFJA0^Ybuf|dG{p2tyZAh|LE@>;(5e z=a&1+ijcP!rjCESeWAa@;?(OqRgJk)2%UNIfzMm-W1?ZH1~aa3fr6)cNXF*zSKKt&V@CJi-h@0Kn}r%NwkCUZA-xtp4zQDXkCwWg zZmbBH$J%Xvzs*WG6d5nqBFq?LGlo#r3XS;=DFPN)Vq#9f9UTPBMNF!&6L`sIrl6vg zH}0$kT=^1yV|881gBb_><^LDfWB>24o<;kdjnqZo96EyCq^)X3dP+P>7S>aPo=R10 zj*Z0KUDtM=ylUoy3M*VE64*Suh#S!YPHa|8ox~^`lpC)o7Kvu622PYn2%%_A0-!<6+XO;n<2Dk<3kzY<1&~DXOF zdkvKuT{t>S49>)NDEL}O+zR%PMb3N-npH#Mg}MlDzils{c;Ij?@UgLENvf~efwmCT z;?)52tR;HzOp$%Q9LNI=0}w!}?D;-b@{=rH23|I%m7XtPl$VORBu z?xJibxu&;ViD6uJ+mE%?Cb*NnJn%0xy(-}VgH&clEJV5bAlGfv&{(DLu(Q;g=-3@h zrtZNSkxKCfBLiaW_Z@U}HH=|;tY^DwWAeCk_M8UeSCDieeG7bdD-WW^bHPi83}cQU z?gE60wc{Vh)gB-`zG+I?4-KBRx)H-&1|AR2nRp~W&Q-{w$&jnKjrgX|Hxv*o z=@rN8gjwq0u=vQFuDg7Y0^hjDz?(G=ceGjX!Z|c5B5`y;{nfr3r71hB55Esh{PpSd zhrCv`9Pb}qmv6^9)z?3&e(>>b!%$4=qi4!t!sv{KOh0>;dyAEfrEBf2lh*ANxrNmW zY#Ni8S#8GQb^Pkt;;!|C;(f=HSyCiMhZC9!fC;5k5~R&&PT8s(_SC;Oxtd*6@-1W3 zZEAKoe*eKyIo%YF;MnQhl}jN4moL!#Z}qqui^Q)dcD-3ISi2P$ccJzQ`Yxd$8E(e2 zMt?YZMSkabX-)BQw{*EF<-)PaY>MMXIoUiSewrfNG;c8@S=0e~PqpXS8VlAB@1;D+ zzp~=JC<0Uu34&FPZ%6m(Mxx_b?_S1AT*ay!uRsqCrk&t>`h&APJOMwon~Rk1K12A} zL@Fv1*fXoQ|Hx~|VBBiM`CIc2wY6Huj&=+u1#o!#9`*;_!;cI9-v}KC{eR>M+~nsy zraQ=J!lnDj{Bc`dOtFqly_G6I=#D=0?(N0er6JBN;U*TNge)YFirKyL)TB0DLZ*?9QKYToLHeZ9bh&Hd$<|BR_wfF`PGpVoMJmlO_i#ey+P!8r zc?wAZ$&%J!B|$7%16oG8ZE=o^y)D<}PYM|it{307Sn?=$ncuVrNRt^Z92`5$n=HqR z53X_EvNW>WmmltCsN|O<@y=E2ZN(n?CZrGq;m?<-_F0}r9E_Pgf^00_JThRZ*%$1< zD=*kd7Ci4j)n5x-h-=N4WU$K};$4b2^^DW}HTdw@S*7~xlu$~yUN&Z*SI3xsFCUHV3P3N?OWHfSIhACo%kg}Kb-ZTb2AZFeaSl^*l39U=LI&ulw$ z)qTYnz#)O8D0^dguio6-`LSE_Un2$o= zPnOb795)iRLyx{H!`@AL>QNN+4rSH$SWLG0W5)icGfA*OtG^Z)&o+1x0Y`#WIDPzQ zsu>D7F<65Pepxf(IhL|$D`75fM8SbCvAq_)M{9Avd}`ia*5eY{o5JUX1Dx!oNYBXn z604F8SC)GXe@OFI2snD~MhWvIzs-MGWGd`hR&s)WGkkDo6uN42IPTNNCl1Y?w_Mw& z`y61RH{V=d5?tEvQc*Z_eb$PLXTaG0-dp)G!#Ojm&m`$SRhG_miq(KBi4D+TCH&l* z1vQxn)oZq;5U%ohuy*FA`Vb<;SVPM>LZ$+gy`&rp@0wi;9$8%^PP;zjvJyOYtk^XV z9`_bveorL*d{@O?hrO#k*WO*o>oZBJ)U_*l+gCODAj&T&B2p0Adczp#2_xt34_9U@ z(VlI{(Pp)z9%!2LJA0Rx*(GhxP;C3Rz00z{vt<0RoPW_-VErRQT?~@IbI91^;JV7r zdZ<-7jT@y|!Vmi%8{m9kMMNwO;!J>AijMwAs|}oavyX#Z1wjWP#v;5V z%V#vMSHVSylm?;61_Xjm9l8x5HatZ6(&5J!gxGxyG1yB3+M`-k;TM#cKCm(SeSic7 z~Cjxrh<`I4g^L4lpql0*}@=HEMKFJ0$)x*=C67-H)jee z{m4+$8zAOf0r8hWj$0#&fyf9TH~n(?Gh_qHAp?3ChzA(2Vcpo|BH$o=*La1W#lG62 zc`QJ}*6B&EbTXTZ2#WxO76Cb$N#@GoG9h4$$Ss;|*l==A{xH!GC2QXG3CacoN{78@ z4{^N(!X-Anvydqr1aF}}Y?KwQIL9iWh|`)A6@eOouLp=LXOcRhGRz;fkS2p@E{1xc zqYf!2D6YJd{NtA?sq~iS?^8!DgEQ-AGA+9ybm+M8IxejYRj-XJGP_tlAMus=`ih0y z;z1OPNC+Q)@6rQgEb+2F$4R3WoCM&S94(AmMWd1-A2Y1@bRZC7oFyYYd`%#jQ5$00*A#{;Q$)b0JuR#Kn;t&68{!61R(%5-%Mpp&@?q!xuwMfTc>AlL`sf%oV@8UoWi(*VhM({lF25T78&U< zxSf`^g- zLWZlcOvbvrD|`_~5yDG%HX`srIsObfM*&!~2Iv*Qnm~L2Zu2O{!`N}`9VaxrTF-a` zIR99XzOPEFm4q&i1^U+Yr*EzbXcvZ$O#$VA_e|5&Z4giZ&hkBY5B7?ocJ8525YOC- zci@!(7Zt4=?Sf(`0r>C4utGqfx?ZH*$!W$NexYGw8EH+Biays#M51)iBZ#lc!EzY^;O)qL| zUMCL9C?!&Lbj=eQok~OyN7cU&UK4(%nua+|9{TzD#q+DzSq@rjvYhK37gtyBE9$EX zJCb7-;STF@D;ujQ2vWZiPHulD7bbYC>)R@htFN0S8K1npE$T@ymrt+%(dcU5pwQI$ zKB`CM5pSAvsMsxm`P*CN5b_+#mdh%?x>ZMt<(;>cy?yk#Cn+x5hY??n@L$|9bn#le zIyn}0Bl2Nu?}W($q1dPkyp>yzBM(4RGUXzVc?P~IZWfyP(nRn@dHN_hSe1zAa!a11 zBjkLqLIe_wZ%cko1FEA_A&xo-U_V0r0;~Xhrcf~(hWV2J`7E%Lb;gYd^eqW27&9B> z&;X2q6)qa@-bpwjj!Fl{830UZWyE_Xrf=imLXeBZKkyegue22=$^)c%`W-=6S1A)h zVn6ab5{``xd})9sAOa2pGtzvJBNCg-BTs0+yT#O3NYAb94M>yrpPPeTGD^|#}4zQpKNyruy~V=$7>Nh8>HucTtlhb zh=KBk>98ybj{9eS5`kb-} z9Q&I2^yW@+pSInRcdR#9jM{r#08ya1a8bJ!o=oihw+}KoDJ_`;o+Z)d4Ev4%L=C257b6%`c2y!%XhsYc|Itt zD^3bM5q^WBik)hr7AYpoyjPP4Z!F#79FC92!;_OL%pVW}H}QxkxgLFyp!z}SZL;Tm z+i%BHjc;jfob+hvc1h?-OzQZx{HaAeIm>6k$Wz1MbhY8@7mU?PVV;jlMK1#rJPpHp z&fBfcZPAzc<*vovud> zHzNpmqVm|8mm_Oh3qd@!(^?1<KNa+CG(yUN-O>DZkd>*8#@te-XF z-dmSo{LkiEZ0mH)p(%LUoP#WaL{heniI+1GsXG zBDh${Yi~$Rb5T@WaDHcbS6j}(V7fHRUb?_^x^i+B%c0g$_h9yqKEHls|hqi3=z8GPekho(HhE85;0@u4z zVFC~*o~lj$jn|*ezpD(cuOv+RlgCp9C)Wg^mESh<<)o`*yRTKs*CT@@4Ye8gMJq){ z;+q6t`HW~*_zvu+ zz>Oy}v6VLAS-JZMRrl1C^Yi2c#hh!N@Am$2wByRY0Gs|Cqldf~7Q(gW83&@hPfo?Z z5C64kb=JIeykV=iIAm?{RL7QA;B0*LD0oo+b6Q|(g&m{*HHr%-t-YD)if!*b8L(}; z{OMvn1*|~MszsAlZ`5}<_p!&C?ASs*d;17lMf`V9j? z2Aa8@ZEF+^#Jeog?mz*S0Zxd5=g?`Ue8js4wmE@c$|3+RY(xRmGyv8zT@5<9Q-TU5 z%(uHEHciP(g*y44>jSj$i;6o`SSO?nB}zcv z``%zhVYn<_m&<>KJ0UjrR0fPEUB)6WjO%5ZKfdt(Cw;O8mB&VWFZjv#TgRf9zgnc%+=Ixj_Nlig78}M5K=F_PL;Tv%dj{G0yJe3=0LdyaoUb`px zgNn=p4o|MsK3^_5wvcSkTX#9Bdm%9z(VUQaWTwI6QjtYdo+zp-;${*0>1Z(?q^7DD z_TcXh>`~_+rIyrT%ai0tgr3B)&1?J-MZ3QJ8dlz{s zhnr1$Cj*#yf5+O3A7gVf&X7tbGd|1ao}qwvalSm#m=DHUx_Q-#sG?Fu1Nx*D5g;hT zCr2r6&Op|r(DmWk6c!`$M)~_HJ3S6S%yNl&LcBD01VF-&kpObR!h+d+vH)b9i!_3h zHq6tYI-E__DPF*4o94a`cSkA^x5Ym($2aY#pb(I(YS?HwI~(d<7TUP+&cyrK2p;7B zk?^lCvN=9!UNfRpBvz4+W4*s+g{Uv&c4mn&i)-4bVifiAqt+d1BEL{N-TK?GNQ)h- zv$KMYv_g%9e6UA4b6)4!G5@4y&(y8WW)=@dM^2}p^u9}-MrT%D0@x(O~O9=y%`esRE{YZ2Ckv`}N0Xef*v8;q(C7YX4` zkzi6BvB%WWMy*tC#jT|r1rm%JL+j9eLvdVc$_$^F)JB-=KD@+yVqpLW1lw_Dn>pOB ziyW~LZY!K3J(DkKONniW(s}ro)rd=wG01v^n^nyH$@3n^R3WcK79ylQ30ri2F}!TV zt!1Lw=B~|&F23XdC60?V)hvf|dDGGpgL^+O5wu=TFi>Auta+Xix;++Bzj`;hs&JY{ zXZ)nD&1h?i%Kf-n+3&!DyYJgslRW(SUPtuM2$nAp0=M zeAxYNr;g5~3SXJ&JJA5sEk#SJ>u&1aU+tbnK@k+ucOW}Sy?N`iPLPNz$o|P^9=WV+ z#r5!|VsonE9R@>D(TZra`AM+gP_egdnc0A(nLpn&TguV`c5>_2kY>8`lA#W1Up7U= z|H#U!CI5%cE+2xgJxln`2Q=hJs6j=vj)IjWqo1$hnKwc#-X{#L3-lVyPW=@y-oeJe zt=dYt#8=XM05}H$00fi6zt1LibUX%2CK7i82=U^)JfZ_m&@rg_#>9|r*X6;WU>9qI zslzECkpmEFHP|2#hpA~$>TjQDP8#=~Rii4l~8Z++Tc9xI42!QjlikdoX zI&@9cCJ}(DA_CJRZ>!;meAP@q+3 zJmTM{SI%gkH@A|va-K~GJaC+#HEE$dAhB|}5hFyxBR$(HZbI`XCurKviw9wC)%^St zTun1GRjd9Jy;Fb-^lD5hjO(q0JmPBB&LahkGf%@f4e049#R}&85~Pc*O6usZ-Wghs z+oT^o%YO<+>NZr90?+eM_%0T;t!pvQruwyXI?^TV2E)j zcJGtH4Xu|(RkwRyN3lj9*@xnSMF`$Mo?gr^A4NGudeK4u`lwT5e)34E^USMohvKVn zw-XJ!@7@MI!+J*&D)Hk}c7R=baq5>cF0#4V=5$sivrn6Pcyteh_L4v(nhE%gVL8!J zkub@nimROe-8g=>^&c_F_9_i)T_TYQhs0_+N<)0W-OM#U3Z8+Z($TyMLNHlmB%@xK zUySd~9eD&fS_jfQl>(f2wd0+(@uu_aSi198p*m5YMl-hYuIDBKU!B`&&C{SCfPqW9 z#I%!YOGn;xnTZs+{*E!ml_o+w!l5kRK2iQ9bfd&H&7`i#nlXYwS!F^OX+NMl`PWUt0{jHm zsu0JJh=08O3FM-hk}SL;p7I*ean4}*yN6H^{(Ut^orQ(adOTpcx=|Y&!p1Vd7Ub5kDV#svoZF)%YB-6hRGVR|S zeH{qjhrxk4Nz3*2h%)Wxz%aivpbzP#$>Vx%)%>itorLL;)owfb@i+06PRO0g+$_64Kh|nkEJ& zIk9WjSrNauMye%6P>H(|2>U@Qf={zM#n#%2Vn1=t5qQ1HBX}(j?i+WQXScz`Ls1jSpUa2C-Y3dthQKQ~ zZ&a$~oL`w;3vC5Q2- zk1*|I|2h5kvT^#C*PgBRjvewVCU^`rITKB|3?6%vsg2;7&kVp9-5eS9ev^IqX`#-2 z%u1~u5u|2YNRJdFNB(h=ViVsDZL!6A7F)6D!e)$~v|l?f=6O#fXvZye+D9cEpJ3!0 zP-{`+Y+%T-utPEw563$*THgg&X(}?J^PLp=7-NgRwF@Lg#Y&5EdSkLc_$Wg$eao+q zYvgo5f(~DcP=oICKcGwGjt=QbDPP3%8u4I}moslRr!~3yV<)K|AtLYZ7Vxn0_KfrT zov#r&?t@{8%2!MDIu)=ZuxD_jow^Hn_Ev~+lvnpsl!XUaQ$lSLsmd28;~n|G8eLj5 zYWk6TbN5-ZOQGW%;KL>3(#eFE&+8 z-WdgWL*79Drd-80JJy=(As1(e8QS=rcHGG;yRCFYqa_Xu4gg0GU@MsW5bqhCZ$gn@ zDuspP1xUZl_XeoHFf#qhn;WRH8*XNK_~#du7nP;?tgb!$VHUW7`a=CZoLHRZFeE@8 z`H;ad#J17`7PeP;Td~XGjC#@A2%Ei~JmdaYw*)(bef^2=y7lkHN|^Jc3y$3zaFhT! zZXoR#kWDjm?6Wzf{~D!;u~WQp^Fr~$v75)_r6mc-~e{8W6;MhSuU zXdVtx6;Tj~ea|WzDq38+Bu6`Mm7-(tDe6Lo8~>e01Ggwi%TeVyvY`#9r|Y`YaA+A%+fd@N%wL@++-P^2 zVQjxOBhKVD(^oU_d z*2O#4xl`^xVQxxOuR5voEJ?;&AZyq8bDhnoupImfE)TVB6QxXCJX5S(dO7B8Zc_x6 z2}+#O&sF;4qzTx#C_0dFf8f=1XnIkLGA5!z$MD;>86+V&?``w)91n9*owZLrWlP4A zUud%O*3UyPv(#Ut;B5rfO9zwAYYt3XM9e**;(8A8Cu=^skz+gO*XN-;bWC0WPd@Kv zy8-(a{wqbylF<|;z-~xw#TNYZuIF&xwkVQnTHR<$)|%A5FzlM~zHlQS^Q4rzG%7E4 zGG=olcat$C0i8~OKD4Brv!NKTjYPF9jU8yQNM>6R=3$8rCTq++DM?ZyQXWMf4@y_j zeo6=kD04O$DZ;&T@sFMIekFPO$WxrE<8GPDuO5)|WPcUkfwA1GHAGBeP%TiOy9{{@ zih{CArl5>wCfrBY-gJhpnvnaOsOMfOYj=l*9VzepzPWRnVSewY?bMBudWkDr{O2gn zRylS)N-}Ag-`0H_BicC#8>GUPbB;FTw<(xBqRc=39hV$W;Mvn#6A-0Ili%~4k z)zl06`+Jll)zB7S*iS|@$1;XIP7;7v!MyZ(5Cp*`4ZPIAz{u36p@AXv&Eg7(v?8Pd z>{NIacO#fBAb6yd$25XkOs45AWf^Kmq}qR+rk8!?Ze>DzM?goVZ5Y zh@h)7W&THE=}C=Zatw-GvXv&`i5se`EpkzDs3brqhjS@8wlU#bjYl`7h%iLz6&6NM zWy&R)&nad#JX#UU^w?~`1R3Xm1d3^USlIM>T-2G;)?sipdX5`SfG2}xPdI6&yf{6P zuGRSBRrO(R)P&o7+?U-6L;tRk*CP#T~eV;G!@tuA_z** z_J1S1paOr|;doG%fWJS}zpoi{JLWl^1ZC;ptzgODb5tl34aRJj0cF{LX&3&xT@{q& z|4;iE#1Jg|jcDRl0;9O6EnfJ^Za{|Y|0g4a5E5GYd7$~~`ssHPE#vmua zvOmZtEL$Om2XhVRX|O*g{fT*BeovszJn!DWt6=}o(_sGNKlT6EpAlI0XMa6xJ)E}8 zHK1N#eI~N&6SKyg{;o4IWWOg+_X0DNzpG%Azvspv#$fLE{y1IOT>g#Vf?fj4`~F!U zY|ngF`~O{sdCNfWqM47M9Q7x1ajQ(!J%wogMH+-U z2wDbQ6)(3>Fg1xRW`opz{n(_pWBu+zwyx?4Cyt<@oi7H`RCoJD+OK2R%Z;<^g5^+` z{11)!9)lg=X5+du(kvwVASB|Ebmen9t>tTa5{a*JPteFWcDI#scgxRwRZ-YXz2#y^ zV(b4)CBi?hZB|XXnj(*z&y$l=Ik|uPv2MQI9qB*s0TtW^Ny*8uWufDk?E`v8LW#v>p@5n;E_1JXw>Vb$}S~k@W~U$U9j}d z;M>SzU6hmA;@dM96Ciz^c+O(owsURQKZm@~&3(vDuvE@Q-%D`PIR4>~nbyaQA#dEN zq$lHc9}kBf3tUJumG<&=R{c~^^F-jgwVzURu*_Llp7J?#+4-ECi;CCZ982Gu_4e@> z8`T3!=(2Cef{P>`xEmq|TrsK3ywi&}!sRbiMcxrPVT8n)iF!33G3%H)kVn3Q4#8Jh z8Lw7RW4>IN(;R!MC{});mBaLcchJ{j{({YdJ)UQ(>1!5f7x+H&7oi&VycL9q*7f?t z%MzF@ijH5I{;pjRi{+Y#4akQjcns25e@NEoro?o^;>#FFU(Z$HMb?)hYka(#1}(&- zkW!Kjxv+-sbFH#tNuXg26Fil~U3fx2r6*Dxy`iRd@GO@+*FF<|={VNw8j1L_fLv?5 zbAP`ouVjL~AxgZ$(y^aY^`Kvlu5I@V=+8S6=QZVb%Lroy3p`TXNL=?KzC8=JsC+@s z7XKcm<`)9dRQJ;`HJ)?WlFlAe8xi1oys}2)C>VEXd3fiAX&-0gG5-fID_?f)aVLxm z1@Jw8>RHTD(ZO^1^mqM2wSkSO`R6N6_l)>+8V23vq>_%$$xE>IKB-c;CB@fu0e*KM zQQ5IMw&?q`-MO~+Q=uAG_AKqL*~>2b+q+^6ty#oh0!oc)f?xt*x5V+OrD#5e6HRhX znY+rxe2tOzi|u|sU)#52bvww=n|Jqe;w?!;(mP6H3Sl$FX8O6J?%kEzny44O_uYf#LhKUO@%T3R$;2gx>Qk~M+~Z!pHre7K=ZZRab<|&*7@Ct! zKzC_fJ6{I*@rrnUv2Qy>K3LC=<|2PH^qs9Qb?MS!E^!D+BpNPW5xkcjJCHVGd@J>H zLIgwu3iw0vltbJPVq9{JJ^1!T-;CHti0Wu|&x{g^uaspOGkbxXF_(P)i{?xDl#v*OUaa~XsT zyC+IKQ~GEu)Iu2=hs{M}Q{WOT1WYYwXJrIN4es~p{8P8icor!50vT|yG?T^eo_^}i z?&?xf0>U3K2cMp3d%bTw&0?~b;L&a=muJJKmSh`gVgGb(=!90P)vkfd9O*r6shc^P zLB#=A-nX<=pL9F%U}8}>{PmMiDc5HvRW@BU?Qqra4OG@l4#+D9L08OaV)i8Bo%Ua4 z1O<3j;a`G$jQP~sWCo+C&{ciOJvc@5^S);Ck-o+Gp>N@P zuIk!Vvr$u{C_j-}!O&g%9V5yui*uwNnsv|-T@q8=Ia2}|G9CM*Je2aPi%jyXo4>$p zN$wWAb=y4K_%d$R@jINGPgtQG>T$FGD}R7?vQ=Gz1A=wjCG}K@L34^BbRyAN*Au@S zyhrqUhvkIg;D0?Wd3qpYKHEa$@FJRB74;~nZCip^w3tJLvSeMX3Y$~BIbdI!c+PzC zqTlWYKdn7+Q!3ky?Gd6U4v=m^KDP3KpH(Ypg+3%9 z54pk;PU|WSE(~Ac>AJFffib(X+4c(}RgqaCYzU3bbC)bG?zR?sF0Xd?F#qR)qz{h{ z=j^TOD9FUltl;A8FbK_gR@hr-K7XK&`^S=de+ zOY&v!&U$Tr(J;pE{Plvj7ry3N^0LaXS+Ocl$%(!9gO=ppB3~1Hu2%kjRzt@ui{|x} ztB+{zv(Ewow@p<8{e(34y(Gy**t`#w^OP(8dEUuHi~fUbH$4l=^X~S4J7jD8^0dRq z^=*1b%pvn5l#YPoqLgt}jQaHR{y=df{ys6c;?{%fH&7C+;$lU2TuxZHtj)%ky;=ZR zaDmE!U*}R5Z`8Ny=375Ch}hn&v=E?E-lb=yF>1NUT+byg=Uh76vfFa5NUcN0nUz)E z{oRdMyQ?O)7qwG@uJ8VFT%Z4HCz96uz4TZE*U>}!C07y!qX|+Fj;j^odT7W_0Bhz8 zUoOJ!?-;68U!OAnK9+9;Did49ot7XaauTBSYw1XJYG@&ely5($E3UPy^zC@EG?tGx z=6~=?x*Vc8)>2phZ9nX~YfoOTNSW7i)BMdC#eBnpOGgEcRj4Q!2G%W~`?(Q}S9SO8 za`1aBJs(55;O4OKZm;%9(HMl~&##1(-sh^q>t+}ZY||VcheC!6G)y0D_k7A zb@1a{)uuPm)#2PrpWZ80m%I8NXbR#T!qh)r$W*sWauWpjoiir}F_*Gmo{K(u_n9=J zz2qE!V(%FC!Sw85QohNUT1++_{!Y5^>v>K%*-@H9aOk5qj~st)a)=80 z?fO}lLv>*x8dw!~*gJ6_2{cgCfaJepJ)JyjcJXp%RDwZG_t@Sq@G&9x$*R-CyYzW; z;i25sCzd80ojvcd<;aN)!6#bMT9u4r?;QP=@@)7K#A|F}>?YptD*^udEvbNoPMNHtf4XgL= zo^7^v8^?Q1tQG1E7av#EwreS?J%Oxh^2Rs`7egqTMm+7e`slO8RZbn6wnLPT1}?S* ztApALw~%~VzNs#A%xd}Z+1PujJ}@$Sc2ZgSGr=r=wdFt_Gs6=U84J_%VXyYi&}%0TlTjCF;xLX!7q zBt;XHh0MPFKwLBA>X)YM&b$8-ch)rc&0aF15S1u!T**8U7fBSpg^+-<6Li-Cg)3XD z$DVnl-8J>|k}5l4b5=ij>bytFxik6(3G6NbsjVM(Z`0WbRSvwI3j72Ji!PcK!f}cf za>4;3#{;N5KbalCeFLKSFRu=4rP5%f#H%{aN|)4!;U6v^K;fm2TrNj8-v8NhU+E|x zr=gPdJ%#7yFJeQ}>PX$1Yat&`rNO8@BU?vE2^A@f2V$CMPu(18_@ zI0z@(DRvRK||-L>dIX zr4m05UVwKM7QbtMMd}J08Ch*GGf?(@Wt_gMig;=td9CpBOqCi!>cq9CY30D$LIwTu zwB@5=y|*2oYgzk_oeiun3_e#yN`z;teObREyHg5)+PcUgElaJ(iFqdHxbzNB4!%y5 zxBK`=rSQzaUF+5KjEc4HDMmQyXbE&$Qxc*tH<~O6 zIuG#L0BYC0lX~K4L|WzbSg#UmHz|uakHeX)`JYurc&_f>8S?OEPY_Ai9I3oobsqN& z10_EuXH@RK-TBNSKT9U2pLpzNHP7Q#Xy3s7LpAl9J@Oh`k24e;ypmgf*6w<$~nev;%JX4@q47#wWL;sR1OP|8)3ULojswgsVBd^{My#3Yk0+vHQGYo zHuKc#xuL;U-YPqaMtWaCQP=iFe&#vb!8ldhte0bsX%vrFrIXR0p6#Mc$VOmqPO8ox zari#v^G0w=x$oN?|9$e!?6~Z2aUVnRT=nHI*mJ#jHd3eTDpg;%WcBY6NQ}vpxh`q8 z@fW46=!nUugF_$L2ABCBths1cv_AZrA%R@o#SyU^TEV3!0G+cp56~bxYW+Bts_9hD{H=H;-h>a1K=i6qWqHBQ8bxI#DjE-*l(KYQuZ?N-8 zZ_E~hq3|U5zOjRi0Vb<93&|iJ&2mlVxS!&h#yrhv6;?~yb1Bs}MM{X^p^Jg|Y>+Qw zGEr^ShNF!7yc!dXJl~tiZK79aVv}d(ZWTv@L+1LzT~f2eqJV<>#+CXm$tgf_ZLuF%T?X= zjE_5bZIGDPZqUyZ!@^OmJ}d@fi5k8St!uu22*)AqDR*aVcihAja4KXx{gQ_2mAEH) zZC>`-FV(*7_x4@t7n2IA1e_)W&54$uot5;e^fWRu|^vLg( zz?xXLtEuBR)Hmv*ssqQqdKhgzY`6b(K&u!R$Iaefb&pAMZOE4{VWC7Z67Q zMU`cufG^M}gpA_rS|}9bizSPWZ;M8$00YQgE0WXE0N^!hlR5O_$i(OJhdECm8}-4))k&08*eB z0U>B}_wc~cKvQn|xd)^q0U7HMIHmzW&k_Xj#_!HU$F5_i{b@WT-t^}F$&8xrH)L80 za`Wqy9-n~B1)T0Za;VPL0yp0gx>;<`&au+~3UmgjVNBuq)FjC;fS@UhCCp(fq$ z3`SnD!uOyz<7r+|lDxg8jy#+?4C=vpj`WkE0_zqrtTWB1nZkw7VaR%I*qpPyqc#Sl z>j=q1$%$p(t9a<~{NVaRUr6#=3O{}HW6=CCRr!_NE%Rr`>NFfk%GIg*aS_985$!p> zYIf$m*J19Xm1ddA0u*PPhAo@Lf#ku(k6Fu0lQ$UQ;g3rT?-)3FjU)wsx;rpgDSYdz zS>0t-C^`zf=5rJJql~S~ceQTee|rke3|2Y;_-cjF|B@~j_v9Z-ozG!}6^aiE@?Nb6 z<;c&ppy{Y&qvdfcx=h4FF?Nh%)Dm4gs;MyHT9#G$4`r;9#1>khn6^PTRluOaNe8VR z9d%$cPh-Pl+S`|Bz9n1;Ke7~+?42GGzL1#-^WE|nxZOx{q-_~gTD(9$qa^r+X)8Qg zJSYxVbiu&UHw$4bELl+6P3MdCj>QJogBjPp1bN6Lpa1IBsf91L*#WLNXI1T+B0Pp> zMJt4j7O!WZ>^E5?mADS;5gTk}IMV`81D*$J9r&m~rjDN9NYQkZir3k=MGB=};v*%_ zAdM!!j$&pYuGKb45y=(>A1>(~Tg!B&;rK_s#C@`Q+v_$BhW1&D;px!cLua}OAPi_s zesZ)?aV9%_W_vw!3X%4Kf^3S)UH__p=(rozgWKr}OuIgRG#yjI zP5?hTs3c6PIA(H(Cdz2wq$G1LP@+}cM_}338e2G#I4>53)C$~(sOqZgI`Z3AAk{C$ zIlq}5ClP<{oz0?5DD)xb<4+4@bPPx~xV!00GP2kHMZL(g!TZ6=o)ohMMvVyT9XInE znQ&=0{2GG>62ksSQ>9&|z+N z-zn|{o&lmvBOC}1{2g@95WbV|1Vae~NPug^g(HFBxh)2p9Av2p<#FCgid~Y%g8^tf zV%Db=lxw84HuMdEoJ1J&Wwtz7J9rL!jt_OThr}N z73@qop|QJ7Gna}+s-Imj%rW_nwc|h}&cl_ooxf8^mRd&RG7>@*{yhnEV)Cqq6keS9 zWfRU|%rjJJXZ6Vg=^at81AMK#mk{>}sK4kG1@q1TBQ+51+j>? zCAId|I$Kd>oKPfhpbx{q-81}KRg#q$ThuJsJejbOWNBKK*`1so7e&Da?IbHwWGZ;( zY^WW0MvjjJC5)EN@3FH3rK%$c^W8jcW-DZK%uKq)#&9AfTug55DZbdcj8<#z2P1X; z%u>LE49qgHiqKUoIiJ36WY3B!f7AD5>6SE2qL8o~8Btdf0!;aDfz206%2`=TalviD z{Ku6<@dm)N2tfgfZ?%jn!Znd~d7FA#9zNVnHE@t<7j+k6dilhgBcbz8_zZ|4**h)S z^}H+W7il6$2w|n)%F$d-J|=s0Tkpf;$1qw=lV82DBA-zcEIbPnZ<6PElw;2gwu$Be zk?W!x7k1pv+BJ;-EHfeOJ${4-?(0+VawR~WZ~elMbaJ{pT;j)P;24df1S4JiLT5;u zY6URSzPZv(#_HqA)h-0-*w+L~vcSgZ8PtLww@`9y-~lCmf^Tt0cr2m+iSw(iwRB^x z_0Vjap>in-#)dJ}Xy|_i={lv1$>o0#arkslOa|Dc;}r1h#ut$qg+v+K;(&}9x`cwl z*)+M>i8Ku5PhwdBq=TbD^(Qc>%Yo0dFi1NKKHgKn{beWmcW?-5mdVE2@d-f9=u*Q6 zL2xY-ocEij$#l3I1$7B#-Gl(bT%aCI<2v~G$4irecV{$v4p)st2wFx7Lz9UnA*ZPU zsCHm={{+&=UIJEk8t^jK{cVKb_5&vLlmIqC(8`1zhKM16j}J2smCj`v2o`l^wZ*al zwkjMhPD2ZUg9V}l3mpN3hk2$<0b+o2Kzwv~7PBwk3UHE+hjN+nK{P`^I=|nvtrm1T zfF;5O^lXpHStFYXlC=ZFv$q%{yonWld9dghZnFSb3-?wZ^xnoOY=G;OqZ8N1)V(1n zR)+A3_?Zh^5}6w$F;p!wp(~=MSeHsgt%xQc7#S&3&zcfm0WtpfPOEFMEbo3Rx$czP zIPUe;ha)^QetRE=%|LC?ujhiyPd7R#IXx^wbgZwf-=Q{R^;k`LiU_;uRU8~v!8^jk zdhJ%@(Ty97c|Pu^#=CB|`l?9g^|szfyUSy`E5_0YQYs>>7ga;Z;&=S0$XNf>zN_^0 zi`Vo|!CZu@bHz`}laXI7%0rM;xqT$Ap{BUb!dn~`t7t#Q2E`dhxR%-aeiS7mt5c_y zeW}SH{8!zP8n$@-t0#x+BPjaAKqO)8_@2Y<`p=%?!=Z-)R2dlu=#51{^86pu8gqzX zKJkwbP$&j6874!P@(tU^jqgZh(oH}{i%n#%ZRR$v&_ATOgOa&zQ~&nDSv+He;y&nB zDO1y^x42YG#myvgcBOAyG66QJjJm2s4`CZTNkKdm^*VT1R zGjq1XXc-R~xPC_VMJwo($5JayoVlxa%Ra-Roi>#**X6$ws+Tv#WL39E z%s%^ERLDPcJ%MMZ!1~y(8EDFgrjbD*4ivBx3NXw!?k9AR><-wW32@}zbptqZ0bDa0 z(sQgr0Id!1kof#INT3Kwtkh1OsAFVdJ~>jgY(j2f#ZW%92eUQk%W?o7n8NuE)S~| zfv2GQmH1}AW|<&orFaEm_Nm{cnk&{xaf42#OtEXhNvSz#7f4D|W$NRBnN8=ssVmQl zC!9*swla)EJX3S@*Xx(HRo3pWFcd3Vc6?Jiwi=3nJAlz33ukHN(A@wQV%p|eRq z%eaAzcbj6emDpjo(TZ=m4M5)8_Mif}MOx9ZX3jCYydwVei}?yM-d*B^nSs;dhQ_ua zh6cyN(54lG0#QIh0GujVIG`Av1duj$4#+E~0s%2;>&{t+m&hpFh4`neU#l2o3pL{& zjK}H#p`Q%eOwz@G(SWW>&4B^vtUbs+kUE5m0q+6n25WTAE;Dyn0-E2(%i6u>fO1(V zV4cLXEXs-P+r21lzE?USi0+SDP9L9^T~`9g3ci6VA&*CHeF(3g#i*l4|R&0eByLT6gxWF=vm}1 zD(`waa~3zab_J_C{cdCP%)dP9JZ6sbj+sHQt_9i9U60AQN>joR!(bCs9{n#DO_Lmr z2TufFsnEV2e7|9Th6^jdl?O{|#ubw<6@&dYbI;nos6p_b<1U$joroYe$Un-not|SM^h)&sEePMdsZRJa??Z>VB7>-p_-X*?(On zfo$09z0b@1KeK}?{@aB3f2~-ujr$)pqpZy%sjKJp>}-Nb&x>l0(M;R2M@)+C0ed}G z6tkz@P~bJSP#or)GrmPA5oYUH&@#lbEZ!js3EIr z2GNK?L)+M?nK{fbLu~!E_aJ-RQCNG1je&N?wy-aqujU1MJB2kl$Q+M`F{*IKhM zd2H_XXcdINAG`Xl87h(thPO|j7)5kv^+OK`$bh}?2w{mTt{QCFV#7dV} zL*GtM)F~RGl=FZfCZ}o?0W9!jr zwnwqw>}6O;?FyMnysA+$apzyQJ43&tAYoC@#~gms6Ca{Y{Y@{rq$%`C6u0E0mAAFF z>h;PE``-}I;Pu&z`GX#`9p4^)ETBM%ys>fI)`RIlJLy)Cb+2H3(t9vQ%(^1g01bEW zu-EP`cddMp=HT&$v(eOjU@m|4aK}P$_TLdH=4u38SL#^EVFkHUws{xum?O>9OEVFh#!_UUQPG;j1+nLRyt4>V~sXmrMLGiNb!dtGEf z%XpPoYrZ@-PZUfCgEXQo^+*icdgKXt$^~GoY`|pY_}YCSg=;CSdv#!L9tHJ-^?HtZDr(V&@5QwSG(UIi zc{<1+X%(0iRs-EvM&GEe`xUOX$Vq=a87;%oa781IuTH4EkaF46-bJP?dw@`PP~(>E z{)YGgu4i?3xW6gU0;(?@o-^%PU~cx8mRF37DPGhld3=7#IHj?+W?m|Ki0{4PTK!jw zk8RUnv`otTrq;gv3sS8UTK7y!h~WHdsTBeh;(u~|ul!H0@7~A%=U@At@?aKm&{cnTE@DLh*_EXfUO4C#x;`zg=9n&9iO@mx{@iHcZ7jDxS#f#Q#O9G<%3R)B zBu?8uh36wK!N9QUB=@7Ljem}*GQb3?i4WyALl7whpfi91Z2f8OeN}G}ze2L4tz{8W ztmxjHD2a*yfH4jIcWF56U)tTUP~qN}^nskUO6crs>xPzo_59_W*C^v4r{lp?NGuH% zG@{V$qI`LWZoIbf$R;vv9=vcWXf$5`MBE+y3l#ZZvXi#gMsc(C49yZ=yAIVY>*VEq zgWFg7ZA_d<{52o8(dGU6a5DC!vXenRD#U_&wnpy4*<0raQ4`Af#qTTeIu#2<`K#?w z$Q2A}8T&1Zy!fH^NQ-YU!$DDuNOf|PKXOsZws5Jyo*ZJQ$V1fE=JWW0N4hqI9UtlB zyBp~D?(Tv8)6c0#7+U)62f93%dRf*=cc|)*u*)@;ZG$(O&OMa8klj zo;*NKK~jfBl{)iZzjPL9{Sx86!EP|n zkU^vE0l8LSjxiOU>2pnchHr$HJ8xB_2G6Iy7y2rGm3jcQZm{ImDU-MqWzG$dcL25} zaQq2IdeDY!W@{Y$1G(oaX08*zrw+zqN zn~|6_3L>wfos}iubP^!#btC1@zjQEc4+u0MW-F4cKa1(YDzb4}eHGh?k$N9*nQ6E+ z>Lx=?$CM!#)@xdbA|5ZbVq>^F2W&f~AJ0pf1PJ^GsRLr;~{!r8Zdq9(3z4 zl01&(5(gRrQ-s?%$588H$Y#;_Qtk073sOvM@-vwD4rB8)DQSTrXrf$)&nlOh+a~p* zcUE1xBO5+ixX=ErrW}-azl_SqgzMTBER}jM#K^-s&I~Yf8M_;yx+{o4+zbm59L2+; z)7#}P;WN(y@$NNRNTVt9-d!nrvJm=Z;f{C=^ZTepeCFCg?w6%r4&`T^9*5hcRF;m# z;t_CFEn^Z;j5=5-pi+3%WU7`B_)_{+Rs(cW{FD#*Th+ zh|HoIuD{(&8>a*K6#(?53}r;2|4yk3C1}Ed+W+d`c;wVdQLpWd(dcU%7``?&<=`OcDlg` zNi#Vpz#U%#lWrJiVlnfm81cNW7<(BsfS6&Y-Tea{kun1W;GqGlni~s@8u+t4p@xZ< zjuoIFZ5Ue>%$J#r9C+3oTra4C^lA*GK;L8!fY3PcdC0Dw9Dx&U^NqJa3jD6^hIA~H z*v@u){BWbu0$W&Kbj7Up3o(@`L0Z}I0n4A8QJI><8{YPY!t}-_( zuK4F8jNSLMV$bKnE|cVE*dXDEilw6M^+!c<5Qg|-EcD`~ma53gF~4R-M~|hy?HT}e zZ7`$JAm`fnZ=)iwIY*th2N*N#kHK!p0kX^VBu$vdG9x^a3Z{SF7YFLKm+9-$x8n;H zU24{z1&X5!?=Nq@ew-PS%^`&*lZq%_k0d9~1HS)%{QbLWFfizK@we^iO}iSS8>7LK zf&agFnK~*7%o<>+ps|4OHtLijZ<_Db1ZlBivoYL+Z5SYC7hs=Hpv-{^Y8Rp1qNjG0 zE=<km0#D8fz%I7|SUKHS47sf-t@8iD9#rYu=ya~E2KSDO6HU#l$E)phaG?^U%aVo{RRn`s1hbDHn8`-Nc5i1> zR|I*x=HKPo_vMwC4Ikc&%e`yWQ8JZ0oD^L>Wf`q~Na4cg`6t_cRmtl_d&>kBfK$)F zm;!!whZb>#OTaN+MWX(JeHXb0*(V<;1+4|?bm#>&Rnlx z#qMYa9)3@IR_$?HnPB=rS;@n$Y3xx02T$IE<8s z)AV|4(9QY$OzJ1wBdqa6b-+8ny?;;{`oj;;#^{|AcIMN*ig;6xGx%Dks z;q3KNX3eI3!I@eP$i#Ml7=ncnd*9Xm!^m-NQ(W?h3w>eo)kvV5t68TcOgcWOr|7vW zz7Xopm!zQDY>>zv_SDrUh**Ko@qhKa^fqccX+pzqe(3+(nH;YN($cmb9D|uG4A9SV z0GEXF0>&R9Q^QdLF<|-0I83Vq3ozWaiKrD`OBs~WTJI|PK&{Sk%xk}5t=fxgNhe=A z7tLNj{951BI1CNl8rFfcdx499P0~yZMq-H90H9zX&Ow3T4hFXeh%p9=is>ik^isQc{acc)fdO;_>j*cidD%TT^XjHxY3hXy~FSFNj&gsG5=YPM{>Y9g#)2T)m)L zcRdw{(kfZYcgi1Qz6S-EoK^%LTYV5LiYNqr)C~#)qXC}o2G}%B@s33$A_FwaFaSPR znD>B;o1`$_A+PDJNYkia=eK9yde=TQN4q$>Dgl>YR!4vkSYAIk<%ikzVN@KD)_>*X zpui8iF#`(cwo!7X;ByeoF*pt;m;2=m0L}lZ0#rxb27{MCflEjOQ3s6nti#Bcu?zdD z8+*}WCY%=++l@E^8^=ahC%vIrAw`s-aeMdV2e8WA{%v%h^^_NWW)I3D9L3Gpf7b35 zRZCG408c`9IoHfImTGkd0z_gP95s>To$G)^j;3)_Mz!H6IY5L{2S7c0XJNmpWc__P zkwDeWL>^@-or`zS(pt@wmy7GomMhBu@DGWXfFJ8QlfuVFU|_t!>k3^n88)f9FCp|c zH@05ng!#o$80~MsLkpyTe6V8NI3tek`9vtaJpZv$C}uFlW!wMS`PsW}$5}^_!%3lj*|7i?!Aeq_$0nfpLTFu>~exk$; z8ku)L8cAn}Ph^-@G*}!cx6-x1u2#ZtEEJ!r%{({dOZ|#Pt3GW78z*Yi?*j=putGhs zDG*Oy%KhugomSnY*L6(KW0m#$u(MkX$HgW4(<4qUjjPo{j(anv4A#~FJ= z#Ii+_Y77&zFYqbOc&Ox{=R)x}b6$m_cQ$e~i`0?v*H@0_kl~`NhT->2S#{Qa|}@NDO;YE|ljH$Tg0w~c7kgF~0ashsxgT+7&yh>N*I zQWffuJ30O?Ccik7)jcULw=r`9qrryP1Ns!w%Xz_AO+s$vgk#wy{S8qIQkvaz8?Ar- zdbg9G8~fn3JA>jS9GEA+VsyFN?tafOwS0fhXVirtSo1Z@m6fAR&vAGorc<+|`7NU^ zqVV;IP)|hhWjMsqE3IkZ*<0$wdTXW$z9o1tzWc zKnFy5JBPk_lGI229r)$#?$NL2YaWyUjtUVPxT`*SIVYliL6-@ffTbjw1-b3}2@(uK zejGntt+s0XU`8jyCugV1hCd53ofgkBWm#f7Dz;-+5=ajhJOEhNz)&h4V=4~&NfjZ} z30J{yii!#BV)Rgx^r&Ij3fDG=HI^EPJ!ILAp^Xz4&U%t1LVzUeph^PN5P0<*7ytlo z;difN$s0$+z%=4zAkYKWB1wUbbBHNGRlzjFs#B_JEk`L{L*%$yybTfnxL~BplSGq7 zV2~t6EnBTxp<*Z+2HTK_juXc*v1=KxVk}4?)wueT>7iV&shhQ^P6z{I0M1)w zaflwYw&(_VnSiEJEA2U~L-#k3RGL5-*yFDQ^#p=V)svcy-Ums833G5aLl~+jz^GT~ zeY<6H2BKzQQKmp@@_@%vYSMtKqJ;+J#5EvWz?tU+C10S(ZJ<+_)pP_{)VnHAuz^s9 z9b8&!%IE-_+dU*H_AA&aVmg^aB35$-jN7FAM+y+3Om>C9S5ooL#f{YU5hZ12NzUB}}ZftR`=A~O!i59gZ%M``6BhAoaX+cT{y?mz=Gl~v$PyU(KkGR}TZ6G!T1#F78$s1f z#unP6Ax@C$&uIj}lgNHU5~E--B~;_&}6_lpMLm4_s&|QJ}>K(vkK<2^*FxVSl9yFkX zY=1ZkpiButvUK~yZ^I0h32gLl`x>|hMc9`Hl*9y>{I3K#xbdE}ki9v;QkqE&jC!(z z;JloUJruiH3wuwdW3QoH(QLrSCZ+)C2h>_QK$YZsP0|lxzrC8tVQg(6!g4ZJHCwWR z2Ds`JB^)J7nv@CPe1p_yxUojGY_eUWX~4lltFNIG!3h{;7Ugx zD245^%Xn@EkDPLla;`CoN9D0U!7?zS^MARorH^%MDQ(&tri;{ivf>X>R3#6KHXRM@ zQ~6}KLODdJ7E$?dmPRLNF{7g^8FlsLcQhZK=Q3=0I)Wqvbccx+Coj#SXtvtZ{R9(x z4h0(7f$>8ncv17>x}HGdZw}3U@9FqsnqQUkujhnwyjzo6$kXD8P2=w=Yuc_TyIFSh zwr?CII>iQ8iC}e_Im~q-K=3i;@N2ffA9Ba{esw+d&*6GW%3^S_yL-0b0Xm1n+AvKZ zFd-H4_|@$S;283{ z%qFm=_dP4paD6Bxe~1;px`m_o>^izm=3H~BILOb^c(*1RB$Uf4lUFS`t4sES{%OI} zfy^J5BR8(ydj9q1{T2SJfPf}5ihPZqnhU3<_gz|+aaQmL2UL66!PruBcI-p-yXtS_ z8bItnqYQ6@U2UwD9D}|FPKJ9d0b+mmEefr1u=igyyX~CKE8;-)sl~P8p7jQjI`YAH z-|O^{p+RA;4dav{EPDo-HC2?09nTRUI7*n%7$I-gT+d(-R@raMpQ7kc_8rYX6|)$m z6hB*BYiJS4{z^xzrozuj0e1c;T%(!``*w&tkI)#_{2N@}eOp!0z!uLl1o4jeGwk-p zaT=iu&%O&R(diMfB)NylSzT}S2RQ8y)?#DGHWwmcp}DE|Hvk-)bx*AgABsbIK5b^K zEVsqnOtES2Szjo13>U>o+3_xr31M+83Kjdzz*c$C(i7%iWZ36kwohV_8;HCS%cKLT zuCqILPCmQ5wTrHjIJSRRxc}``2G6F8-+A_I_|JH?wLBDiV1Nq`SPb08Ax}O&t&lgBf8tbB2mD=&Zg^>ipoXuYEH`-IH5d(GhjTHXdmg@=qWhA$ z^)PyfS2;Bw*KBlaGxp8SP}-gKB1wBx3hI3HTJ9iUdbitbdt^%FDXpJ+!-Do2Xx@mR zD$;<<yFgHyKs8@NB0 z8zU>Pg?;}}IrSuY!9@M0nP^$TI$zA9rQ7pCnAD$S%f{6R_L1tj_2-o^GG4Kh;Wo>9 zs*Jjf6?FYV@xEhTI|2`NTs(ZnQLHby)LHveM2OZQH4Z3UgM*ca5JhwMX>p8|H!Zqt zhAHw{sOje`+qz-UdT?e}+4{XuP>hVh?yL6sw}0LTtT#0ePPee%2uYJA;7Ao4*PVMB zS@uP|$#0=NX`i+*u>Gv{v7Os`SX0#XdXr7(MN|6~L0dBzl#Y$&0;<6q%i#l7?#Edn zfEOYzfe`jKo-+V+pySOzWGet&DG_KP&cG7=Rq=JtStFVu668s- zONmi&GPf@ z{UFC;J)!O?MX2RAC&fTcYVoXDY@^QW8P#uxR%uSX1mA1 zNJdd9#=7948$CG>8gFuk^Z7fQka7)pV(`O>FY-Qa`<&D-z+&!Ik$THVi*Il~lD3uP zxc9)MvyO{ftK>0r{ZEjNluMd2CBV%Q`r{Iicp1GTRIgH_+YaH9RQgi*t)mI~2}QEa z{P=psyGJBaelDiK zcn3F|E@63CB)V_I*baBQ`Wmb9W*RE??73kNE(C zPzXJFz$Xu?L4(JA#vy$yT$$wO(eI>ex+#xXf12)T_CTAD5|f0iL1Qms_Btid=@Q6f zCRpw5_U!=9qf$<@nAvgD(y>?P2j%WhUzYsv4xT$!8SdIqUn-L-b!6z}1xRvgR7X$U z2~YQC^VIZ1gOYLGI$y)h=E=LvCxx>&`fS^t?OUmKB=Brn$3bK!=UKhkW z9J0f;yoo7eo8jW2E4mhOxR;$<6ihBD&bGmT>=&80YYR1T@5?Hc9fW8+_1u}j7$oxp zD4sIFx%1EMqMuIg%MCc`ac+|5;Ry;ud>pLepZ`h+xhU0AWpsX5*_Q(ikMHMXGqkPR ze+!*<7yps-8o$Xm(`NU}6ZpMVE2HEAae?$?@)hLWc$sSvK?v`}bqikTzU`TDxlirh z`?Gx^9-wsqN-&z&1{Uk<4x(K9JAYR^A+S}T{~khh|HcgP=R z&vQ(|sN{~Yh6@RFDYcg*D45_yS?dVl=wCqM*@54Mhu-7`zGXNv+?_fjL8dKU^QOd} z=A<5%k+G`mWEf+5tNS;dg&hZ{Pjx_ZxZ4I3lHh8?bLL`|-0_X4O2i-5Yka&AV0Vk* zo$IV10L(hq^7wiG+&f*G_MrB&v?Cypbg_=Bi^MRrP^Uh%xx^T^k+;7Gh0xuRE1!g8 z!x=D%fRa;b9bgIj=;6TA83Gmx^k8l9a64qys%$|$RMbosifu+mcGvsoiLH))194wP zp{1`qEJnb*UIx@Z28>nA5kRn1;AOzYLaWLgk1H|LhPyaWzuKQTplw6NxS`xkBsc=I zPZvYvxaIL67N~>#0)}Z+h=DP)Qh=xQI;>%!_aR0)*@qe-H_zXXV@1Vcula`Pp#lxx zts1LrjuZZqYx>6VOSr0}?8x_+pps8|PkD0@_pnGo(l9Loi#4HV2)9$2)bz5H=n1?_)*($DL#5(I~dd)|N6P)kyOv9 z_QscPn;vM;-bhnCdD}Z(o~n9RuBSw+IQmiS*Y>&noOdNTl`i|M>Mhs>t~bA3T05nP zfWA}(!Zzr3zY_*@*@{vw$F1YvM-J#Yel=9Pwfkd@84?pV#qap|`oS;5PF&;ijJ11$LEWks7=*WfEr|5ZhxKZ`rFeFR=rtL{{*Q4iZM7j` zi#T9a4D6>(U^$U}%&)${!K?0Flt9?L34i@f?f(+VF9AWXbYU6dZ*m=;u|r~?Qld0r z9S?5Ab2YqZ;W#i>{`&}*t;wqnpqa-717O&<)zom!eJ|Cok~V6QudFwN-;VJsA+C*( z*nI;G1p!&FLh0?_W^~k{b1?V>1o+kB0JtmAZu1GW!_k`8Kb&(7Gzw_?@^JlZK6^#_ zG#6(8AHmDw!xfo3TU8;C7Mqgf zX}yaz!^?9XxYj3cqFFDVD4VsG>tpy-WZ8t+TA^8Z<*=l*u>R4AcXIOm?#=~D2#Ex{ zrZwK0&i+9zUId}#=F-xB<)AOeu7*0k9}V;3OtY#|MC>DY&};f1#++e>DHY!neQ6*P zu&;@Ihus812OY75VDL#?lps5dgBI)it4Z$IKO1>M^}nL{YkN}VDhNJpr^@KCLX5s} zKE6q}IX|==^iFb;C*WS$p$XU-EixUu?0X4(DV-Yb%h|zJJ0(&4=8-u6*9Z4o{0ABm z(=*ZFl8FV~%Qk?^bRPDTxP}E5k{~!zghlbqCJr9>{MQwcFOCa-U+-KR6fydEwkIY= z>OF%`Zsz`aUf1RO^Z1Nd@6FGcdkSW5S0aT+BDI7!&lx_6a!vWIuU^UfnKb7LH=nljC&ewiTJ&9yn7AT)J zCRxlS>&LNLu~mhKN=Yx($=oh~eDbErh}i_L$R1nj@CQdwacgBYa=GcTEENKZBwm(O zvnjk7xqYTw2l4#)K*0X-Qn~m}wq>42uk_9D`Zg!dmlz-1edtiN#aI8v>#n3_NWd?k zwOxhKK3?sEv#d-wG7QkJ7k+cz@e|iTnC=6j;=2I|(pwBEdidEz70{SZKiW4Ieff%8 zT=DZq1RD{Gq}?x-86T4%b&@|&drflPi2V=aI zk{7lgp1aK
    SVTC8cVVR@e@Qe+q2x_OGF7>A}@@Ij5WQr;o!kLw!YN_*}AUY9A@F zWx>oTG6{`1hWOB<+gO3#i@3uqjh&~A;SXfNWwo`EnPH-kd+&6U@7uFp7jZsZEcfMf zgkY#cs{-{R$3=Kn2tvr5dJg>Seku3v@nH~~+Y!vZB`10LN_d0l97n541dRjeH93c_ z9MK(ql&=0L_siMmR}=8@dd)7S7p#i!X*})txc_$7s9z{gsOk+h=Xq^K6CX1RUD~x# zjw--#hU{)GtjD(Vg;J54j_#EHpVTG%--dFSn$xW87p^#}RI;}ysU%bDrVSCDcieD0{->26FWxoHQfRW_Q? zzlbeJk#iUeB+)sE~?#;_e=vR#+Em)E`-*^y<9vg zr-o6x1NZP%6)Lx%m`u35Tk2cxeeUf8A;eU5tfIoXayLm-tkW$!a`K&0o*vCdHX|8f zxNd(DXnJiFd)Sr4Ws{DC6&u8VqHaWLkH*?uvSmyQUzqy? zV^MDnm4#4^#MNDgv21#M_p6&S@62TiPu&Z7dTzHI-YKhlPd#Ctx)tW`^$q@)*=}r7 z`slh}Br%fnNlCXSFi5=I+Y&{a+^|b3jjZEN)}ObNej6j$ zOWs#@vAz+q8awX%(e>RDs&%C~wk_n7!}a&aj=L$E{l)Xae+BKh8ocsPq^EV4o)wkT zEOIcJ3rP4Sqon62waBnMy5zyX(RD2Ma#^D@1tVqDLAjRMCP?NDx8DA6j2?3BZ0DP| z6AJ2AQaZ!_I@~$JyUIDLsd|O}ck|ugl*XlI;gyLyfilU74}+9he@GL>9|X&pOD^5r zo-9uB?`pWvmai&&D$@eG*3I2Mf%ih~dQa|}y~{CDcw+OQ5>tX&i+ z0K#q&-RzLWbZ+(6-g9LG?_XqOS_$J?B}w5Z{>;DnAqUm?{N)T|R0QA#ti<#r+vD5W|-dSZ815~=!XOE zTtEMOm!*U|XjPv0)WU!H$;fv#n1OlR6t0llZq}0_5fy_~*z)+x^De0`q}gk^^*N&Q z*GT;exn>@xK!iYAx&vJM4bGmVEv!)-Z)pywPbd}GAyT%ktluPa%4F+fk@-Y-}!RV zLVaV^gg1*7+cM@G52Do$ySN`AnjFQW-2AmVmfez(u@YChEY$}^59>O$DLRhmIf(2W zWxuYV$2C~G5$(Wo=eb5*)c2;LKNdwWy`93ZX?ADBy0@A->gW0oi#O;hf6tNi_YTo1 zt9}t^#T%0DDSx<$r(-puTK$gI=;lT1Pqy#R**v>HvFL~HXw>vg;2CSsPd`YiVkJap z5|8D}29fy`%WDEcp_31r6u9lwZi_SLWV|IDW!@Y+HUK{l$4$$RKR9Tm(J>Wv_j;5x zkNhhk$d7_n$0}3Cc1V&gq|@BM<7$BPMO@G>OS!{P*o`k-oda)UA(GdQX}yeYNT|g3 zYE;s;Y+m)*fABa8$DfThKAG!;=sZ+iA(E%z@bjI^DJNDeaFbf`g~blj)6#fMJS@>Q_y{f*d<->z*1W<7jV9X=DkLMen#cnwoPjXM`0oJ4=_o zZSZ9b1R=7g-UZ;&33ZnmypwJD&o}fozi{Ctl^M#nDVClJ;*MQbIIo}~*D03Zb8I%9 z;XEn(YUO41H2Wusiqo7bNkq<2dFCtO`S)W=^*ik1o$UZpFog}$jk{^3DHVrh@l?J3 zaQOBdh*$le5o0evbqV5L;oX4-ko)jqqgKxtDsgzsK{wAR`3gvXKqml~9i1U23|-to z_L5{YKVG%UKyAbE;5Hu*!68|03$o2veov3-7Q1xu^6KA;M)*A4`My}tqJ^4}z<{9n z-O}UHA8pJm)ihurdOd!rhpq5wm+SZSd}>9$(kaKaTnhht*9&n8I=C18MWxSJ=T7H}u^S6If!@o+Uq-@V(8jQgsb;_N^PJmMeU@@itFWvuKi7Xr^Y#~m^L zwsbNf;+rkUfyb1*?DCFJBx==?2efA3-6rp}qPd~-*7JQIWF5=>sZo`Mb+)%H3cjZ% zS9V90tjXF}GFhgc-);QCz(XJ}*aH$}mk9A6#XH)4g?5u#cUaOn5d9Nz<6|{F*+-aH zr_xsflLxAduW0kkDLRCfS7;qF(&rZ{H|8tg=HZXx^A(=E$)~M#TtRg94=Z6caZ&1Y z^`Q=zvd`FniB=MA%U~?KUqioFyX|RxZDWU2*O4RhKB(>U5 zwti)+p_m@zd<>?gOvx-+T-WJQ?25l`S8i%W3-H)ZNDuH<$e14nF5(9L#+X7IC}ctnRf_G)H=d)(ea|K*97fmTei?Z#+|?hEjl9wd0!L;{;?VpBbdR<6Pfw zzZYpMiZ%ORf2lZ{7W$2!uUt2z@&o&^tZP)e|LLP0sA+=IG**n6;D5ovQ#Oo`3hNKVeH)d~9y?@2fyy=>(j?3Fa zzdXhw+t8Q4hjpxI`2>p+FUBrNkx{(~L z0y{rs`fCZf0~{ED5ZMl{VQCzl#SYz z)<>+(Omyo9(y|7#O=LxyGkHU#ysgd8FQ=lW6yNC8HhbeS3%B@T-GGMhisWMzXE&u6 zqUzL!b)B?h_gyj9yy0hYt4G_QeNka}ON;z;yy!!Vv(`_^{o!^jH;1E4DM{P}$+%p8O55 z`P7JDqmf4^f`d`J{))B|-kSM$-XD45HYYOrBr_C48VCi78Eaxlh&zWv=|HW97NxQW z%UAbe?)2raN)wU-&sDHbJ7eiMN2vuK3(Xt9?26fY1zM&~6|U`03ch956x}}H${Hoo za_j&KRC&KlZ@j9XKso>Xrik@CY?Zrzx%7g8O-Q&P$Co|??x9;` zX^il^+l@O3*UNvq7JaC`Pt7=#7kR1a;lfqkP%;Ga5)shrWwu#0QIb>t;%|WHWmv+3 z`$bJ7PrV@I=v1!FlUrWOg(ps^T75gO_42#nqv2w6R-`d3RFTsn($^QG@oj|UBNa!W z75uOfG%b!ic4puA43TcFoZ_Q?gfCYY4A(YQ!WDxqqCU}%gni9}eL8pjiut2g^JVch z7Lz~uBCMz9`Q&w1bv;wjnar;XUZ1QJ$eJx=rWw}vo3OO;?6KK2H^zf!?!Fz~vHhN{ z_xX-X3XT-6{+xT-8V~vK&r+49o%+LfMs;-mF7Q1W$EOW+bF;mU*P=n#;yVuKdwKuU zyorMP`7!^|zR#LrprD`>q-kZ)lCVW6?|w~fjNWbD3EMWydwRhM)%&A+Tq=l}uLJ85*shHQ^Iwoq1Qice!0&%E z++zv1p<}%h0J2Rd6G=&Aq2btWwe~m;%X%XSL;PJFmFQX~wCBsg3itcURFY`=j=&!W zmbO|R@QDs|0@5`ND~rXEwjT)L<{QE+V({~xf3dV)LgxWC7ey#tfA5#aKJTUBOQWZx z#p=2Dq*pv}*uI+@+x&7+nvltJM1_t3>cgxzP`tX+!radwO&7-pk)H{f;6ea!A6?18PijLjlYU{OBQ%@RO)Z8j=EWhnBx1 zY^z}V$Vo56Km|G#X9aQv^vCSa9AwVEBmr2lZIDf?sVZ?b)pQ(wlJU3V?uIbOhvb{4 zex-U#zjqOGPcGmLw=3Tt>B-ENF$y<-qWj~Gh({xvXTSYS23?0W200#Wn}wD-{U@_l z`!AlYen`dn%um&$Rk?=~bX-_V!oC=z$k(Owzo<1;3W%hf0X4Xhl?A^Yqa7?!{x9_G z-VK+V1H(}Cly6Qfeh+brA^to5sD~IEc8`9bd(Pf+U&A4B=jTB*zYh!X-6J(9J7nt9 z{!@cXTpkmHfsWRDkyzW)`UtTKI6HL0h_Kh5C$@@Lmb|wk7(5z$eXo+^zHK2Eonq(= ziYs5h=z=Koq^SvK0MN6C{s#q2zD*GX;5-{3bb&jz4G=dBz|RK6$YdBmc%_!6a9~za zM7SZC=pJVKw4RCzq|_tT)MKGW>6BZFIMZcZ!Z{n6G&G_o#^yihQ7O(sGE;_3OhH10 zNTk!qqz?;}-{%KGQ!dgYdd#K=b8(%FGIPYdV24Waf-p5of@Q<3g7V8DwW!qr>0B`& zK;;QTdt(GKpfS&F7&G={^hr?AQ26XQ588pbk%bPDeZ8LY+Fy=uhv{VVRK1L@ZF)R~ zIw$JMmItz1*k%L8N1;xdO8f9KBsF?0BT;(1qn=&VXw`R7{kYekLm487Zehly zHAJguo6*K*+O4!4mVWsO{Q8er@Q-vL12S1U-CA;8esX+XnwzvE4Vglt*u`o@%UE#z zoHy0`FB?`N?(Pp&uqilt>Eb1dE3_4L9eRMhMN(a~eRbYq+(lP`l>+~XsJ&0FlJ$50 z)PA}^;UH*`qHYdb5J&rA4RtVR#n%dun;M+8e>vNdh67hWzi91x(+!5%z5ZWBeRW(@ z|NlK>umMiWAt4<~C^b~1Lqb5hM7qTQq8_DsO@*( zpU30-`2Bb9-S)V#?e%z`=Q+=FdVXqJmZwqN_J13m`?bJOojhBR5VWt1KTfBB!O*f~ zx7#){%Kd3PAj26KIR<;&ESoA2nVJ(MKcyVVgOm~pQ6kVoJGekvl^K>bbk*_IHquvs z45Xkdmyg`>y&0#2vHuv{oO6D}UvK2fi*1{Y;By{9i&7=ej6(G7b15v!WjU)&{@%)% zQa87KJ5}~9qUg=vd8)i@J_@A)<>VHaky64(nJUzgmR>oPGDBxx(zl9xhPGZ5G+|c8 zN&KxNyGi-?vZc9?r#77P|MFzBFnA;M%SI=LeH@-4;SA5@Ac`ml=S(m=B0^bH-u8&w zbJg3nVwX7Gv!_#KfgL!oU`tyo2*{=*oxHSsYxsUgQ#I_>v)0?^p@T7ie6>(hPpm&V zWx%TZqV>G?fdqN9hKJVK$E7O%LxF!TMieJv?`7eQeka=udSv>E;)<8iW#GLjUPYF* z>mvHY6ouQ+I}8OL65SF+Y3)Q-l97^0Cf><2q$*4+NqW4uo==4s&77e8VPy<*pKAr= zdVy;WW4nZiKtvQ24I%nn=#_SKKN*%oEaNa&*ZSHwCSkL9dFN*R*SYA9A+&d}k$YMzzepOMIDupE<*&lm;gOCET z?FUDQpbS}!I`Ukt+*cT17(!p$NBFT$m{x6EWfV-vV`v!cvXIS}?waqr)6GkyioZMf z=HOG#L5XP^4L1|9>}vSftE6&MkYG^f#jL&|7h&ZcAqhPbj3M4p7ik#_G84)!Mi4-#e~n|b|H@$63MjQhx%%31aZP#;J7~v-{%^I^2dcVPiOvo%KvxS z(8)OlY7xAY=JOlqNWZ~mU>|oIa^vbkfsJC=Ki;@Fo?-!YTr?zMBjGJfU#AR_3)n-sEgELZwL>MX{6CmUFivNST) zadE9ZABbjcCXP$xD<@5^k^%XbR{eq#8s&=TBwAGSAzf+B^;`IKCy6V|x8rRSuCd#g z7TZX#fr;Dl1nER=h6*@^B1Os zO92<`*3X)l4*&g-_V2rb*kh9cbz-Cx)sLRhBkit!_jabdk zq{vi!rcFhiwe_r(CE{7FLfxL0hA-E}*Xi?K+hx_ISFn(O;rX2pGiKC;YnSfnsJM7( z50>qJ5%8OuZH-~$#HEf*4TDl+EU5cmeUR7<v4x0iePBJTMo6J$qGqdXtViRl@x|_WWXb8`X3o0 z52Wt@IP%>rp91U&VOp!zM)pOLLA?4&OiQ>~%2Un&(dbnQ>AyKxU-4|6HG{aj?U?K2qOSuP-kAty6i;Cki!e4M|pS$}!sGB@0==!m$K94fG(lu%$sAwm? z-G}wNZ;6NZC!mj#a!qT^vdM1-nIy+{6zQo&|2X&jV&oiYS1yFx5PJ9h>~P!BsQ52> zK|s4yfm|bAepEeZui!F^)-1H}BaQKXdNs2l&+vz;I4_uw-do+5{8AZZTzA< z4wsY>db0 z1nhozsBa(=7*XF}gv;)L9Q)aBzc~0hQ;&tuc(h!E%5$DEd(%Fi{NWoD|GqEu7%K$Q z?wXR*42o=}1RsG(ene72bJcowHe8NU{^^Xx%Qt^Xb9^^(&gxp)tJa(qH}N}TV0OiF z<-`ktKohqC6p4u{^-B7Z@Yk1OM%}z?29~cT#t+Za8wXpoh4xs6`0tvpSL-%q?>|c^ z4}B?aB~~ogg_jWgN8tk4IFWK**NP=T!Zw_p$8pt|W+71j^9PgpzZM(kMeZ732Hqu{ zU|lw?MnI_t$&%T3@r1W9T!HSu_|In@1{@? znvIHYj|2?HfIPTO0F4O!2{gCLoTo3;P+`x5piN2hWf!H-8hyRU@1f>UrXN$FAg+_R zA7G3LYpBzHRz!=3qD*UUP!!q9Sl7^lu!;blBxRZIB@)ZCFIH8q^dRYq6As8oYM^sCpEK8F1IiuVb%W|&7ze(k&rg$DNvBvI+FYRScLr*A zuJ8iMc1*x$tDyZ3v29>j9AY$wg%wH}hE}Ig7+B!Qb+$wb)6K z5ciQ4WABUq8W>9HBzNsgrrpf(5cEJx@q}cwAu}DIAZL!mDL^P6`2m=P#}srVM~1h< zzLO(vreAPkB}k2mi{LKO(&q0pW)Us}F_IB9G#)9hK0gWn6?FXNO}5O5{JmQ!nf9PZ z14aj~5FacE8l}89fR2G_3Xn%#fno7!10uj*r-KRXO>k{$XlUV74>NgNueN(1XHOUUgHimrCzeA*UTX z+JY>3E!ipAC1>}~O>%|eQPrj=5rcSR@*F4Nludz}bkSswA!P9$b4IVR3NTFt3UPa_ zVni3d2wDLN*U{ACykN-=mamGjCFp}E9Qum^;^dfKJpT=S0Ud&B{Tk@%0E_Oh_^;Dl zAp>z5110fbdNkqEEb1jg@WR*6UlSwY$?Dx$IRQbjjFTN9oxmVt@A;9(jAS40Uz*R3 zYzq1s{H66gt8sG%A(fIDsbVx<#jC4`D^Mk5)W4<+ef}w%WpiSTGF*qO_2UyAU!zAX zycGi>Os082u^+D-Cs%%r_V@16ZJ&Eo;p&z6MAhZlL^a85i5^O7G3tQO+fZ?Fev7hC z$1k~29o@aSlOzuR2gpj^Bg2Igi0?BT=&sgS5HOvl$r>5H{xd9b`vDM`KGn~?KHSpU z`IVZJ4;E_JwbSjO>raD~sE#~;r+0GzCHCCOt^^z#M&of;bmQu7Ch7aH-hryjz>K(Y z)=#HfV^0_JGJ{u%<%zrJ0k(bE0dDo$^4*tgB6-WMpC0--x!QV4b@q)W_o_CKnh`wH z-Js|9TL|(F70y$k21$Rh<+L<$54NT0r-P34)SDgH64SANZWV7JE8KRpiSNZUdW0vA zm{fN6#Ob3w_Iip2aHAp+zDo6aH!OT1?8a(u){hZ;+W6$^j8{x~{xr7N!N#4vMI}yp z)R}~iKb@kVwJr4Z&hys%9a$5*ReZj%6SnNm1v`8{1z?4cpEOR~9jh4*%-OU@ApG%R zTDlr?>fB~0mp3@T%}=Jd3`+^6M)4Y<3ubrUsCo9EbQb56${9k*b0~Zt`;*ik8*o+% zpvv^+mbnT~!1>k5r~8+;j8=CU8pqZ6nyz_8?Eh2Aie&j&M|YGkDVcD#^awhXiIE>6 zaeTWuEPQVU9^>qrW~4Y3$~nB=!f_3?=Xaz%LW~{E@^=Q=US|?IkGL~V_3b{7K>b1D z0{MUSJK7+sBN*ZDvO@1Q!nHvv>nhwZpb~f`N1n^=d6ws9+LcVCJD1^;%4NtpBhp5h zfBt?o`s611zPr);J!xkbCz9A`#iy_j8l9<4EDHwA%RD(m%pECl#?Dvu_n*vFeg6G7 z)7US*R?5@!ff#n(F%0|-rxe42N=m`ZA0vm>3*dW8UN{e$>+F{sMSn@9#mscos12Ey z<1~TYQhJZw3bhRQHZRo?<#Huod!vfqkL(V`JpRJRz_G`ghEWqXSI3SZ5aIxI5+$q0 zkNkH>5QN!N=^6s%#cFqs&0`L)Q3vPz7y z4=!cFO;~g3$qW?+i}$--JyLXyx*`6)E1bLMj4L0lKoRs z-^V3uY1WMj1p@d6<^6cyMJCl#qF*5xGMom{DmVeN{&L*@%;$c(|Fh<0;<7E_5gH>KNV0Jy;#44?Bg2kM;N+oAZ9pnRym|f#38aGW>0^6~YGC zX%Y)RdBa?AUOu|~L6K5NUv&8Jf;;t@=SM&7?G`TW9TKj5z+0vSM5OgkLvTiL3aiUlQ}+(*j(gmxac45)Ma2SnDPM|B!1 zUEfeXXn`KW(->0-zhi?j3|dt3=aY6lMMCk4@dFt_NnjSnP(>rBYT5x+aXHkb272U2 z7Bj(TWLfOV1$?f!zR=Gc)jy5k2Eek3FAA;NQJ-aRE?t90`tq>- zBAH@BFzU1mmg%4y+;Q&S1gCx3}Ay?c>hj;#zvL1G_ z2^Y-G&%R&!qW3FXNoJC(47fi)DV9tnEb$P(56W6Hp<^6CMJX44EHp(=Q_5blg^#wg zVdT1Jt%$GbWAs=_&$7je{P6I2P+XJ+)Kz;&xB@I*ar`PkFUuVgp_C@isfA(=ts;I~ z$AmhSJz&E742|7bGc0Dax9Yi`d@SlgsmKWJ`S~->Jif(02-+AXd)Y*J8F(k&_Rz%$*N`uhi1KeyytnK4E>r4HA7&%EP;BCLvw^#^TYPl~)mZpqQysGa`P z!h$S6QtuY43u!a7TtyueNltUokJCwyp^Hp@RLsSwtc zGCTT1uM*{K`pa?SP0Q@FfyjI}%uK~+y+G8xu3h(gU%UK{#Ug$SDUKDg;=WzEELFQ( ztsGsYoD5okUjyg#30K>G*!kkoLZWaQ#HLJ^$vINq{j#REx_IHUsP`>yP`mOtj%M0D zM5E*6LCsYrdpyRZ?VWw?KXR{k{FAOUuN{{6QF2D7j*~Ja7o5r%l7rQ!cOqQFp6U-* zg-o*;rI*Q!^!o4}n$Xts_Ze=rhUI@l7=+Kud25rVc71yIzlgs1`GK?Qjom=o66te|{My|LQeHFcyUuGsUA+7UOzV>K zp#Nj8yjpY9@&3% z)pH3@v;F6>{(scSG?22AaTX;*pCQs<;1|2Pe*xj3rW_i^p6YX%J$Dq(+`qxi9Vt2kr)B!yoUm<_9#|mZ{$$O+0_<-2&PXgw9E$F{lKQHw#%t1q$Sy|O$O_fbet<&umonO<3vVU2mZW8Ds$&>UU%%F*@VgQjx zB&1sM3#9^%*%SU$)Id26OnH$2a_)R01{6OhN(Femkf#E#sIaISD_n3^L;l1Axd%ohl!`l^wD z$v8DBzL*r1P35MnRQfOFtgLf8>;5g{i&o|2E`}&xQ8h9RXR#llw7r~u`c9Juy$nVj z3|%JkGw+8?f#8nswEv+Z2nC3r6G{~S&sYm&{?>#JDfhqpg#UTd_W(qa;xgA71wim1 zkr~|N^uQn`xx6R|E&m@&!)r63#DR6<;u2{z+`FwM%9(}Ke|u${%JYeb9Go1uax%a* ziK0Yf;E*1e00+If0Q|oIZ^}u)wGOnuf~R9_$J=f67DZBgA=GG6!l=k%v9UWTCJ@!G zmAWiqN1|aSTBSxh zlfPoHLQ9R2*Zh5T0Kh272@409I`B_k*2r0Xl~ZXW+A9|a=zCG*N>?G^-U1_P60#S7 z71-8AMS@aUw+5{!*QnX7jye9VORb|KNc79;@cugVGAv1gEio(}`J~*(dzpF1`Gl`8RC3Z(F4WM;QA*Q>uV5X9ki4{` zt`wa^>~MQpU}k}+FNakIkKrYbYzL4=WVF{^CxDL?MX%T@Q<9gsgHD)JIN_Z|$8(;Y zOo7RozynwkH7-5p5STJWaXRNb0P|cA|D_?M_4Y4Idxyir0{fz%pXv{LZe3G)zVaY` zGG~TW;Kg7b3^Wtt(BeusRoeP#o6Q(Gql-aM4YtPua|F3VI#)sNFIM_hy4S~sMLn`d z$R!rv3O{2R0v&4SF#^r++OilQv|^-7;Eb9=r2Z{&K%52c!lh|U0-3(;u6KOo;1fz` zfkXO%P7EG4H-CN?2)-3NMk!ttjz3V;vsW%>3{l(nx@AqCO`U(Z$>N&>xfe1{qogx} zn9LlPfanG~I;c_5vs~C(Ht|aQ0+TNGfGe~2jdPUJT~ zMROd{c%~MQ>(EB@{pweKvtp3M;i;{ynp=v)#dRSiCd6KgX;%Awi*2RSc#$7yTN&m% z5)1dNcoGn{=`dt*FI%6Lk!Vws{NsT+2c=xP;B1&@()Ax}ckA!rtK9_g@bAJlP~7H$ z=!)0SK>dyO{Edp)*KHC=El`G*UQ|l zQx(hTtiA~TT+(4Gn)S^IF-RAq*?tMIJ zQDK!Eqey-mSd}FGgn3G7OzC1+=JR63sC|6lSzyD{HZc70`Po>xpYdI~KE?UKD8dL$ z?Bg-XN7;j9$#eOvv5DvjKC#*unz>K>rXMS^R@P z8CEta))=J?D=5oH7%AzUG|rKFu|6;yb9-FU3##PA`}Rrb))UrG@GcPE;F<|jzLuxe z6xWgj^u-Oi!=q3x@82Jm+HX$`TCchlji|d!N^lqAlQcqj@S81fhBU{Cv@R#iE6J3{ z!l+ZxEB{#$Uo3tJZ4z3s3GluCt7hs0?ruwgt+h?t_4TO@a0aDl=m~MHuvJkCWJCv%dn_de_(@|CewX!mT&|;8xAsTk~FM~(! z;VW>}seYuJSwB-82DBtJFCTG$?=jES^P}#0b^e~zE}->$s|YEr0wrb5&!}5gH{SIh zVWPp%4Cw!{3~`y z%+tt$(CjEIjlJh%TkmhX8P$5ovVEa4l!E-ZFJ{x$Mxoesp!Zg&z zTUv%z8@Fa7(2bN9QDb=df6RuGS5uY(}7Uz(8zP5Ox5%w+i zjuCO~hyLI$8QE7&8r#JCgK&`l-fxB(esBj#?}on-g>qM{R+>N{D&wq3@ddO8$%T&H z8nXJ+VdSA z{FGx@m&Ec zmG9TZwbyXzaDS(Ybv%$VgkcLi&;K@`QEYYx5nzkecRWe`uX|%LjX!JjUIhH}K1Unf zR5W2aPGRRCs+D71Fy;OAXN=*Z<=IJ3S2m58*5=qF5wQxBV-By8<1{nc{6Ni8rUj#W zk9Tj;Mi!a{{-_z^)5RZe{v&G|_~&anKQn&!CgNQJwb5T=iKL9t2-0{L=iSqxJkf?^ zdvK{dXO)g=Mn0L#6J7B;DhK860uzQ0&RaNWgtUTLa?T1`-(>L?&wXy}TUFfjbcZ*d ze?5~WH>>4M`9<;M)JQ7wlk1oye3m?nPG*a|)hi^0xC@8pKc$U-ngq3Y2$8Z;4!xf_f*~vw$ZKK;1*Mt+%a3Jb z3cq$(`n}=Wjgs6GS;fha+5`wJ8VwpQ7xS+_2sQk8$w4Y}Yy5l`Ui`3|&6b^*;y!(j z_LBWly=!Ln_hTulq%v(SQ|)`X`!^8__arL@v9zl0(#7ZPgMQZ#*T{69CpAQ2H?}OM zt(1feE97SS!1K>}6EW9LbEj*ut6Xyv@h@M-BwoU`9xyl5CJ&aKOPoF#)%71azpkUK z=>lF*l$ED2@w0f&!h>k#zeNQ3OSyPZ3kf~h7imTGlC6h5^5HKjmmXzHkraP}%Lzzd zP&>SYsr9>Znv5TVuPISM?-u-E6{M`hCx}t|J>sPG{W*ZCtX;oK(HYthJ3PG0)_{ma zc>T6J^m}NxqIN3`%F{XomWqT%%iF|aaKtK$9x_?GBc;%^o_cHwIAxs$pPapI%Gy)3 zaVkU}&ZRgWMm#Dq*|+!`sEPO5y76>UNJk&ikhh^VXd;Zi2tZA44pPr+*P%BwnH%pw zO79H>uUEy53A;RNT(#}f_;7J$9GqL&ygXgdhvWuEIf{SOY8}}S7mrqPX^Cfe2Z$}Z zWvyPQ)zKr}I4xpPD~X|q&GqWnzCV_EAU=&BsuGwj5}5qGOoqgdc( zKY0VaeW9p4dpZ#x5^~^UjqfVbD9R7%+|u=jp`cbRLfS!)!mGmFg?%Gh zytsP5YZ|E0 zF!KMXH~?41u2?c6@$6hF11p+DY89mnerC|#?NFOjQp%O~Q4Zm=j+u5Z6qpyMm`3I* zq=99p53h%FavI#$hQ=UucxYFOoVY9hV_H$ufBX&HFaai<7i}HP%*+8=Ur6H%xD*}H z{RTHowHZNyi&@wNNDsth37=S3JqfI%=EKr%N~Y}*cvLp|x&SjtBw$`Z)CZjIP5eV) zp9GZvn*(wWWkRYvT0bHZ-)enzLVmYvBPtuvqN(hOtW7@gAzQu;xT}N#x>g|N<(*B5 zWRX7=1OrAZJ=a*n5#%^eExAxdV|MkA8%v0{RoFar5*VW;LQ(&Wp6k=TSfk`(b?bYw zI2?j=o{drIZloZ14GTnzg|F-pGNFB4R6u^>As0DaEOA0cfiWr* zyo>a}rD&}FSPRpKw8)2UyS>5iDZPy6^POuzI@mb#AiEj6$%8$6uTJ+>YT3RA5G6ED z3sX&{qWNDMLPVvO7^Cg~Bz2YATv^mMCeT&13gZP0w_05hqKzU`fGY4ab1^)=AOsJ{`e1>erL_KoJ3PXS zCgktvkW$>#bO#tI2uFWk>bp;DS(CnNG+r$(6lp^o)IdoA4~ z&*Q$W0Qn9vNsLAJjDf!Gq@Rc8fIj~4m)jGk@xH=LPS5O5pi`106kmkQ9`vGxkhiZ; zD@Bt5X?GNr5Sy{LK^3n$1dVmzUC5JgCCa5u0o`5Vdpb4Qf#WWEyhKxxBuJMW`{o7` z;Ab zs{nW}_P>KE+%LJ>{N40i;0Ga15wOO5sPQ>d zN9j|$-szNlO{(W;q_`(3G40E9?ABwk$%cp)KxL9k1yFF#^E%4kon1@5rzI31!2Ikj zwi6kj+z#M&d}P>rwHnih8sgS+*Bbju`m|7up^n%G$Rdfb*aNs89}H97G4*v^ zH(=d^m5O8TQ#a^*4&9gW*XnkztNM-YNxwfa6I>itmgh0HsexSr$J#fPf_+Qg8=O{H zyU@e;V_w!}UlV*&WJ4qa>b%?DF&hu`M55;w?=L2F+DGVrN3bGod9smr#u8qAlxi!r z3+fu7P7-#%-lVap?@$=$5&aLTpZU2|LR8}B6jwAqgR@asyGn*62ZEJ>6Sthl?=6)k z9zuoM%?_Hnq9DlMciZ`956&d=+S+(Sl&w%WYWjjD@-~ADjmI3%@t+f%Qnh@C`+}Xf zvz{EwrYv*l@_}!@@yFNC(y;Ph)r)gIe5~iUZDaIK%_T;%d7rZCuLo8czM-5F&qSot zbD1p?>W>V^=HptFJ__$FMluW<4#w&MmG7jlF~_$o-bc_ zENb&Bi6TJZT$pOng7>z^HD4*XwcbHYnIDS0m9k}Dk)Me^x3EnZTwWTvabZ!pJ3E(`g4`$%23cekx*J*5c8p-p}eh z(_{rRr#OGGeBE08^8BX`YaxxTKFpAL>V>r?+(Tp{~NoPTnr*+~eT!C<}cX%l2cneCay2NzUV#)jO)X9P;#diT*{ zuDA=*qF#dcQ3QTejvOs^;yp)+EML8_j!89Cl!LJXj(i?89;wdWn~oQr1qj>ZNT% zq>*iu_PZ68u;ks`TwYGoxrD=98TLjkMUK^gL_EO}Na6{#v1BM3-`)>R@WPp^vwm7A z#CeUu&_+POHfykVF2x6&i8?oY@6nNDNXcK(@T>>e9Xm=(lT<(LBexlWz|Jg{^h#yCao@w_jC<(IwYEG(Ab|>P~ylklu2R zV7CU=1EHMidX_9BoZ$0)L@!|cdFn6*>$jaG)_OZC?rvP2ll@b{bjB>yy7%X$4|i{P z_Jd8#V5$fqP+IciI3_(JF}R{C18@ z#~!Y>be#pW6W3hYHh7+V#$cMcC7zS|j-(2OJhpt(*=$~Ry?Am5!ovE`=zg^Gd+@bk z7p~u%;ikp%T4tpbXQ%bBU{-LCVyw5mbD;c8ieY!)C#$FQ3od@O>5m{8RVBWwkNf7u zonboQt7UiA{Ml;Fn|7xR!hZiy_+T7W_O$&abFcB>5FJ_hnWwskdiM*fBXQzVJwsFGcOxs6qee)*Q-T`WvZ=nSNYK z8+Ym8t8RFSb*$B-7=HCu1L7bD`}xy3hV!iPTi;Ju9$m^x{Lexv(wgnAk-Z@98c$Hu|5(MxTjb|E=Aif4oO$Zq z-ann0;zS%$zgSNXb8WrstO*M5I+4$oH2dOT=!Aiyh5 z!xt9V@J}1Z*(&az)cBhjCA`2fd}q7bA-mT4D|avD{n8RZ-Q>ruz(w){T92T|g+5Hxz!u#>*=7SFXv*vmT$dn>Z~>> zq6rWOGWxVLtK&Cfk1v7+lx**n3TLXjo|+90{1V;nv{MiHTKW&(^-Jg64LK4>k6}j3 zS;Az}e;Y%IHdTWAoY;~_4naO8WM13)Nr5#!YqDlRgzp6{%sjAfVZ zVXS$*w2TR-Ny-cQx%F=nTQOR7HbJaoy}!LV(!65B$Awd*>bB<~vRX-*;oe@;QF$j(`7}jM!V?eJ(W~a#pEcL|?0a(H0Dw#nrwzPzYZn zRbW7C`VYP23|8#8S^Vi6GzG6TB4VG6QE=O;P?4d_jisF4dW)Lu=skk5J36{K0$*vb z_w~{h%4&tfpG9((G%oi~HQurM{fE4b`2IhmTS&?bytFDfDJdjf6dW>alTUW*LjXv8 z6~gHRLECK-;|$|uETNx*jN`c7S9gQym{aZvorSaD4MbEFiKUbGh`YQcYx){yrf!c( zTLlf>N*AG)mGlphfL=6283^-0hm9YFQgL#5(_j2A5e~rB0QQ^R3#;}B=8ybeC>}@? zAd>(stH>u7Afo3}v-WO_V&p$S#igLG-I>gk2ejCXkZ#>inQe@QV!AH@f zr2vj{Pm~#DN*}@2Vx@7gpB48wXsvIxrOGg|gAqQsYeSA?S*d<;a$#xZda1vyMk*=N z_qZDJdN;)6tWZ~|HYEe%`O(<{R-w^mquEpRt0V?wiy-aKHOTb`khs9#qm%97SPX)R-X6`mt&F%+~fc~4Y0CQ&|vxwU=r<;kR||(HBvz?0N)+@t5qfs zKXU_bFu)Vzlz>S!;^l;aFhI6~y_D`{MMMQs*@&5BT7l7B`B}utwGNEx-qElvJ0r#b ze`zM}ZEabH>!h#=ZK9N3>$U*kl3b0Jv6ZbH99*J#K2+Cc<)QswdxJYpnT$J_CrG1< zjDlE_A!D*nUg}m z)&p+#*k9XFk!+J+<;+rG@UJpNu$Yc?D4KQ=B-Tl`#$mb~*uJ!}0GbAue2Sr`NZaGr z*5`Mxe7lQL>$WKV8`z+VVO|2Sp+i*i$NSVKZJPB?-nl$*yHKpfP1w5}hVq5y9mbpg zkW!J$pZSRAZ#+N7SaSmFOBg5EK2OZ2OMNd`tjN7OMH1kMZCM29oKW=L+Au4Ris(3Dd$e zB&4P}eV4K(MXHM9SqVc?3YAB2^~FyZ1Ks9%y)p|~SjPF9%BQO{tt)q*KI$$Ih=`2) zL0~bbSIz)=*caPEF)zBg={hZ4D{0g5sg%+Q*l18z5$Zaawo(X_7!EXRPA+S8bAX0R zrVTc+=x6cnAbK?-H!Fpk71W1g5>w%hMcdm(l-O>X(d7Yb6TUg9@+%~IbzE$(2)bZP zt^$h*4qhcA%ci0+*C((9ta;Ga4R2gPGV#u}CakM=Kx)pX8@=#Z76&ZB03B^4%mPweku*XgzD zz1;*hY*}v|_b)l+*8@VXAEw#1siQ`Yd|7|rEF!4;^Bvnb4yZ0))j!V4f7GACrE~q{ zhFpzC98r>rtFSgG*`)J1%MaUf>IfKzm8Pfp@q5wtc+EyHxx26eIJ)w7IZ=3K(Mncq z@Hn{#H1S>1-{=ZO=F+|vuhsH>TqKR=lNYN6w_-Sx8^76{uHR8V2`wOf=UVOG>60SR z*mkvazh(-Ywr&iDyVd(uY_hioJ?PhsQO=g=XDGQd6}#bGbpCJ*DlSNuavC&vLWij; z`Y=J&|Nd}>E3o=T?%44autc8d(hluF1*VJZ`NJQ~$-P?hYh1gRpT}ujr#Ghmy_Q-Q zHU~Xz3~w;}AmT$IA{$x_((QZ99j~S*H+B#8Bv8^MT|C;_olUpIA_efUDaAAw=@BBH zK$L{KV)$qr6BiL>#@;ZBJ&uS-W%_)Te-7 zxZ)~}PfS60yF#XhUflX7{R{hp!JhLFu*6T>A#(T@Nl?7QvGKWcciw%0F?(Guu1b?F zqn7zE7l+xkUv!V^2UNL7gd(~s{~f=-+_q;Q-P&RB%P-UQHwu^MY;5ZJgPO)0+q}{z z929f_a=s`9NqPObq|P#%#KMkL;v*$9`FoWUnSlBj$%m>;>a-m*m`jRF?z(bkNaZ>$ZQ#-0UgU+~#-okw^H9GC!9ucONc&sg;n3AlR7fJIZ|Q3oDWS zPTu`qb%a75B~M2e()o&x(`J7=`$Lfgr1LOCBi`k!QadHjYdMUq1!G4WrMyRrBu33m z!v8XwGY5efxN^V_I~l^mjc#>>@pqC2;@cpk_iy|$f%t`+5OL~=NCKpVukh_s^x@dHGnWU= zv0_?8A!DNi<0Ym8rV`kR_vD&hdegx+pX&#m_ly~pqeKvRUK?!b`sm5Pyt2OV$`)j3 zG+!@%A1MyU-jszln|hgid(^`_E9cC@TEa-oh4p$BXOH$so{oWHy3%GQyn1QYZTdcN zgzM4%b%_1@w6x`2z5;n(Md-gpEbEVOAB7XLa`TH#1S$VnY@|HE-NRV40Xfj9sdWvU zBt|$PnbnpVL@gI?%Y#y)Bna=U`LixUYc$TLZasMLfZyYMF}@_C#hbF3#rcG+qHx#W z#T&*Kv_R`FhkE>?@Z^-}Dj|5|`H=9EWszgW{(}C~WZ2ZPa5XWpeVi(y?$DrvGoldP zqnv#MVug60apfAZYyE5rSCkU7*d~VSBy|36%aM0JNx5(-mk_RnxEQF8s=ApFFfr*} zTC*am<%K3GpYKv128`fT-*%8G0n*051lbPhqCm7uz<1C+kylE?V=!RK_hSr=?XqQ0 z=YIQ2k{^*z4Qgzu9b1eaVaFqJ)6U^a_HD3)9a?JAx?%TdNONgpJnD}HFeqKvr7?^u z`Bi&s$Xnz6(KV#~Ul%-!!&X}Ox0Gp;sNhFU(LeOo2=s26aSAb#Qf($o@SmKc){&`v zBuXxmO~0QLqDa=cc5{;AmGDSazdN7+cXISrsk`<5VK4hTg@xmNDR4JE$8U~uU~#>6 zWELn>R7qeVSG$Gr?u=Zp|Fe2Yk&13@ntAJ8m;jsF+D}aN1rpJFIu!f^d2>wg;=#^P zfs@sbT`v}ULQzi!SJ43p18so5Xj;VJoVG7)Kb7jjcqq%g?OQ!d(zsRB6W@EJbBmSm zLhL$LiCp^|R11E^W4}Rl93vc@3GknkDqjZ=3lBqcEUcJ)C4{aX`O&c;lS!e!KydsFbO_^ZkLqN%J0CDmi1Z zs9Kmw){W)te`kFN25c-7|6O)U+# z;GO+G%9n@vTdJm_>XAY9GOJd@ zOvu>wXM2O?v4rP!T0PAYlu`Tu^gh()h_DloS$xFHi_@k97jEY@%`#4%L?WrUn6pya zyLKc~UtE0UZ9c8jWQZ*Ml|7}w)Mp@T|9j)toVbbY@#e`NC}^~`V<~*`WSS*H5XZye z!1q_I*mc3} zm*h_)xwijWI2AITM^+oHI$GzwFU?l(xPfqGAyq8?g6bm6krT?R5hk3UA)&@{+ID0J z{oxLOO6f(Nn@f_Rp|@EFcO_Yymu(2_9+ztTspEs4hzC=YKYc@=$Ii2pXTvj}Dkl=e zx%`{IovQJ_$08u8J#&^yPBOCYhcsce_JyKmjh<6Kc1Rx~96!s|^fR`l;Xf$J@LbnO z4Q>fhCHR+}7x;VBTD|!f1ia7xW9u!Tq6*so@m;#4q#FSxlm_W;kX}lG1r!hg>FyGc zlR;uo1Pak#x1?_hs5fZeDB@)_z61p&{zT|3xnZ2>2fUQJnALY zh>1{(0{<%iOBU~++WQquc*!Cp)=#7^hERB}_0sn7dNTX0RiDne9SnRv6?iASv5Em2 zi#<3DVq`x;{J8SQNb3)l@+31TYGS`T_JnD7YFxQfR13O0DO1HXPPJH>of(mNKNz=0 z8Tf*oX}~YU7h|AXr#FV5OGf1)>G|^uk=4_vwm%$#-v6AJv~v7=Q*S!EeZg zzYHPpHfqyh0tTeLk=;_pVub`Lr9|(`V=p-x+37B?&cs-gUO;LT%ims?`fl$cQ(|wY zPzDQZkk&f_l2>8~J3R?{kcSK!3OtN3fZq>XFax|MCdDfDDA552%(C>82gt>8QYm~a zi{0yht^&?HEXsEGgRiS&7p*B*x5OwE(z=x@o%Gn;e#~g-GAczfQpu$xufD+P%8csZ zT7DdK?D`3p&h@%aJ&eXj*KHeu1J&4#LswUJ$7RvDQhKgx!$oOhN%7l1#)=i`UP?i+ zdbIW^%>a)8EAd6ekx@D5ugmr&pwS%yQ|WV% z2E330FKI7O6?@@f6@$T&*FJdSU!Vbihg2{{;>S`hZ5)O$!jJ%25KIa|h+lqZUx->q z8l{3Bn+{9<%ZkQ2pf8JBUWpFc{{ir7?xw;D$N-q(0Zf#o2pho33g#ssY5+K`_OCbu zWHADeQOe^U1ZQ92y%Q@n_qed+mvKCE&BlQ?41)~Z2qittp?5Z2x0hpg^5Uj z4WO<(V9X^*eYjo1GKf%yLPiTX&6SecOuF!vE0SHefQMn;R(E4y`*T512vfEwD>73S zI&P94aX_fFUk7*Ubqac>E!a6RiBW&naiCDtKRQ}lhZXV5b(&3vuX8jC%M=q|`{fcM zeMvmL$DYP_dXh8VpuG*o83T2pUDF)go=vFJ^2!dA2|q zLip4$ggyK%8D*%LYVfvWeUHKMe2RjM(t)QD3q3Mx!M(K^|2HU>t0U+^BBy?2K=U^W z87V;owk)cJX{UvGqq+5v<1-#DKLU_V%FoM=QESPbjfHPcM8J zD-Je%4A(3`!)(iF)Q?0}??rI8K2ozr?W*A(MzxYJ>aBBq305HhT^*?4l?+O?7VdUW zB*`MJ_cW<5_?#+f3qf%~MWnG|y9$8tcdEkM?6sH+9Csg1E@9)}Nlw=1!Kn;yIAAfk zY*4g@Y3AkaqdhgxRiVdX7pL_$bB-=Y@BIZ6@6Tb{E~AT)^keiT5zi8~E1%F78-BTX zkLTN9rw#hXhXaKh8bnvoMrfprFN$7I57T)JQ{YC}J^vng_DIOowkp*ek+rPRUeKiRt)?%PMaNVgwr8P#=_^T$UYzke=L}%a(?~^9oGF}f1IlBxU4bn9jyW*w`t&A z*}ivm{KjLF*gy;(8&x9tE}Q8sagQnLTaSMFqj(}dOVuP#sl7VU7bKGi`rr-&T@~Xe zDMS~k9qU(GgjH&tBO}b!A2CHQjTFy();$6&O>+9oQgJLBV`MHE(z3oa%mcDqN5X$Hnn>K9^$d z;LE(BNvAKF?~d>nnKP5k=0n~Vd;F=lz1k$$qHL~SM^G}*8N(E;=_-$(UtWB2?vDC+rReu% zt0{Zo7!qWLNaA;IEvYDZnI%PYx_F-Yl8>lqdF$|F4#aPP!ylqO10#q?1|Td(MPYYW#k(6u*p!u1>Vg`X|T{-m=_?>`D~&9MZI zd}FGpk0j;Oo}m6VkVzR()El-EPoHh{^x`pB(aM9oAIV{z3U3{Bcu;BmM+uwuI^eG?*IxH~i)g@+Mktu3D>A?+Y;1X7j)`f$gLx*wrCmS%p zvPl^WlTPcx)y=)Yab%oaX!rzYH^I+7I>k{7b=N)}ls#8|j*uU*c+8;zsgzaLC(v2yC) zkNEB0gxw`_sX8m?NGq7Y3dy>el#wbaJBt}3uc%)Po=7h?x=x>fxhWV#jP(%W`h!3f z{W$)eNbg7+rbF!(`!6g71g2Q!?XEKAKW$^^e&<$S6O0TQF*L zizZ?4f!~+d;|&bE?w=SBFEcm0IKH3j`quet?J}mKM@?QPi|=@!M0#pyY$ja~^<+hyV%0s!>}#Z8A^g4FQ6N0 zjol8+elgyNx%|va*umn)s^H=yRv8nEVM_s4hX~#}W9b@z>CUrRe6?d5&jD!+PVFj> zJZHKOm}6 zBP95MgY%P%X=j!u?8|7(XK!PJ@7UFe4)>y6C093B)tY@%IVpE4t!y5>P0S{KkVBaP ziEpPF(Ri2e;Us;FjW3p7Yb$zn@q}v;#?9oR1KWg$&*q#aO;dp9j2zm%-~)yT(u1=V zb9wjA!8&8t6eHU8GTJ#r`@CGd4$fOb)#sR$7X?$$qd#SqbwBePCr(eP zoe^n&bD*WaehhuVtLn)6z-^d<@~ry7X}Thc z^Zk7EtH5n<^ik_XcP3H?4_0nDF&EDCXm*WO)Q!BXLo0I)`eaP&r;d22&{}jhU-GB` z!~NZ@W3R#Y9zPyo%8b=4l*vP64Hij2O2VDZmrMfH$;=YH>K-_6B_y+nGQO(>Aa^lE zdSU*@)cpKcWG98d}FwXT!4$3+YsP^7 zg`^WY%c9u_L+dY^XWN2te*7eOhivNYt@OCQS+-Wk-5Q)Ffx(YaGkSL#o>{--$Lq=I z7{hoVC9PN5tg=8iT}b=-bsDnF(W%G==I4u|*b5~?$tfpJDo5@8VhelvwQBW6jv14j z3$^cV?QcUj)__ux-R@kpt`SFBpV{7Tfwdbic2w)`O~Fo>{h#d7R4Zep z9E5%iwss)b2<1`Kzk#gvrAyE^1S_-ocj8+kw+BopqmZn6u)|YXm=KXxUgW0Y1R!8K7bNz7#`)`_9#hZ$am=#z{pTfH(Z4{FHzYm4`Qc7a-C zlF}k;cY^=d@|9e%;xAIru1#JN7fEl4c zLIXHepqhWBK*_%p98C2WN1X>~?f(O({)?lr1GMh{fz$lM#Q|FX|G;Vg;djud|HD!K zrJ&%uaRK8)4+Ln#|KWEDI2e#@xx+x)00po=bwD88I}iv^Far?ZwN(RXBk=iefPxu; z%pJx9PyqW==PwQgKlqEGA^&1HzJCEAhJu;?VP}6a0-yiEnEzpOe=!oL|G`-PVK;v< z%DXZB4N&kyAOVa8?QVU5vCt|1L+-xs(Le0?FZSU2e=yd6So2@(5ukPQFF?U;Kr++cf{$C6~>JRqc z?-crrqurIa{lWedLBYa*F?5W-*q=IoQ7BmCFNSuvFF-r&4}Sq5hJ!`_V&J=V12FuU zKiGf2Q|vGPXU*IHVE>7rVDW$0B|rh}fA$3m28`SMS)aS#CV*i_0`zZygC&6kus$fE z00l7ozt_-z?kme66`&jqj0NJxu*USjwEoj<54e^`fYidD91sEdyWjNB|HBax# z|L;Dv3{nNk{`7|_g~@>Ha90Ct547I`5=(cvy8z_Z00O^D-vtz)4nUUwWbUH>j_>aJ z{5!rHpvSvi0f9Dw_R|1e`I7^pfBmoiPks|f-+jm5@ZbKP0R?}@=YYw8$?ykW1KQvH z4%YwVfC$LnwcYstdM%q1w*9l?r(8qRQE^xY!qw9V*FkvoKK?XMj@;qZ{tHIx{Uy-O1~D zti4hkfAp&wn}T;;w=emLeip+3ZqpFk^q6^rG}D4B9lAJKSeU<=(Ga`yw)STc`m=qh zGx;71wt-UFC$lYpQ~@0M3q|k~h(c!Dbc@^4OE$^?$5+2!_ONk^Eitf;BQ1&@L;8}x zV$4NY@zW1#`s%<$@Zr-f(7>_{p*9*(KnR001tC4Ae1vD9uoFX*T%G2tTb;EkF^G&k z?u)4`s|QlCE_g(QYP9dE^s@53ok1W{Fkv_dJve~z*`emFAO5@=@4Qw6sDVs3QZ;?| z7d4kU(N@pN`1*j`Y6u|JE(HSF^883KTe<0@cKB`5xpu}F;(Z_s_t6|FgPj^lXW4id zT}d%gp0%}Fyzl)e1akW1c68e6_#K3=K$A^-*y05usB`s>eZB9=fZ2Iry70TL1tfX) zTOw`#=n#ZCDdc&B*#HNjT;MAujx-tQS@+N05Sx9*E&CM{(Z+Me%ZZ8}&p}Z4Nmb|) ziu2a!-ovD9;`WpQT(*T&x~K8G0}H(&IAm_+Nhm#%KCKqPWj!HhEVl*uH zW+eDHM#SJmzRHWC2S9HiW9BM3)&C=5W*aW3ysKp zLULmZ5{@H`q{}>*uQuFws`z@K+?0reGR)ypNv@{_tr_kv!Wv4aZtRGZjs8I}kfr0^ zm}hLM$rq~{;r6hxztPA3;jpv`Wf1M*Y)K(3`MLgF10Ta7>xWd`*842KuU|8eo>+z9 z^FNZzWd8)%-c-UaAlm7!qpQ`Pe3b8!x;0%-TQuWBs<8G-Q`faXlNc>G<3}3d!k^!+t+*UV}VmqN6gPdau-F@T#v3`B+1C>O;2gGKvr-%ql zTX<4iP=$)$elzLpS&K}duRs&$49%3D*-LkalGP_u)7onlT0g3^>!`z(*F7I4NIzP1 z>oL##E=^6m5v*z#{bF7uI_*_z<~t@K2AShVO6z<?QJk!{c$1k$nu23r)rRvsJ~9EUrP677H6!+Z3f-2n>IZloc6&kqs@5BtoOE!Xh)f49#uqja!!PPwG`s(k0is7*BvxbI;=^7aKdu z>hl_%J!`n6@1_Z&WcOD_QjQFIYCm+$9{0=`G_yNofkR3kZApTe6y7XFOWun{{AKCN5r{KRWK#F1)aXIO`L+!sG#_4AvI(_xWvlomgHGdHYb$MTX|MUMhA|64bu z+#WX{p}_!+u=zWFl&Xa-+EDp*V*wr|Qce+M!uDB+c^D^M0~*hFK1;%!uL-4*hSVdC z+du5%P>*n)^v(EGG;x?9KvZ8(PIU7y9%GjHHhq$HswyR9$H^2PT4Bl|JolBLkKB`B z2s2>o-5PlT0wdgp2|OmPaW*7wp&G04+n1)Gr<7NC%qej4j&YwFR17qbXxk`lFX|c% ze#_%ZF!s5f~@s`OO zprt@d9ce@>y+TF9_{XZFXA!E)_!ndP)Pv))0%Ul&BkRITZ}<)Pbsj?%&m`Cb+*{4z zHPl<4A~Z`>%k6p%p4r-gq#vS2huDd4>K;$Lymsot=Gn=cg{kY0q)Bmtuvc?QWJqb>$$*Um&+0l@ z1O&6&ohE>zWABJ2IqVSiyWN)-WEMuvE5_haDQ0<*TQpQtYGa|2Co00R(j1!pC}hOU zxvxH0D39iWM+!TJw$tJ_!;S{u&Kup&wzRYEbW{wGJ?U>1Q&Hq7T_>snnVKWzAG+OT z>RLY~ztvt(rn1>!dE3Ivcnsv=AlMuAR6(|dW!%|EmNgZ-@c%Hv0 z)yax3t!E}p*OfPY)TIRzJ^yM_6?2;8l3l_7+wF#RMr2vHZZ~bUR9S){cXa)cyxT`I zx(=m1QiInBkD5Zs$2Lx+z(2kfGi5JRoP$s~UM~08qaPNycuJ{iiV+4`Tl4Oi{G{X# zz~6Q|X%g7{!M6=&h7dG2@~*Z#`)-3m)uM6Z$ns=a%#`N1k^33rMI}|d_-?Pea%sQsG85S#WY<(32dCN`7-^&nG37M>1nXnGU`HBkhj=v}F6`3c@ zc*v2b-dsmDq4r{hr854iMBbsYH(1cBD9;A95JW{XdZAXhey^2pH9zE7DCpbMtVX6x z?|?dqFyYL1^v;RX8A*0T%s(^l$=$zTNvHl`8$s*MwrwOR^ZTCmab;0MEGD5^_{_IF zDH#glrf?=2*J4zqoHTJ0ft=FL)<``bmF=t8c~)kpYaxRhocB4<$@Z zPDxrh0393xJb@J|gWwGD&xYhYvGH)3yPi*Qzh`{NykO2S{KRoYudnsTy(TroLWf8O z{as>#w=YA_J#S&JI77&Ax`MC@0MP!YrT#_yj*bqEXe?!QmAPH*n^%hzJoahlK- zV(t$%V|f|%jCe32LfBX>lY0>Nc_TEwN^~{h%@djjQTWe=TCSMR8$Zf{YPN_tab}yF zCH0QPX>+6EZ4dXj4ds4Se?1#6Ik8-k;{Pt-OCHX`C64myUbLAZR3pNSK7FOq;C2>nnOxA7hCuu2IzQnriWxajbP48AO$z&`eG4mDMc;8hGD8Cylcyii=&^+-?#;E& z;l9OS)TCfeV6JzlBzL^V1fCPV5T%AOQz&CViKMm|p1}uOD~+Vc8d^zn30T0k^wByI zHuL>9Jik&0^1pM?D5&ZxD6xy$!5E5XhKe%?J`p#MvMO0PbmK=i2!uW{)THmoJjsbB z<{H{a$-FXmz1{l3nezl8M@aGeg&6bhS>gAR21kR61|}M^Oj4fk_3wQfVD^o&$4+a! zuBWURU0y6ypB-=_B6r_SI3zMS*v!8B#WS5G$B{HtY{I|V1amm^eaO1U0GL~5ct$5B zL+B8K1%gXum_-IX{HBamOm*W$Y=oq7$4^Ob9(AuO(Uw~gJbaw%l zS|v+d1akzIIXBTa@j&yku!lVEY(%eS@;WUq$B_$>bS;i#K*-M1;c}M zj#UMI=~9(>9#w4kjZJ*i`=0r{gH??T@>e3tp5?-pes_ z>wv9k^e~I<(Dr8*@0c3db}8S-M&oPjvx}OTxG)esN1jiALKpi=J$E0fI2Xlg9y@c4dMVy7ik8e^ z6#drz5BJ^pa|uth@UgLK;$)TAo7*nG>=+4{;Jdxq?+=SV z>eW$2>UG%Da%w(_q7UTyC`_J0xYjBW`#CyU+c32)cXdnt94jappYa*J+M=b?cNe*P#eLmImJ#ucGNC^UzIPeV8=RvfN_cZ8 zuiLf9LZluY-4DiiFFp`%NF?Aw6l{s_o18B-mYd=;85AwHJnw3U2lZ`2!#7&|LO<3i z{(f0dd*>&4=go2jgg<>p5BdT}3VJ#INtY0t@R!NYl8QIi3LDynG0fIR&YMQ*KC+_s z`|FaJOefP#AgFHTg;Z~M$(}vlor}b}EWl%}*wu$)l}E$OAuDM!-(=T44fHut|28f+fQ@?GpdN4vcrFN9A@9ohvZA`-L~dnxpoF|hZ6OmI*v%B6Qq=3p#I{W2lJ zSRZn|__{HgF9u({W?4Yd!JTYUbCdJSSaPxbZ1fXnRnz$L+Of|Ms(=HAH&fS)aj}fK zN-Nw%2U577pzMc_uFyh4XSPHfwQ@@`%uOUN!=YxZVLR!R0_s$Uw}{2huv$?a2rHCGAG7umgj z_1Kyn_9QrYHm)fiR2(VbpXhw826QBA*| z?G0YHg!U>7B3hiTAdb2U2$hfSTDe(sV-RT=%lFTu<(584=oB-&1aaiAeu1ove3YLh znc&Ca41v%`8F69vC^N$zVt2_dh~UdRTzUA`FmGv-JaN2?5eN2A|7Z;W(>N+wBf=>9m3&DL4=${vSmsobV zMt!$*A%=&VFH^TJ+Xd(Z_LWP}p@NqgT#C^M2&O<@`3Jt52-V~iR=SEiL#tSTb38bL zkO-I(;Lh&Wrql!|YzAcT7=nPr#hsT+1UCsFsHXsA|M zl{#~hNh@dKJP8u^pg+lh$&T9UJHx#44RcKgmE>)Tt#0~;;Itg&{feD9-eLs(2@-RM zlGtgl0?nh5o^}H<1o$i-I^QjG`MT+Lxv_{-#)U~{_eY`nPpK6}f1r#DlZHwj>M36` z*`v~2L-Gap7IFQm?Y=M#NHthg5yxJ>kN}J>)UU!nwU7l;;J7<>e6sB*e~SjrZ#g)c z_C#N*eeRBx`?wkn&X(rYsUd$F5fw-9H6ge@->7zrmj%=-%{AHI#@)B$LTFG8282_% zwDtoRw;57!lejBw0FO-uBUl{;L_I<=QKfn)X%Q|eC_8UF?2ID78D%6mxO>-Wlr1Kv z1)Y8emo{>jfS9}`O4hAXJ*@O}Z9Kv#iB8>Xtm0;CnyG*zMEQKRthPY1KjwT{Z?rh9 zC)-49kSS9?4);Uj*!NXM$km?9CVfCHjz?6tRNrTrTp>}E;-<$prjf!tUk3HM1wesu zI$B(d^j5FE%^A?hyS}-J+1W0`UM<}aU4RMQvOwjB)}hN9fRwCfn=VQvl+dSQ(86cL z07^JC1do~FVYqo&+nBZY(&2FnDq+!AcqncX;C!+Iow$|h2xiiX2gxmWh%3|IyqyeX zDvXj^KuGH`-EwEtq%6+OqOaWdk2*e1F@S$|0?)m-JJObUd4XrYre`5+`P9pA{~5s6 zOIHB+hS^e54;B`LUDdr4vQXB(JA2gr5VNX4?pt?#j-D2-Vq&4cEbsVCGyrQ@Cw@;y zf?Qg}uSr#Ye{s|{y}#%f{5#kE`Aq!iZ$wFiq<&f!kM21uI>F#D@^`m4psPo9%@t`> zld<nRJB$y_{MP3Qa_ju4hc>0_85jkL$f2SS8a>$#fj(VBv zVSTPEkq{>PZQ1GRN?T)+Q0p^VPu*Rs?TxWu+7yVl(QS*)3)_WqXvDHh_wbjf^4%e3kpU5HpE9ysMW>#rVPdQwKcow+Y(s%Nm@z;yMG4McfMR*AjZ7twr%N z0h;GR)A)t&a63ws&(8?vgB!Sy>QjA2cVcaG`=vH3RA#MXx#}q;-=<0Mts3Aw@mH{! zI@)-Yr*Z5x&V$Gv~Jagm!B(u;ZD^ z11U~ckKuFwiSO|9Ac5^XWQ|-TY&5V&nB6nrs|-PV{xJ!l5D^JyKV6k7PIDI1<2%ZZ zbzhxzvyhX%r|dyN3|@iW!wbUpkS4aiy!2pHjzVKmc};L|&!Rg+xYK6vto7&BzI`d(8jY@#kQ=vn; z7kMu}rK+S9lnNluuHC5&;z&}Q`R99b_K?4ImFnMp=!viHFpcC@wSz_%J)x8EVB6_a zv*CGRx>1bSJEnvK4sH6Hm(1=5JZ4+QJhd;j-h~~iA8{|z6&_Ay0L~U%BiiwdB3rf> zn)+}2UuyH}F1hdid}(?4gs;YOLh!AhtU!c|>2|X^O4==isXE1)vN=fDDD5q&?!fkA zn1iByT1Ku#UQEJG*QT%Lj|}xwr?E2gsHzVNqkFUzc>NyN4XYQ`Nor;mIkR=2NKH~I zLcd!Mow@+VrtRg<)r`eZQt+uS#5cd1yz(YvrVqTPWk=0U$PReA?($Qdqf0AFUwIMp zxJUC^8F`R|O-EPJ(!Q|TfyC~Pa)9DufNC#ae7V$ip4Q)2UnA4eFLKbhVC2wiT9$UqrOgm>XGrZdY5H8gTX=fAwuP|oGBs|P$cRh zE-!ytF89nj$a_Jj>SH(JPTc&P{{>O`u5eTLnfA9KkyFmEaz-yd zvUuq=tw`qd@t5gdWI2GG1rnwSV1tAsSO2W=wLv40|>4Y6(G3K8KO_O?o{ZOH?mxdXfDwl1^e{ z_}xVO2dq_u%gP~xrmoMg2a^?@YZ7{AN7XQxIg=W{$yE-Pc)&^af~eacoHU%E z&;Vvu+-~$-wdS*}E)K^J1818Hyz=6(g^xfaXVsMx;}NXgrVKHY!yUg9v8>B0rn`Fa zPSP?Syphjv#B;!TmBNv)(vIvX(`0`lQG=qPC5m29(s^ zhA!ugw68pcj@OC_uoDZUqneWu5eOIi2B)BZ8E6{Jp91T?MpA)B0DdZ zK4nQed=UNZL3dP*HJImj-4T@kVoqMvJ8aJ8tq{yZM}Cpt|9emeOXPhqH^0~KLdD$K z7YkEGwSPLxMRvlRA&yn9CS7>$5F-V3&rl`Ihii4TV@?+JI-E9S6@u0H>e`)@+I|u zF66i>aVkY+o$hZ)OVW%riSBCE&T+P2+oZsbv`fRHMZWh3t9`W*K@vE2>J|_P;1Bs) z@~ffvw<{n@e(Uco770~2AIB{_?5t%469{AqIT|8L%3;hl)n`~YA%iVOViNU@Itsu; z#fYPGa z5l{PA@vwUF8kGr0&KC8m_bfxlg~C*}KKa}vIZpo@%+Q$y2nXn^qn67AoM^GkY|3Sf zgz(4+{jyprIqUT!{s5YvVt5B75obP%#j3Rjd;;8GiyPj(Puv@-H+(9Y9sRwFE&Zc+ zXGy?8DK2sDwTk|A**)@@`c!`H7{Xf?2c28-Q5G{ei!qxAHeMx1Q77UYI9fkyOhoZ%J^y!(y(R zHPM)FQ5S=ZkAe0m)Tl@e!7IY_=vS#lxa-SWPnOZ*H4ow4F|TnkajwXPQ9Pct&QC_NbF|T0K2U$KqphfV5iy|GcctAvdc4_|p1D*?|E4sma`KI99mv82 zmHsS;vxj#b%`!m8Aw(?s_0a)2`_&U#dV`O|Xl$fE<`e)wR+_A&_g3@Y@7Yagb^o+| zIV&zk(i*F$9Kzc~Q09MtB6YuaDO7TasEU!(b~{u>8B3xYOQ)|$9Ns%H_Pg$tG4E?5 zz^ENPdIvvPC0z_`_DmSU`+evglFkc4YJ8&=pAmH6!$+^j6T+FIR80_^JrghaiNwNO zUWL>qQ#ldEc_&@J%JG(-gLtUZj*h(C+=~tmr1SR2ATLMKi}mXT9Wn_5OpqT(N6t~( zE-8B!WH(48*%6+1aqTa415r&~xZY&oy`)P6-*n5!!*wt@Gc`J_BUV-D@DWB6Ux$;MJt2ATbac$z0CXeMjqWT{3-!}p zw(5DTLYySRvE4Vgzl zSKm0r>O7%!jq`6g170}P);TKpom)89TPpWE{tpE8|Fkkub6wh1fc;Zk@6mFZJbYsM zZZLlb2BQn#?TL_*unOQty+O-I1TjZ2P<$i^l-??2;2?q-NOEyO4mhq6)aUQuq0|s{ zfRE4!@Dc9J`YxlR5lFNqw9?T6>pVUi=bw~iGc=L;32EEg7mrWTgjZb z&w8Ul@g@cs5RNK+*|Rp}?YQgG1^y-5WyQMl2wQpSsf?W%$tb|l049NI0VpDN0p4l2 zeOP7)0|8Y=%z!`=6(GWE22?F2y-We0I1H#=QX(wucT5mf_r>xg!1xlux$4kRw+xny z)CHiGC}8jrAh(3~FuMVlIVh+OfAu(7(6KN8&Wa^-up2V+gd z0kG2RoT$A>_B=FIy7J#1j41>#f}t)U22`88%OYLCTwg%I6fh=D53GAVSRYCmu>oGr zolUKLa4v$73eFG&Sd+R2^l49kN<;{Ny9K3HT)mXQ0%L1prpy4_buiQ}iP{w=ag<~e zlD{r`DggJ@rH?JW+Oy?SFm58&Q(`ZIdK%D2uR~_LM0xky$_2x##g-<-=#_E9x8rSE&zJv$V$-j4pw< zz2iYHw|)%j=d_0JXC7as5ARP*A1egnPjFzmxZgUu1R=_nHEywn#|{}PRtK~Dscb0{ zl>rg|nAS#HQQ{4S_9knf5lwsJ z9+SqbylNh0>%4{_n9Uweq-=@0XAw~G=e0N?MO zFMmow7D9i;$$E5rnx+zwv~;0x`*i7kBX-Wp7xQtFJqS`*1kX&rV={gMY4!9i%I&XT zS_Z8X=i`PYpRNbVS(mUf)`yoi)3fYEYsjh>QBzv{471$J?b$R^ z9on?^iwYT2pO^v)nHV@P2rft%+^o;MKR8c$^dzK2H)%0Agg1Y*-xSW*LT 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ù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


    "); - } else { - pOut.println("
  • Can't find this J2EEDomain MBean in the current MBean server
  • "); - pOut.println(""); - return null; - } - } catch (Exception e) { - pOut.println("
  • Error when using this J2EEDomain MBean: " + e + "
  • "); - pOut.println(""); - return null; - } - return onDomain; - } - - /** - * Create a cluster. - * @param pOnDomain - * @param pClusterName - * @param mgmt - * @param pOut - * @return The ObjectName of the cluster's MBean. - */ - private ObjectName createCluster(ObjectName pOnDomain, String pClusterName, Management mgmt, PrintWriter pOut) { - ObjectName on = null; - pOut.println("

    Create the MBean corresponding to the cluster " + pClusterName + "

    "); - pOut.println("
      "); - try { - String[] signature = new String[1]; - signature[0] = "java.lang.String"; - Object[] params = new Object[1]; - params[0] = pClusterName; - String clusterOn = (String) mgmt.invoke(pOnDomain, "createCluster", params, signature); - on = ObjectName.getInstance(clusterOn); - pOut.println("
    • Cluster " + pClusterName + " created.
    • "); - pOut.println("

    "); - } catch (Exception e) { - pOut.println("
  • Cannot create cluster " + pClusterName + ": " + e + "
  • "); - pOut.println(""); - } - return on; - } -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/ClusterDaemonServlet.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/ClusterDaemonServlet.java deleted file mode 100644 index c0c635d6fd..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/ClusterDaemonServlet.java +++ /dev/null @@ -1,220 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -//import java -import java.io.IOException; -import java.io.PrintWriter; - -import javax.management.ObjectName; -import javax.management.j2ee.Management; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This servlet is an example which shows how to access the MEJB from a servlet. - * @author JOnAS team - * @author Adriana Danes - */ -public class ClusterDaemonServlet extends J2eemanagementBaseServlet { - - // ---------------------------------------------------------- Constants - /** Parameter */ - static final String PARAM_DOMAIN = "domainName"; - /** Parameter */ - static final String PARAM_DAEMON = "daemonName"; - /** Parameter which gives the name of the server to be started by the daemon */ - static final String PARAM_SERVER = "serverName"; - /** Parameter */ - static final String PARAM_VIEW = "view"; - /** Parameter */ - static final String VIEW_INIT = "init"; - - // ---------------------------------------------------------- Public methods - - /** - * Initialize the servlet. - * @param pConfig See HttpServlet - * @throws ServletException Could not execute request - */ - public void init(ServletConfig pConfig) throws ServletException { - super.init(pConfig); - } - - // ---------------------------------------------------------- Protected - // methods - - /** - * Response to the GET request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException An input or output error is detected when the servlet handles the request - * @throws ServletException Could not execute request - */ - protected void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Response to the POST request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException An input or output error is detected when the servlet handles the request - * @throws ServletException Could not execute request - */ - protected void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Dispatch the response. - * @param pRequest Request - * @param pResponse Response - * @throws IOException An input or output error is detected when the servlet handles the request - */ - protected void dispatch(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException { - - pResponse.setContentType("text/html"); - PrintWriter out = pResponse.getWriter(); - - // Get parameters - String sParamDomain = pRequest.getParameter(PARAM_DOMAIN); - String sParamDaemon = pRequest.getParameter(PARAM_DAEMON); - String sParamServer = pRequest.getParameter(PARAM_SERVER); - String sParamView = pRequest.getParameter(PARAM_VIEW); - - // Dispatching - if ((sParamDomain == null) || (sParamDomain.length() == 0)) { - doViewError("Parameter Domain name not found", pRequest, out); - } else if ((sParamDaemon == null) || (sParamDaemon.length() == 0)) { - doViewError("Parameter Daemon name not found", pRequest, out); - } else if ((sParamServer == null) || (sParamServer.length() == 0)) { - doViewError("Parameter Server name not found", pRequest, out); - } else if ((sParamView == null) || (sParamView.length() == 0) || VIEW_INIT.equals(sParamView)) { - doViewInit(pRequest, out); - doViewManagement(sParamDomain, sParamDaemon, sParamServer, pRequest, out); - } else { - doViewError("Unknown View", pRequest, out); - } - - } - - /** - * Do management opeartions in this view. - * @param pDomainName Name of domain to access - * @param pDaemonName Name of the deamon - * @param pServerName Name of the server to be started by the daemon - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewManagement(String pDomainName, String pDaemonName, String pServerName, HttpServletRequest pRequest, PrintWriter pOut) { - Management mgmt = getMgmt(); - - // ------------------------------ - // Access to the J2EEDomain MBean - // ------------------------------ - ObjectName onDomain = accessJ2EEDomain(pDomainName, mgmt, pOut); - if (onDomain == null) { - return; - } - - if (isMaster(onDomain, mgmt, pOut)) { - startServer(onDomain, pDaemonName, pServerName, mgmt, pOut); - } - - pOut.println("

    Application is OK

    "); - - // Footer - printNavigationFooter(pRequest, pOut); - } - - /** - * Create J2EEDomain MBean's ObjectName and test if MBean registered - * @param pDomainName the name provided by the user - * @param mgmt MEJB - * @param pOut output stream - * @return true if management operation succeeded - */ - private ObjectName accessJ2EEDomain(String pDomainName, Management mgmt, PrintWriter pOut) { - ObjectName onDomain = null; - pOut.println("

    Access the J2EEDomain MBean

    "); - pOut.println("
      "); - - // Get the J2EEDomain MBean's ObjectName - try { - String name = pDomainName + ":j2eeType=J2EEDomain,name=" + pDomainName; - onDomain = ObjectName.getInstance(name); - pOut.println("
    • J2EEDomain object name \"" + name.toString() + "\" created.
    • "); - } catch (Exception e) { - pOut.println("
    • Cannot create object name for J2EEDomain managed object: " + e + "
    • "); - pOut.println("
    "); - return null; - } - // Check that the J2EEDomain MBean registered - try { - boolean exists = mgmt.isRegistered(onDomain); - if (exists) { - pOut.println("
  • Found this J2EEDomain MBean in the current MBean server
  • "); - pOut.println("
    "); - } else { - pOut.println("
  • Can't find this J2EEDomain MBean in the current MBean server
  • "); - pOut.println(""); - return null; - } - } catch (Exception e) { - pOut.println("
  • Error when using this J2EEDomain MBean: " + e + "
  • "); - pOut.println(""); - return null; - } - return onDomain; - } - /** - * Start a server in domain - * @param pOnDomain J2EEDomain MBean ObjectName - * @param pDaemonName daemon name - currently not used - * @param pServerName server name - * @param mgmt MEJB - * @param pOut output stream - */ - private void startServer(ObjectName pOnDomain, String pDaemonName, String pServerName, Management mgmt, PrintWriter pOut) { - pOut.println("

    Start the server " + pServerName + "

    "); - pOut.println("
      "); - try { - String[] signature = {"java.lang.String"}; - String[] params = {pServerName}; - mgmt.invoke(pOnDomain, "startServer", params, signature); - pOut.println("
    • Server " + pServerName + " started.
    • "); - pOut.println("

    "); - } catch (Exception e) { - pOut.println("
  • Cannot create cluster start the server
  • "); - pOut.println(""); - } - } -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/J2eemanagementBaseServlet.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/J2eemanagementBaseServlet.java deleted file mode 100644 index 74639d83fa..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/J2eemanagementBaseServlet.java +++ /dev/null @@ -1,232 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006-2008 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -import java.io.PrintWriter; - -import javax.management.ObjectName; -import javax.management.j2ee.Management; -import javax.management.j2ee.ManagementHome; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; - -/** - * - * @author Adriana Danes - * - * Base classe containing common code for the j2eeManagement servlets - */ -public class J2eemanagementBaseServlet extends HttpServlet { - /** Printing constant*/ - static final String APP_TITLE = "J2EE Management sample"; - /** - * Standard J2EEManagement Bean - */ - private Management mgmt = null; - /** - * Naming context - */ - private Context initialContext = null; - - /** - * Header. - * @param pOut Printer - * @param pTitle Title to display - * @param pSubTitle Subtitle to display or null if not - */ - protected void printHeader(PrintWriter pOut, String pTitle, String pSubTitle) { - - pOut.println(""); - pOut.println(""); - pOut.println("" + pTitle); - if (pSubTitle != null) { - pOut.println(" - " + pSubTitle); - } - pOut.println(""); - pOut.println(""); - pOut.println(""); - printHeaderTitle(pOut, pTitle, pSubTitle); - } - /** - * Header title. - * @param pOut Printer - * @param pTitle Title to display - * @param pSubTitle Subtitle to display or null if not - */ - protected void printHeaderTitle(PrintWriter pOut, String pTitle, String pSubTitle) { - - pOut.println(""); - pOut.println(""); - pOut.println(""); - pOut.println(""); - pOut.println(""); - pOut.println(""); - if (pSubTitle != null) { - pOut.println(""); - } - pOut.println(""); - pOut.println("
    \"JOnAS

    " + pTitle + "

    " + pSubTitle + "

    "); - } - - /** - * Footer navigation. - * @param pRequest Http request - * @param pOut Printer - */ - protected void printNavigationFooter(HttpServletRequest pRequest, PrintWriter pOut) { - - // index - String sViewIndex = pRequest.getContextPath(); - - // Display - pOut.print(""); - pOut.print(""); - pOut.print(""); - pOut.println("
    Index
    "); - // Footer - printFooter(pOut); - } - /** - * Footer. - * @param pOut Printer - */ - protected void printFooter(PrintWriter pOut) { - pOut.println(""); - pOut.println(""); - } - - /** - * @param pRequest Client request - * @param pOut Writer for output - */ - protected void doViewInit(HttpServletRequest pRequest, PrintWriter pOut) { - // ----------------------------- - // Get initial context - // ----------------------------- - pOut.println("

    Create Initial naming context

    "); - pOut.println("
      "); - try { - initialContext = new InitialContext(); - pOut.println("
    • Initial context OK
    • "); - } catch (Exception e) { - pOut.print("
    • Cannot get initial context for JNDI: "); - pOut.println(e + "
    • "); - pOut.println("
    "); - printNavigationFooter(pRequest, pOut); - return; - } - pOut.println("
    "); - - // ----------------------------- - // Access to the MEJB - // ----------------------------- - pOut.println("

    Create MEJB

    "); - pOut.println("
      "); - - // Connecting to the MEJB home through JNDI - ManagementHome mgmtHome = null; - try { - mgmtHome = (ManagementHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/mgmt/MEJB"), - ManagementHome.class); - } catch (Exception e) { - pOut.println("
    • Cannot lookup java:comp/env/ejb/mgmt/MEJB: " + e + "
    • "); - pOut.println("
    "); - printNavigationFooter(pRequest, pOut); - return; - } - - // Management bean creation - try { - mgmt = mgmtHome.create(); - pOut.println("
  • MEJB created
  • "); - } catch (Exception e) { - pOut.println("
  • Cannot create MEJB: " + e + "
  • "); - pOut.println(""); - printNavigationFooter(pRequest, pOut); - return; - } - - pOut.println("
    "); - } - - /** - * Simply View error. - * @param pError Message error - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewError(String pError, HttpServletRequest pRequest, PrintWriter pOut) { - - // Header - printHeader(pOut, APP_TITLE, "Error"); - // Error message - pOut.println("

    " + pError + "

    "); - // Return - pOut.println("
    Return"); - // Footer - printFooter(pOut); - } - /** - * @return The management bean - */ - public Management getMgmt() { - return mgmt; - } - /** - * @return The initial naming context - */ - public Context getInitialContext() { - return initialContext; - } - - /** - * Check if the current server is a master - * @param pOnDomain J2EEDomain MBean's ObjectName - * @return true if the server is a master, false otherwise - */ - protected boolean isMaster(ObjectName pOnDomain, Management mgmt, PrintWriter pOut) { - pOut.println("

    Use the J2EEDomain MBean to check if the current server is a master

    "); - pOut.println("
      "); - boolean result = false; - try { - result = ((Boolean) mgmt.getAttribute(pOnDomain, "master")).booleanValue(); - } catch (Exception e) { - pOut.println("
    • Error when using this J2EEDomain MBean: " + e + "
    • "); - pOut.println("
    "); - return false; - } - if (result) { - pOut.println("
  • This is a Master server.
  • "); - } else { - pOut.println("
  • This server is not a Master !
  • "); - } - pOut.println(""); - return result; - } -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/JmsAdminServlet.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/JmsAdminServlet.java deleted file mode 100644 index 024986fd5b..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/JmsAdminServlet.java +++ /dev/null @@ -1,188 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -//import java -import java.io.IOException; -import java.io.PrintWriter; - -import javax.jms.Topic; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; -import javax.management.j2ee.Management; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This servlet is an example which shows how to access the MEJB from a servlet. - * The MEJB is used to invoke JoramAdmin Bean operations. - * @author JOnAS team - * @author Adriana Danes - */ -public class JmsAdminServlet extends J2eemanagementBaseServlet { - /** Parameter */ - static final String PARAM_TOPIC = "topicName"; - /** Parameter */ - static final String PARAM_SERVER_ID = "serverId"; - /** Parameter */ - static final String PARAM_VIEW = "view"; - /** Parameter */ - static final String VIEW_INIT = "init"; - - // ---------------------------------------------------------- Public methods - - /** - * Initialize the servlet. - * @param pConfig See HttpServlet - * @throws ServletException Could not initialize servlet - */ - public void init(ServletConfig pConfig) throws ServletException { - super.init(pConfig); - } - - // ---------------------------------------------------------- Protected - // methods - - /** - * Response to the GET request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException Could not execute request - * @throws ServletException An input or output error is detected when the servlet handles the request - */ - protected void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse) - throws IOException, ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Response to the POST request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException An input or output error is detected when the servlet handles the request - * @throws ServletException Could not execute request - */ - protected void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) - throws IOException, ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Dispatch the response. - * @param pRequest Request - * @param pResponse Response - * @throws IOException An input or output error is detected when the servlet handles the request - */ - protected void dispatch(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException { - - pResponse.setContentType("text/html"); - PrintWriter out = pResponse.getWriter(); - - // Get parameters - String sParamTopic = pRequest.getParameter(PARAM_TOPIC); - String sParamServerId = pRequest.getParameter(PARAM_SERVER_ID); - String sParamView = pRequest.getParameter(PARAM_VIEW); - - // Dispatching - if ((sParamTopic == null) || (sParamTopic.length() == 0)) { - doViewError("Parameter Topic name not found", pRequest, out); - } else if ((sParamServerId == null) || (sParamServerId.length() == 0)) { - doViewError("Parameter Joram server id not found", pRequest, out); - } else if ((sParamView == null) || (sParamView.length() == 0) || VIEW_INIT.equals(sParamView)) { - doViewInit(pRequest, out); - doViewManagement(sParamTopic, sParamServerId, pRequest, out); - } else { - doViewError("Unknown View", pRequest, out); - } - - } - - - - /** - * View init MEJB and access to MBEans J2EEDomain and J2EEServer. - * @param pTopicName Name of topic to create - * @param pServerId Joram server Id - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewManagement(String pTopicName, String pServerId, HttpServletRequest pRequest, PrintWriter pOut) { - - // ------------------------------------------------------------- - // Use the Joram MBean via the MEJB to make jms admin operations - // ------------------------------------------------------------- - pOut.println("

    Get Joram admin MBean

    "); - pOut.println("
      "); - Management mgmt = getMgmt(); - - String joramON = getInitParameter("mbeanName"); - if (joramON == null) { - joramON = "joramClient:type=JoramAdmin"; - } else { - pOut.println("
    • Use servlet init param 'mbeanName': " + joramON + "
    • "); - } - ObjectName joramOn = null; - try { - joramOn = ObjectName.getInstance(joramON); - } catch (MalformedObjectNameException e1) { - pOut.println("
    • Couldn't get Joram MBean
    • " + e1); - pOut.println("
    "); - printNavigationFooter(pRequest, pOut); - return; - } - pOut.println("
    "); - pOut.println("

    Use Joram admin MBean

    "); - pOut.println("
      "); - - try { - if (mgmt.isRegistered(joramOn)) { - Object[] asParam = {new Integer(pServerId), pTopicName }; - String[] asSignature = { - "int", "java.lang.String" - }; - String op = "createTopic"; - Topic topic = (Topic) mgmt.invoke(joramOn, op, asParam, asSignature); - getInitialContext().rebind(pTopicName, topic); - pOut.println("
    • Topic " + pTopicName + " created on server " + pServerId + "
    • "); - } - } catch (Exception e) { - pOut.println("
    • Could not use use Joram MBean to administer jms
    • " + e); - pOut.println("
    "); - printNavigationFooter(pRequest, pOut); - return; - } - - pOut.println("
    "); - - pOut.println("

    Application is OK

    "); - - // Footer - printNavigationFooter(pRequest, pOut); - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MgmtServlet.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MgmtServlet.java deleted file mode 100644 index 601918b710..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MgmtServlet.java +++ /dev/null @@ -1,849 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -//import java -import java.io.IOException; -import java.io.PrintWriter; -import java.net.MalformedURLException; -import java.rmi.RemoteException; -import java.util.List; - -import javax.management.MBeanException; -import javax.management.MBeanServerConnection; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; -import javax.management.j2ee.ListenerRegistration; -import javax.management.j2ee.Management; -import javax.management.j2ee.ManagementHome; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This servlet is an example which shows how to access the MEJB from a servlet. - * @author JOnAS team - * @author Adriana Danes - * @author Michel-Ange Anton - */ -public class MgmtServlet extends J2eemanagementBaseServlet { - - // ---------------------------------------------------------- Constants - /** Printing constant*/ - static final String APP_TITLE_LARGE = "J2EE Management sample with Servlet accessing the MEJB"; - /** Printing constant*/ - static final String APP_TITLE = "J2EE Management sample"; - /** Parameter */ - static final String PARAM_DOMAIN = "domainName"; - /** Parameter */ - static final String PARAM_VIEW = "view"; - /** Parameter */ - static final String VIEW_INIT = "init"; - /** Parameter */ - static final String VIEW_NOTIFICATIONS = "notifications"; - /** Parameter */ - static final String VIEW_OTHER = "other"; - /** Deploable module types */ - static final String JAR = "jar"; - /** Deploable module types */ - static final String WAR = "war"; - /** Deploable module types */ - static final String RAR = "rar"; - /** Deploable module types */ - static final String EAR = "ear"; - /** - * Listener object - */ - private MyListener mListener = null; - - // ---------------------------------------------------------- Public methods - - /** - * Initialize the servlet. - * @param pConfig See HttpServlet - * @throws ServletException - */ - public void init(ServletConfig pConfig) throws ServletException { - super.init(pConfig); - // Initialize variables - mListener = null; - } - - // ---------------------------------------------------------- Protected - // methods - - /** - * Response to the GET request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException - * @throws ServletException - */ - protected void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Response to the POST request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException - * @throws ServletException - */ - protected void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Dispatch the response. - * @param pRequest Request - * @param pResponse Response - * @throws IOException - */ - protected void dispatch(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException { - - pResponse.setContentType("text/html"); - PrintWriter out = pResponse.getWriter(); - - // Get parameters - String sParamDomain = pRequest.getParameter(PARAM_DOMAIN); - String sParamView = pRequest.getParameter(PARAM_VIEW); - - // Dispatching - if ((sParamDomain == null) || (sParamDomain.length() == 0)) { - doViewError("Parameter domain not found", pRequest, out); - } else if ((sParamView == null) || (sParamView.length() == 0) || VIEW_INIT.equals(sParamView)) { - doViewInit(sParamDomain, pRequest, out); - } else if (VIEW_NOTIFICATIONS.equals(sParamView)) { - doViewNotifications(out); - } else if (VIEW_OTHER.equals(sParamView)) { - doViewOther(sParamDomain, pRequest, out); - } else { - doViewError("Unknown View", pRequest, out); - } - - } - - - /** - * Footer navigation. - * @param pDomainName Name of domain - * @param pRequest Http request - * @param pOut Printer - * @param pPrevious Previous view - * @param pNext Next view - */ - protected void printNavigationFooter(String pDomainName, HttpServletRequest pRequest, PrintWriter pOut, - String pPrevious, String pNext) { - - // index - String sViewIndex = pRequest.getContextPath(); - // Notifications - String sViewNotifications = pRequest.getRequestURI() + "?" + PARAM_DOMAIN + "=" + pDomainName + "&" - + PARAM_VIEW + "=" + VIEW_NOTIFICATIONS; - // Previous View - String sPrevView = null; - if (pPrevious != null) { - sPrevView = pRequest.getRequestURI() + "?" + PARAM_DOMAIN + "=" + pDomainName + "&" + PARAM_VIEW + "=" - + pPrevious; - } - // Next View - String sNextView = null; - if (pNext != null) { - sNextView = pRequest.getRequestURI() + "?" + PARAM_DOMAIN + "=" + pDomainName + "&" + PARAM_VIEW + "=" - + pNext; - } - - // Display - pOut.print(""); - pOut.print(""); - pOut.print(""); - pOut.print(""); - if (sPrevView != null) { - pOut.println(""); - } - if (sNextView != null) { - pOut.println(""); - } - pOut.println("
    Index Notifications Previous Next
    "); - // Footer - printFooter(pOut); - } - - /** - * View init MEJB and access to MBeans J2EEDomain and J2EEServer. - * @param pDomainName Name of domain to access - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewInit(String pDomainName, HttpServletRequest pRequest, PrintWriter pOut) { - - // Header - //printHeader(pOut, APP_TITLE_LARGE, "Init"); - - // ----------------------------- - // Get initial context - // ----------------------------- - pOut.println("

    Initial context

    "); - pOut.println("
      "); - Context initialContext = null; - try { - initialContext = new InitialContext(); - pOut.println("
    • Initial context OK
    • "); - } catch (Exception e) { - pOut.print("
    • Cannot get initial context for JNDI: "); - pOut.println(e + "
    • "); - pOut.println("
    "); - return; - } - pOut.println("
    "); - - // ----------------------------- - // Access to the MEJB - // ----------------------------- - pOut.println("

    Create MEJB

    "); - pOut.println("
      "); - - // Connecting to the MEJB home through JNDI - ManagementHome mgmtHome = null; - try { - mgmtHome = (ManagementHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/mgmt/MEJB"), - ManagementHome.class); - } catch (Exception e) { - pOut.println("
    • Cannot lookup java:comp/env/ejb/mgmt/MEJB: " + e + "
    • "); - pOut.println("
    "); - return; - } - - // Management bean creation - Management mgmt = null; - - try { - mgmt = mgmtHome.create(); - pOut.println("
  • MEJB created
  • "); - } catch (Exception e) { - pOut.println("
  • Cannot create MEJB: " + e + "
  • "); - return; - } - pOut.println("
    "); - // ------------------------------ - // Access to the J2EEDomain MBean - // ------------------------------ - - ObjectName onDomain = accessJ2EEDomain(pDomainName, mgmt, pOut); - if (onDomain == null) { - return; - } - - boolean master = checkIfMaster(onDomain, mgmt, pOut); - - // ----------------------------------------------------- - // Check for J2EEServer MBeans in the current J2EEDomain - // ----------------------------------------------------- - ObjectName onServer = accessJ2EEServer(onDomain, mgmt, pOut); - if (onServer == null) { - return; - } - - // ------------------------------ - // Test domain deployment - // ------------------------------ - if (master) { - pOut.println("

    Try to manage the current domain: deploy/undeploy on all servers in the domain

    "); - pOut.println("
      "); - pOut.println("
    • Use the J2EEDomain object name: \"" + onDomain.toString() + "\"
    • "); - String[] serverNames = null; - try { - serverNames = (String[]) mgmt.getAttribute(onDomain, "serverNames"); - } catch (Exception e) { - pOut.println("
    • Can't get serverNames attribute: " + e + "
    • "); - } - if (serverNames.length > 1) { - String fileName = null; - // Use deploy, undeploy - // (suppose sb.jar was installed under JONAS_BASE/ejbjars directory) - fileName = "sb.jar"; - deployModuleWithTarget(JAR, onDomain, serverNames, mgmt, fileName, pOut); - - // Use deploy, undeploy - // (suppose earsample.ear was installed under JONAS_BASE/apps directory) - fileName = "earsample.ear"; - deployModuleWithTarget(EAR, onDomain, serverNames, mgmt, fileName, pOut); - } else { - pOut.println("
    • Can't find server names in this domain
    • "); - } - pOut.println("

    "); - } else { - // ------------------------------ - // Test current server management - // ------------------------------ - pOut.println("

    Try to manage the current server

    "); - pOut.println("
      "); - pOut.println("
    • Using the J2EEServer object name: \"" + onServer.toString() + "\"
    • "); - - // Use deployJar, unDeployJar, isJarDeployed management opearations - // (suppose sb.jar was installed under JONAS_BASE/ejbjars directory) - String jarFileName = System.getProperty("jonas.base")+"/ejbjars/"+"sb.jar"; - deployJarModule(onServer, mgmt, jarFileName, pOut); - - // Use deployEar, unDeployEar, isEarDeployed management opearations - // (suppose earsample.ear was installed under JONAS_BASE/apps directory) - String earFileName = System.getProperty("jonas.base")+"/apps/"+"earsample.ear"; - deployEarModule(onServer, mgmt, earFileName, pOut); - - // (suppose autoload/earsample.ear was installed under JONAS_BASE/apps directory) - earFileName = "autoload/earsample.ear"; - deployEarModule(onServer, mgmt, earFileName, pOut); - - // Use deployRar, unDeployRar, isRarDeployed - // (suppose JDBC connection rar files installed under JONAS_BASE/rars directory) - /* - String rarFileName = "autoload/JOnAS_jdbcCP.rar"; - deployRarModule(onServer, mgmt, rarFileName, pOut); - */ - pOut.println("

    "); - } - // ----------------------------- - // Test Event Listener support - // ----------------------------- - - pOut.println("

    Register an event listener

    "); - pOut.println("
      "); - - // Test Monolog JMXHandler notifications - // ------------------------------------- - // Set this to true if you test the JMXHandler notifications ! - boolean testLogNotifs = true; - - String logServName = new String(pDomainName + ":type=service,name=log"); - ObjectName logServOn = null; - try { - logServOn = ObjectName.getInstance(logServName); - } catch (MalformedObjectNameException e1) { - pOut.println("
    • Can't create ObjectName for log service MBean: " + e1 + "
    • "); - testLogNotifs = false; - pOut.println("
    "); - } - if (testLogNotifs) { - boolean existsLog; - try { - existsLog = mgmt.isRegistered(logServOn); - if (existsLog) { - pOut.println("
  • Found log service MBean
  • "); - } else { - pOut.println("
  • Can't find log service MBean
  • "); - testLogNotifs = existsLog; - } - } catch (RemoteException e) { - pOut.println("
  • Failed to find the log service MBean
  • "); - } - } - - if (mListener == null) { - if (!testLogNotifs) { - mListener = new MyListener(); - pOut.println("
  • MyListener created
  • "); - } else { - mListener = new MonologListener(); - pOut.println("
  • MonologListener created
  • "); - } - } - - String sHandler = "MEJBTester"; - // Get the ListenerRegistration object - try { - pOut.println("
  • Create ListenerRegistration
  • "); - ListenerRegistration lr = mgmt.getListenerRegistry(); - pOut.println("
  • ListenerRegistration created
  • "); - if (lr != null) { - if (testLogNotifs) { - pOut.println("
  • Add listener for Monolog notifications (" + logServOn.toString() + ")
  • "); - lr.addNotificationListener(logServOn, mListener, null, sHandler); - } else { - pOut.println("
  • Add listener on J2EEServer (" + onServer.toString() + ")
  • "); - lr.addNotificationListener(onServer, mListener, null, sHandler); - } - pOut.println("
  • Notification Listener added
  • "); - String sViewNotifications = pRequest.getRequestURI() + "?" + PARAM_DOMAIN + "=" + pDomainName + "&" - + PARAM_VIEW + "=" + VIEW_NOTIFICATIONS; - pOut.println("See list of notifications"); - pOut.println(""); - } else { - pOut.println("
  • Can't add remote listener for the moment
  • "); - pOut.println(""); - } - } catch (Exception e) { - pOut.println("
  • Can't add notification listener on " + onServer.toString() + " : " + e + "
  • "); - } - - pOut.println("

    Application is OK

    "); - - // Footer - printNavigationFooter(pDomainName, pRequest, pOut, null, VIEW_OTHER); - } - - /** - * Header. - * @param pOut Printer - * @param pTitle Title to display - * @param pSubTitle Subtitle to display or null if not - */ - protected void printHeaderAutoRefresh(PrintWriter pOut, String pTitle, String pSubTitle) { - - pOut.println(""); - pOut.println(""); - pOut.println("" + pTitle + ""); - pOut.println(""); - pOut.println(""); - pOut.println(""); - printHeaderTitle(pOut, pTitle, pSubTitle); - } - /** - * View notifications. - * @param pOut Printer - */ - protected void doViewNotifications(PrintWriter pOut) { - - // Header - printHeaderAutoRefresh(pOut, APP_TITLE, "Notifications"); - pOut.println("

    List of notifications

    "); - - // Verify listener - if (mListener == null) { - pOut.println("Listener not found !"); - } else { - // Display notifications - List list = mListener.getListNotifications(); - if (list.size() > 0) { - pOut.println("
      "); - for (int i = 0; i < list.size(); i++) { - pOut.println("
    1. " + list.get(i) + "
    2. "); - } - pOut.println("
    "); - } else { - pOut.println("No notifications, the list is empty"); - } - } - - // Footer - printFooter(pOut); - } - - /** - * View example. - * @param pDomainName Name of domain to access - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewOther(String pDomainName, HttpServletRequest pRequest, PrintWriter pOut) { - - // Header - printHeader(pOut, APP_TITLE, "Other"); - - pOut.println("

    Other

    "); - - // Footer - printNavigationFooter(pDomainName, pRequest, pOut, VIEW_INIT, null); - } - - /** - * Create J2EEDomain MBean's ObjectName and test if MBean registered - * @param pDomainName the name provided by the user - * @param mgmt MEJB - * @param pOut output stream - * @return true if management operation succeeded - */ - private ObjectName accessJ2EEDomain(String pDomainName, Management mgmt, PrintWriter pOut) { - ObjectName onDomain = null; - pOut.println("

    Access the J2EEDomain MBean

    "); - pOut.println("
      "); - - // Get the J2EEDomain MBean's ObjectName - try { - String name = pDomainName + ":j2eeType=J2EEDomain,name=" + pDomainName; - onDomain = ObjectName.getInstance(name); - pOut.println("
    • J2EEDomain object name created: \"" + name.toString() + "\"
    • "); - } catch (Exception e) { - pOut.println("
    • Cannot create object name for J2EEDomain managed object: " + e + "
    • "); - pOut.println("
    "); - return null; - } - // Check that the J2EEDomain MBean registered - try { - boolean exists = mgmt.isRegistered(onDomain); - if (exists) { - pOut.println("
  • Found this J2EEDomain MBean in the current MBean server
  • "); - } else { - pOut.println("
  • Can't find this J2EEDomain MBean in the current MBean server
  • "); - pOut.println(""); - return null; - } - } catch (Exception e) { - pOut.println("
  • Error when using this J2EEDomain MBean: " + e + "
  • "); - pOut.println(""); - return null; - } - return onDomain; - } - - /** - * - * @param onDomain J2EEDomain MBean ObjectName - * @param mgmt Management EJB - * @param pOut output stream - * @return true if the current server is a master - */ - private boolean checkIfMaster(ObjectName onDomain, Management mgmt, PrintWriter pOut) { - try { - Boolean master = (Boolean) mgmt.getAttribute(onDomain, "master"); - if (master.booleanValue()) { - pOut.println("
  • The current server is a management master
  • "); - } - pOut.println(""); - return master.booleanValue(); - } catch (Exception e) { - pOut.println("
  • Error when using this J2EEDomain MBean: " + e + "
  • "); - } - pOut.println(""); - return false; - } - - /** - * Get a registered J2EEServer MBean - * @param onDomain J2EEDomain MBean's ObjectName - * @param mgmt MEJB - * @param pOut output stream - * @return true if management operation succeeded - */ - private ObjectName accessJ2EEServer(ObjectName onDomain, Management mgmt, PrintWriter pOut) { - pOut.println("

    Access the J2EEServer MBeans

    "); - pOut.println("
      "); - ObjectName onServer = null; - String[] listServers = null; - try { - listServers = (String[]) mgmt.getAttribute(onDomain, "servers"); - } catch (Exception e) { - pOut.println("
    • Cant' access the " + onDomain + " MBean's servers attribute
    • "); - pOut.println("

    "); - return null; - } - int nbServers = listServers.length; - if (nbServers == 0) { - pOut.println("
  • No J2EEServer MBeans in the " + onDomain + " MBean's servers list (problem with domain management !!)
  • "); - pOut.println("
    "); - return null; - } else { - if (nbServers == 1) { - String serverOn = (String) listServers[0]; - try { - onServer = ObjectName.getInstance(serverOn); - if (mgmt.isRegistered(onServer)) { - pOut.println("
  • Found one J2EEServer MBean registered in the current MBean server. Its OBJECT_NAME is: \"" + serverOn + "\"
  • "); - pOut.println("
    "); - return onServer; - } else { - pOut.println("
  • Can't find the J2EEServer MBean having OBJECT_NAME: " + serverOn + " in the current MBean server
  • "); - pOut.println("
    "); - return null; - } - } catch (Exception e) { - pOut.println("
  • Error witht OBJECT_NAME " + serverOn + ": " + e + "
  • "); - pOut.println("
    "); - return null; - } - } else { - pOut.println("
  • List of J2EEServer MBeans in the \"" + onDomain + "\" MBean's servers list:
  • "); - pOut.println("
      "); - for (int i = 0; i < nbServers; i++) { - String serverOn = listServers[i]; - ObjectName on = null; - try { - on = ObjectName.getInstance(serverOn); - } catch (MalformedObjectNameException e) { - pOut.print("
    1. Error witht OBJECT_NAME " + serverOn + ": " + e + "
    2. "); - continue; - } - pOut.print("
    3. \"" + serverOn + "\". "); - boolean isRegisterdServer = false; - try { - isRegisterdServer = mgmt.isRegistered(on); - } catch (RemoteException e) { - pOut.println("
        "); - pOut.println("
      • Error witht OBJECT_NAME " + serverOn + ": " + e + "
      • "); - pOut.println("
      "); - pOut.println("
    4. "); - continue; - } - if (isRegisterdServer) { - pOut.print("This MBean is registered in the current MBean server. It should correspond to the current server."); - pOut.println(""); - onServer = on; - } else { - pOut.println("This MBean is not registered in the current MBean server. It could correspond to a remote server."); - pOut.println(""); - pOut.println("
        "); - String name = on.getKeyProperty("name"); - String[] signature = {"java.lang.String"}; - String[] params = new String[1]; - params[0] = name; - String[] urls = null; - try { - urls = (String[]) mgmt.invoke(onDomain, "getConnectorServerURLs", params, signature); - } catch (Exception e) { - pOut.println("
      • Could not found a connector server URL for server " + name + ".
      • "); - pOut.println("
      "); - pOut.println(""); - continue; - } - if (urls == null) { - pOut.println("
    5. Could not found a connector server URL for server " + name + "
    6. "); - pOut.println(""); - pOut.println(""); - continue; - } - for (int j = 0; j < urls.length; j++) { - String url = urls[j]; - pOut.print("
    7. Try to connect to server " + name + " using connector server URL: " + url + "
    8. "); - MBeanServerConnection connection = createConnection(url); - if (connection != null) { - // Use connection directly instead of using MEJB - try { - if (connection.isRegistered(on)) { - pOut.print("
    9. Found MBean having OBJECT_NAME \"" + serverOn + "\" registered in the connected MBean server."); - } else { - pOut.print("
    10. The MBean having OBJECT_NAME \"" + serverOn + "\" is not registered in the connected MBean server."); - } - } catch (IOException ioe) { - pOut.print("
    11. Exception when trying to use connection: " + ioe.toString()); - } - } else { - pOut.print("
    12. Could not establish connection with server " + name + ". Server may be stopped or URL not valid.
    13. "); - } - } - pOut.println(""); - pOut.println(""); - } - } - pOut.println("
    "); - pOut.println("
    "); - return onServer; - } - } - } - - private MBeanServerConnection createConnection(String connectorServerURL) { - MBeanServerConnection connection; - // create a connector client for the connector server at the given url - JMXConnector connector = null; - try { - JMXServiceURL url = new JMXServiceURL(connectorServerURL); - connector = JMXConnectorFactory.newJMXConnector(url, null); - connector.connect(null); - connection = connector.getMBeanServerConnection(); - } catch (MalformedURLException e) { - // there is no provider for the protocol in url - connection = null; - } catch (IOException e) { - // connector client or connection cannot be made because of a communication problem. - connection = null; - } catch (java.lang.SecurityException e) { - // connection cannot be made for security reasons - connection = null; - } - return connection; - } - - /** - * Deploy if not already deployed, undeploy otherwise, a given jar file. - * @param onServer ObjectName of the J2EEServer MBean on which the mananagement operation has to be applied - * @param mgmt MEJB - * @param jarFileName name of the file to be deployed/undeployed - * @param pOut output stream - */ - private void deployJarModule(ObjectName onServer, Management mgmt, String jarFileName, PrintWriter pOut) { - String[] signature = {"java.lang.String"}; - String[] params = new String[1]; - params[0] = jarFileName; - pOut.println("
  • Test if " + jarFileName + " deployed
  • "); - boolean isDeployed = false; - try { - isDeployed = ((Boolean) mgmt.invoke(onServer, "isDeployed", params, signature)).booleanValue(); - } catch (Exception e) { - pOut.println("
  • Problem when invoking isDeployed management operation: " + e.toString()); - } - if (!isDeployed) { - pOut.println("
  • Try to deploy " + jarFileName + " !
  • "); - try { - String deployedObjectName = (String) mgmt.invoke(onServer, "deploy", params, signature); - pOut.println("
  • The Object Name of the deployed J2EEModule is: \"" + deployedObjectName + "\".
  • "); - } catch (MBeanException mbe) { - pOut.println("
  • Could not deploy " + jarFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not deploy " + jarFileName + " because of exception: " + e.toString() + "
  • "); - } - } else { - pOut.println("
  • Try to un-deploy " + jarFileName + " !
  • "); - try { - mgmt.invoke(onServer, "undeploy", params, signature); - pOut.println("
  • Done undeploy.>"); - } catch (MBeanException mbe) { - pOut.println("
  • Could not undeploy " + jarFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not undeploy " + jarFileName + " because of exception: " + e.toString() + "
  • "); - } - } - } - /** - * Deploy if not already deployed, undeploy otherwise, a given ear file. - * @param onServer ObjectName of the J2EEServer MBean on which the mananagement operation has to be applied - * @param mgmt MEJB - * @param earFileName name of the file to be deployed/undeployed - * @param pOut output stream - */ - private void deployEarModule(ObjectName onServer, Management mgmt, String earFileName, PrintWriter pOut) { - String[] signature = {"java.lang.String"}; - String[] params = new String[1]; - params[0] = earFileName; - pOut.println("
  • Test if " + earFileName + " deployed
  • "); - boolean isDeployed = false; - try { - isDeployed = ((Boolean) mgmt.invoke(onServer, "isDeployed", params, signature)).booleanValue(); - } catch (Exception e) { - pOut.println("
  • Problem when invoking isEarDeployed management operation: " + e.toString()); - } - if (!isDeployed) { - pOut.println("
  • Try to deploy " + earFileName + " !
  • "); - try { - String deployedObjectName = (String) mgmt.invoke(onServer, "deploy", params, signature); - pOut.println("
  • The Object Name of the deployed J2EEModule is: \"" + deployedObjectName + "\".
  • "); - } catch (MBeanException mbe) { - pOut.println("
  • Could not deploy " + earFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not deploy " + earFileName + " because of exception: " + e.toString() + "
  • "); - } - } else { - pOut.println("
  • Try to un-deploy " + earFileName + " !
  • "); - try { - mgmt.invoke(onServer, "undeploy", params, signature); - pOut.println("
  • Done undeploy.>"); - } catch (MBeanException mbe) { - pOut.println("
  • Could not undeploy " + earFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not undeploy " + earFileName + " because of exception: " + e.toString() + "
  • "); - } - } - } - - /** - * Deploy if not already deployed, undeploy otherwise, a given rar file. - * @param onServer ObjectName of the J2EEServer MBean on which the mananagement operation has to be applied - * @param mgmt MEJB - * @param rarFileName name of the file to be deployed/undeployed - * @param pOut output stream - */ - private void deployRarModule(ObjectName onServer, Management mgmt, String rarFileName, PrintWriter pOut) { - String[] signature = {"java.lang.String"}; - String[] params = new String[1]; - params[0] = rarFileName; - pOut.println("
  • Test if " + rarFileName + " deployed
  • "); - boolean isDeployed = false; - try { - isDeployed = ((Boolean) mgmt.invoke(onServer, "isDeployed", params, signature)).booleanValue(); - } catch (Exception e) { - pOut.println("
  • Problem when invoking isRarDeployed management operation: " + e.toString()); - } - if (!isDeployed) { - pOut.println("
  • Try to deploy " + rarFileName + " !
  • "); - try { - String deployedObjectName = (String) mgmt.invoke(onServer, "deploy", params, signature); - pOut.println("
  • The Object Name of the deployed J2EEModule is: \"" + deployedObjectName + "\".
  • "); - } catch (MBeanException mbe) { - pOut.println("
  • Could not deploy " + rarFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not deploy " + rarFileName + " because of exception: " + e.toString() + "
  • "); - } - } else { - pOut.println("
  • Try to un-deploy " + rarFileName + " !
  • "); - try { - mgmt.invoke(onServer, "undeploy", params, signature); - pOut.println("
  • Done undeploy.>"); - } catch (MBeanException mbe) { - pOut.println("
  • Could not undeploy " + rarFileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not undeploy " + rarFileName + " because of exception: " + e.toString() + "
  • "); - } - } - } - - /** - * Deploy if not already deployed, undeploy otherwise, a given jar file. - * @param moduleType can be JAR, WAR, RAR or EAR - * @param onDomain J2EEDomain MBean ObjectName - * @param target names of the servers on which the mananagement operation has to be applied - * @param mgmt MEJB - * @param fileName name of the file to be deployed/undeployed - * @param pOut output stream - */ - private void deployModuleWithTarget(String moduleType, ObjectName onDomain, String[] target, Management mgmt, String fileName, PrintWriter pOut) { - String[] signature = {"[Ljava.lang.String;", "java.lang.String"}; - Object[] params = new Object[2]; - params[0] = target; - params[1] = fileName; - try { - String operationName = "deploy"; - pOut.println("
  • Try to " + operationName + " " + fileName + " on multiple target !
  • "); - mgmt.invoke(onDomain, operationName, params, signature); - operationName = "undeploy"; - pOut.println("
  • Try to " + operationName + " " + fileName + " on multiple target !
  • "); - mgmt.invoke(onDomain, operationName, params, signature); - } catch (MBeanException mbe) { - pOut.println("
  • Could not deploy/undeploy " + fileName + " because of exception: " - + mbe.getTargetException().toString()); - } catch (Exception e) { - pOut.println("
  • Could not deploy " + fileName + " because of exception: " + e.toString() + "
  • "); - } - } -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MonologListener.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MonologListener.java deleted file mode 100644 index 946111a74d..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MonologListener.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id: $ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -import java.util.ArrayList; -import java.util.Date; -import java.util.logging.LogRecord; - -import javax.management.Notification; - -/** - * @author Adriana Danes - */ -public class MonologListener extends MyListener { - - private final static String monologNotifType = "Monolog.JMXHandler.Log"; - -// ---------------------------------------------------------- Public methods - /** - * Create a new element and add it to the list. - * @param notification received notification - * @param handback received handback - */ - public void handleNotification(Notification notification, Object handback) { - String type = notification.getType(); - if (type.equals(monologNotifType)) { - String message = notification.getMessage(); - LogRecord record = (LogRecord) notification.getUserData(); - String timestamp = new Date(record.getMillis()).toString(); - String loggerName = record.getLoggerName(); - String level = record.getLevel().toString(); - String sourceClass = record.getSourceClassName(); - String sourceMethod = record.getSourceMethodName(); - String resourceBundle = record.getResourceBundleName(); - StringBuffer buf = new StringBuffer(); - buf.append("Notification message = "); - buf.append(message); - buf.append('\n'); - - buf.append("Timestamp = "); - buf.append(timestamp); - buf.append('\n'); - - buf.append("LoggerName = "); - buf.append(loggerName); - buf.append('\n'); - - buf.append("Level = "); - buf.append(level); - buf.append('\n'); - - buf.append("SourceClass = "); - buf.append(sourceClass); - buf.append('\n'); - String s = new String(buf); - getListNotifications().add(s); - } else { - super.handleNotification(notification, handback); - } - } - - -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MyListener.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MyListener.java deleted file mode 100644 index 3774c529e7..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/MyListener.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -import java.util.ArrayList; - -import javax.management.NotificationListener; -import javax.management.Notification; - -/** - * @author Adriana Danes - * @author Michel-Ange Anton - */ -public class MyListener implements NotificationListener { - -// ---------------------------------------------------------- Properties variables - /** - * Each element in this list contains a received notification + infos about it - */ - private ArrayList listNotifications = null; - -// ---------------------------------------------------------- Constructor - /** - * Create list. - */ - public MyListener() { - listNotifications = new ArrayList(); - } - -// ---------------------------------------------------------- Public methods - /** - * Create a new element and add it to the list. - * @param notification received notification - * @param handback received handback - */ - public void handleNotification(Notification notification, Object handback) { - String s = "Notification = " + notification.toString() - + ", Handback = " + handback.toString(); - listNotifications.add(s); - } - -// ---------------------------------------------------------- Properties methods - /** - * @return notifications list - */ - public ArrayList getListNotifications() { - return listNotifications; - } - -} diff --git a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/NewServerMgmtServlet.java b/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/NewServerMgmtServlet.java deleted file mode 100644 index 10b688d08c..0000000000 --- a/jonas_tests/examples/base/examples/j2eemanagement/src/org/objectweb/j2eemanagement/servlets/NewServerMgmtServlet.java +++ /dev/null @@ -1,323 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.j2eemanagement.servlets; - -//import java -import java.io.IOException; -import java.io.PrintWriter; -import java.net.MalformedURLException; - -import javax.management.MBeanServerConnection; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; -import javax.management.j2ee.Management; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This servlet is an example which shows how to access the MEJB from a servlet. - * @author JOnAS team - * @author Adriana Danes - */ -public class NewServerMgmtServlet extends J2eemanagementBaseServlet { - - // ---------------------------------------------------------- Constants - /** Parameter */ - static final String PARAM_DOMAIN = "domainName"; - /** Parameter */ - static final String PARAM_CLUSTER = "clusterName"; - /** Parameter */ - static final String PARAM_SERVER = "serverName"; - /** Parameter */ - static final String PARAM_SERVER_URL = "serverURL"; - /** Parameter */ - static final String PARAM_VIEW = "view"; - /** Parameter */ - static final String VIEW_INIT = "init"; - // ---------------------------------------------------------- Public methods - - /** - * Initialize the servlet. - * @param pConfig See HttpServlet - * @throws ServletException - */ - public void init(ServletConfig pConfig) throws ServletException { - super.init(pConfig); - } - - // ---------------------------------------------------------- Protected - // methods - - /** - * Response to the GET request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException - * @throws ServletException - */ - protected void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Response to the POST request. - * @param pRequest See HttpServlet - * @param pResponse See HttpServlet - * @throws IOException - * @throws ServletException - */ - protected void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, - ServletException { - dispatch(pRequest, pResponse); - } - - /** - * Dispatch the response. - * @param pRequest Request - * @param pResponse Response - * @throws IOException - */ - protected void dispatch(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException { - - pResponse.setContentType("text/html"); - PrintWriter out = pResponse.getWriter(); - - // Get parameters - String sParamDomain = pRequest.getParameter(PARAM_DOMAIN); - String sParamCluster = pRequest.getParameter(PARAM_CLUSTER); - String sParamView = pRequest.getParameter(PARAM_VIEW); - String sParamServer = pRequest.getParameter(PARAM_SERVER); - String sParamServerURL = pRequest.getParameter(PARAM_SERVER_URL); - - // Dispatching - if ((sParamDomain == null) || (sParamDomain.length() == 0)) { - doViewError("Parameter Domain name not found", pRequest, out); - } else if ((sParamCluster == null) || (sParamCluster.length() == 0)) { - doViewError("Parameter Cluster name not found", pRequest, out); - } else if ((sParamServer == null) || (sParamServer.length() == 0)) { - doViewError("Parameter Server name not found", pRequest, out); - } else if ((sParamServerURL == null) || (sParamServerURL.length() == 0)) { - doViewError("Parameter Connector server url not found", pRequest, out); - } else if ((sParamView == null) || (sParamView.length() == 0) || VIEW_INIT.equals(sParamView)) { - doViewInit(pRequest, out); - doViewManagement(sParamDomain, sParamCluster, sParamServer, sParamServerURL, pRequest, out); - } else { - doViewError("Unknown View", pRequest, out); - } - - } - - - /** - * Do management operations in this view. - * @param pDomainName Name of domain to access - * @param pClusterName Name of the cluster to manage in the domain - * @param pServerName Name of the server to add in the domain - * @param pServerURL Address of the server's remote JMX connector - * @param pRequest Http request - * @param pOut Printer - */ - protected void doViewManagement(String pDomainName, String pClusterName, String pServerName, String pServerURL, HttpServletRequest pRequest, PrintWriter pOut) { - Management mgmt = getMgmt(); - - // ------------------------------ - // Access to the J2EEDomain MBean - // ------------------------------ - ObjectName onDomain = accessJ2EEDomain(pDomainName, mgmt, pOut); - if (onDomain == null) { - return; - } - - if (!isMaster(onDomain, mgmt, pOut)) { - // End application - pOut.println("

    Application is OK

    "); - // Footer - printNavigationFooter(pRequest, pOut); - return; - } - - // TO DO extend interface in order to read cluster daemon name - String clusterDaemonName = "cd"; - // Create the new server - createServer(onDomain, pClusterName, clusterDaemonName, pServerName, pServerURL, mgmt, pOut); - - // ------------------------------------------------------------- - // Using the domain management EJB to list servers in the domain - // ------------------------------------------------------------- - String[] serverNames = null; - String[] serverNamesDom = null; - String[] servers = null; - String domainName = onDomain.getKeyProperty("name"); - try { - pOut.println("

    Getting list of servers in the domain " + domainName + "

    "); - serverNames = (String[]) mgmt.getAttribute(onDomain, "serverNames"); - servers = (String[]) mgmt.getAttribute(onDomain, "servers"); - pOut.println("
      "); - for (int i = 0; i < serverNames.length; i++) { - String name = serverNames[i]; - /* - String[] signature = {"java.lang.String"}; - String[] params = {name}; - String state = (String) mgmt.invoke(onDomain, "getServerState", params, signature); - pOut.println("
    • " + name + " - " + state + "
    • ");*/ - pOut.println("
    • " + name + "
    • "); - } - pOut.println("
    "); - - } catch (Exception e) { - pOut.println("
  • Could not get list of servers in " + domainName + "
  • " + e); - e.printStackTrace(pOut); - return; - } - // ------------------------------------------------------------- - // Using the cluster management EJBs to list servers in clusters - // ------------------------------------------------------------- - String[] clusters = null; - String clusterName = null; - try { - clusters = (String[]) mgmt.getAttribute(onDomain, "clusters"); - for (int i = 0; i < clusters.length; i++) { - ObjectName onCluster = ObjectName.getInstance(clusters[i]); - clusterName = onCluster.getKeyProperty("name"); - if (!domainName.equals(clusterName)) { - // this is a cluster created by the administrator - // or a physical cluster created transparently - pOut.println("

    Getting list of servers in cluster " + clusterName + "

    "); - String[] signature = {"java.lang.String"}; - String[] params = new String[1]; - params[0] = clusterName; - String[] urls = null; - serverNames = (String[]) mgmt.invoke(onDomain, "getServerNames", params, signature); - pOut.println("
      "); - if (serverNames.length == 0) { - pOut.println("
    • There are no servers.
    • "); - } - for (int j = 0; j < serverNames.length; j++) { - String name = serverNames[j]; - /* - String[] signature = {"java.lang.String"}; - String[] params = {name}; - String state = (String) mgmt.invoke(onCluster, "getServerState", params, signature); - pOut.println("
    • " + name + " - " + state + "
    • "); - */ - pOut.println("
    • " + name + "
    • "); - } - pOut.println("
    "); - } - } - } catch (Exception e) { - pOut.println("
  • Could not get list of servers in clusters with the MEJB.
  • " + e); - e.printStackTrace(pOut); - return; - } - - pOut.println("

    Application is OK

    "); - - // Footer - printNavigationFooter(pRequest, pOut); - } - - /** - * Create J2EEDomain MBean's ObjectName and test if MBean registered - * @param pDomainName the name provided by the user - * @param mgmt MEJB - * @param pOut output stream - * @return true if management operation succeeded - */ - private ObjectName accessJ2EEDomain(String pDomainName, Management mgmt, PrintWriter pOut) { - ObjectName onDomain = null; - pOut.println("

    Access the J2EEDomain MBean

    "); - pOut.println("
      "); - - // Get the J2EEDomain MBean's ObjectName - try { - String name = pDomainName + ":j2eeType=J2EEDomain,name=" + pDomainName; - onDomain = ObjectName.getInstance(name); - pOut.println("
    • J2EEDomain object name created: \"" + name.toString() + "\"
    • "); - } catch (Exception e) { - pOut.println("
    • Cannot create object name for J2EEDomain managed object: " + e + "
    • "); - pOut.println("
    "); - return null; - } - // Check that the J2EEDomain MBean registered - try { - boolean exists = mgmt.isRegistered(onDomain); - if (exists) { - pOut.println("
  • Found this J2EEDomain MBean in the current MBean server
  • "); - pOut.println(""); - } else { - pOut.println("
  • Can't find this J2EEDomain MBean in the current MBean server
  • "); - pOut.println(""); - return null; - } - } catch (Exception e) { - pOut.println("
  • Error when using this J2EEDomain MBean: " + e + "
  • "); - pOut.println(""); - return null; - } - return onDomain; - } - /** - * Add a new server to the domain and possibly attach it to a cluster - * @param pOnDomain J2EDomain ObjectName - * @param pClusterName cluster name - * @param pServerName server name - * @param pServerURL server's JMX remote connection urls - * @param mgmt MEJB - * @param pOut output stream - */ - private void createServer(ObjectName pOnDomain, String pClusterName, String pClusterDaemonName, String pServerName, String pServerURL, Management mgmt, PrintWriter pOut) { - String domainName = pOnDomain.getDomain(); - try { - pOut.println("

    Add a server named " + pServerName + " to the domain " + domainName + "

    "); - pOut.println("
      "); - - String[] signature = new String[4]; - Object[] params = new Object[4]; - signature[0] = "java.lang.String"; - signature[1] = "java.lang.String"; - signature[2] = "java.lang.String"; - signature[3] = "[Ljava.lang.String;"; - params[0] = pServerName; - params[1] = pClusterName; - params[2] = pClusterDaemonName; - String[] urls = new String[1]; - urls[0] = pServerURL; - params[3] = urls; - mgmt.invoke(pOnDomain, "addServer", params, signature); - pOut.println("
    "); - } catch (Exception e) { - pOut.println("
  • Cannot add server " + pServerName + ": " + e + "
  • "); - pOut.println(""); - } - } -} diff --git a/jonas_tests/examples/base/examples/j_common.xml b/jonas_tests/examples/base/examples/j_common.xml deleted file mode 100644 index 76eb51306a..0000000000 --- a/jonas_tests/examples/base/examples/j_common.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/README b/jonas_tests/examples/base/examples/jaasclient/README deleted file mode 100644 index f23dbe46e8..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/README +++ /dev/null @@ -1,90 +0,0 @@ -$Id$ -@author Florent Benoit - -Example Overview: -================= - -This example shows how to use JAAS login modules for the authentication. - -There are two kind of clients. - - Without the use of the client container - - With the use of the client container - -First kind of client (without client container) ------------------------------------------------ -This example includes several ways of entering login and password (CallBack) - - The first way is a command line prompt - - The second way is a swing dialog (a window) - - The first way works without asking the user a login/password. - The login and password are given to the callbackhandler by the client - -You can configure the login module and the resource to use by configuring -the file in the JONAS_ROOT/conf/jaas.config file. - -There are two login modules : - - One for performing the authentication - - One for propagating to the JOnAS server the security context - - -Second kind of client (with client container): -------------------------------------------------- -The choice of the callback handler is done in the application-xml file. - -Two examples of clients are provided. - - jaasopclient1.jar uses the NoInputCallbackHandler as a login/password is - specified in the jonas-client.xml file - - - jaasopclient2.jar uses the CallbackHandler specified in the file - application-client.xml - - - jaasopclient3.jar uses Swing CallbackHandler specified in - application-client.xml file and launch a Swing client - -Both of them use the jaas configuration which is in the client.jar under the -name "jaas.config" - -The JAAS initialization and authentication is perfomed by the client container. - - -Compiling and installing this example: --------------------------------------- - do : ant install - -Running this example: --------------------- - -1) Run a jonas server: - jonas start - -2) Load the jaasop.jar if you have not added it in the ejb service descriptors list : - jonas admin -a jaasop.jar - -You should see something like this when the bean is loaded : - - JAASOp available - -3) Run the client program: - -a/ The client without client container : - ------------------------------------- -on UNIX: - jclient -cp $JONAS_BASE/ejbjars/jaasop.jar jaasclient.ClientJAASOp - -On Windows: - jclient -cp %JONAS_BASE%\ejbjars\jaasop.jar jaasclient.ClientJAASOp - -In fact, the "-cp" option is not useful here, because classes are found in the CLASSPATH. - -b/ A client with client container : - -------------------------------- -first client : -java -jar $JONAS_ROOT/lib/client.jar $JONAS_BASE/clients/jaasopclient1.jar - -second client : -java -jar $JONAS_ROOT/lib/client.jar $JONAS_BASE/clients/jaasopclient2.jar - -third client : -java -jar $JONAS_ROOT/lib/client.jar $JONAS_BASE/clients/jaasopclient3.jar - -4) Stop the jonas server - jonas stop diff --git a/jonas_tests/examples/base/examples/jaasclient/build.xml b/jonas_tests/examples/base/examples/jaasclient/build.xml deleted file mode 100644 index 0773463e1c..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/build.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client-swing.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client-swing.xml deleted file mode 100644 index 19ece057bc..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client-swing.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Client of the JAASOp sample - - - ejb/JAASOp - Session - jaasclient.beans.secusb.JAASOpHome - jaasclient.beans.secusb.JAASOp - - - org.ow2.jonas.security.auth.callback.DialogCallbackHandler - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client.xml deleted file mode 100644 index 3430cd1d0f..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/application-client.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Client of the JAASOp sample - - - ejb/JAASOp - Session - jaasclient.beans.secusb.JAASOpHome - jaasclient.beans.secusb.JAASOp - - - org.ow2.jonas.security.auth.callback.LoginCallbackHandler - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client1.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client1.xml deleted file mode 100644 index bd0bc64b63..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client1.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - ejb/JAASOp - JAASOpHome - - - - jaas.config - jaasclient - jonas - jonas - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client2.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client2.xml deleted file mode 100644 index a4331e8ff9..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - ejb/JAASOp - JAASOpHome - - - - jaas.config - jaasclient - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client3.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client3.xml deleted file mode 100644 index a4331e8ff9..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-client3.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - ejb/JAASOp - JAASOpHome - - - - jaas.config - jaasclient - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-secusb.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-secusb.xml deleted file mode 100644 index 81fb51bb8d..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/jonas-secusb.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - JAASOp - JAASOpHome - - diff --git a/jonas_tests/examples/base/examples/jaasclient/etc/xml/secusb.xml b/jonas_tests/examples/base/examples/jaasclient/etc/xml/secusb.xml deleted file mode 100644 index 763ce558de..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/etc/xml/secusb.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - secured session bean JOnAS example - - secusb (jaasclient) - - - - JAASOp - jaasclient.beans.secusb.JAASOpHome - jaasclient.beans.secusb.JAASOp - jaasclient.beans.secusb.JAASOpBean - Stateful - Container - - - - - - jaas - - - - jaas - - JAASOp - * - - - - - - JAASOp - * - - Supports - - - - - diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOp.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOp.java deleted file mode 100644 index 31a4d084cc..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOp.java +++ /dev/null @@ -1,221 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): jonas team - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient; - -import jaasclient.beans.secusb.JAASOp; -import jaasclient.beans.secusb.JAASOpHome; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.login.LoginContext; -import javax.security.auth.login.LoginException; -import javax.transaction.UserTransaction; - -import org.ow2.jonas.security.auth.callback.DialogCallbackHandler; -import org.ow2.jonas.security.auth.callback.LoginCallbackHandler; -import org.ow2.jonas.security.auth.callback.NoInputCallbackHandler; - -/** - * Sample for Session Bean. Usage: jclient jaasclient.ClientJAASOp - * @author jonas team - * @author Florent Benoit : use a JAAS login module configuration for the - * authentication - */ -public class ClientJAASOp { - - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private ClientJAASOp() { - - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - //Check if there are valid args - if (args.length != 1) { - System.err.println("Syntax is : jclient jaasclient.ClientJAASOp "); - System.err.println(" - text : Prompt the user to enter login/password by command line"); - System.err.println(" - dialog : Prompt the user to enter login/password by a window dialog"); - System.err.println(" - noprompt : No prompt is asked to the user. A default login/password is used"); - System.exit(2); - } - - // Which handler use ? - CallbackHandler handler = null; - - if (args[0].equalsIgnoreCase("text")) { - handler = new LoginCallbackHandler(); - } else if (args[0].equalsIgnoreCase("dialog")) { - handler = new DialogCallbackHandler(); - } else if (args[0].equalsIgnoreCase("noprompt")) { - handler = new NoInputCallbackHandler("jonas", "jonas"); - } else { - System.err.println("Invalid type '" + args[0] - + "', valid syntax is : jclient jaasclient.ClientJAASOp "); - System.exit(2); - } - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // Obtain a LoginContext - LoginContext lc = null; - try { - lc = new LoginContext("jaasclient", handler); - } catch (LoginException le) { - System.err.println("Cannot create LoginContext: " + le.getMessage()); - System.exit(2); - } catch (SecurityException se) { - System.err.println("Cannot create LoginContext: " + se.getMessage()); - System.exit(2); - } - - System.out - .println("Use the l/p jonas/jonas to authenticate with the right role.\nYou can change this by editing the file JONAS_ROOT/conf/jonas-realm.xml."); - - // Login - try { - lc.login(); - } catch (LoginException le) { - System.err.println("Authentication failed : " + le.getMessage()); - System.exit(2); - } - - // Authentication is ok - System.out.println("Authentication succeeded"); - - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - - // Comment the following lines if you want to use a David Client: - utx = (UserTransaction) initialContext.lookup("javax.transaction.UserTransaction"); - } catch (Exception e) { - System.err.println("Cannot lookup UserTransaction: " + e); - System.exit(2); - } - - // Connecting to JAASOpHome thru JNDI - JAASOpHome home = null; - try { - home = (JAASOpHome) PortableRemoteObject.narrow(initialContext.lookup("JAASOpHome"), JAASOpHome.class); - } catch (Exception e) { - System.err.println("Cannot lookup JAASOpHome: " + e - + ". Maybe you haven't do the 'jonas admin -a jaasop.jar'"); - System.exit(2); - } - - // JAASOpBean creation - JAASOp t1 = null; - try { - System.out.println("Create a bean"); - t1 = home.create("User1"); - } catch (Exception e) { - System.err.println("Cannot create JAASOpBean: " + e); - System.exit(2); - } - - // First transaction (committed) - try { - System.out.println("Start a first transaction"); - utx.begin(); - System.out.println("First request on the new bean"); - t1.buy(FIRST_BUY_AMOUNT); - System.out.println("Second request on the bean"); - t1.buy(SECOND_BUY_AMOUNT); - System.out.println("Commit the transaction"); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - // Start another transaction (rolled back) - try { - System.out.println("Start a second transaction"); - utx.begin(); - t1.buy(THIRD_BUY_AMOUNT); - System.out.println("Rollback the transaction"); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // Get the total bought, outside the transaction - int val = 0; - try { - System.out.println("Request outside any transaction"); - val = t1.read(); - } catch (Exception e) { - System.err.println("Cannot read value on t1 : " + e); - System.exit(2); - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - System.err.println("Bad value read: " + val); - System.exit(2); - } - - // Remove Session bean - try { - t1.remove(); - } catch (Exception e) { - System.out.println("Exception on buy: " + e); - System.exit(2); - } - System.out.println("ClientJAASOp OK. Exiting."); - System.exit(0); - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClient.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClient.java deleted file mode 100644 index 638d7b840c..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClient.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): jonas team - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient; - -// import javax -import jaasclient.beans.secusb.JAASOp; -import jaasclient.beans.secusb.JAASOpHome; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.transaction.UserTransaction; - -/** - * Sample for Session Bean. - * Usage: - * jclient jaasclient.ClientJAASOpContClient - * @author jonas team - * @author Florent Benoit - */ -public class ClientJAASOpContClient { - - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private ClientJAASOpContClient() { - - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - utx = (UserTransaction) initialContext.lookup("java:comp/UserTransaction"); - } catch (Exception e) { - System.err.println("Cannot lookup java:comp/UserTransaction: " + e); - System.exit(2); - } - - // Connecting to JAASOpHome thru JNDI - JAASOpHome home = null; - try { - home = (JAASOpHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/JAASOp"), JAASOpHome.class); - } catch (Exception e) { - System.err.println("Cannot lookup java:comp/env/ejb/JAASOp: " + e + ". Maybe you haven't do the 'jonas admin -a jaasop.jar'"); - System.exit(2); - } - - // JAASOpBean creation - JAASOp t1 = null; - try { - System.out.println("Create a bean"); - t1 = home.create("User1"); - } catch (Exception e) { - System.err.println("Cannot create JAASOpBean: " + e); - System.exit(2); - } - - // First transaction (committed) - try { - System.out.println("Start a first transaction"); - utx.begin(); - System.out.println("First request on the new bean"); - t1.buy(FIRST_BUY_AMOUNT); - System.out.println("Second request on the bean"); - t1.buy(SECOND_BUY_AMOUNT); - System.out.println("Commit the transaction"); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - // Start another transaction (rolled back) - try { - System.out.println("Start a second transaction"); - utx.begin(); - t1.buy(THIRD_BUY_AMOUNT); - System.out.println("Rollback the transaction"); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // Get the total bought, outside the transaction - int val = 0; - try { - System.out.println("Request outside any transaction"); - val = t1.read(); - } catch (Exception e) { - System.err.println("Cannot read value on t1 : " + e); - System.exit(2); - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - System.err.println("Bad value read: " + val); - System.exit(2); - } - - // Remove Session bean - try { - t1.remove(); - } catch (Exception e) { - System.out.println("Exception on buy: " + e); - System.exit(2); - } - System.out.println("ClientJAASOpContClient OK. Exiting."); - System.exit(0); - } -} diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClientSwing.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClientSwing.java deleted file mode 100644 index 85e3725cf0..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/ClientJAASOpContClientSwing.java +++ /dev/null @@ -1,184 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): jonas team - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient; - -import jaasclient.beans.secusb.JAASOp; -import jaasclient.beans.secusb.JAASOpHome; - -import java.awt.event.ActionEvent; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.WindowConstants; -import javax.transaction.UserTransaction; - -/** - * Sample for Session Bean. - * @author jonas team - * @author Florent Benoit - * @author Markus Karg : Add Swing interface - */ -public class ClientJAASOpContClientSwing { - - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private ClientJAASOpContClientSwing() { - - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - - final JFrame jf = new JFrame("Test Application"); - jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - final JButton jb = new JButton(); - final Action a = new AbstractAction("Click here to test!") { - public final void actionPerformed(final ActionEvent v) { - - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - utx = (UserTransaction) initialContext.lookup("java:comp/UserTransaction"); - } catch (Exception e) { - System.err.println("Cannot lookup java:comp/UserTransaction: " + e); - System.exit(2); - } - - // Connecting to JAASOpHome thru JNDI - JAASOpHome home = null; - try { - home = (JAASOpHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/JAASOp"), JAASOpHome.class); - } catch (Exception e) { - System.err.println("Cannot lookup java:comp/env/ejb/JAASOp: " + e + ". Maybe you haven't do the 'jonas admin -a jaasop.jar'"); - System.exit(2); - } - - // JAASOpBean creation - JAASOp t1 = null; - try { - System.out.println("Create a bean"); - t1 = home.create("User1"); - } catch (Exception e) { - System.err.println("Cannot create JAASOpBean: " + e); - System.exit(2); - } - - // First transaction (committed) - try { - System.out.println("Start a first transaction"); - utx.begin(); - System.out.println("First request on the new bean"); - t1.buy(FIRST_BUY_AMOUNT); - System.out.println("Second request on the bean"); - t1.buy(SECOND_BUY_AMOUNT); - System.out.println("Commit the transaction"); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - // Start another transaction (rolled back) - try { - System.out.println("Start a second transaction"); - utx.begin(); - t1.buy(THIRD_BUY_AMOUNT); - System.out.println("Rollback the transaction"); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // Get the total bought, outside the transaction - int val = 0; - try { - System.out.println("Request outside any transaction"); - val = t1.read(); - } catch (Exception e) { - System.err.println("Cannot read value on t1 : " + e); - System.exit(2); - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - System.err.println("Bad value read: " + val); - System.exit(2); - } - - // Remove Session bean - try { - t1.remove(); - } catch (Exception e) { - System.out.println("Exception on buy: " + e); - System.exit(2); - } - System.out.println("ClientJAASOpContClientSwing OK. Exiting."); - System.exit(0); - - - - } - }; - jb.setAction(a); - jf.getContentPane().add(jb); - jf.pack(); - jf.setVisible(true); - } -} diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOp.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOp.java deleted file mode 100644 index a0ad103433..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOp.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient.beans.secusb; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - -/** - * Remote interface for the bean JAASOp - * @author JOnAS team - */ -public interface JAASOp extends EJBObject { - - /** - * Business method implementation. - * @param shares nb of shares to be bought - * @throws RemoteException if RMI failed. - */ - void buy (int shares) throws RemoteException; - - /** - * Business method implementation. - * @return the nb of shares bought - * @throws RemoteException if RMI failed. - */ - int read () throws RemoteException; - -} diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpBean.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpBean.java deleted file mode 100644 index 85b4aaf468..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpBean.java +++ /dev/null @@ -1,240 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient.beans.secusb; - -import javax.ejb.EJBException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.ejb.SessionSynchronization; - -/** - * This is an example of Session Bean, statefull, and synchronized. - * @author JOnAS team - */ -public class JAASOpBean implements SessionBean, SessionSynchronization { - - /** - * Actual state of the bean - */ - private int total = 0; - - /** - * value inside Tx, not yet committed. - */ - private int newtotal = 0; - - /** - * User client - */ - private String clientUser = null; - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param user the user name - */ - public void ejbCreate(String user) { - total = 0; - // in case we are outside transactions - newtotal = total; - clientUser = user; - } - - /* =============== javax.ejb.SessionBean 2.0 implementation ============== */ - - /** - * The activate method is called when the instance is activated from its - * "passive" state. The instance should acquire any resource that it has - * released earlier in the ejbPassivate() method. This method is called with - * no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbActivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * The passivate method is called before the instance enters the "passive" - * state. The instance should release any resources that it can re-acquire - * later in the ejbActivate() method. After the passivate method completes, - * the instance must be in a state that allows the container to use the Java - * Serialization protocol to externalize and store away the instance's - * state. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbPassivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbRemove() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for applications - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, java.rmi.RemoteException { - } - - /* - * ============== javax.ejb.SessionSynchronization implementation - * ============= - */ - - /** - * The afterBegin method notifies a session Bean instance that a new - * transaction has started, and that the subsequent business methods on the - * instance will be invoked in the context of the transaction. The instance - * can use this method, for example, to read data from a database and cache - * the data in the instance fields. This method executes in the proper - * transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterBegin() throws EJBException, java.rmi.RemoteException { - newtotal = total; - } - - /** - * The beforeCompletion method notifies a session Bean instance that a - * transaction is about to be committed. The instance can use this method, - * for example, to write any cached data to a database. This method executes - * in the proper transaction context. Note: The instance may still - * cause the container to rollback the transaction by invoking the - * setRollbackOnly() method on the instance context, or by throwing an - * exception. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void beforeCompletion() throws EJBException, java.rmi.RemoteException { - } - - /** - * The afterCompletion method notifies a session Bean instance that a - * transaction commit protocol has completed, and tells the instance whether - * the transaction has been committed or rolled back. This method executes - * with no transaction context. - * @param committed - True if the transaction has been committed, false if - * is has been rolled back. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterCompletion(boolean committed) throws EJBException, java.rmi.RemoteException { - - if (committed) { - total = newtotal; - } else { - newtotal = total; - } - } - - /* ========================= Op implementation ============================ */ - - /** - * Business method implementation. - * @param s nb of shares to be bought - */ - public void buy(int s) { - newtotal = newtotal + s; - return; - } - - /** - * Business method implementation. - * @return the nb of shares bought - */ - public int read() { - return newtotal; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpHome.java b/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpHome.java deleted file mode 100644 index aef5a80e23..0000000000 --- a/jonas_tests/examples/base/examples/jaasclient/src/jaasclient/beans/secusb/JAASOpHome.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package jaasclient.beans.secusb; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean JAASOp - * @author JOnAS team - */ -public interface JAASOpHome extends EJBHome { - - /** - * Create an instance of the Op bean. - * @param user the user name. - * @return the Remote interface of the bean Op. - * @throws CreateException if the creation failed. - * @throws RemoteException if the RMI call failed. - */ - JAASOp create(String user) throws CreateException, RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/jdo/Bank_src.zip b/jonas_tests/examples/base/examples/jdo/Bank_src.zip deleted file mode 100644 index daf554b007c0a03a721b63816e0f16adc20718e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11176 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

    w#t**OCIzFh3PH4jGzVfcSzEt z%^>~dhBdV>0=lR^Z)V;Q7d))(#NSrXmcwZ!rHo=5`D{4&` zEnSw(Ip-S;24EP%$v5K97rlpC%=TOXtHceANVfqUdpCUN;)ZrB3wUr)uFOuoc6@jl zQTOklI>cKN8d05MC)k-s;T@?ZhT*~Ml}($zg8HgIjR-pZ%c8poNpwGjg~u=tx6{W} zN^HWIS7{7+zf-M?Ck?&@769LDeaEBB;gI|e z+YWK)Pc14L=@R1qwFk$sw=T@$FmhpKtp$#VRM37K2@a(0QoUn}@cBgHV-5CZ3`PySS?3m|-;Zy03XP7)YNG)ilz*cDmHT{Z%H5CeHL@q(}KGT>WCGNO{Pth(2O1p-g z#~uH!=26QoYHjHhny-W2GQJ91FVP!v&TWCsDdk+vX-T^@8eKnP zKI+Ku*q1C_Y)Oe!)M~+?CHM9)JaN4#Cltr)m}~h^MZ&gA0Mn3gJ+1`#Sx&;cJ z-WuhYw!Y=3sq+R6m5H{TMH^AFw8K9ME-o#27cEzBfsGG^&ef;ib5-(29m6#@cylB6J*?i#BgA6eyx~jQ^gx%=T;nE_MOEZImo1h^Jxvl?@9X>!RD@KNI8M(ql{dk}b-QgBW)E@Z?h=SWj@4@oY8yxapp^2J&!MKY`OCu!68-KD%bJn}W)tv68UZ$`J+t9`~NEz1HFX$hVh9j>De`N7d)NVjdr`>U* z7-#ed1{UE2UN7GAAwj|gsK$#CbHHfB>sI;{C$@e$*w>+gS+XC<8237nj4yg0U2PAR z{Lp!T%GCv)C^bo>Dh{*e?S1F;*=f7Y<(%)l<~V~8JTOx066&@y@%W+XhXNcS&V+Tg zGaX?)-C1f6$q4P~?aq132SfJ>tuaX`m?mX%Qj*7+vsNqMZRGglUg%+EQ$!!U>xhy4 z4)6)%DK5D)*I6B9M|Kw&A0CPPfzbEu_=_mJv2=km=Q%)Nd|6$$FtBxW1U;`EXT{Fv z7#pb-*N@hQSOJu^r$m^!5_bs3VG1SCn>ly)L(O1Z>3_S+L)zSDuz z%~~3LVLn{b^4Kt^Xu#}(xuM$3!1{g2b@~EQyU!=n*`GF#t{x~oT|t1!zVRbn*J${! zCm$fbTBUcou_h0%FcT6l@smZD8kUx$*3Vnd4JvM_se6$M5rXT+CO0ODH_8KLf8_Vf zp##WfCE6}2qSd3TyaTjMh4!W2H$vrsYcM}pV(D+a(<@_xPT8F}pn3h(xWBb1=S**Z zqI2TrOl&6VZ3Qd2pi{&`cgD93a?!&6a<}M{xM~-;MjGh}9ppt#^H}}8RPI;tm01~h zGtkTmW^05}Jjz=K))ddlK2ByStOk={nS_}w+Z2`Ddmp>J`!nf9g3i|<1y}E;BSib~ z;`-fMpfX*c3Kmd&kZ*a~+1vrko#oxun7cGXDI3wLZ_`Jz*YmBEm-&lIYo@l;yfBg6 zly9kr5^s;E-Q`i!6Ve2;*mi+^vqq{I=851+x6mhhx%0k*r2#o?+pQL@U|(sT`^2Xg z4Uox13f z-SzSI#SaeRdr-K^-mrsQo@(WZ0!4bbbdy&`8^|Qi9q^Wfsf>>i0)FO=cj%OnD4Y+G z-eWJkafXTt55$!7fhA5E(}{BY(?~(X^ds!&|MJM~*`TTEm z|CY^P(!H#p{GtnZ&IkXc`#+Y=%WV4>Lo)vVV)!Tbe)$$J)6icWUtj&k@ggaG$?`H& z`^BNPOZdxO@)vyPxu@~3CjZ?tU*cc7.properties - -Djdbc.driver=.jar - createDataStruct - -For example: - $ ant -Dspeedo.dbconf=$JONAS_BASE/conf/PostgreSQL1.properties -Djdbc.driver=/usr/share/postgresql/pg74.215.jdbc3.jar createDataStruct - - -Running this example -==================== -Commands are given for an Unix system, similar commands can be done on Windows. - -1) Run a JOnAS server with speedo: - $ jonas start - $ jonas admin -a speedo-jdo_for_jonas_ra.rar - -2) Load the ejb-jar file of this example - $ jonas admin -a bank.jar - -3) Run the client - $ jclient -cp $JONAS_BASE/ejbjars/bank.jar:$JONAS_ROOT/lib/commons/jonas/speedo/speedo-jdo_client.jar Client - -4) Stop the JOnAS server - $ jonas stop - - - diff --git a/jonas_tests/examples/base/examples/jdo/build.xml b/jonas_tests/examples/base/examples/jdo/build.xml deleted file mode 100644 index 6c276d9aec..0000000000 --- a/jonas_tests/examples/base/examples/jdo/build.xml +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/jonas-common.xml b/jonas_tests/examples/base/examples/jonas-common.xml deleted file mode 100644 index 5cbe72064f..0000000000 --- a/jonas_tests/examples/base/examples/jonas-common.xml +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/build.xml b/jonas_tests/examples/base/examples/src/build.xml deleted file mode 100644 index 8fc33165cf..0000000000 --- a/jonas_tests/examples/base/examples/src/build.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/eb/Account.idb b/jonas_tests/examples/base/examples/src/eb/Account.idb deleted file mode 100644 index 7c6ade33e9..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/Account.idb +++ /dev/null @@ -1,23 +0,0 @@ -; First load the JDBC driver and open a database. -d org.enhydra.instantdb.jdbc.idbDriver; -; for Instantdb version older than v3.14, put the following line instead: -; d jdbc.idbDriver; -o jdbc:idb=db1.prp; - -; Create the table -e DROP TABLE accountsample_; -e CREATE TABLE accountsample_ ( - accno_ int PRIMARY KEY, - customer_ VARCHAR(30), - balance_ double); - -; put some initial data in the table -p INSERT INTO accountsample_ VALUES (?,?,?); -s 101,'Antoine de St Exupery', 200.00; -s 102,'Alexandre Dumas fils', 400.00; -s 103,'Conan Doyle', 500.00; -s 104,'Alfred de Musset', 100.00; -s 105,'Phileas Lebegue', 350.00; -s 106,'Alphonse de Lamartine', 650.00; -q SELECT * FROM accountsample_; -c close; diff --git a/jonas_tests/examples/base/examples/src/eb/Account.java b/jonas_tests/examples/base/examples/src/eb/Account.java deleted file mode 100644 index 8dd7aa56fb..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/Account.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - -/** - * Remote interface for the bean Account - * @author JOnAS team - */ -public interface Account extends EJBObject { - - double getBalance() throws RemoteException; - - void setBalance(double d) throws RemoteException; - - String getCustomer() throws RemoteException; - - void setCustomer(String c) throws RemoteException; - - int getNumber() throws RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/Account.pgsql b/jonas_tests/examples/base/examples/src/eb/Account.pgsql deleted file mode 100644 index 2cdde88888..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/Account.pgsql +++ /dev/null @@ -1,12 +0,0 @@ -drop table accountsample_; -create table accountsample_ ( - accno_ integer primary key, - customer_ varchar(30), - balance_ float8 -); -insert into accountsample_ values(101, 'Antoine de St Exupery', 200.00); -insert into accountsample_ values(102, 'alexandre dumas fils', 400.00); -insert into accountsample_ values(103, 'conan doyle', 500.00); -insert into accountsample_ values(104, 'alfred de musset', 100.00); -insert into accountsample_ values(105, 'phileas lebegue', 350.00); -insert into accountsample_ values(106, 'alphonse de lamartine', 650.00); diff --git a/jonas_tests/examples/base/examples/src/eb/Account.sql b/jonas_tests/examples/base/examples/src/eb/Account.sql deleted file mode 100644 index 9838afcb83..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/Account.sql +++ /dev/null @@ -1,12 +0,0 @@ -drop table accountsample_; -create table accountsample_ ( - accno_ integer primary key, - customer_ varchar(30), - balance_ number(15, 4) -); -insert into accountsample_ values(101, 'Antoine de St Exupery', 200.00); -insert into accountsample_ values(102, 'alexandre dumas fils', 400.00); -insert into accountsample_ values(103, 'conan doyle', 500.00); -insert into accountsample_ values(104, 'alfred de musset', 100.00); -insert into accountsample_ values(105, 'phileas lebegue', 350.00); -insert into accountsample_ values(106, 'alphonse de lamartine', 650.00); diff --git a/jonas_tests/examples/base/examples/src/eb/AccountExplBean.java b/jonas_tests/examples/base/examples/src/eb/AccountExplBean.java deleted file mode 100644 index 1d759eb781..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/AccountExplBean.java +++ /dev/null @@ -1,541 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -import java.rmi.RemoteException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Enumeration; -import java.util.Vector; - -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.FinderException; -import javax.ejb.ObjectNotFoundException; -import javax.ejb.RemoveException; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.sql.DataSource; - -/** - * AccountExplBean is an entity bean with "bean managed persistence". The state - * of an instance is stored into a relational database. The following table - * should exist: create table ACCOUNT (ACCNO integer primary key, CUSTOMER - * varchar(30), BALANCE number(15,4)); Note : In order to keep the code - * readable, not all database errors have been handled. In particular the - * closing of the statement and of the connexion would have being put in a - * "finally" block. - * @author JOnAS team - */ - -public class AccountExplBean implements EntityBean { - - private DataSource dataSource = null; - - // Keep the reference on the EntityContext - protected EntityContext entityContext; - - // Object state - must de public (EJB spec.) - public Integer accno; - - public String customer; - - public double balance; - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param accno account number - * @param customer customer name - * @param balance initial balance - * @return pk primary key - * @exception CreateException If the instance could not perform the function - * requested by the container - */ - public Integer ejbCreate(int val_accno, String val_customer, double val_balance) throws CreateException { - - // Init object state - accno = new Integer(val_accno); - customer = val_customer; - balance = val_balance; - - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - - // create object in DB - stmt = conn.prepareStatement("insert into accountsample_ (accno_, customer_, balance_) values (?, ?, ?)"); - stmt.setInt(1, accno.intValue()); - stmt.setString(2, customer); - stmt.setDouble(3, balance); - stmt.executeUpdate(); - - } catch (SQLException e) { - throw new CreateException("Failed to create bean in database: " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - // Return the primary key - return accno; - } - - /** - * Each ejbCreate method should have a matching ejbPostCreate method - */ - public void ejbPostCreate(int val_accno, String val_customer, double val_balance) { - // Nothing to be done for this simple example. - } - - /* - * ====================== javax.ejb.EntityBean implementation - * ================= - */ - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. This method transitions the instance to the ready state. This - * method executes in an unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbActivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by loading it state from the underlying database. This method - * always executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbLoad() { - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - - // find account in DB - stmt = conn.prepareStatement("select customer_,balance_ from accountsample_ where accno_=?"); - Integer pk = (Integer) entityContext.getPrimaryKey(); - stmt.setInt(1, pk.intValue()); - ResultSet rs = stmt.executeQuery(); - if (!rs.next()) { - throw new EJBException("Failed to load bean from database"); - } - - // update object state - accno = pk; - customer = rs.getString("customer_"); - balance = rs.getDouble("balance_"); - - } catch (SQLException e) { - throw new EJBException("Failed to load bean from database " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. After this method - * completes, the container will place the instance into the pool of - * available instances. This method executes in an unspecified transaction - * context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbPassivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method before it removes the EJB object that is - * currently associated with the instance. This method is invoked when a - * client invokes a remove operation on the enterprise Bean's home interface - * or the EJB object's remote interface. This method transitions the - * instance from the ready state to the pool of available instances. This - * method is called in the transaction context of the remove operation. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - * @exception RemoveException The enterprise Bean does not allow destruction - * of the object. - */ - public void ejbRemove() throws RemoveException { - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - - // delete Object in DB - stmt = conn.prepareStatement("delete from accountsample_ where accno_=?"); - Integer pk = (Integer) entityContext.getPrimaryKey(); - stmt.setInt(1, pk.intValue()); - stmt.executeUpdate(); - - } catch (SQLException e) { - throw new RemoveException("Failed to delete bean from database" + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by storing it to the underlying database. This method always - * executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbStore() { - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - - // store Object state in DB - stmt = conn.prepareStatement("update accountsample_ set customer_=?,balance_=? where accno_=?"); - stmt.setString(1, customer); - stmt.setDouble(2, balance); - Integer pk = (Integer) entityContext.getPrimaryKey(); - stmt.setInt(3, pk.intValue()); - stmt.executeUpdate(); - - } catch (SQLException e) { - throw new EJBException("Failed to store bean to database " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - } - - /** - * Sets the associated entity context. The container invokes this method on - * an instance after the instance has been created. This method is called in - * an unspecified transaction context. - * @param ctx - An EntityContext interface for the instance. The instance - * should store the reference to the context in an instance variable. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setEntityContext(EntityContext ctx) { - - // Keep the entity context in object - entityContext = ctx; - - } - - /** - * Unsets the associated entity context. The container calls this method - * before removing the instance. This is the last method that the container - * invokes on the instance. The Java garbage collector will eventually - * invoke the finalize() method on the instance. This method is called in an - * unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void unsetEntityContext() { - entityContext = null; - } - - /* ============================ ejbFind methods =========================== */ - - /** - * There must be one ejbFind method per find method on the Home interface, - * and with the same signature. ejbFindByPrimaryKey is the only mandatory - * ejbFind method. - * @param pk The primary key - * @return pk The primary key - * @exception FinderException - Failed to execute the query. - * @exception ObjectNotFoundException - Object not found for this primary - * key. - */ - public Integer ejbFindByPrimaryKey(Integer pk) throws ObjectNotFoundException, FinderException { - - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - - // lookup for this primary key in DB - stmt = conn.prepareStatement("select accno_ from accountsample_ where accno_=?"); - stmt.setInt(1, pk.intValue()); - ResultSet rs = stmt.executeQuery(); - if (!rs.next()) { - throw new javax.ejb.ObjectNotFoundException(); - } - - } catch (SQLException e) { - throw new javax.ejb.FinderException("Failed to executeQuery " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - - // return primary key - return pk; - } - - /** - * Find Account by its account number - * @return pk The primary key - * @exception FinderException - Failed to execute the query. - * @exception ObjectNotFoundException - Object not found for this account - * number - */ - public Integer ejbFindByNumber(int accno) throws ObjectNotFoundException, FinderException { - - Connection conn = null; - PreparedStatement stmt = null; - try { - // get a connection for this transaction context - conn = getConnection(); - // lookup for this primary key in DB - stmt = conn.prepareStatement("select accno_ from accountsample_ where accno_=?"); - stmt.setInt(1, accno); - ResultSet rs = stmt.executeQuery(); - if (!rs.next()) { - throw new javax.ejb.ObjectNotFoundException(); - } - - } catch (SQLException e) { - throw new javax.ejb.FinderException("Failed to executeQuery " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - - // return a primary key for this account - return new Integer(accno); - } - - /** - * Creates an enumeration of primary keys for all accounts - * @return pkv The primary keys - * @exception FinderException - Failed to execute the query. - */ - public Enumeration ejbFindAllAccounts() throws FinderException { - Connection conn = null; - PreparedStatement stmt = null; - Vector pkv = new Vector(); - try { - // get a connection for this transaction context - conn = getConnection(); - - // Lookup for all accounts in DB - stmt = conn.prepareStatement("select accno_ from accountsample_"); - ResultSet rs = stmt.executeQuery(); - - // Build the vector of primary keys - while (rs.next()) { - Integer pk = new Integer(rs.getInt("accno_")); - pkv.addElement((Object) pk); - } - - } catch (SQLException e) { - throw new javax.ejb.FinderException("Failed to executeQuery " + e); - } finally { - try { - if (stmt != null) { - //close statement - stmt.close(); - } - if (conn != null) { - //release connection - conn.close(); - } - } catch (Exception ignore) { - } - } - - // return primary keys - return pkv.elements(); - } - - /** - * @return the connection from the dataSource - * @exception EJBException Thrown by the method if the dataSource is not - * found in the naming. - * @exception SQLException may be thrown by dataSource.getConnection() - */ - private Connection getConnection() throws EJBException, SQLException { - if (dataSource == null) { - // Finds DataSource from JNDI - Context initialContext = null; - try { - initialContext = new InitialContext(); - dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/AccountExplDs"); - } catch (Exception e) { - System.out.println("Cannot lookup dataSource" + e); - throw new javax.ejb.EJBException("Cannot lookup dataSource "); - } - } - return dataSource.getConnection(); - } - - /* - * ========================= Account implementation - * ============================ - */ - - /** - * Business method for returning the balance. - * @return balance - */ - public double getBalance() { - - return balance; - } - - /** - * Business method for updating the balance. - * @param d balance to update - */ - public void setBalance(double d) { - - balance = balance + d; - } - - /** - * Business method for returning the customer. - * @return customer - */ - public String getCustomer() { - - return customer; - } - - /** - * Business method for changing the customer name. - * @param c customer to update - */ - public void setCustomer(String c) { - - customer = c; - } - - /** - * Business method to get the Account number - */ - public int getNumber() { - return accno.intValue(); - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/AccountHome.java b/jonas_tests/examples/base/examples/src/eb/AccountHome.java deleted file mode 100644 index 694c45a949..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/AccountHome.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -import java.rmi.RemoteException; -import java.util.Enumeration; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; -import javax.ejb.FinderException; - -/** - * Home interface for the bean Account - * @author JOnAS team - */ -public interface AccountHome extends EJBHome { - - Account create(int accno, String customer, double balance) throws RemoteException, CreateException; - - Account findByPrimaryKey(Integer pk) throws RemoteException, FinderException; - - Account findByNumber(int accno) throws RemoteException, FinderException; - - Enumeration findAllAccounts() throws RemoteException, FinderException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/AccountImpl2Bean.java b/jonas_tests/examples/base/examples/src/eb/AccountImpl2Bean.java deleted file mode 100644 index df9b888ade..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/AccountImpl2Bean.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -/** - * Accountbean is an entity bean with "container managed persistence version 2". - * The state of an instance is stored into a relational database. The following - * table should exist: create table ACCOUNT (ACCNO integer primary key, CUSTOMER - * varchar(30), BALANCE number(15,4)); - * @author Christophe Ney cney@batisseurs.com - */ - - -import javax.ejb.CreateException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.RemoveException; - -public abstract class AccountImpl2Bean implements EntityBean { - - // Keep the reference on the EntityContext - protected EntityContext entityContext; - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param accno account number - * @param customer customer name - * @param balance initial balance - * @return pk primary key set to null - */ - public Integer ejbCreate(int val_accno, String val_customer, double val_balance) throws CreateException { - - // Init object state - setAccno(val_accno); - setCustomer(val_customer); - setBalance(val_balance); - return null; - } - - /** - * Each ejbCreate method should have a matching ejbPostCreate method - */ - public void ejbPostCreate(int val_accno, String val_customer, double val_balance) { - // Nothing to be done for this simple example. - } - - /* - * ====================== javax.ejb.EntityBean implementation - * ================= - */ - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. This method transitions the instance to the ready state. This - * method executes in an unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbActivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by loading it state from the underlying database. This method - * always executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbLoad() { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. After this method - * completes, the container will place the instance into the pool of - * available instances. This method executes in an unspecified transaction - * context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbPassivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method before it removes the EJB object that is - * currently associated with the instance. This method is invoked when a - * client invokes a remove operation on the enterprise Bean's home interface - * or the EJB object's remote interface. This method transitions the - * instance from the ready state to the pool of available instances. This - * method is called in the transaction context of the remove operation. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - * @exception RemoveException The enterprise Bean does not allow destruction - * of the object. - */ - public void ejbRemove() throws RemoveException { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by storing it to the underlying database. This method always - * executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbStore() { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * Sets the associated entity context. The container invokes this method on - * an instance after the instance has been created. This method is called in - * an unspecified transaction context. - * @param ctx - An EntityContext interface for the instance. The instance - * should store the reference to the context in an instance variable. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setEntityContext(EntityContext ctx) { - - // Keep the entity context in object - entityContext = ctx; - } - - /** - * Unsets the associated entity context. The container calls this method - * before removing the instance. This is the last method that the container - * invokes on the instance. The Java garbage collector will eventually - * invoke the finalize() method on the instance. This method is called in an - * unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void unsetEntityContext() { - entityContext = null; - } - - /** - * Business method to get the Account number - */ - public int getNumber() { - return getAccno(); - } - - /* - * ========================= Account implementation - * ============================ - */ - - public abstract String getCustomer(); - - public abstract void setCustomer(String customer); - - public abstract double getBalance(); - - public abstract void setBalance(double balance); - - public abstract int getAccno(); - - public abstract void setAccno(int accno); - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/AccountImplBean.java b/jonas_tests/examples/base/examples/src/eb/AccountImplBean.java deleted file mode 100644 index bc6a5e5d95..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/AccountImplBean.java +++ /dev/null @@ -1,248 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -/** - * Accountbean is an entity bean with "container managed persistence". The state - * of an instance is stored into a relational database. The following table - * should exist: create table ACCOUNT (ACCNO integer primary key, CUSTOMER - * varchar(30), BALANCE number(15,4)); - * @author JOnAS team - */ - - -import javax.ejb.CreateException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.RemoveException; - -public class AccountImplBean implements EntityBean { - - // Keep the reference on the EntityContext - protected EntityContext entityContext; - - // Object state - public Integer accno; - - public String customer; - - public double balance; - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param accno account number - * @param customer customer name - * @param balance initial balance - * @return pk primary key set to null - */ - public Integer ejbCreate(int val_accno, String val_customer, double val_balance) throws CreateException { - - // Init object state - accno = new Integer(val_accno); - customer = val_customer; - balance = val_balance; - return null; - } - - /** - * Each ejbCreate method should have a matching ejbPostCreate method - */ - public void ejbPostCreate(int val_accno, String val_customer, double val_balance) { - // Nothing to be done for this simple example. - } - - /* - * ====================== javax.ejb.EntityBean implementation - * ================= - */ - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. This method transitions the instance to the ready state. This - * method executes in an unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbActivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by loading it state from the underlying database. This method - * always executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbLoad() { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. After this method - * completes, the container will place the instance into the pool of - * available instances. This method executes in an unspecified transaction - * context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbPassivate() { - // Nothing to be done for this simple example. - } - - /** - * A container invokes this method before it removes the EJB object that is - * currently associated with the instance. This method is invoked when a - * client invokes a remove operation on the enterprise Bean's home interface - * or the EJB object's remote interface. This method transitions the - * instance from the ready state to the pool of available instances. This - * method is called in the transaction context of the remove operation. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - * @exception RemoveException The enterprise Bean does not allow destruction - * of the object. - */ - public void ejbRemove() throws RemoveException { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by storing it to the underlying database. This method always - * executes in the proper transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbStore() { - // Nothing to be done for this simple example, in implicit persistance. - } - - /** - * Sets the associated entity context. The container invokes this method on - * an instance after the instance has been created. This method is called in - * an unspecified transaction context. - * @param ctx - An EntityContext interface for the instance. The instance - * should store the reference to the context in an instance variable. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setEntityContext(EntityContext ctx) { - - // Keep the entity context in object - entityContext = ctx; - } - - /** - * Unsets the associated entity context. The container calls this method - * before removing the instance. This is the last method that the container - * invokes on the instance. The Java garbage collector will eventually - * invoke the finalize() method on the instance. This method is called in an - * unspecified transaction context. - * @exception EJBException Thrown by the method to indicate a failure caused - * by a system-level error. - * @exception RemoteException - This exception is defined in the method - * signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specification should throw - * the javax.ejb.EJBException instead of this exception. - */ - public void unsetEntityContext() { - entityContext = null; - } - - /* - * ========================= Account implementation - * ============================ - */ - - /** - * Business method for returning the balance. - * @return balance - */ - public double getBalance() { - - return balance; - } - - /** - * Business method for updating the balance. - * @param d balance to update - */ - public void setBalance(double d) { - - balance = balance + d; - } - - /** - * Business method for returning the customer. - * @return customer - */ - public String getCustomer() { - - return customer; - } - - /** - * Business method for changing the customer name. - * @param c customer to update - */ - public void setCustomer(String c) { - - customer = c; - } - - /** - * Business method to get the Account number - */ - public int getNumber() { - return accno.intValue(); - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/Accounthsqldb.sql b/jonas_tests/examples/base/examples/src/eb/Accounthsqldb.sql deleted file mode 100644 index 4885f418ee..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/Accounthsqldb.sql +++ /dev/null @@ -1,12 +0,0 @@ -drop table accountsample_; -create table accountsample_ ( - accno_ integer primary key, - customer_ varchar(30), - balance_ float -); -insert into accountsample_ values(101, 'Antoine de St Exupery', 200.00); -insert into accountsample_ values(102, 'alexandre dumas fils', 400.00); -insert into accountsample_ values(103, 'conan doyle', 500.00); -insert into accountsample_ values(104, 'alfred de musset', 100.00); -insert into accountsample_ values(105, 'phileas lebegue', 350.00); -insert into accountsample_ values(106, 'alphonse de lamartine', 650.00); diff --git a/jonas_tests/examples/base/examples/src/eb/ClientAccount.java b/jonas_tests/examples/base/examples/src/eb/ClientAccount.java deleted file mode 100644 index efb4a15f0a..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/ClientAccount.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package eb; - -import java.util.Enumeration; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.transaction.UserTransaction; - -/** - * Sample for entity beans. Usage: implicit persistance: java eb.ClientAccount - * AccountImplHome explicit persistance: java eb.ClientAccount AccountExplHome - * @author JOnAS team - */ -public class ClientAccount { - - /** - * UserTransaction object - */ - private static UserTransaction utx = null; - - private static void accountList(AccountHome h) { - Enumeration alist; - Account acc; - try { - utx.begin(); // faster if made inside a Tx - alist = h.findAllAccounts(); - while (alist.hasMoreElements()) { - acc = (Account) PortableRemoteObject.narrow(alist.nextElement(), Account.class); - System.out.println(acc.getNumber() + " " + acc.getCustomer() + " " + acc.getBalance()); - } - utx.commit(); - } catch (Exception e) { - System.err.println("Exception getting account list: " + e); - System.exit(2); - } - } - - public static void main(String[] args) { - - // 1st arg. is the bean home (AccountImplHome or AccountExplHome) - String beanName = args[0]; - - // get JNDI initial context - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // We want to start transactions from client: get UserTransaction - System.out.println("Getting a UserTransaction object from JNDI"); - try { - - // Comment the following lines if you want to use a David Client: - utx = (UserTransaction) initialContext.lookup("javax.transaction.UserTransaction"); - - } catch (Exception e) { - System.err.println("Cannot lookup UserTransaction: " + e); - System.exit(2); - } - - // Connecting to Home thru JNDI - System.out.println("Connecting to the AccountHome"); - AccountHome home = null; - try { - home = (AccountHome) PortableRemoteObject.narrow(initialContext.lookup(beanName), AccountHome.class); - } catch (Exception e) { - System.err.println("Cannot lookup " + beanName + ": " + e); - System.exit(2); - } - - // List existing Accounts - System.out.println("Getting the list of existing accounts in database"); - accountList(home); - - // Create a first Account - System.out.println("Creating a new Account in database"); - Account a1 = null; - try { - a1 = home.create(109, "John Smith", 0); - } catch (Exception e) { - System.err.println("Cannot create Account: " + e); - System.exit(2); - } - - // Find a second Account - System.out.println("Finding an Account by its number in database"); - Account a2 = null; - try { - a2 = home.findByNumber(102); - } catch (Exception e) { - System.err.println("Cannot find Account: " + e); - System.exit(2); - } - - // First transaction (committed): - // transfert 100 from a2 to a1 - System.out.println("Starting a first transaction, that will be committed"); - try { - double value = 100.00; - utx.begin(); - a1.setBalance(value); - a2.setBalance(-value); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - - // Start another transaction (rolled back): - // transfert 20 from a1 to a2 - System.out.println("Starting a second transaction, that will be rolled back"); - try { - double value = 20.00; - utx.begin(); - a1.setBalance(-value); - a2.setBalance(value); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // List existing Accounts - System.out.println("Getting the new list of accounts in database"); - accountList(home); - - // Delete account - System.out.println("Removing Account previously created in database"); - try { - a1.remove(); - } catch (Exception e) { - System.err.println("exception during remove: " + e); - System.exit(2); - } - - // Exit program - System.out.println("ClientAccount terminated"); - } - -} - diff --git a/jonas_tests/examples/base/examples/src/eb/README b/jonas_tests/examples/base/examples/src/eb/README deleted file mode 100644 index 008d5088f9..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/README +++ /dev/null @@ -1,42 +0,0 @@ -Copyright (C) BULL S.A. 1998-2002 - -This example illustrate the use of entity beans - -Entity beans "Account" ----------------------- -AccountImp2 entity bean with "container managed" persistance EJB2.x -AccountImpl entity bean with "container managed" persistance EJB1.x -AccountExpl entity bean with "bean managed" persistance - - -Compiling this example: ------------------------ -ant -find build.xml install - - -Running this example: ---------------------- -Your database access should be configured: a properties file defining a - Datasource object should be defined in $JONAS_BASE/conf (e.g. HSQL1.properties), - and the property jonas.service.dbm.datasources of the jonas.properties file should - be set to the name of this datasource description file (e.g. HSQL1). See JOnAS - documentation for more details. - You must also, the first time you run the test, create the table in the database. - If you use the default database embedded in JOnAS (hsqldb) you only have to do - ant init_db (in this directory) after having started JOnAS. - For Other databases scripts SQL are provided Account.sql for Oracle - Account.pgsql for Postgres. - - -1) Run an JOnAS Server to make beans available to clients: - - jonas start - -2) Run the client via the Ant task runclient - ant runclient - -4) Stop the jonas server - jonas stop - - - diff --git a/jonas_tests/examples/base/examples/src/eb/application-client.xml b/jonas_tests/examples/base/examples/src/eb/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/eb/build.xml b/jonas_tests/examples/base/examples/src/eb/build.xml deleted file mode 100644 index 7a9cf96a82..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/build.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -urlid localhost-dbjonas -url jdbc:hsqldb:hsql://localhost:${jonas.service.db.port}/db_jonas -username jonas -password jonas - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/eb/db1.prp b/jonas_tests/examples/base/examples/src/eb/db1.prp deleted file mode 100644 index 9d87d68d0e..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/db1.prp +++ /dev/null @@ -1,325 +0,0 @@ -!--------------------------------------------------------------------- -! -! PROPERTIES for the InstantDB database used in the JOnAS eb example -! (builded from InstantDB/3.25/Examples/sample.prp) -! -!--------------------------------------------------------------------- - -!--------------------------------------------------------------------- -! -! BASIC PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Path where index tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -indexPath=./tmp/indexes -! -! Path where system tables are held. Can be absolute or relative to -! the properties file. Defaults to tablePath. -! -systemPath=./tmp/system -! -! Path where database tables are held. Can be absolute or relative -! to the properties file. Defaults to "current" directory. -! -tablePath=./tmp/tables -! -! Path where results set tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -tmpPath=./tmp/tmp -! -! Non-zero means paths are relative to the properties file. -! Default is absolute paths for files. -! -relativeToProperties=1 -! -! Alternative partitions can be defined so that tables can be placed -! in multiple locations. Each partition is numbered: 1, 2, 3,... Tables -! can be created on partitions using the syntax -! -! CREATE TABLE ON PARTITION ... -! -! The partition count has to be supplied. -! -!partitionCount=2 -! -! The locations of each partition must be supplied. These are always -! absolute path names. -! -!partition1=d:/petes -!partition2=c:/temp - - -!--------------------------------------------------------------------- -! -! TUNING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! The amount of each column to cache, expressed either as an absolute -! number of rows or as a percentage figure. Defaults to 256 or 10 respectively. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheAmount=512 -! -! CACHE_ROWS Must be one of CACHE_ROWS or CACHE_PERCENT. Determines whether -! to cache columns in tables based on an absolute number of rows, or the -! percentage number of rows in the table. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheCondition=CACHE_ROWS -! -! The amount of the system tables to be cached. Defaults to 100. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheSize=10 -! -! Similar to cacheCondition, but applies only to the system tables. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheCondition=CACHE_ROWS -! -! The percentage cache hit improvement required in order to move the -! cache to a new location in a column. -! -! (Currently not implemented). -! -cacheResetPercent=10 -! -! Non-zero means that database changes do not get written to the -! database immediately. See tuning.html. -! -fastUpdate=0 -! -! Percentage of free space in an index that must be present before -! the index reorganises itself. High values means frequent index -! reorganisation. Low values means slow index inserts. -! -indexLoad=5 -! -! The number of cache misses to include in calculations of the next -! base for the cache. -! -! (Currently not implemented). -! -missesInCacheStats=100 -! -! Non-zero means that results sets get instantiated on disk. By default -! InstantDB holds results sets emtirely in memory (apart from Binary -! columns). For large results sets this can be a problem. This property -! forces all results sets to be held on disk. -! -resultsOnDisk=0 -! -! Similar to cacheCondition but applies only to disk based -! results sets. Default is CACHE_ROWS. -! -resultsSetCache=CACHE_ROWS -! -! Similar to cacheAmount but applies only to disk based -! results sets. Default is 100. -! -resultsSetCacheAmount=100 -! -! Number of rows to read into the disk read ahead buffer. -! Recommended to be set somewhere around 128 to 256. -! Default is 20. -! -rowCacheSize=128 -! -! The read ahead buffer is effective at speeding up full -! table scans. However for indexed lookups or multiple -! simultaneous scans it is better to read a single row at -! a time. Each table holds a small number of single row -! buffers to improve such operations. Default is 8. -! -!singleRowCount=4 -! -! Sometimes the look ahead buffer can be held by a single -! thread even though it is not retrieveing many values from it. -! If too many lookups retrieve data from the single row -! buffers then it is better to flush the look ahead buffer and -! make it available for re-use. Default is 128. -! -!flushAfterCacheMisses=64 -! -! Number of rows to read ahead for system tables. By default -! system tables cache everything, so it is wasteful to have large -! read ahead buffers since they will very rarely be used. This -! allows the size of the system read ahead buffers to be reduced -! if necessary. Defaults to rowCacheSize. -! -!systemRows=20 -! -! The control column in all tables normally has a large cache -! since this speeds up all operation on that table. This can be -! varied to either improve performance or to reduce space. -! default is 8192. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!controlColCacheSize=512 -! -! By default, InstantDB only does a cursory search for deleted rows during -! UPDATE statements. Setting searchDeletes=1 causes more detailed searches -! for deleted rows. This slows down UPDATE executions, but reults in more -! compact tables. Default is 0. -! -searchDeletes=0 -! -! The interval, in milliseconds, between checks for statement execution -! timeouts. Default is 5000. -! -!timerCheck=5000 - -!--------------------------------------------------------------------- -! -! LOGGING AND DEBUGGING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Non-zero means include SQL statements in the export file. -! -exportSQL=0 -! -! Non-zero means trace output also directed to console. -! Defaults to 0. -! -!traceConsole=1 -traceConsole=0 -! -! Relative or absolute path where exporting and tracing goes. -! -traceFile=./tmp/trace.log -! -! Bitmap of various items that can be traced. See debug.html. -! Defaults to 0. -! -traceLevel=2 - - -!--------------------------------------------------------------------- -! -! TRANSACTION AND RECOVERY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! 0 means do not perform recovery on startup. -! 1 means perform automatic recovery -! 2 (default) means prompt the user using standard in -! -recoveryPolicy=2 -! -! Sets the level of transaction journalling. See trans.html. -! Defaults to 1. -! -! 0 - No journalling takes place. -! 1 - Normal journalling (default). -! 2 - Full journalling. -! -transLevel=1 -! -! When doing an import, defines the number of rows imported -! before the transaction is committed. Recommended value 8192. -! defaults to 100. -! -transImports=100 - -!--------------------------------------------------------------------- -! -! DATE, TIME AND CURRENCY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Number of digits after decimal point in currency outputs. Defaults to 2. -! -currencyDecimal=2 -! -! Currency symbol used in currency outputs. Defaults to $. -! -currencySymbol=$ -! -! Default format for date columns. Defaults to "yyyy-mm-dd". -! -dateFormat=yyyy-mm-dd -! -! Default format for timestamp columns. Defaults to "yyyy-mm-dd hh:mm:ss.lll". -! -dateTimeFormat=yyyy-mm-dd hh:mm:ss.lll -! -! If set, then all two digit dates less than its value are interpreted -! as 21st century dates. -! -!milleniumBoundary=50 -! -! Set to 1 causes the date string "now" to store a full timestamp. -! Default is to store only the date for fields with now hour in the -! format string. -! -nowMeansTime=0 - -!--------------------------------------------------------------------- -! -! STRING HANDLING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! If set to 1 then String hashes use the JDK Object.hashCode() function. -! By default, uses InstantDB's String hashing. -! -altStringHashing=0 -! -! Set to 1 to cause LIKE clauses to always perform case insensitive -! comparisons. -! -likeIgnoreCase=0 -! -! Same as SET LITERAL STRICT_ON. Prevents string literals being interpreted -! as column names or numbers. Default is 0. -! -strictLiterals=0 -! -! Set this value to 1 (one) if you would like PreparedStatement.setString() -! to ignore "\" (backslash) characters when proceesing string constants. -! When set, InstantDB will not attempt to interpret \ as the start of an -! escape sequence. Default is 0. -! -!prepareIgnoresEscapes=1 - -!--------------------------------------------------------------------- -! -! MISCELLANEOUS PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Allows selected InstantDB keywords to be un-reserved. -! e.g. ignoreKeywords=url,quote would allow the keywords -! url and quote to be used as table or column names. -! -! This faciliy is provided for compatatbility reasons only. -! It's use is not recommended AND IS NOT SUPPORTED. -! -!ignoreKeywords -! -! Non-zero means database is opened in read only mode. -! -readOnly=0 diff --git a/jonas_tests/examples/base/examples/src/eb/eb.xml b/jonas_tests/examples/base/examples/src/eb/eb.xml deleted file mode 100644 index f8f7d7d5f0..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/eb.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - Deployment descriptor for the eb JOnAS example - eb example - - - Deployment descriptor for the AccountExpl bean JOnAS example - AccountExpl - eb.AccountHome - eb.Account - eb.AccountExplBean - Bean - java.lang.Integer - false - - jdbc/AccountExplDs - javax.sql.DataSource - Container - - - - Deployment descriptor for the AccountImpl bean JOnAS example - AccountImpl - eb.AccountHome - eb.Account - eb.AccountImplBean - Container - java.lang.Integer - false - 1.x - - accno - - - customer - - - balance - - accno - - - - Deployment descriptor for the AccountImpl2 bean with CMP2 JOnAS example - AccountImpl2 - eb.AccountHome - eb.Account - eb.AccountImpl2Bean - Container - java.lang.Integer - false - 2.x - accountsample - - accno - - - customer - - - balance - - accno - - - findByNumber - - int - - - SELECT OBJECT(o) FROM accountsample o WHERE o.accno = ?1 - - - - findAllAccounts - - - SELECT OBJECT(o) FROM accountsample o - - - - - - - - AccountExpl - * - - Required - - - - AccountImpl - * - - Required - - - - - AccountImpl2 - * - - Required - - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/eb/jonas-eb.xml b/jonas_tests/examples/base/examples/src/eb/jonas-eb.xml deleted file mode 100644 index 1527da5e52..0000000000 --- a/jonas_tests/examples/base/examples/src/eb/jonas-eb.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - AccountExpl - AccountExplHome - - jdbc/AccountExplDs - jdbc_1 - - - - - AccountImpl - AccountImplHome - - jdbc_1 - accountsample_ - - accno - accno_ - - - customer - customer_ - - - balance - balance_ - - - - findByNumber - - where accno_ = ? - - - - findAllAccounts - - - - - - - - AccountImpl2 - AccountImpl2Home - - jdbc_1 - - - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/Client.java b/jonas_tests/examples/base/examples/src/lb/Client.java deleted file mode 100644 index 0546c28fa1..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/Client.java +++ /dev/null @@ -1,202 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import java.rmi.RemoteException; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * Client of the lb JOnAS example - * @author Helene Joanin - */ -public class Client { - - static Context initialContext = null; - - static ManagerHome home = null; - - static Manager manager = null; - - static boolean m_noinit = false; - - static int m_accounts = 4; - - static int m_valmove = 100; - - static int m_loops = 10; - - static int inival = 1000; - - public static void main(String[] args) { - // Get command args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - Integer i_arg; - if (s_arg.equals("-ni")) { - m_noinit = true; - } else if (s_arg.equals("-a")) { - s_arg = args[++argn]; - i_arg = java.lang.Integer.valueOf(s_arg); - m_accounts = i_arg.intValue(); - } else if (s_arg.equals("-m")) { - s_arg = args[++argn]; - i_arg = java.lang.Integer.valueOf(s_arg); - m_valmove = i_arg.intValue(); - } else if (s_arg.equals("-l")) { - s_arg = args[++argn]; - i_arg = java.lang.Integer.valueOf(s_arg); - m_loops = i_arg.intValue(); - } else { - usage(); - fatalError("wrong usage"); - } - } - - info("Calling lb.Client with : -a " + m_accounts + " -m " + m_valmove + " -l " + m_loops); - - // Get InitialContext - try { - initialContext = new InitialContext(); - } catch (NamingException e) { - fatalError("Cannot get InitialContext: " + e); - } - - // Create manager session bean - try { - home = (ManagerHome) javax.rmi.PortableRemoteObject.narrow(initialContext.lookup("ManagerHome"), - ManagerHome.class); - manager = home.create(inival); - } catch (Exception e) { - fatalError("Cannot create manager: " + e); - } - - // Create all accounts if noinit==false - if (!m_noinit) { - info("Re-initialization of the accounts database table"); - try { - manager.createAll(m_accounts); - } catch (Exception e) { - fatalError("Cannot create initial accounts: " + e); - } - } - - // Set move value - try { - manager.setValue(m_valmove); - } catch (Exception e) { - fatalError("Cannot init Session: " + e); - } - - // main loop - try { - for (int i = 0; i < m_loops; i++) { - // Choose the 2 accounts randomly - int d1 = random(m_accounts); - int c1 = random(m_accounts); - info(" Movement " + d1 + " -> " + c1 + ""); - // Set these accounts in session bean - manager.setAccounts(d1, c1); - // make the transfert - try { - manager.movement(); - } catch (RemoteException r) { - error("movement raised exception. ignoring..."); - } - // Check account that was debited - if (manager.checkAccount(d1) == false) { - error("Bad Account after move on account " + d1); - error("Stopping this session because some accounts are not ok"); - break; - } - } - } catch (Exception e) { - fatalError("Exception in main loop :" + e); - } - - // Check all accounts - try { - if (manager.checkAll() == false) { - error("FAIL when checking all accounts"); - } else { - info("PASS when checking all accounts"); - } - } catch (RemoteException e) { - error("checkAll() :" + e); - } - - // remove session bean - try { - manager.remove(); - } catch (Exception e) { - error("Cannot remove manager session: " + e); - } - - } - - /** - * Returns an integer between 0 and max-1 - */ - static int random(int max) { - - double d = Math.random(); - int ret = (int) (max * d); - return ret; - } - - /** - * Display the usage - */ - static void usage() { - info("lb.Client [-ni] [-a accounts] [-m value] [-l loops]"); - } - - /** - * Display the given information message - */ - static void info(String infoMsg) { - System.out.println(infoMsg); - } - - /** - * Display the given error message - */ - static void error(String errMsg) { - System.out.println("lb.Client error: " + errMsg); - } - - /** - * Display the given error message and exits - */ - static void fatalError(String errMsg) { - System.out.println("lb.Client fatal error: " + errMsg); - System.exit(2); - } - -} - diff --git a/jonas_tests/examples/base/examples/src/lb/ManacEC.java b/jonas_tests/examples/base/examples/src/lb/ManacEC.java deleted file mode 100644 index 22cbd95fa4..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/ManacEC.java +++ /dev/null @@ -1,225 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import javax.ejb.CreateException; -import javax.ejb.DuplicateKeyException; -import javax.ejb.EJBException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.RemoveException; - -/** - * Manac Implementation - * @author Philippe Durieux - */ -public class ManacEC implements EntityBean { - - EntityContext ejbContext; - - // ------------------------------------------------------------------ - // State of the bean. - // They must be public for Container Managed Persistance. - // ------------------------------------------------------------------ - public String name; - - public int num; - - public int balance; - - // ------------------------------------------------------------------ - // EntityBean implementation - // ------------------------------------------------------------------ - - /** - * Set the associated entity context. The container invokes this method on - * an instance after the instance has been created. This method is called in - * an unspecified transaction context. - * @param ctx - An EntityContext interface for the instance. The instance - * should store the reference to the context in an instance variable. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void setEntityContext(EntityContext ctx) { - ejbContext = ctx; - } - - /** - * Unset the associated entity context. The container calls this method - * before removing the instance. This is the last method that the container - * invokes on the instance. The Java garbage collector will eventually - * invoke the finalize() method on the instance. This method is called in an - * unspecified transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void unsetEntityContext() { - ejbContext = null; - } - - /** - * A container invokes this method before it removes the EJB object that is - * currently associated with the instance. This method is invoked when a - * client invokes a remove operation on the enterprise Bean's home interface - * or the EJB object's remote interface. This method transitions the - * instance from the ready state to the pool of available instances. This - * method is called in the transaction context of the remove operation. - * @throws RemoveException The enterprise Bean does not allow destruction of - * the object. - * @throws EJBException - Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbRemove() throws RemoveException { - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by loading it state from the underlying database. This method - * always executes in the proper transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbLoad() { - if (balance < 0) { - System.out.println(name + " : Bad balance loaded"); - throw new EJBException("ejbLoad: Balance " + name + " was negative =" + balance); - } - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by storing it to the underlying database. This method always - * executes in the proper transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbStore() { - if (balance < 0) { - System.out.println(name + " : Bad balance stored"); - throw new EJBException("ejbStore: Balance " + name + " was negative =" + balance); - } - } - - /** - * The Entity bean can define 0 or more ejbCreate methods. - * @throws CreateException Failure to create an entity EJB object. - * @throws DuplicateKeyException An object with the same key already exists. - */ - public java.lang.String ejbCreate(int num, String name, int ib) throws CreateException, DuplicateKeyException { - - // Init here the bean fields - this.num = num; - this.name = new String(name); - this.balance = ib; - - // In CMP, should return null. - return null; - } - - /** - * There must be an ejbPostCreate per ejbCreate method - * @throws CreateException Failure to create an entity EJB object. - */ - public void ejbPostCreate(int num, String name, int ib) throws CreateException { - } - - /** - * The Entity bean can define 0 or more ejbCreate methods. - * @throws CreateException Failure to create an entity EJB object. - * @throws DuplicateKeyException An object with the same key already exists. - */ - public java.lang.String ejbCreateWithDefaultName(int num, int ib) throws CreateException, DuplicateKeyException { - - // Init here the bean fields - this.num = num; - this.name = "M" + (new Integer(num)).toString(); - this.balance = ib; - - // In CMP, should return null. - return null; - } - - /** - * There must be an ejbPostCreate per ejbCreate method - * @throws CreateException Failure to create an entity EJB object. - */ - public void ejbPostCreateWithDefaultName(int num, int ib) throws CreateException { - - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. - */ - public void ejbPassivate() { - // balance may be wrong in case of rollback. - // Anyway, this instance is being released now, so no problem! - balance = -80000; - } - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. - */ - public void ejbActivate() { - } - - // ------------------------------------------------------------------ - // Manac implementation - // ------------------------------------------------------------------ - - /** - * getBalance - */ - public int getBalance() { - return balance; - } - - /** - * credit - */ - public void credit(int v) { - balance += v; - } - - /** - * debit - */ - public void debit(int v) { - balance -= v; - if (balance < 0) { - System.out.println(name + " : set rollback only."); - ejbContext.setRollbackOnly(); - balance = -90000; // put it a very bad balance to check rollback is - // OK - } - } - - public String getName() { - return name; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/ManacLocal.java b/jonas_tests/examples/base/examples/src/lb/ManacLocal.java deleted file mode 100644 index 103a01b359..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/ManacLocal.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import javax.ejb.EJBLocalObject; - -/** - * Manac local interface - * @author Philippe Durieux - */ -public interface ManacLocal extends EJBLocalObject { - - int getBalance(); - - void credit(int value); - - void debit(int value); - - String getName(); -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/ManacLocalHome.java b/jonas_tests/examples/base/examples/src/lb/ManacLocalHome.java deleted file mode 100644 index 16e22f4730..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/ManacLocalHome.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import java.util.Collection; - -import javax.ejb.CreateException; -import javax.ejb.EJBLocalHome; -import javax.ejb.FinderException; - -/** - * Local Home interface for the bean Manac - * @author Philippe Durieux, Helene Joanin - */ -public interface ManacLocalHome extends EJBLocalHome { - - ManacLocal create(int num, String name, int initbal) throws CreateException; - - ManacLocal createWithDefaultName(int num, int initbal) throws CreateException; - - ManacLocal findByPrimaryKey(java.lang.String pk) throws FinderException; - - ManacLocal findByNum(int num) throws FinderException; - - Collection findAll() throws FinderException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/Manager.java b/jonas_tests/examples/base/examples/src/lb/Manager.java deleted file mode 100644 index 5470630b1e..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/Manager.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - -/** - * Manager remote interface - * @author Philippe Durieux - */ -public interface Manager extends EJBObject { - - void createAll(int nb) throws RemoteException; - - void setAccounts(int d1, int c1) throws RemoteException; - - void setValue(int v) throws RemoteException; - - void movement() throws RemoteException; - - boolean checkAll() throws RemoteException; - - boolean checkAccount(int a) throws RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/ManagerHome.java b/jonas_tests/examples/base/examples/src/lb/ManagerHome.java deleted file mode 100644 index a94b076e50..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/ManagerHome.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean Manager - * @author Philippe Durieux - */ -public interface ManagerHome extends EJBHome { - - Manager create(int ival) throws CreateException, RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/ManagerSF.java b/jonas_tests/examples/base/examples/src/lb/ManagerSF.java deleted file mode 100644 index b58c4e9648..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/ManagerSF.java +++ /dev/null @@ -1,281 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package lb; - -import java.rmi.RemoteException; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.Collection; -import java.util.Iterator; - -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.FinderException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.ejb.TransactionRolledbackLocalException; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.sql.DataSource; - -/** - * Manager Implementation - * @author Philippe Durieux - */ -public class ManagerSF implements SessionBean { - - SessionContext ejbContext; - - ManacLocalHome manacLocalHome = null; - - int c1 = 0; - - int d1 = 0; - - ManacLocal cred1, deb1; - - int initialValue = 1000; - - int value = 10; - - // ------------------------------------------------------------------ - // init DataBase for Manac beans - // ------------------------------------------------------------------ - private void initDB() { - - // Get my DataSource from JNDI - DataSource ds = null; - InitialContext ictx = null; - try { - ictx = new InitialContext(); - } catch (Exception e) { - System.out.println("new InitialContext() : " + e); - throw new EJBException("Cannot get JNDI InitialContext"); - } - try { - ds = (DataSource) ictx.lookup("java:comp/env/jdbc/mydb"); - } catch (Exception e) { - System.out.println("cannot lookup datasource " + e); - throw new EJBException("cannot lookup datasource"); - } - - // Drop table - Connection conn = null; - Statement stmt = null; - // myTable must be from jonas-xml file (Manac bean) - String myTable = "manacsample"; - try { - conn = ds.getConnection(); - stmt = conn.createStatement(); - stmt.execute("drop table " + myTable); - stmt.close(); - } catch (SQLException e) { - // The first time, table will not exist. - } - - // Create table. - try { - stmt = conn.createStatement(); - stmt.execute("create table " + myTable - + "(c_name varchar(30) not null primary key, c_num integer, c_balance integer)"); - stmt.close(); - conn.close(); - } catch (SQLException e) { - System.out.println("Exception in createTable : " + e); - throw new EJBException("Exception in createTable"); - } - } - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void setSessionContext(SessionContext ctx) { - ejbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - } - - /** - * The Session bean must define 1 or more ejbCreate methods. - * @throws CreateException Failure to create a session EJB object. - */ - public void ejbCreate(int ival) throws CreateException { - - // lookup ManacLocalHome - try { - Context ictx = new InitialContext(); - manacLocalHome = (ManacLocalHome) ictx.lookup("java:comp/env/ejb/manac"); - } catch (NamingException e) { - System.out.println("ManagerSF : Cannot get ManacLocalHome:" + e); - throw new CreateException("Cannot get ManacLocalHome"); - } - - initialValue = ival; - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. - */ - public void ejbPassivate() { - } - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. - */ - public void ejbActivate() { - } - - // ------------------------------------------------------------------ - // Manager implementation - // ------------------------------------------------------------------ - - public void createAll(int nb) throws RemoteException { - - // init database for Manac bean - initDB(); - - // create accounts - for (int i = 0; i < nb; i++) { - try { - manacLocalHome.createWithDefaultName(i, initialValue); - } catch (CreateException e) { - System.out.println("createAll:\n" + e); - throw new RemoteException("Cannot create Manac"); - } - } - } - - public void setAccounts(int d1, int c1) throws RemoteException { - this.d1 = d1; - this.c1 = c1; - try { - deb1 = manacLocalHome.findByNum(d1); - cred1 = manacLocalHome.findByNum(c1); - } catch (FinderException e) { - System.out.println("Cannot find manac bean:" + e); - throw new RemoteException("Cannot find manac bean"); - } - } - - public void setValue(int v) throws RemoteException { - this.value = v; - } - - public void movement() throws RemoteException { - - // credit accounts first because we don't want a rollback if - // same account is debited and credited in the same operation. - try { - cred1.credit(value); - } catch (EJBException e) { - System.out.println("ManagerSF: Cannot credit account:" + e); - throw new RemoteException("ManagerSF: Cannot credit account"); - } - - // debit accounts - try { - deb1.debit(value); - } catch (TransactionRolledbackLocalException e) { - System.out.println("ManagerSF: Rollback transaction"); - } catch (EJBException e) { - System.out.println("ManagerSF debit:" + e); - } - } - - public boolean checkAccount(int a) throws RemoteException { - - boolean ret = false; - ManacLocal m = null; - - try { - m = manacLocalHome.findByNum(a); - int b = m.getBalance(); - if (b >= 0) { - ret = true; - } else { - System.out.println("ManagerSF checkAccount: bad balance=" + b); - } - return ret; - } catch (Exception e) { - System.out.println("ManagerSF checkAccount: cannot check account: " + e); - return false; - } - } - - public boolean checkAll() throws RemoteException { - - int count = 0; - int total = 0; - try { - Collection accCol = manacLocalHome.findAll(); - for (Iterator accIter = accCol.iterator(); accIter.hasNext();) { - count++; - ManacLocal a = (ManacLocal) accIter.next(); - int balance = a.getBalance(); - if (balance < 0) { - System.out.println("checkAllAccounts: bad balance: " + balance); - return false; - } - String name = a.getName(); - total += balance; - } - } catch (Exception e) { - System.out.println("checkAllAccounts:" + e); - return false; - } - int exp = initialValue * count; - if (total != exp) { - System.out.println("checkAllAccounts: bad total: " + total + " (expected: " + exp + ")"); - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/lb/README b/jonas_tests/examples/base/examples/src/lb/README deleted file mode 100644 index 3af0ddfd4f..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/README +++ /dev/null @@ -1,55 +0,0 @@ -The lb JOnAS example: ---------------------- - -This example illustrates the use of local interfaces. -This is a good example for understanding what must be done when a local client -(typically a session bean) is collocated with an entity bean providing local interfaces. - -This JOnAS example is inspired by the 'manac' JOnAS stress test: - jonas_tests/stress/src/org/objectweb/jonas/stests/manac - -It uses two enterprise beans "Manac" and "Manager". -The "Manac" bean is an entity bean with container-managed persistence. -Its Component and Home interfaces are local interfaces. -This bean represents an account. Its balance cannot be negative (rollback is set -in this case). - -The "Manager" bean is a stateful session bean and allows to manage the "Manac" bean, -i.e. to move amounts from an account to an other. - - -"Client" is the client of the "Manager" session bean. -It performs the following steps: -- initialization of the database table of accounts if no -ni argument. - (A specified number of accounts are created with a default balance 1000). -- transfer of a specified 'value' from an account to an other account, - 'loops' times; (accounts are choosen randomly). -- last, check the total of the balance of all the accounts. -Its usage is: - Client [-ni] [-a accounts] [-m value] [-l loops] -(Client -a 4 -m 100 -l 10 is the default usage) - - -Compiling this example: ------------------------ -This example is compiled with the others by "ant install" in $JONAS_ROOT/examples. - -Running this example: ---------------------- -Your database access should be configured: a properties files defining a - Datasource object should be defined in $JONAS_BASE/conf (e.g. InstantDB1.properties), - and the property jonas.service.dbm.datasources of the jonas.properties file should - be set to the name of this datasource description file (e.g. InstantDB1). See JOnAS - documentation for more details. - -1) Run an EJB Server to make beans available to clients: - - jonas start - -2) Run the client via the Ant task runclient - jclient -cp $JONAS_BASE/ejbjars/lb.jar lb.Client - or - ant runclient - -3) Stop the jonas server - jonas stop diff --git a/jonas_tests/examples/base/examples/src/lb/application-client.xml b/jonas_tests/examples/base/examples/src/lb/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/lb/build.xml b/jonas_tests/examples/base/examples/src/lb/build.xml deleted file mode 100644 index 978ced5399..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/build.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/lb/db1.prp b/jonas_tests/examples/base/examples/src/lb/db1.prp deleted file mode 100644 index 9d87d68d0e..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/db1.prp +++ /dev/null @@ -1,325 +0,0 @@ -!--------------------------------------------------------------------- -! -! PROPERTIES for the InstantDB database used in the JOnAS eb example -! (builded from InstantDB/3.25/Examples/sample.prp) -! -!--------------------------------------------------------------------- - -!--------------------------------------------------------------------- -! -! BASIC PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Path where index tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -indexPath=./tmp/indexes -! -! Path where system tables are held. Can be absolute or relative to -! the properties file. Defaults to tablePath. -! -systemPath=./tmp/system -! -! Path where database tables are held. Can be absolute or relative -! to the properties file. Defaults to "current" directory. -! -tablePath=./tmp/tables -! -! Path where results set tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -tmpPath=./tmp/tmp -! -! Non-zero means paths are relative to the properties file. -! Default is absolute paths for files. -! -relativeToProperties=1 -! -! Alternative partitions can be defined so that tables can be placed -! in multiple locations. Each partition is numbered: 1, 2, 3,... Tables -! can be created on partitions using the syntax -! -! CREATE TABLE ON PARTITION ... -! -! The partition count has to be supplied. -! -!partitionCount=2 -! -! The locations of each partition must be supplied. These are always -! absolute path names. -! -!partition1=d:/petes -!partition2=c:/temp - - -!--------------------------------------------------------------------- -! -! TUNING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! The amount of each column to cache, expressed either as an absolute -! number of rows or as a percentage figure. Defaults to 256 or 10 respectively. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheAmount=512 -! -! CACHE_ROWS Must be one of CACHE_ROWS or CACHE_PERCENT. Determines whether -! to cache columns in tables based on an absolute number of rows, or the -! percentage number of rows in the table. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheCondition=CACHE_ROWS -! -! The amount of the system tables to be cached. Defaults to 100. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheSize=10 -! -! Similar to cacheCondition, but applies only to the system tables. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheCondition=CACHE_ROWS -! -! The percentage cache hit improvement required in order to move the -! cache to a new location in a column. -! -! (Currently not implemented). -! -cacheResetPercent=10 -! -! Non-zero means that database changes do not get written to the -! database immediately. See tuning.html. -! -fastUpdate=0 -! -! Percentage of free space in an index that must be present before -! the index reorganises itself. High values means frequent index -! reorganisation. Low values means slow index inserts. -! -indexLoad=5 -! -! The number of cache misses to include in calculations of the next -! base for the cache. -! -! (Currently not implemented). -! -missesInCacheStats=100 -! -! Non-zero means that results sets get instantiated on disk. By default -! InstantDB holds results sets emtirely in memory (apart from Binary -! columns). For large results sets this can be a problem. This property -! forces all results sets to be held on disk. -! -resultsOnDisk=0 -! -! Similar to cacheCondition but applies only to disk based -! results sets. Default is CACHE_ROWS. -! -resultsSetCache=CACHE_ROWS -! -! Similar to cacheAmount but applies only to disk based -! results sets. Default is 100. -! -resultsSetCacheAmount=100 -! -! Number of rows to read into the disk read ahead buffer. -! Recommended to be set somewhere around 128 to 256. -! Default is 20. -! -rowCacheSize=128 -! -! The read ahead buffer is effective at speeding up full -! table scans. However for indexed lookups or multiple -! simultaneous scans it is better to read a single row at -! a time. Each table holds a small number of single row -! buffers to improve such operations. Default is 8. -! -!singleRowCount=4 -! -! Sometimes the look ahead buffer can be held by a single -! thread even though it is not retrieveing many values from it. -! If too many lookups retrieve data from the single row -! buffers then it is better to flush the look ahead buffer and -! make it available for re-use. Default is 128. -! -!flushAfterCacheMisses=64 -! -! Number of rows to read ahead for system tables. By default -! system tables cache everything, so it is wasteful to have large -! read ahead buffers since they will very rarely be used. This -! allows the size of the system read ahead buffers to be reduced -! if necessary. Defaults to rowCacheSize. -! -!systemRows=20 -! -! The control column in all tables normally has a large cache -! since this speeds up all operation on that table. This can be -! varied to either improve performance or to reduce space. -! default is 8192. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!controlColCacheSize=512 -! -! By default, InstantDB only does a cursory search for deleted rows during -! UPDATE statements. Setting searchDeletes=1 causes more detailed searches -! for deleted rows. This slows down UPDATE executions, but reults in more -! compact tables. Default is 0. -! -searchDeletes=0 -! -! The interval, in milliseconds, between checks for statement execution -! timeouts. Default is 5000. -! -!timerCheck=5000 - -!--------------------------------------------------------------------- -! -! LOGGING AND DEBUGGING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Non-zero means include SQL statements in the export file. -! -exportSQL=0 -! -! Non-zero means trace output also directed to console. -! Defaults to 0. -! -!traceConsole=1 -traceConsole=0 -! -! Relative or absolute path where exporting and tracing goes. -! -traceFile=./tmp/trace.log -! -! Bitmap of various items that can be traced. See debug.html. -! Defaults to 0. -! -traceLevel=2 - - -!--------------------------------------------------------------------- -! -! TRANSACTION AND RECOVERY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! 0 means do not perform recovery on startup. -! 1 means perform automatic recovery -! 2 (default) means prompt the user using standard in -! -recoveryPolicy=2 -! -! Sets the level of transaction journalling. See trans.html. -! Defaults to 1. -! -! 0 - No journalling takes place. -! 1 - Normal journalling (default). -! 2 - Full journalling. -! -transLevel=1 -! -! When doing an import, defines the number of rows imported -! before the transaction is committed. Recommended value 8192. -! defaults to 100. -! -transImports=100 - -!--------------------------------------------------------------------- -! -! DATE, TIME AND CURRENCY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Number of digits after decimal point in currency outputs. Defaults to 2. -! -currencyDecimal=2 -! -! Currency symbol used in currency outputs. Defaults to $. -! -currencySymbol=$ -! -! Default format for date columns. Defaults to "yyyy-mm-dd". -! -dateFormat=yyyy-mm-dd -! -! Default format for timestamp columns. Defaults to "yyyy-mm-dd hh:mm:ss.lll". -! -dateTimeFormat=yyyy-mm-dd hh:mm:ss.lll -! -! If set, then all two digit dates less than its value are interpreted -! as 21st century dates. -! -!milleniumBoundary=50 -! -! Set to 1 causes the date string "now" to store a full timestamp. -! Default is to store only the date for fields with now hour in the -! format string. -! -nowMeansTime=0 - -!--------------------------------------------------------------------- -! -! STRING HANDLING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! If set to 1 then String hashes use the JDK Object.hashCode() function. -! By default, uses InstantDB's String hashing. -! -altStringHashing=0 -! -! Set to 1 to cause LIKE clauses to always perform case insensitive -! comparisons. -! -likeIgnoreCase=0 -! -! Same as SET LITERAL STRICT_ON. Prevents string literals being interpreted -! as column names or numbers. Default is 0. -! -strictLiterals=0 -! -! Set this value to 1 (one) if you would like PreparedStatement.setString() -! to ignore "\" (backslash) characters when proceesing string constants. -! When set, InstantDB will not attempt to interpret \ as the start of an -! escape sequence. Default is 0. -! -!prepareIgnoresEscapes=1 - -!--------------------------------------------------------------------- -! -! MISCELLANEOUS PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Allows selected InstantDB keywords to be un-reserved. -! e.g. ignoreKeywords=url,quote would allow the keywords -! url and quote to be used as table or column names. -! -! This faciliy is provided for compatatbility reasons only. -! It's use is not recommended AND IS NOT SUPPORTED. -! -!ignoreKeywords -! -! Non-zero means database is opened in read only mode. -! -readOnly=0 diff --git a/jonas_tests/examples/base/examples/src/lb/jonas-lb.xml b/jonas_tests/examples/base/examples/src/lb/jonas-lb.xml deleted file mode 100644 index ec47795788..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/jonas-lb.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - Manager - ManagerHome - - jdbc/mydb - jdbc_1 - - - - - Manac - ManacLocalHome - - jdbc_1 - manacsample - - name - c_name - - - num - c_num - - - balance - c_balance - - - - findByNum - - where c_num = ? - - - - findAll - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/lb/lb.xml b/jonas_tests/examples/base/examples/src/lb/lb.xml deleted file mode 100644 index cd38383732..0000000000 --- a/jonas_tests/examples/base/examples/src/lb/lb.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - Deployment descriptor for the lb JOnAS example - lb example - - - - - Manager Session Bean with Remote interface - Manager - Manager - lb.ManagerHome - lb.Manager - lb.ManagerSF - Stateful - Container - - ejb/manac - Entity - lb.ManacLocalHome - lb.ManacLocal - Manac - - - jdbc/mydb - javax.sql.DataSource - Application - - - - - Managed Account Entity Bean, with local interface - Manac - Manac - lb.ManacLocalHome - lb.ManacLocal - lb.ManacEC - Container - java.lang.String - true - 1.x - - name - - - num - - - balance - - name - - - - - - - - Manac - * - - - Manager - * - - Supports - - - - - Manager - createAll - - NotSupported - - - - Manac - credit - - - Manac - debit - - - Manager - movement - - - Manager - checkAll - - - Manager - checkAccount - - Required - - - diff --git a/jonas_tests/examples/base/examples/src/mailsb/ClientMailer.java b/jonas_tests/examples/base/examples/src/mailsb/ClientMailer.java deleted file mode 100644 index 18dbed93ad..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/ClientMailer.java +++ /dev/null @@ -1,282 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.IOException; -import javax.naming.InitialContext; -import javax.naming.Context; -import javax.rmi.PortableRemoteObject; - -/** - * Sample for Mailer Session Bean. Usage: java mailsb.ClientMailer - * @author Florent Benoit - * @author Ludovic Bert - */ -public class ClientMailer { - - /** - * Session case - */ - private static final int SESSION_CASE = 1; - - /** - * MimePartDatasource case - */ - private static final int MIMEPARTDS_CASE = 2; - - /** - * Content of the mail - */ - private static String content = null; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private ClientMailer() { - - } - - /** - * Read from bufferedReader the text which is given by the user after the - * given prompt. - * @param bufferedReader the buffer to read input. - * @param prompt the prompt asking the user. - * @return the text given by the user. - * @throws IOException if it can't the bufferedReader. - */ - private static String getTextFromUser(BufferedReader bufferedReader, String prompt) throws IOException { - - boolean isSet = false; - String txt = null; - while (!isSet) { - System.out.print(prompt + " :"); - txt = bufferedReader.readLine(); - if (!txt.equals("")) { - isSet = true; - } else { - System.out.println("'" + prompt + "' can't be empty."); - } - } - return txt; - } - - /** - * Main method of the class - * @param args the arguments of the program - */ -public static void main(String[] args) { - - //Check if there are valid args - if (args.length < 1) { - System.err.println("Syntax is : java mailsb.ClientMailer "); - System.exit(2); - } - - - int argType = 0; - if (args[0].equalsIgnoreCase("SessionMailer")) { - argType = SESSION_CASE; - } else if (args[0].equalsIgnoreCase("MimePartDSMailer")) { - argType = MIMEPARTDS_CASE; - } else { - System.err.println("Invalid type '" + args[0] + "', valid syntax is : java mailsb.ClientMailer "); - System.exit(2); - } - - //Get the initial context - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e.getMessage()); - System.exit(2); - } - - switch (argType) { - case SESSION_CASE : - sessionMailer(initialContext); - break; - case MIMEPARTDS_CASE : - if (args.length > 1) { - content = "Content of mail :"; - for (int i = 1; i < args.length; i++) { - content += args[i]; - } - } - mimePartDSMailer(initialContext); - break; - default : - - } - - - } - /** - * Deal with the MimePartDSMailer bean - * @param initialContext the initial context - */ - private static void mimePartDSMailer(Context initialContext) { - - // Connecting to the mailer bean MailerHome thru JNDI - MimePartDSMailerHome mimePartDSMailerHome = null; - try { - System.out.print("Looking up the Session mailer home..."); - mimePartDSMailerHome = (MimePartDSMailerHome) PortableRemoteObject.narrow(initialContext - .lookup("MimePartDSMailerHome"), MimePartDSMailerHome.class); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot lookup MimePartDSMailerHome: " + e.getMessage()); - System.exit(2); - } - - // MimePartDSMailerBean creation - MimePartDSMailer mimePartDSMailer = null; - try { - System.out.print("Creating a MimePartDS mailer bean ..."); - mimePartDSMailer = mimePartDSMailerHome.create("MimePartDS mailer"); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot create MimePartDSMailerBean: " + e.getMessage()); - System.exit(2); - } - - if (content == null) { - //Read the value from the user - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); - - try { - System.out.println("Content of the mail (Only one line)"); - content = getTextFromUser(bufferedReader, "Content"); - } catch (IOException e) { - System.err.println("Cannot read line from the bufferedReader : " + e.getMessage()); - System.exit(2); - } - } - - //Set the message with a recipient, a subject and a content - try { - System.out.print("Setting the message with given content '" + content + "'..."); - mimePartDSMailer.setMessage(content); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot set args of the message : " + e); - System.exit(2); - } - - //And send the message - try { - System.out.print("Sending the message..."); - mimePartDSMailer.send(); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("Failed !"); - System.err.println("Cannot send the message with MailerBean:" + e); - System.exit(2); - } - } - - /** - * Deal with the SessionMailer bean - * @param initialContext the initial context - */ - private static void sessionMailer(Context initialContext) { - // Connecting to the mailer bean MailerHome thru JNDI - SessionMailerHome sessionMailerHome = null; - try { - System.out.print("Looking up the Session mailer home..."); - sessionMailerHome = (SessionMailerHome) PortableRemoteObject.narrow(initialContext - .lookup("SessionMailerHome"), SessionMailerHome.class); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot lookup MailerHome: " + e.getMessage()); - System.exit(2); - } - - // MailerBean creation - SessionMailer sessionMailer = null; - try { - System.out.print("Creating a session mailer bean..."); - sessionMailer = sessionMailerHome.create("mailer"); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot create MailerBean: " + e.getMessage()); - System.exit(2); - } - - String toRecipient = null; - String subject = null; - String content = null; - - //Read the value from the user - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); - - try { - System.out.println("Recipient is the 'to' field of a mail"); - toRecipient = getTextFromUser(bufferedReader, "TO"); - - System.out.println("Subject of the mail"); - subject = getTextFromUser(bufferedReader, "Subject"); - - System.out.println("Content of the mail (Only one line)"); - content = getTextFromUser(bufferedReader, "Content"); - - } catch (IOException e) { - System.err.println("Cannot read line from the bufferedReader : " + e.getMessage()); - System.exit(2); - } - - //Set the message with a recipient, a subject and a content - try { - System.out.print("Setting the message with given args..."); - sessionMailer.setMessage(toRecipient, subject, content); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("failed !"); - System.err.println("Cannot set args of the message : " + e); - System.exit(2); - } - - //And send the message - try { - System.out.print("Sending the message..."); - sessionMailer.send(); - System.out.println("OK !"); - } catch (Exception e) { - System.out.println("Failed !"); - System.err.println("Cannot send the message with MailerBean:" + e); - System.exit(2); - } - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailer.java b/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailer.java deleted file mode 100644 index 19bc38a082..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailer.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * Remote interface for the bean Mailer Work with - * javax.mail.internet.MimePartDataSource - * @author Florent Benoit - * @author Ludovic Bert - */ -public interface MimePartDSMailer extends EJBObject { - - /** - * Set the message with a specific recipient, subject and content. - * @param content the content of the message. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - void setMessage(String content) throws Exception, RemoteException; - - /** - * Send the message by creating it with the mail factory properties. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - void send() throws Exception, RemoteException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerBean.java b/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerBean.java deleted file mode 100644 index 98a232c9c3..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerBean.java +++ /dev/null @@ -1,228 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -//import java -import java.rmi.RemoteException; - -//import javax -import javax.ejb.EJBException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; - -import javax.mail.Message; -import javax.mail.MessageContext; -import javax.mail.MessagingException; -import javax.mail.Transport; -import javax.mail.internet.MimePartDataSource; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * Implementation of the mailer Session Bean. It uses - * javax.mail.internet.MimePartDataSource This bean is a statefull, and - * synchronized bean. The container uses the SessionBean methods to notify the - * enterprise Bean instances of the instance's life cycle events. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class MimePartDSMailerBean implements SessionBean { - - /** - * Name of the bean - */ - private String name = null; - - /** - * Session context that the container provides for a session enterprise Bean - * instance. - */ - private SessionContext sessionContext = null; - - /** - * Reference to the javax.mail.Message object which is the message to send - * with javamail - */ - private Message message = null; - - /* ========================= ejbCreate methods =========================== */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param name the name of the bean - */ - public void ejbCreate(String name) { - this.name = name; - } - - /* =============== javax.ejb.SessionBean 2.0 implementation ============== */ - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for applications - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, java.rmi.RemoteException { - this.sessionContext = sessionContext; - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbRemove() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /** - * The activate method is called when the instance is activated from its - * "passive" state. The instance should acquire any resource that it has - * released earlier in the ejbPassivate() method. This method is called with - * no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbActivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /** - * The passivate method is called before the instance enters the "passive" - * state. The instance should release any resources that it can re-acquire - * later in the ejbActivate() method. After the passivate method completes, - * the instance must be in a state that allows the container to use the Java - * Serialization protocol to externalize and store away the instance's - * state. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbPassivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /* ======================== Mailer implementation ======================== */ - - /** - * Set the message with a specific recipient, subject and content. - * @param content the content of the message. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - public void setMessage(String content) throws Exception, RemoteException { - - //Get the initial context - InitialContext ictx = null; - try { - ictx = new InitialContext(); - } catch (NamingException e) { - throw new Exception("Can not get an inital context : " + e.getMessage()); - } - - //get a new MimePartDataSource from our ENC envirnoment java:comp/env - MimePartDataSource mimePartDataSource = null; - try { - mimePartDataSource = (MimePartDataSource) ictx.lookup("java:comp/env/mail/MailMimePartDataSource"); - } catch (NamingException e) { - throw new Exception("You have not configure the mail factory with the name specified" - + " in the jonas-ejb-jar.xml file for java:comp/env/mail/MailMimePartDataSource ." - + " By default, the factory's name is mailMimePartDS_1 :" + e.getMessage()); - } - - //Get the message context - MessageContext messageContext = mimePartDataSource.getMessageContext(); - - if (messageContext == null) { - throw new Exception("Can not get the message Context of the mimepartDatasource"); - } - - //Get the message from the context - message = messageContext.getMessage(); - - try { - message.setContent(content, "text/plain"); - } catch (MessagingException e) { - throw new Exception("A failure occurs when setting content of the message :" + e.getMessage()); - } - } - - /** - * Send the message which was previously configured. - * @throws Exception if a problem occurs. - * @throws RemoteException if the send failed. - */ - public void send() throws Exception, RemoteException { - - if (message == null) { - throw new Exception("The message can not be send because the method setMessage() " - + " was not called before the send() method."); - } - - try { - Transport.send(message); - } catch (MessagingException e) { - throw new Exception("The message can not be send : " + e.getMessage()); - } - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerHome.java b/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerHome.java deleted file mode 100644 index c790753f9d..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/MimePartDSMailerHome.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean Mailer - * Work with javax.mail.internet.MimePartDataSource - * @author Florent Benoit - * @author Ludovic Bert - */ -public interface MimePartDSMailerHome extends EJBHome { - - /** - * Create a bean with a specific name - * @param name the name of the bean - * @throws CreateException if the bean creation failed. - * @throws RemoteException if the call failed. - * @return the "mailer" bean created - */ - MimePartDSMailer create(String name) throws CreateException, RemoteException; -} diff --git a/jonas_tests/examples/base/examples/src/mailsb/README b/jonas_tests/examples/base/examples/src/mailsb/README deleted file mode 100644 index dd47d3e289..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/README +++ /dev/null @@ -1,37 +0,0 @@ -Session beans "Mailer" ----------------------- -SessionMailer : session bean using javax.mail.Session mail factory -MimePartDSMailer : session bean using javax.mail.internet.MimePartDataSource mail factory - -Compiling this example: ------------------------ -ant -find build.xml install - -Running this example: ---------------------- -In order to run this example, you must configure two types of mail factory : -You can use the provided templates : - $JONAS_ROOT/conf/MailSession1 - $JONAS_ROOT/conf/MailMimePartDS1 - -MailSession1 is a javax.mail.Session mail factory. --> Only the property mail.host need to be defined. - -MailMimePartDS1 is a javax.mail.internet.MimePartDataSource mail factory. --> The properties mail.host, mail.to and mail.subject must be defined. - -Assuming that jonas.service.mail.factories property is already set in -the jonas.properties file, start JOnAS, with the mail service. - jonas start -Djonas.services=registry,jmx,security,jtm,dbm,ejb2,mail -(You can instead change the service list in jonas.properties) - - -Run the client : -jclient -cp $JONAS_BASE/ejbjars/mailsb.jar mailsb.ClientMailer SessionMailer -or -Run the client via the Ant task runclient - ant runclient - -Stop the jonas server - jonas stop - diff --git a/jonas_tests/examples/base/examples/src/mailsb/SessionMailer.java b/jonas_tests/examples/base/examples/src/mailsb/SessionMailer.java deleted file mode 100644 index c0ed14fe20..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/SessionMailer.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * Remote interface for the bean Mailer Work with javax.mail.Session - * @author Florent Benoit - * @author Ludovic Bert - */ -public interface SessionMailer extends EJBObject { - - /** - * Set the message with a specific recipient, subject and content. - * @param recipient the 'TO' field of the message. - * @param subject the subject of the message. - * @param content the content of the message. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - void setMessage(String recipient, String subject, String content) throws Exception, RemoteException; - - /** - * Send the message which was previously configured. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - void send() throws Exception, RemoteException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mailsb/SessionMailerBean.java b/jonas_tests/examples/base/examples/src/mailsb/SessionMailerBean.java deleted file mode 100644 index 82b2073459..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/SessionMailerBean.java +++ /dev/null @@ -1,234 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -//import java -import java.rmi.RemoteException; - -//import javax -import javax.ejb.EJBException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; - -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; - -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * Implementation of the mailer Session Bean. It uses javax.mail.Session This - * bean is a statefull, and synchronized bean. The container uses the - * SessionBean methods to notify the enterprise Bean instances of the instance's - * life cycle events. - * @author Florent Benoit - * @author Ludovic Bert - */ -public class SessionMailerBean implements SessionBean { - - /** - * Name of the bean - */ - private String name = null; - - /** - * Session context that the container provides for a session enterprise Bean - * instance. - */ - private SessionContext sessionContext = null; - - /** - * Reference to the javax.mail.Message object which is the message to send - * with javamail - */ - private Message message = null; - - /* ========================= ejbCreate methods =========================== */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param name the name of the bean - */ - public void ejbCreate(String name) { - this.name = name; - } - - /* =============== javax.ejb.SessionBean 2.0 implementation ============== */ - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for applications - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, java.rmi.RemoteException { - this.sessionContext = sessionContext; - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbRemove() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /** - * The activate method is called when the instance is activated from its - * "passive" state. The instance should acquire any resource that it has - * released earlier in the ejbPassivate() method. This method is called with - * no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbActivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /** - * The passivate method is called before the instance enters the "passive" - * state. The instance should release any resources that it can re-acquire - * later in the ejbActivate() method. After the passivate method completes, - * the instance must be in a state that allows the container to use the Java - * Serialization protocol to externalize and store away the instance's - * state. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbPassivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple mailer example - } - - /* ======================== Mailer implementation ======================== */ - - /** - * Set the message with a specific recipient, subject and content. - * @param recipient the 'TO' field of the message. - * @param subject the subject of the message. - * @param content the content of the message. - * @throws Exception if a problem occurs. - * @throws RemoteException if the call failed. - */ - public void setMessage(String recipient, String subject, String content) throws Exception, RemoteException { - - //Get the initial context - InitialContext ictx = null; - try { - ictx = new InitialContext(); - } catch (NamingException e) { - throw new Exception("Can not get an inital context : " + e.getMessage()); - } - - //get a new Session from our ENC envirnoment java:comp/env - Session session = null; - try { - session = (Session) ictx.lookup("java:comp/env/mail/MailSession"); - } catch (NamingException e) { - throw new Exception("You have not configure the mail factory with the name specified" - + " in the jonas-ejb-jar.xml file for java:comp/env/mail/MailSession ." - + " By default, the factory's name is mailSession_1 :" + e.getMessage()); - } - - try { - //Create the message - message = new MimeMessage(session); - InternetAddress[] toRecipients = new InternetAddress[] {new InternetAddress(recipient)}; - /* - * try { toRecipients[0].validate(); } catch (AddressException e) { - * throw new Exception("A failure occurs when validating the email - * address '" + recipient + "' :" + e.getMessage()); } - */ - message.setRecipients(Message.RecipientType.TO, toRecipients); - message.setSubject(subject); - message.setContent(content, "text/plain"); - } catch (MessagingException e) { - throw new Exception("A failure occurs when getting a message from the session and setting " - + "the different parameters :" + e.getMessage()); - } - - } - - /** - * Send the message which was previously configured. - * @throws Exception if a problem occurs. - * @throws RemoteException if the send failed. - */ - public void send() throws Exception, RemoteException { - - if (message == null) { - throw new Exception("The message can not be send because the method setMessage() " - + " was not called before the send() method."); - } - - try { - Transport.send(message); - } catch (MessagingException e) { - throw new Exception("The message can not be send : " + e.getMessage()); - } - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mailsb/SessionMailerHome.java b/jonas_tests/examples/base/examples/src/mailsb/SessionMailerHome.java deleted file mode 100644 index eeb40ea169..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/SessionMailerHome.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Florent BENOIT & Ludovic BERT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package mailsb; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean Mailer - * Work with javax.mail.Session - * @author Florent Benoit - * @author Ludovic Bert - */ -public interface SessionMailerHome extends EJBHome { - - /** - * Create a bean with a specific name - * @param name the name of the bean - * @throws CreateException if the bean creation failed. - * @throws RemoteException if the call failed. - * @return the "mailer" bean created - */ - SessionMailer create(String name) throws CreateException, RemoteException; -} diff --git a/jonas_tests/examples/base/examples/src/mailsb/application-client.xml b/jonas_tests/examples/base/examples/src/mailsb/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/mailsb/build.xml b/jonas_tests/examples/base/examples/src/mailsb/build.xml deleted file mode 100644 index f304f220cd..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/build.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/mailsb/jonas-mailsb.xml b/jonas_tests/examples/base/examples/src/mailsb/jonas-mailsb.xml deleted file mode 100644 index 0d54d38a2f..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/jonas-mailsb.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - SessionMailer - SessionMailerHome - - mail/MailSession - mailSession_1 - - - - MimePartDSMailer - MimePartDSMailerHome - - mail/MailMimePartDataSource - mailMimePartDS_1 - - - diff --git a/jonas_tests/examples/base/examples/src/mailsb/mailsb.xml b/jonas_tests/examples/base/examples/src/mailsb/mailsb.xml deleted file mode 100644 index 861d926941..0000000000 --- a/jonas_tests/examples/base/examples/src/mailsb/mailsb.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - Deployment descriptor for the mailsb JOnAS example - mailsb example - - - SessionMailer - mailsb.SessionMailerHome - mailsb.SessionMailer - mailsb.SessionMailerBean - Stateful - Container - - mail/MailSession - javax.mail.Session - Container - - - - MimePartDSMailer - mailsb.MimePartDSMailerHome - mailsb.MimePartDSMailer - mailsb.MimePartDSMailerBean - Stateful - Container - - mail/MailMimePartDataSource - javax.mail.internet.MimePartDataSource - Container - - - - - - - SessionMailer - * - - - MimePartDSMailer - * - - Required - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean.java deleted file mode 100644 index 6ca0a5beb0..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean.java -// Message Driven bean - -package newsamplemdb; - - -import javax.jms.Message; -import javax.jms.TextMessage; -import javax.jms.JMSException; - - - -/** - * Example of MessageDrivenBean on a Topic. The transactions are container managed (Required) - * this class have superclasses in which are defined ejbCreate() and onMessage() - * this strange structure is only for reproducing bug 300387 - * for a more normal structure see the samplemdb sample - */ -public class MdbBean extends MdbBean_b { - - - /** - * Default constructor - * - */ - public MdbBean() { - } - - - - /** - * onMessage1 method - */ - public void onMessage1(Message message) { - System.out.println( "MdbBean onMessage1"); - try{ - TextMessage mess = (TextMessage)message; - System.out.println( "Message received: "+mess.getText()); - }catch(JMSException ex){ - System.err.println("Exception caught: "+ex); - } - } -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_a.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_a.java deleted file mode 100644 index dad6d748c5..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_a.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean_a.java -// Message Driven bean - -package newsamplemdb; - -import javax.ejb.MessageDrivenBean; -import javax.ejb.MessageDrivenContext; - - - -/** - * Superclass of the MessageDrivenBean class MdbBean - * Note that this class is not public but ejbCreate is public - * (it's only for reproducing the 300387 bug!) - */ - class MdbBean_a implements MessageDrivenBean { - - private transient MessageDrivenContext mdbContext; - - - - // ------------------------------------------------------------------ - // MessageDrivenBean implementation - // ------------------------------------------------------------------ - - /** - * Default constructor - * - */ - public MdbBean_a() { - } - - /** - * Set the associated context. The container call this method - * after the instance creation. - * The enterprise Bean instance should store the reference to the context - * object in an instance variable. - * This method is called with no transaction context. - * - * @param ctx A MessageDrivenContext interface for the instance. - */ - - public void setMessageDrivenContext(MessageDrivenContext ctx) { - System.out.println("MdbBean_a setMessageDrivenContext"); - mdbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the message-driven object. - * This happens when a container decides to terminate the message-driven object. - * - * This method is called with no transaction context. - * - */ - public void ejbRemove() { - System.out.println("MdbBean_a ejbRemove"); - } - - /** - * The Message driven bean must define an ejbCreate methods with no args. - * - */ - public void ejbCreate() { - System.out.println("MdbBean_a ejbCreate"); - } - - -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_b.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_b.java deleted file mode 100644 index 675f1d8fc0..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbBean_b.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean_b.java -// Message Driven bean - -package newsamplemdb; - -import javax.ejb.MessageDrivenContext; -import javax.jms.MessageListener; -import javax.jms.Message; -import javax.jms.TextMessage; -import javax.jms.JMSException; - -/** - * Superclass of the MessageDrivenBean class MdbBean - * Note that this public class is implementing onMessage method - * (it's only for reproducing the 300387 bug!) - */ -public class MdbBean_b extends MdbBean_a implements MessageListener { - - - - - /** - * Default constructor - * - */ - public MdbBean_b() { - } - - /** - * onMessage method - */ - public void onMessage(Message message) { - System.out.println( "MdbBean onMessage"); - try{ - TextMessage mess = (TextMessage)message; - System.out.println( "Message received: "+mess.getText()); - }catch(JMSException ex){ - System.err.println("Exception caught: "+ex); - } - } - - - -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbClient.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbClient.java deleted file mode 100644 index b387194fbd..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/MdbClient.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbClient.java -// mini Client for accessing bean Mdb - -package newsamplemdb; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.*; -import javax.jms.*; - -/** - * - */ -public class MdbClient { - - static Context ictx = null; - static TopicConnectionFactory tcf = null; - static TopicPublisher tp = null; - static Topic topic = null; - // JNDI name of the Topic - static String topicName = "mdbTopic"; - // JNDI name of the default connection factory - static String conFactName = "JTCF"; - - public static void main(String[] arg) { - // Get InitialContext - try { - ictx = new InitialContext(); - // lookup the TopicConnectionFactory through its JNDI name - tcf = (TopicConnectionFactory) ictx.lookup(conFactName ); - System.out.println("JMS client: tcf = " + tcf); - // lookup the Topic through its JNDI name - topic = (Topic) ictx.lookup(topicName); - System.out.println("JMS client: topic = " + topic); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - TopicConnection tc = null; - TopicSession session = null; - try { - tc = tcf.createTopicConnection(); - System.out.println("JMS client: tc = " + tc.toString()); - session = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); - tp = session.createPublisher(topic); - }catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - // publish 10 messages to the topic - int nbmess = 100; - try { - TextMessage message; - for (int i=0;i - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/build.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/build.xml deleted file mode 100644 index 31eb79c0f5..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/build.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/jonas-newsamplemdb.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/jonas-newsamplemdb.xml deleted file mode 100644 index 6dc54be4fb..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/jonas-newsamplemdb.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - Mdb - - joramActivationSpec - - 20 - 10 - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/newsamplemdb.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/newsamplemdb.xml deleted file mode 100644 index e27a89ae09..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb/newsamplemdb.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Deployment descriptor for the newsamplemdb JOnAS example - newsamplemdb example - - - Describe here the message driven bean Mdb - Message Driven Bean Mdb - Mdb - newsamplemdb.MdbBean - javax.jms.MessageListener - Container - javax.jms.Topic - - - destination - mdbTopic - - - destinationType - javax.jms.Topic - - - subscriptionDurability - NonDurable - - - - - - - - - - Mdb - * - - Required - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean.java deleted file mode 100644 index 3021f4b62f..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean.java -// Message Driven bean - -package newsamplemdb2; - - -import javax.jms.Message; -import javax.jms.TextMessage; -import javax.jms.JMSException; - - - -/** - * Example of MessageDrivenBean on a Queue. The transactions are container managed (Required) - * this class have superclasses in which are defined ejbCreate() and onMessage() - * this strange structure is only for reproducing bug 300387 - * for a more normal structure see the samplemdb sample - */ -public class MdbBean extends MdbBean_b { - - - /** - * Default constructor - * - */ - public MdbBean() { - } - - - - /** - * onMessage1 method - */ - public void onMessage1(Message message) { - System.out.println( "MdbBean onMessage1"); - try{ - TextMessage mess = (TextMessage)message; - System.out.println( "Message received: "+mess.getText()); - }catch(JMSException ex){ - System.err.println("Exception caught: "+ex); - } - } -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_a.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_a.java deleted file mode 100644 index 16b7866da1..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_a.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean_a.java -// Message Driven bean - -package newsamplemdb2; - -import javax.ejb.MessageDrivenBean; -import javax.ejb.MessageDrivenContext; - - - -/** - * Superclass of the MessageDrivenBean class MdbBean - * Note that this class is not public but ejbCreate is public - * (it's only for reproducing the 300387 bug!) - */ - class MdbBean_a implements MessageDrivenBean { - - private transient MessageDrivenContext mdbContext; - - - - // ------------------------------------------------------------------ - // MessageDrivenBean implementation - // ------------------------------------------------------------------ - - /** - * Default constructor - * - */ - public MdbBean_a() { - } - - /** - * Set the associated context. The container call this method - * after the instance creation. - * The enterprise Bean instance should store the reference to the context - * object in an instance variable. - * This method is called with no transaction context. - * - * @param ctx A MessageDrivenContext interface for the instance. - */ - - public void setMessageDrivenContext(MessageDrivenContext ctx) { - System.out.println("MdbBean_a setMessageDrivenContext"); - mdbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the message-driven object. - * This happens when a container decides to terminate the message-driven object. - * - * This method is called with no transaction context. - * - */ - public void ejbRemove() { - System.out.println("MdbBean_a ejbRemove"); - } - - /** - * The Message driven bean must define an ejbCreate methods with no args. - * - */ - public void ejbCreate() { - System.out.println("MdbBean_a ejbCreate"); - } - - -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_b.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_b.java deleted file mode 100644 index f3be938781..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbBean_b.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean_b.java -// Message Driven bean - -package newsamplemdb2; - -import javax.ejb.MessageDrivenContext; -import javax.jms.MessageListener; -import javax.jms.Message; -import javax.jms.TextMessage; -import javax.jms.JMSException; - -/** - * Superclass of the MessageDrivenBean class MdbBean - * Note that this public class is implementing onMessage method - * (it's only for reproducing the 300387 bug!) - */ -public class MdbBean_b extends MdbBean_a implements MessageListener { - - - - - /** - * Default constructor - * - */ - public MdbBean_b() { - } - - /** - * onMessage method - */ - public void onMessage(Message message) { - System.out.println( "MdbBean onMessage"); - try{ - TextMessage mess = (TextMessage)message; - System.out.println( "Message received: "+mess.getText()); - }catch(JMSException ex){ - System.err.println("Exception caught: "+ex); - } - } - - - -} diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbClient.java b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbClient.java deleted file mode 100644 index 95822753d0..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/MdbClient.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbClient.java -// mini Client for accessing bean Mdb - -package newsamplemdb2; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.*; -import javax.jms.*; - -/** - * - */ -public class MdbClient { - - static Context ictx = null; - static QueueConnectionFactory qcf = null; - static QueueSender qp = null; - static Queue queue = null; - // JNDI name of the Queue - static String queueName = "mdbQueue"; - // JNDI name of the default connection factory - static String conFactName = "JQCF"; - - public static void main(String[] arg) { - // Get InitialContext - try { - ictx = new InitialContext(); - // lookup the QueueConnectionFactory through its JNDI name - qcf = (QueueConnectionFactory) ictx.lookup(conFactName ); - System.out.println("JMS client: qcf = " + qcf); - // lookup the Queue through its JNDI name - queue = (Queue) ictx.lookup(queueName); - System.out.println("JMS client: queue = " + queue); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - QueueConnection qc = null; - QueueSession session = null; - try { - qc = qcf.createQueueConnection(); - System.out.println("JMS client: qc = " + qc.toString()); - session = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); - qp = session.createSender(queue); - }catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - // publish 10 messages to the queue - int nbmess = 10; - try { - TextMessage message; - for (int i=0;i - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/build.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/build.xml deleted file mode 100644 index 469640ddb5..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/build.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/jonas-newsamplemdb2.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/jonas-newsamplemdb2.xml deleted file mode 100644 index 6dc54be4fb..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/jonas-newsamplemdb2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - Mdb - - joramActivationSpec - - 20 - 10 - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/newsamplemdb2.xml b/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/newsamplemdb2.xml deleted file mode 100644 index c5b2f6daff..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/newsamplemdb2/newsamplemdb2.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - Deployment descriptor for the newsamplemdb2 JOnAS example - newsamplemdb2 example - - - Describe here the message driven bean Mdb - Message Driven Bean Mdb - Mdb - newsamplemdb2.MdbBean - javax.jms.MessageListener - Container - javax.jms.Queue - - - destination - mdbQueue - - - destinationType - javax.jms.Queue - - - subscriptionDurability - NonDurable - - - - - - - - - - Mdb - * - - Required - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/Env.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/Env.java deleted file mode 100644 index 427385f77f..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/Env.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// Env.java -package sampleappli; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * Env remote interface - * @author JOnAS team - */ -public interface Env extends EJBObject { - - void init() throws RemoteException; - - void clean() throws RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvBean.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvBean.java deleted file mode 100644 index 99fe71650c..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvBean.java +++ /dev/null @@ -1,238 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// EnvBean.java -// Stateless Session bean - -package sampleappli; - -import java.rmi.RemoteException; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; -import java.io.File; -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import javax.ejb.EJBObject; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.sql.DataSource; - -/** - * EnvBean is a stateless session bean use to create and clean a correct - * environement for the running of the StockClient it creates/remove the - * StockTable and the order file - * @author JOnAS team - */ -public class EnvBean implements SessionBean { - - SessionContext ejbContext; - - DataSource dataSource = null; - - Connection conn = null; - - Statement stmt; - - String stocktablename = null; - - String orderfilename = null; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void setSessionContext(SessionContext ctx) { - ejbContext = ctx; - if (dataSource == null) { - // Finds DataSource from JNDI - Context initialContext = null; - try { - initialContext = new InitialContext(); - dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/myDS"); - } catch (Exception e) { - System.err.println(" new InitialContext() : " + e); - throw new EJBException("Cannot get JNDI InitialContext"); - } - // Find the stocktablename - try { - stocktablename = (String) initialContext.lookup("java:comp/env/stocktablename"); - } catch (Exception e) { - System.err.println("cannot lookup environment " + e); - throw new EJBException("cannot lookup environment"); - } - // Find the orderfilename - try { - orderfilename = (String) initialContext.lookup("java:comp/env/orderfilename"); - } catch (Exception e) { - System.err.println("cannot lookup environment " + e); - throw new EJBException("cannot lookup environment"); - } - } - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - } - - /** - * The Session bean must define 1 or more ejbCreate methods. - * @throws CreateException Failure to create a session EJB object. - */ - public void ejbCreate() throws CreateException { - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. - */ - public void ejbPassivate() { - } - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. - */ - public void ejbActivate() { - } - - // ------------------------------------------------------------------ - // Env implementation - // ------------------------------------------------------------------ - - /** - * init - */ - public void init() { - createTableStock(); - createOrderFile(); - } - - /** - * clean - */ - public void clean() { - dropTableStock(); - removeOrderFile(); - } - - // ------------------------------------------------------------------ - // Env internal methods - // ------------------------------------------------------------------ - public void dropTableStock() { - // drop table - try { - conn = dataSource.getConnection(); - stmt = conn.createStatement(); - stmt.execute("DROP TABLE " + stocktablename); - stmt.close(); - conn.close(); - } catch (Exception e) { - System.err.println("Exception in dropTable : \n" + stocktablename + " " + e); - } - } - - public void createTableStock() { - // get connection - try { - conn = dataSource.getConnection(); - - } catch (Exception e) { - System.err.println("Cannot get Connection: \n" + e); - throw new EJBException("Cannot get Connection"); - } - try { - stmt = conn.createStatement(); - stmt.execute("DROP TABLE " + stocktablename); - stmt.close(); - } catch (Exception e) { - } - // create table - try { - stmt = conn.createStatement(); - stmt.execute("create table " + stocktablename + "(ID varchar(5) not null primary key, QUANTITY integer)"); - stmt.execute("insert into " + stocktablename + " values ('00000', 10)"); - stmt.execute("insert into " + stocktablename + " values ('00001', 20)"); - stmt.execute("insert into " + stocktablename + " values ('00002', 10)"); - stmt.execute("insert into " + stocktablename + " values ('00003', 20)"); - stmt.execute("insert into " + stocktablename + " values ('00004', 10)"); - stmt.close(); - conn.close(); - } catch (SQLException e) { - System.err.println("Exception in createTable : " + e); - throw new EJBException("Exception in createTable"); - } - } - - public void createOrderFile() { - try { - File f = new File(System.getProperty("java.io.tmpdir") + File.separator + System.getProperty("user.name") - + "_" + orderfilename); - if (!f.createNewFile()) { - f.delete(); - f.createNewFile(); - } - } catch (Exception ex) { - System.err.println("Exception on createOrderFile: " + ex); - throw new EJBException("Exception in createOrderFile"); - } - - } - - public void removeOrderFile() { - try { - File f = new File(System.getProperty("java.io.tmpdir") + File.separator + System.getProperty("user.name") - + "_" + orderfilename); - f.delete(); - } catch (Exception ex) { - System.err.println("Exception on removeOrderFile: " + ex); - throw new EJBException("Exception in removeOrderFile"); - } - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvHome.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvHome.java deleted file mode 100644 index 093ed2fb84..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/EnvHome.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package sampleappli; - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - - -/** - * Home interface for the bean Env - * @author JOnAS team - */ -public interface EnvHome extends EJBHome { - - Env create() throws CreateException, RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/OrderBean.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/OrderBean.java deleted file mode 100644 index b9ea5d35e7..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/OrderBean.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// OrderBean.java -// Message Driven bean -package sampleappli; - -import javax.ejb.MessageDrivenBean; -import javax.ejb.MessageDrivenContext; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.TextMessage; - -import javax.naming.Context; -import javax.naming.InitialContext; - -import java.io.DataOutputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; - -/** - * - */ -public class OrderBean implements MessageDrivenBean, MessageListener { - - private transient MessageDrivenContext mdbContext; - - String filename = null; - - // ------------------------------------------------------------------ - // MessageDrivenBean implementation - // ------------------------------------------------------------------ - - /** - * Default constructor - */ - public OrderBean() { - } - - /** - * Set the associated context. The container call this method after the - * instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param MessageDrivenContext A MessageDrivenContext interface for the - * instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - - public void setMessageDrivenContext(MessageDrivenContext ctx) { - mdbContext = ctx; - Context initialContext = null; - if (filename == null) { - try { - initialContext = new InitialContext(); - // Check that the SessionContext is the good one. - filename = (String) initialContext.lookup("java:comp/env/orderfilename"); - } catch (Exception e) { - System.err.println("cannot lookup environment"); - } - } - } - - /** - * A container invokes this method before it ends the life of the - * message-driven object. This happens when a container decides to terminate - * the message-driven object. This method is called with no transaction - * context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - } - - /** - * The Message driven bean must define an ejbCreate methods with no args. - */ - public void ejbCreate() { - } - - /** - * onMessage method - */ - public void onMessage(Message message) { - TextMessage msg = (TextMessage) message; - try { - File f = new File(System.getProperty("java.io.tmpdir") + File.separator + System.getProperty("user.name") - + "_" + filename); - DataOutputStream fileout = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f - .getCanonicalPath(), true))); - fileout.writeBytes(msg.getText() + System.getProperty("line.separator")); - fileout.close(); - } catch (Exception e) { - System.err.println("OrderBean onMessage Exception caught: " + e); - } - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/README b/jonas_tests/examples/base/examples/src/mdb/sampleappli/README deleted file mode 100644 index a5b40b5e56..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/README +++ /dev/null @@ -1,69 +0,0 @@ -Example description -------------------- - -The object of this example is to show how Message driven beans may -be involved in global transactions as well as Entity beans - -In this sample appli: - - - StockBean is an entity bean CMP that handles a stock table - a Stock item is composed with a Stockid (String) which is the primary key - and a Quantity (int) - the method decreaseQuantity(int qty) decrease the quantity for the - corresponding stockid but may throw a RemoteException "Negative stock" - - - StockHandlerBean is a Message Driven Bean that receives Map messages: - "CustomerId", String - "ProductId", String - "Quantity", int - - the onMessage method will run in the scope of a transaction started - by the the container in the receipt of a message on the - topic (StockHandlerTopic) - it will send a Text message on a Queue (OrderQueue) and decrease - the stock quantity for the Stock element identified by the "ProductId". - If it catches a RemoteException on the decreaseQuantity method it will call - the setRollbackOnly method of the MessageDrivenContext linked to the - instance in this case the container transaction will be rolled back. - - - OrderBean is another Message Driven Bean listening on the OrderQueue Queue - on receipt of a Text message on this queue it will write the corresponding - String as a new line in a file (order.txt) - - - EnvBean is a stateless session bean used for creating the stock table - in the database and for deleting this table - - - SampleAppliClient is a java application that sends n messages to the - topic StockHandlerTopic for decreasing several Stock items these - n messages doesn't cause the raise of Remote Exception negative stock - and sends one message on the Stock id "00000" that must cause - a rollback of the transaction. - At the end it verifies the number of messages received by the - Order message driven bean by counting the nb of lines in the - order.txt file (it must be equal to n) and verifies that the - stock quantity for "00000" has not changed and all the other must - be equal to 1. - - -Compiling the example : ---------------------- - -ant -find build.xml install - -Running this example : ---------------------- -You can use the provided run.sh (Unix) or run.bat (Windows) scripts to execute the -whole example or run it step by step. - - jonas start - ant runclient - jonas stop - -Note : -Running this example will lead to a normal exception in the JOnAS server : - - System Exception in business method: -java.rmi.RemoteException: Negative stock - at sampleappli.StockBean.decreaseQuantity(StockBean.java:199) - ... - diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/SampleAppliClient.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/SampleAppliClient.java deleted file mode 100644 index bb05f221c7..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/SampleAppliClient.java +++ /dev/null @@ -1,309 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// SampleAppliClient.java -// - -package sampleappli; - -import java.rmi.RemoteException; -import java.util.Enumeration; -import java.io.DataInputStream; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import javax.jms.*; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -/** - * - */ -public class SampleAppliClient { - - static Context initialContext = null; - - static EnvHome home = null; - - // Number of second to wait before the checking process - static int sleepSecond = 10; - - public static void main(String[] args) { - - // Initialize the number of second to wait before the checking process - if (args.length > 0) { - sleepSecond = (new Integer(args[0])).intValue(); - } - - // Get InitialContext - try { - initialContext = new InitialContext(); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - // Lookup bean home - String beanName = "EnvHome"; - try { - home = (EnvHome) PortableRemoteObject.narrow(initialContext.lookup(beanName), EnvHome.class); - } catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - // Init the environment for the application - Env env = null; - try { - env = home.create(); - env.init(); - } catch (Exception ex) { - System.err.println("Cannot init Environment: " + ex); - System.exit(2); - } - - TopicConnectionFactory tcf = null; - TopicPublisher tp = null; - Topic topic = null; - // JNDI name of the Topics - String topicName = "StockHandlerTopic"; - // JNDI name of the connection factory - String conFactName = "JTCF"; - - try { - // lookup the TopicConnectionFactory through its JNDI name - tcf = (TopicConnectionFactory) initialContext.lookup(conFactName); - // lookup the Topic through its JNDI name - topic = (Topic) initialContext.lookup(topicName); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - TopicConnection tc = null; - TopicSession session = null; - try { - tc = tcf.createTopicConnection(); - session = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); - tp = session.createPublisher(topic); - } catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - MapMessage mess = null; - int nbmess = 0; - // We send several messages that will update the database and the file - // order - try { - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer10"); - mess.setString("ProductId", "00003"); - mess.setInt("Quantity", 3); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer1"); - mess.setString("ProductId", "00001"); - mess.setInt("Quantity", 5); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer3"); - mess.setString("ProductId", "00002"); - mess.setInt("Quantity", 2); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer2"); - mess.setString("ProductId", "00004"); - mess.setInt("Quantity", 6); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer2"); - mess.setString("ProductId", "00003"); - mess.setInt("Quantity", 10); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer3"); - mess.setString("ProductId", "00001"); - mess.setInt("Quantity", 10); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer1"); - mess.setString("ProductId", "00002"); - mess.setInt("Quantity", 5); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer10"); - mess.setString("ProductId", "00004"); - mess.setInt("Quantity", 3); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer122"); - mess.setString("ProductId", "00003"); - mess.setInt("Quantity", 6); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer45"); - mess.setString("ProductId", "00001"); - mess.setInt("Quantity", 4); - tp.publish(mess); - nbmess++; - - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer7"); - mess.setString("ProductId", "00002"); - mess.setInt("Quantity", 2); - tp.publish(mess); - nbmess++; - - // Here we send a message that will force the rollback of the - // transaction - // in the onMessage of StockHandler MessageDrivenBean - mess = session.createMapMessage(); - mess.setString("CustomerId", "customer00"); - mess.setString("ProductId", "00000"); - mess.setInt("Quantity", 1000); - tp.publish(mess); - session.close(); - tc.close(); - - } catch (Exception ex) { - System.err.println("Exception caught when sending messages: " + ex); - System.exit(2); - } - - // Before the checking process we wait a little .... - try { - Thread.currentThread().sleep(1000 * sleepSecond); - } catch (InterruptedException e) { - System.err.println("InterruptedException"); - System.exit(2); - } - - // We have to check that nbmess have actually sent to the Message driven - // bean Order - // this is done by reading the order file (order.txt), it must have - // nbmess lines - BufferedReader inorderbr = null; - try { - File f = new File(System.getProperty("java.io.tmpdir") + File.separator + System.getProperty("user.name") - + "_order.txt"); - DataInputStream inorder = new DataInputStream(new BufferedInputStream(new FileInputStream(f))); - inorderbr = new BufferedReader(new InputStreamReader(inorder)); - } catch (Exception ex) { - System.err.println("Cannot open the order file: " + ex); - System.exit(2); - } - - String s = null; - int n = 0; - try { - while ((s = inorderbr.readLine()) != null) { - n++; - System.out.println(s); - } - inorderbr.close(); - } catch (java.io.IOException ex) { - System.err.println("cannot read the order file: " + ex); - } - if (n == nbmess) { - System.out.println("Nb messages sent and received OK"); - } else { - System.out.println("Problem: nb messages sent = " + nbmess + ", nb messages received = " + n); - System.out.println(" (re-run SampleAppliClent with an argument greater than " + sleepSecond + ")"); - } - - // Lookup bean home - String stockbeanName = "StockHome"; - StockHome shome = null; - Enumeration listOfStocks = null; - try { - shome = (StockHome) PortableRemoteObject.narrow(initialContext.lookup(stockbeanName), StockHome.class); - } catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - try { - listOfStocks = shome.findAllStocks(); - } catch (Exception e) { - System.err.println("Cannot findAllStocks: " + e); - } - Stock stock = null; - try { - while (listOfStocks.hasMoreElements()) { - stock = (Stock) listOfStocks.nextElement(); - String id = stock.getId(); - int qty = stock.getQuantity(); - System.out.println("StockId = " + id + " Quantity = " + qty); - if (id.equals("00000")) { - if (qty != 10) { - System.err.println("Problem: Stock id 00000 must be set to 10"); - System.out.println(" (re-run SampleAppliClent with an argument greater than " - + sleepSecond + ")"); - System.exit(2); - } - } else { - // for the other id the stock quantity must be equals to 1 - if (qty != 1) { - System.err.println("Problem: Stock id " + id + " must be set to 1"); - System.out.println(" (re-run SampleAppliClent with an argument greater than " - + sleepSecond + ")"); - System.exit(2); - } - } - } - } catch (Exception ex) { - System.err.println("Exception caught while reading stocks: " + ex); - } - - System.out.println("SampleApplicationClient OK"); - - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/Stock.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/Stock.java deleted file mode 100644 index 27c55b6c4b..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/Stock.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// Stock.java -package sampleappli; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * Stock remote interface - */ -public interface Stock extends EJBObject { - - public void increaseQuantity(int qty) throws RemoteException; - - public void decreaseQuantity(int qty) throws RemoteException; - - public int getQuantity() throws RemoteException; - - public void setQuantity(int qty) throws RemoteException; - - public String getId() throws RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockBean.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockBean.java deleted file mode 100644 index 1502f57c4f..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockBean.java +++ /dev/null @@ -1,207 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// StockBean.java -// Entity Bean -package sampleappli; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.DuplicateKeyException; -import javax.ejb.EJBException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.FinderException; -import javax.ejb.ObjectNotFoundException; -import javax.ejb.RemoveException; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.sql.DataSource; -import javax.transaction.NotSupportedException; - -/** - * - */ -public class StockBean implements EntityBean { - - EntityContext ejbContext; - - // ------------------------------------------------------------------ - // State of the bean. - // They must be public for Container Managed Persistance. - // ------------------------------------------------------------------ - public String stockid; - - public int stockqty; - - // ------------------------------------------------------------------ - // EntityBean implementation - // ------------------------------------------------------------------ - - /** - * Set the associated entity context. The container invokes this method on - * an instance after the instance has been created. This method is called in - * an unspecified transaction context. - * @param ctx - An EntityContext interface for the instance. The instance - * should store the reference to the context in an instance variable. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void setEntityContext(EntityContext ctx) { - ejbContext = ctx; - } - - /** - * Unset the associated entity context. The container calls this method - * before removing the instance. This is the last method that the container - * invokes on the instance. The Java garbage collector will eventually - * invoke the finalize() method on the instance. This method is called in an - * unspecified transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void unsetEntityContext() { - ejbContext = null; - } - - /** - * A container invokes this method before it removes the EJB object that is - * currently associated with the instance. This method is invoked when a - * client invokes a remove operation on the enterprise Bean's home interface - * or the EJB object's remote interface. This method transitions the - * instance from the ready state to the pool of available instances. This - * method is called in the transaction context of the remove operation. - * @throws RemoveException The enterprise Bean does not allow destruction of - * the object. - * @throws EJBException - Thrown by the method to indicate a failure caused - * by a system-level error. - */ - public void ejbRemove() throws RemoveException { - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by loading it state from the underlying database. This method - * always executes in the proper transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbLoad() { - } - - /** - * A container invokes this method to instruct the instance to synchronize - * its state by storing it to the underlying database. This method always - * executes in the proper transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbStore() { - } - - /** - * There must be an ejbPostCreate par ejbCreate method - * @throws CreateException Failure to create an entity EJB object. - */ - public void ejbPostCreate(String id, int qty) throws CreateException { - } - - /** - * The Entity bean can define 0 or more ejbCreate methods. - * @throws CreateException Failure to create an entity EJB object. - * @throws DuplicateKeyException An object with the same key already exists. - */ - public java.lang.String ejbCreate(String id, int qty) throws CreateException, DuplicateKeyException { - - // Init here the bean fields - stockid = id; - stockqty = qty; - - // In CMP, should return null. - return null; - } - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. - */ - public void ejbPassivate() { - } - - /** - * A container invokes this method when the instance is taken out of the - * pool of available instances to become associated with a specific EJB - * object. - */ - public void ejbActivate() { - } - - // ------------------------------------------------------------------ - // Stock implementation - // ------------------------------------------------------------------ - - /** - * increaseQuantity - */ - public void increaseQuantity(int qty) { - stockqty += qty; - } - - /** - * decreaseStockQuantity - */ - public void decreaseQuantity(int qty) throws RemoteException { - stockqty = stockqty - qty; - if (stockqty < 0) { - throw new RemoteException("Negative stock"); - } - } - - /** - * getStockQuantity - */ - public int getQuantity() throws RemoteException { - return stockqty; - } - - /** - * setStockQuantity - */ - public void setQuantity(int qty) throws RemoteException { - stockqty = qty; - } - - /** - * getStockQuantity - */ - public String getId() throws RemoteException { - return stockid; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHandlerBean.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHandlerBean.java deleted file mode 100644 index 90b5146e29..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHandlerBean.java +++ /dev/null @@ -1,180 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// StockHandlerBean.java -// Message Driven bean - -package sampleappli; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.ejb.MessageDrivenBean; -import javax.ejb.MessageDrivenContext; -import javax.ejb.EJBException; -import javax.jms.*; -import javax.rmi.PortableRemoteObject; - -/** - * StockHandlerBean is a Message driven bean which is listening to a topic It - * receives MapMessages that contains a customer identification, a product - * identification and a quantity for the product When the StockHandlerBean - * receives a message it builds a message corresponding to an Order and sends it - * to a Queue destination then it updates the Stock database. - */ -public class StockHandlerBean implements MessageDrivenBean, MessageListener { - - private transient MessageDrivenContext mdbContext; - - StockHome sh = null; - - QueueConnectionFactory queueConnectionFactory = null; - - QueueConnection queueConnection = null; - - Queue queue = null; - - Context initialContext = null; - - // ------------------------------------------------------------------ - // MessageDrivenBean implementation - // ------------------------------------------------------------------ - - /** - * Default constructor - */ - public StockHandlerBean() { - } - - /** - * Set the associated context. The container call this method after the - * instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param MessageDrivenContext A MessageDrivenContext interface for the - * instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - - public void setMessageDrivenContext(MessageDrivenContext ctx) { - mdbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the - * message-driven object. This happens when a container decides to terminate - * the message-driven object. This method is called with no transaction - * context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - } - - /** - * The Message driven bean must define an ejbCreate methods with no args. - */ - public void ejbCreate() { - try { - initialContext = new InitialContext(); - sh = (StockHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Stock"), - StockHome.class); - queue = (Queue) initialContext.lookup("java:comp/env/jms/Orders"); - queueConnectionFactory = (QueueConnectionFactory) initialContext - .lookup("java:comp/env/jms/QueueConnectionFactory"); - queueConnection = queueConnectionFactory.createQueueConnection(); - } catch (Exception e) { - System.err.println("StockHandlerBean ejbCreate : " + e); - } - } - - /** - * onMessage method Map Messages are receive with the following format: - * "CustomerId" String "ProductId" String "Quantity" int the Message driven - * bean will construct a string for an Order that will be sent to the Queue - * Orders and decrease the stock quantity for the product identified by - * ProductId this method run in the scope of a transaction that the - * container started immediately before dispatching the onMessage method the - * sending message to the Order queue and the updating of the Stock table is - * made in the same global transaction this transaction may be rolled back - * if the stock quantity became negative - */ - - public void onMessage(Message message) { - QueueSession session = null; - QueueSender qs = null; - int code; - String pid = null; - ; - int qty = 0; - String cid = null; - ; - MapMessage msg = (MapMessage) message; - Stock stock = null; - try { - if (message.getJMSRedelivered()) { - System.out.println("Ok, that's it!"); - return; - } - } catch (Exception ex) { - System.err.println(ex.toString()); - } - try { - pid = msg.getString("ProductId"); - qty = msg.getInt("Quantity"); - cid = msg.getString("CustomerId"); - session = queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE); - qs = session.createSender(queue); - stock = sh.findByPrimaryKey(pid); - System.out.println("StockHandlerBean findByPrimaryKey(" + pid + ")"); - } catch (Exception ex) { - System.err.println(ex.toString()); - } - try { - TextMessage tm = session.createTextMessage(); - String m = "For CustomerId = " + cid + " ProductId= " + pid + " Quantity= " + qty; - tm.setText(m); - qs.send(tm); - System.out.println("StockHandlerBean message sent: " + m); - stock.decreaseQuantity(qty); - } catch (Exception ex) { - // on negative Stock -> rollback the transaction - mdbContext.setRollbackOnly(); - } finally { - if (session != null) { - try { - session.close(); - System.out.println("StockHandlerBean session closed"); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHome.java b/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHome.java deleted file mode 100644 index 0de16e31db..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/StockHome.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// StockHome.java -package sampleappli; - -import java.rmi.RemoteException; -import java.util.Enumeration; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; -import javax.ejb.FinderException; - -/** - * Home interface for the bean Stock - */ -public interface StockHome extends EJBHome { - - Stock create(String id, int qty) throws CreateException, RemoteException; - - Stock findByPrimaryKey(java.lang.String pk) throws FinderException, RemoteException; - - public Enumeration findAllStocks() throws RemoteException, FinderException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/application-client.xml b/jonas_tests/examples/base/examples/src/mdb/sampleappli/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/build.xml b/jonas_tests/examples/base/examples/src/mdb/sampleappli/build.xml deleted file mode 100644 index a5102a1a10..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/build.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/db1.prp b/jonas_tests/examples/base/examples/src/mdb/sampleappli/db1.prp deleted file mode 100644 index 9d87d68d0e..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/db1.prp +++ /dev/null @@ -1,325 +0,0 @@ -!--------------------------------------------------------------------- -! -! PROPERTIES for the InstantDB database used in the JOnAS eb example -! (builded from InstantDB/3.25/Examples/sample.prp) -! -!--------------------------------------------------------------------- - -!--------------------------------------------------------------------- -! -! BASIC PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Path where index tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -indexPath=./tmp/indexes -! -! Path where system tables are held. Can be absolute or relative to -! the properties file. Defaults to tablePath. -! -systemPath=./tmp/system -! -! Path where database tables are held. Can be absolute or relative -! to the properties file. Defaults to "current" directory. -! -tablePath=./tmp/tables -! -! Path where results set tables are held. Can be absolute or relative -! to the properties file. Defaults to tablePath. -! -tmpPath=./tmp/tmp -! -! Non-zero means paths are relative to the properties file. -! Default is absolute paths for files. -! -relativeToProperties=1 -! -! Alternative partitions can be defined so that tables can be placed -! in multiple locations. Each partition is numbered: 1, 2, 3,... Tables -! can be created on partitions using the syntax -! -! CREATE TABLE ON PARTITION ... -! -! The partition count has to be supplied. -! -!partitionCount=2 -! -! The locations of each partition must be supplied. These are always -! absolute path names. -! -!partition1=d:/petes -!partition2=c:/temp - - -!--------------------------------------------------------------------- -! -! TUNING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! The amount of each column to cache, expressed either as an absolute -! number of rows or as a percentage figure. Defaults to 256 or 10 respectively. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheAmount=512 -! -! CACHE_ROWS Must be one of CACHE_ROWS or CACHE_PERCENT. Determines whether -! to cache columns in tables based on an absolute number of rows, or the -! percentage number of rows in the table. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -cacheCondition=CACHE_ROWS -! -! The amount of the system tables to be cached. Defaults to 100. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheSize=10 -! -! Similar to cacheCondition, but applies only to the system tables. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!systemCacheCondition=CACHE_ROWS -! -! The percentage cache hit improvement required in order to move the -! cache to a new location in a column. -! -! (Currently not implemented). -! -cacheResetPercent=10 -! -! Non-zero means that database changes do not get written to the -! database immediately. See tuning.html. -! -fastUpdate=0 -! -! Percentage of free space in an index that must be present before -! the index reorganises itself. High values means frequent index -! reorganisation. Low values means slow index inserts. -! -indexLoad=5 -! -! The number of cache misses to include in calculations of the next -! base for the cache. -! -! (Currently not implemented). -! -missesInCacheStats=100 -! -! Non-zero means that results sets get instantiated on disk. By default -! InstantDB holds results sets emtirely in memory (apart from Binary -! columns). For large results sets this can be a problem. This property -! forces all results sets to be held on disk. -! -resultsOnDisk=0 -! -! Similar to cacheCondition but applies only to disk based -! results sets. Default is CACHE_ROWS. -! -resultsSetCache=CACHE_ROWS -! -! Similar to cacheAmount but applies only to disk based -! results sets. Default is 100. -! -resultsSetCacheAmount=100 -! -! Number of rows to read into the disk read ahead buffer. -! Recommended to be set somewhere around 128 to 256. -! Default is 20. -! -rowCacheSize=128 -! -! The read ahead buffer is effective at speeding up full -! table scans. However for indexed lookups or multiple -! simultaneous scans it is better to read a single row at -! a time. Each table holds a small number of single row -! buffers to improve such operations. Default is 8. -! -!singleRowCount=4 -! -! Sometimes the look ahead buffer can be held by a single -! thread even though it is not retrieveing many values from it. -! If too many lookups retrieve data from the single row -! buffers then it is better to flush the look ahead buffer and -! make it available for re-use. Default is 128. -! -!flushAfterCacheMisses=64 -! -! Number of rows to read ahead for system tables. By default -! system tables cache everything, so it is wasteful to have large -! read ahead buffers since they will very rarely be used. This -! allows the size of the system read ahead buffers to be reduced -! if necessary. Defaults to rowCacheSize. -! -!systemRows=20 -! -! The control column in all tables normally has a large cache -! since this speeds up all operation on that table. This can be -! varied to either improve performance or to reduce space. -! default is 8192. -! -! This value applies only when tables are first created. It has no effect -! when a table is being re-opened. -! -!controlColCacheSize=512 -! -! By default, InstantDB only does a cursory search for deleted rows during -! UPDATE statements. Setting searchDeletes=1 causes more detailed searches -! for deleted rows. This slows down UPDATE executions, but reults in more -! compact tables. Default is 0. -! -searchDeletes=0 -! -! The interval, in milliseconds, between checks for statement execution -! timeouts. Default is 5000. -! -!timerCheck=5000 - -!--------------------------------------------------------------------- -! -! LOGGING AND DEBUGGING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Non-zero means include SQL statements in the export file. -! -exportSQL=0 -! -! Non-zero means trace output also directed to console. -! Defaults to 0. -! -!traceConsole=1 -traceConsole=0 -! -! Relative or absolute path where exporting and tracing goes. -! -traceFile=./tmp/trace.log -! -! Bitmap of various items that can be traced. See debug.html. -! Defaults to 0. -! -traceLevel=2 - - -!--------------------------------------------------------------------- -! -! TRANSACTION AND RECOVERY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! 0 means do not perform recovery on startup. -! 1 means perform automatic recovery -! 2 (default) means prompt the user using standard in -! -recoveryPolicy=2 -! -! Sets the level of transaction journalling. See trans.html. -! Defaults to 1. -! -! 0 - No journalling takes place. -! 1 - Normal journalling (default). -! 2 - Full journalling. -! -transLevel=1 -! -! When doing an import, defines the number of rows imported -! before the transaction is committed. Recommended value 8192. -! defaults to 100. -! -transImports=100 - -!--------------------------------------------------------------------- -! -! DATE, TIME AND CURRENCY PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Number of digits after decimal point in currency outputs. Defaults to 2. -! -currencyDecimal=2 -! -! Currency symbol used in currency outputs. Defaults to $. -! -currencySymbol=$ -! -! Default format for date columns. Defaults to "yyyy-mm-dd". -! -dateFormat=yyyy-mm-dd -! -! Default format for timestamp columns. Defaults to "yyyy-mm-dd hh:mm:ss.lll". -! -dateTimeFormat=yyyy-mm-dd hh:mm:ss.lll -! -! If set, then all two digit dates less than its value are interpreted -! as 21st century dates. -! -!milleniumBoundary=50 -! -! Set to 1 causes the date string "now" to store a full timestamp. -! Default is to store only the date for fields with now hour in the -! format string. -! -nowMeansTime=0 - -!--------------------------------------------------------------------- -! -! STRING HANDLING PROPERTIES -! -!--------------------------------------------------------------------- - -! -! If set to 1 then String hashes use the JDK Object.hashCode() function. -! By default, uses InstantDB's String hashing. -! -altStringHashing=0 -! -! Set to 1 to cause LIKE clauses to always perform case insensitive -! comparisons. -! -likeIgnoreCase=0 -! -! Same as SET LITERAL STRICT_ON. Prevents string literals being interpreted -! as column names or numbers. Default is 0. -! -strictLiterals=0 -! -! Set this value to 1 (one) if you would like PreparedStatement.setString() -! to ignore "\" (backslash) characters when proceesing string constants. -! When set, InstantDB will not attempt to interpret \ as the start of an -! escape sequence. Default is 0. -! -!prepareIgnoresEscapes=1 - -!--------------------------------------------------------------------- -! -! MISCELLANEOUS PROPERTIES -! -!--------------------------------------------------------------------- - -! -! Allows selected InstantDB keywords to be un-reserved. -! e.g. ignoreKeywords=url,quote would allow the keywords -! url and quote to be used as table or column names. -! -! This faciliy is provided for compatatbility reasons only. -! It's use is not recommended AND IS NOT SUPPORTED. -! -!ignoreKeywords -! -! Non-zero means database is opened in read only mode. -! -readOnly=0 diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/jonas-sampleappli.xml b/jonas_tests/examples/base/examples/src/mdb/sampleappli/jonas-sampleappli.xml deleted file mode 100644 index 052aec3f73..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/jonas-sampleappli.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Env - EnvHome - - jdbc/myDS - jdbc_1 - - - - - Stock - StockHome - - jdbc_1 - sampleappliStockTable - - stockid - ID - - - stockqty - QUANTITY - - - - findAllStocks - - - - - - - - StockHandler - - StockHandlerTopic - - - ejb/Stock - StockHome - - - jms/QueueConnectionFactory - QCF - - - jms/Orders - OrderQueue - - - - - - Order - - OrderQueue - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/sampleappli/sampleappli.xml b/jonas_tests/examples/base/examples/src/mdb/sampleappli/sampleappli.xml deleted file mode 100644 index 22940e08fc..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/sampleappli/sampleappli.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Deployment descriptor for the mdb sampleappli JOnAS example - sampleappli example - - - - Describe here the session bean Env - Env - Env - sampleappli.EnvHome - sampleappli.Env - sampleappli.EnvBean - Stateless - Container - - stocktablename - java.lang.String - sampleappliStockTable - - - orderfilename - java.lang.String - order.txt - - - jdbc/myDS - javax.sql.DataSource - Application - - - - - Describe here the entity bean Stock - Stock - Stock - sampleappli.StockHome - sampleappli.Stock - sampleappli.StockBean - Container - java.lang.String - false - 1.x - - stockid - - - stockqty - - stockid - - - - Describe here the message driven bean StockHandler - Message Driven Bean StockHandler - StockHandler - sampleappli.StockHandlerBean - Container - - - - destinationType - javax.jms.Topic - - - acknowledgeMode - Auto-acknowledge - - - - subscriptionDurability - NonDurable - - - - ejb/Stock - Entity - sampleappli.StockHome - sampleappli.Stock - - - jms/QueueConnectionFactory - javax.jms.QueueConnectionFactory - Container - - - jms/Orders - javax.jms.Queue - - - - - Describe here the message driven bean Order - Message Driven Bean Order - Order - sampleappli.OrderBean - Container - - - destinationType - javax.jms.Queue - - - acknowledgeMode - Auto-acknowledge - - - - orderfilename - java.lang.String - order.txt - - - - - - - - - Stock - * - - Required - - - - - Env - * - - NotSupported - - - - - StockHandler - * - - Required - - - - - Order - * - - NotSupported - - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbBean.java b/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbBean.java deleted file mode 100644 index 2f653e2905..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbBean.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbBean.java -// Message Driven bean -package samplemdb; - -import javax.ejb.MessageDrivenBean; -import javax.ejb.MessageDrivenContext; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.TextMessage; -import javax.jms.JMSException; - -/** - * Example of MessageDrivenBean on a Topic. The transactions are container - * managed (Required) - */ -public class MdbBean implements MessageDrivenBean, MessageListener { - - private transient MessageDrivenContext mdbContext; - - // ------------------------------------------------------------------ - // MessageDrivenBean implementation - // ------------------------------------------------------------------ - - /** - * Default constructor - */ - public MdbBean() { - } - - /** - * Set the associated context. The container call this method after the - * instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param MessageDrivenContext A MessageDrivenContext interface for the - * instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - - public void setMessageDrivenContext(MessageDrivenContext ctx) { - System.out.println("MdbBean setMessageDrivenContext"); - mdbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the - * message-driven object. This happens when a container decides to terminate - * the message-driven object. This method is called with no transaction - * context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - System.out.println("MdbBean ejbRemove"); - } - - /** - * The Message driven bean must define an ejbCreate methods with no args. - */ - public void ejbCreate() { - System.out.println("MdbBean ejbCreate"); - } - - /** - * onMessage method - */ - public void onMessage(Message message) { - System.out.println("MdbBean onMessage"); - try { - TextMessage mess = (TextMessage) message; - System.out.println("Message received: " + mess.getText()); - } catch (JMSException ex) { - System.err.println("Exception caught: " + ex); - } - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbClient.java b/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbClient.java deleted file mode 100644 index 1a859a48dc..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/MdbClient.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -// MdbClient.java -// mini Client for accessing bean Mdb -package samplemdb; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.*; -import javax.jms.*; - -/** - * - */ -public class MdbClient { - - static Context ictx = null; - - static TopicConnectionFactory tcf = null; - - static TopicPublisher tp = null; - - static Topic topic = null; - - // JNDI name of the Topic - static String topicName = "mdbTopic"; - - // JNDI name of the default connection factory - static String conFactName = "JTCF"; - - public static void main(String[] arg) { - // Get InitialContext - try { - ictx = new InitialContext(); - // lookup the TopicConnectionFactory through its JNDI name - tcf = (TopicConnectionFactory) ictx.lookup(conFactName); - System.out.println("JMS client: tcf = " + tcf.toString()); - // lookup the Topic through its JNDI name - topic = (Topic) ictx.lookup(topicName); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - TopicConnection tc = null; - TopicSession session = null; - try { - tc = tcf.createTopicConnection(); - System.out.println("JMS client: tc = " + tc.toString()); - session = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); - tp = session.createPublisher(topic); - } catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - - // publish 10 messages to the topic - int nbmess = 10; - try { - TextMessage message; - for (int i = 0; i < nbmess; i++) { - message = session.createTextMessage(); - message.setText("Message" + i); - tp.publish(message); - - } - session.close(); - tc.close(); - } catch (Exception e) { - e.printStackTrace(); - System.exit(2); - } - System.out.println("MDBsample is Ok"); - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/README b/jonas_tests/examples/base/examples/src/mdb/samplemdb/README deleted file mode 100644 index 563c3806bd..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/README +++ /dev/null @@ -1,43 +0,0 @@ -Copyright (C) Bull, 2001-2002 - - -Example description -------------------- -This unrealistic example is very sample for illustrating the use of -Message Driven Beans in JOnAS. - -The EJBClient (MdbClient) is a pure JMS Client that sends 10 messages -on a Topic named "mdbTopic". -In the JOnAS Server is deployed a Message Driven Bean Mdb that asynchrounsly -receives and prints the messages. - - -Compiling this example: ----------------------- -ant -find build.xml install - -Running this example: ---------------------- - -Toy can use the provided scripts (run.sh on Unix or run.bat on Windows) to execute the -whole example. - -or, steb by step: - jonas start - ant runclient - jonas stop - -You may want to execute this example with the MOM JMS that is running in a -separate JVM. For this, you must first : --> in case of the jms service - - a] Set the property jonas.service.jms.collocated to false - in jonas.properties then run the JmsServer first. - b] Run the standalone Jms Server : JmsServer & - --> in case of the rar joram - - set the config-property 'CollocatedServer' to false - in ra.xml of the joram's rar - - diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/application-client.xml b/jonas_tests/examples/base/examples/src/mdb/samplemdb/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/build.xml b/jonas_tests/examples/base/examples/src/mdb/samplemdb/build.xml deleted file mode 100644 index 55b9e41cea..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/build.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/jonas-samplemdb.xml b/jonas_tests/examples/base/examples/src/mdb/samplemdb/jonas-samplemdb.xml deleted file mode 100644 index 160d775d8b..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/jonas-samplemdb.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - Mdb - - mdbTopic - - 20 - 10 - - - - diff --git a/jonas_tests/examples/base/examples/src/mdb/samplemdb/samplemdb.xml b/jonas_tests/examples/base/examples/src/mdb/samplemdb/samplemdb.xml deleted file mode 100644 index afed6233eb..0000000000 --- a/jonas_tests/examples/base/examples/src/mdb/samplemdb/samplemdb.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Deployment descriptor for the samplemdb JOnAS example - samplemdb example - - - Describe here the message driven bean Mdb - Message Driven Bean Mdb - Mdb - samplemdb.MdbBean - javax.jms.MessageListener - Container - javax.jms.Topic - - - destinationType - javax.jms.Topic - - - acknowledgeMode - Auto-acknowledge - - - - subscriptionDurability - NonDurable - - - - - - - - - - Mdb - * - - Required - - - - diff --git a/jonas_tests/examples/base/examples/src/sb/ClientOp.java b/jonas_tests/examples/base/examples/src/sb/ClientOp.java deleted file mode 100644 index 2a0995b11a..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/ClientOp.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package sb; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.transaction.UserTransaction; - -/** - * Sample for Session Bean. Usage: java sb.ClientOp - * Heavy client doing some operations on a bean - * @author jonas team - */ -public class ClientOp { - /** - * First amount to buy - */ - private static final int FIRST_BUY_AMOUNT = 10; - - /** - * Second amount to buy - */ - private static final int SECOND_BUY_AMOUNT = 20; - - /** - * Third amount to buy (will be rollback) - */ - private static final int THIRD_BUY_AMOUNT = 50; - - /** - * Constructor. Hide constructor as it is an utility class - */ - private ClientOp() { - - } - - /** - * Main method - * @param args arguments of the client - */ - public static void main(String[] args) { - - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // We want to start transactions from client: get UserTransaction - UserTransaction utx = null; - try { - - // Comment the following lines if you want to use a David Client: - utx = (UserTransaction) initialContext.lookup("javax.transaction.UserTransaction"); - - // Uncomment the following lines if you want to use a David Client: - /* - * Properties prop = new Properties(); - * prop.put("java.naming.factory.initial", - * "com.sun.jndi.rmi.registry.RegistryContextFactory"); - * prop.put("java.naming.provider.url", "rmi://localhost:1099"); // - * update the port if necessary InitialContext ictx = new - * InitialContext(prop); utx = (UserTransaction) - * ictx.lookup("javax.transaction.UserTransaction"); - */ - - } catch (Exception e) { - System.err.println("Cannot lookup UserTransaction: " + e); - System.exit(2); - } - - // Connecting to OpHome thru JNDI - OpHome home = null; - try { - home = (OpHome) PortableRemoteObject.narrow(initialContext.lookup("OpHome"), OpHome.class); - } catch (Exception e) { - System.err.println("Cannot lookup OpHome: " + e); - System.exit(2); - } - - // OpBean creation - Op t1 = null; - try { - System.out.println("Create a bean"); - t1 = home.create("User1"); - } catch (Exception e) { - System.err.println("Cannot create OpBean: " + e); - System.exit(2); - } - - // First transaction (committed) - try { - System.out.println("Start a first transaction"); - utx.begin(); - System.out.println("First request on the new bean"); - t1.buy(FIRST_BUY_AMOUNT); - System.out.println("Second request on the bean"); - t1.buy(SECOND_BUY_AMOUNT); - System.out.println("Commit the transaction"); - utx.commit(); - } catch (Exception e) { - System.err.println("exception during 1st Tx: " + e); - System.exit(2); - } - // Start another transaction (rolled back) - try { - System.out.println("Start a second transaction"); - utx.begin(); - t1.buy(THIRD_BUY_AMOUNT); - System.out.println("Rollback the transaction"); - utx.rollback(); - } catch (Exception e) { - System.err.println("exception during 2nd Tx: " + e); - System.exit(2); - } - - // Get the total bought, outside the transaction - int val = 0; - try { - System.out.println("Request outside any transaction"); - val = t1.read(); - } catch (Exception e) { - System.err.println("Cannot read value on t1 : " + e); - System.exit(2); - } - if (val != FIRST_BUY_AMOUNT + SECOND_BUY_AMOUNT) { - System.err.println("Bad value read: " + val); - System.exit(2); - } - - // Remove Session bean - try { - t1.remove(); - } catch (Exception e) { - System.out.println("Exception on buy: " + e); - System.exit(2); - } - System.out.println("ClientOp OK. Exiting."); - } -} - diff --git a/jonas_tests/examples/base/examples/src/sb/Op.java b/jonas_tests/examples/base/examples/src/sb/Op.java deleted file mode 100644 index a9068f6199..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/Op.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package sb; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - -/** - * Remote interface for the bean Op - * @author JOnAS team - */ -public interface Op extends EJBObject { - - /** - * Business method implementation. - * @param shares nb of shares to be bought - * @throws RemoteException if RMI failed. - */ - void buy (int shares) throws RemoteException; - - /** - * Business method implementation. - * @return the nb of shares bought - * @throws RemoteException if RMI failed. - */ - int read () throws RemoteException; - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/sb/OpBean.java b/jonas_tests/examples/base/examples/src/sb/OpBean.java deleted file mode 100644 index c786974d6c..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/OpBean.java +++ /dev/null @@ -1,259 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package sb; - -import javax.ejb.EJBException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.ejb.SessionSynchronization; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * This is an example of Session Bean, statefull, and synchronized. - * @author JOnAS team - */ -public class OpBean implements SessionBean, SessionSynchronization { - - /** - * Actual state of the bean - */ - private int total = 0; - - /** - * value inside Tx, not yet committed. - */ - private int newtotal = 0; - - /** - * User client - */ - private String clientUser = null; - - - /* ========================= ejbCreate methods ============================ */ - - /** - * There must be one ejbCreate() method per create() method on the Home - * interface, and with the same signature. - * @param user the user name - */ - public void ejbCreate(String user) { - - total = 0; - newtotal = total; // in case we are outside transactions - clientUser = user; - } - - /* - * ====================== javax.ejb.SessionBean implementation - * ================= - */ - - /** - * The activate method is called when the instance is activated from its - * "passive" state. The instance should acquire any resource that it has - * released earlier in the ejbPassivate() method. This method is called with - * no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbActivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * The passivate method is called before the instance enters the "passive" - * state. The instance should release any resources that it can re-acquire - * later in the ejbActivate() method. After the passivate method completes, - * the instance must be in a state that allows the container to use the Java - * Serialization protocol to externalize and store away the instance's - * state. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbPassivate() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * A container invokes this method before it ends the life of the session - * object. This happens as a result of a client's invoking a remove - * operation, or when a container decides to terminate the session object - * after a timeout. This method is called with no transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for enterprise beans - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void ejbRemove() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - } - - /** - * Set the associated session context. The container calls this method after - * the instance creation. The enterprise Bean instance should store the - * reference to the context object in an instance variable. This method is - * called with no transaction context. - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException This exception is defined in the method - * signature to provide backward compatibility for applications - * written for the EJB 1.0 specification. Enterprise beans written - * for the EJB 1.1 specification should throw the - * javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB2.0 and higher specifications must throw - * the javax.ejb.EJBException instead of this exception. - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, java.rmi.RemoteException { - - } - - /* - * ============== javax.ejb.SessionSynchronization implementation - * ============= - */ - - /** - * The afterBegin method notifies a session Bean instance that a new - * transaction has started, and that the subsequent business methods on the - * instance will be invoked in the context of the transaction. The instance - * can use this method, for example, to read data from a database and cache - * the data in the instance fields. This method executes in the proper - * transaction context. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterBegin() throws EJBException, java.rmi.RemoteException { - newtotal = total; - } - - /** - * The beforeCompletion method notifies a session Bean instance that a - * transaction is about to be committed. The instance can use this method, - * for example, to write any cached data to a database. This method executes - * in the proper transaction context. Note: The instance may still - * cause the container to rollback the transaction by invoking the - * setRollbackOnly() method on the instance context, or by throwing an - * exception. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void beforeCompletion() throws EJBException, java.rmi.RemoteException { - // Nothing to do for this simple example - - // We can access the bean environment everywhere in the bean, - // for example here! - try { - InitialContext ictx = new InitialContext(); - String value = (String) ictx.lookup("java:comp/env/prop1"); - // value should be the one defined in ejb-jar.xml - } catch (NamingException e) { - throw new EJBException(e); - } - } - - /** - * The afterCompletion method notifies a session Bean instance that a - * transaction commit protocol has completed, and tells the instance whether - * the transaction has been committed or rolled back. This method executes - * with no transaction context. - * @param committed - True if the transaction has been committed, false if - * is has been rolled back. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - * @throws java.rmi.RemoteException - This exception is defined in the - * method signature to provide backward compatibility for enterprise - * beans written for the EJB 1.0 specification. Enterprise beans - * written for the EJB 1.1 and higher specifications should throw - * the javax.ejb.EJBException instead of this exception. Enterprise - * beans written for the EJB 2.0 and higher specifications must not - * throw the java.rmi.RemoteException. - */ - public void afterCompletion(boolean committed) throws EJBException, java.rmi.RemoteException { - if (committed) { - total = newtotal; - } else { - newtotal = total; - } - } - - /* ========================= Op implementation ============================ */ - - /** - * Business method implementation. - * @param s nb of shares to be bought - */ - public void buy(int s) { - newtotal = newtotal + s; - return; - } - - /** - * Business method implementation. - * @return the nb of shares bought - */ - public int read() { - return newtotal; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/sb/OpHome.java b/jonas_tests/examples/base/examples/src/sb/OpHome.java deleted file mode 100644 index b3cf09571c..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/OpHome.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): ____________________________________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package sb; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean Op - * @author JOnAS team - */ -public interface OpHome extends EJBHome { - - /** - * Create an instance of the Op bean. - * @param user the user name. - * @return the Remote interface of the bean Op. - * @throws CreateException if the creation failed. - * @throws RemoteException if the RMI call failed. - */ - Op create(String user) throws CreateException, RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/src/sb/README b/jonas_tests/examples/base/examples/src/sb/README deleted file mode 100644 index a02b46bfda..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/README +++ /dev/null @@ -1,36 +0,0 @@ -Copyright (C) BULL S.A. 1998-2002. - - -Compiling this example: ------------------------ -This example is compiled with the others by "ant install" in $JONAS_ROOT/examples. - -Running this example: ---------------------- -1) Run the JOnAS EJB Server to make beans available to clients: - - jonas start - -2) Load the sb.jar if you have not added it in the ejb service descriptors list : - -on UNIX: - jonas admin -a $JONAS_BASE/ejbjars/sb.jar - -On Windows: - jonas admin -a $JONAS_BASE/ejbjars/sb.jar - -You should see something like this when the bean is loaded : - - Op available - -3) Run the client program: - -on UNIX: - jclient -cp $JONAS_BASE/ejbjars/sb.jar sb.ClientOp - -On Windows: - jclient -cp "%JONAS_BASE%\ejbjars\sb.jar sb.ClientOp - - -4) Stop the jonas server - jonas stop diff --git a/jonas_tests/examples/base/examples/src/sb/application-client.xml b/jonas_tests/examples/base/examples/src/sb/application-client.xml deleted file mode 100644 index 13436c357a..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/application-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Client of the sb sample - - diff --git a/jonas_tests/examples/base/examples/src/sb/build.xml b/jonas_tests/examples/base/examples/src/sb/build.xml deleted file mode 100644 index d45e5981ae..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/build.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/src/sb/jonas-sb.xml b/jonas_tests/examples/base/examples/src/sb/jonas-sb.xml deleted file mode 100644 index 4fa36f99ab..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/jonas-sb.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - Op - OpHome - - - diff --git a/jonas_tests/examples/base/examples/src/sb/sb.xml b/jonas_tests/examples/base/examples/src/sb/sb.xml deleted file mode 100644 index 968f28f488..0000000000 --- a/jonas_tests/examples/base/examples/src/sb/sb.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - Deployment descriptor for the sb JOnAS example - sb example - - - Op - sb.OpHome - sb.Op - sb.OpBean - Stateful - Container - - prop1 - java.lang.String - prop1 value - - - - - - - Op - * - - Required - - - diff --git a/jonas_tests/examples/base/examples/src/src_common.xml b/jonas_tests/examples/base/examples/src/src_common.xml deleted file mode 100644 index b753eb5269..0000000000 --- a/jonas_tests/examples/base/examples/src/src_common.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/statelessbean/build.xml b/jonas_tests/examples/base/examples/statelessbean/build.xml deleted file mode 100644 index 429177e4ab..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/build.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/statelessbean/etc/web.xml b/jonas_tests/examples/base/examples/statelessbean/etc/web.xml deleted file mode 100644 index ed9b4b352c..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/etc/web.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - StatelessClient - - org.ow2.easybeans.examples.statelessbean.ClientServletStateless - - - - - StatelessClient - / - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientServletStateless.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientServletStateless.java deleted file mode 100644 index 798d50a921..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientServletStateless.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -import java.io.IOException; -import java.io.PrintWriter; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Servlet's client for the stateless session bean. - * @author Florent Benoit - */ -public class ClientServletStateless extends HttpServlet { - - /** - * Serializable class uid. - */ - private static final long serialVersionUID = 6893863749912962928L; - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request the - * client has made of the servlet - * @param response an HttpServletResponse object that contains the response - * the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - @Override - public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException { - - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - out.println("Client of stateless session bean"); - out.println(""); - out.println(""); - - // no operation ? displays button for hello world and calculator - String operation = request.getParameter("operation"); - if (operation != null) { - if (operation.equals("helloWorld")) { - displayHelloWorld(out); - } else if (operation.equals("add")) { - // get two parameters - String param1 = request.getParameter("p1"); - String param2 = request.getParameter("p2"); - if (param1 != null && param2 != null) { - int v1 = Integer.parseInt(param1); - int v2 = Integer.parseInt(param2); - displayResult(out, v1, v2); - } else { - out.println("Missing values for operation add"); - } - } - } - out.println("
    "); - displayDefault(out); - - - out.println(""); - out.println(""); - out.close(); - } - - /** - * Call HelloWorld method. - * @param out the given writer - */ - private void displayHelloWorld(final PrintWriter out) { - out.println("Calling helloWorld() method"); - out.println("
    "); - try { - getBean().helloWorld(); - out.println("helloWorld() method called OK."); - } catch (Exception e) { - displayException(out, "Cannot call helloworld on the bean", e); - } - } - - /** - * By default, call helloWorld method. - * @param out the given writer - */ - private void displayDefault(final PrintWriter out) { - out.println("
    "); - out.println("sum of a + b :"); - out.println("

    "); - out.println("

    "); - out.println("

    "); - out.println("

    "); - out.println("
    "); - out.println("
    "); - out.println("

    "); - out.println("

    "); - out.println("
    "); - } - - /** - * Prints he result of the sum of val1 and val2. - * @param out the given writer - * @param val1 first arg for add method - * @param val2 second arg for add method - */ - private void displayResult(final PrintWriter out, final int val1, final int val2) { - out.println("
    Sum of '" + val1 + "' and '" + val2 + "' = "); - try { - int sum = getBean().add(val1, val2); - out.println(sum); - } catch (Exception e) { - displayException(out, "
    Cannot call add() method on the bean", e); - } - } - - /** - * If there is an exception, print the exception. - * @param out the given writer - * @param errMsg the error message - * @param e the content of the exception - */ - private void displayException(final PrintWriter out, final String errMsg, final Exception e) { - out.println("

    Exception : " + errMsg); - out.println("

    ");
    -        e.printStackTrace(out);
    -        out.println("

    "); - } - - /** - * Lookup the stateless bean and gets a reference on it. - * @return the stateless bean business interface. - * @throws Exception if the bean cannot be retrieved. - */ - private StatelessRemote getBean() throws Exception { - Context initialContext = new InitialContext(); - Object o = initialContext.lookup("org.ow2.easybeans.examples.statelessbean.StatelessBean" + "_" - + StatelessRemote.class.getName() + "@Remote"); - - if (o instanceof StatelessRemote) { - StatelessRemote statelessBean = (StatelessRemote) o; - return statelessBean; - } - throw new Exception("Cannot cast object into StatelessRemote"); - - } - -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientStateless.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientStateless.java deleted file mode 100644 index 63ebf198b5..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/ClientStateless.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -import java.util.Hashtable; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -/** - * Simple client of the stateless. - * @author Florent Benoit - */ -public final class ClientStateless { - - /** - * Default InitialContextFactory to use. - */ - private static final String DEFAULT_INITIAL_CONTEXT_FACTORY = "org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory"; - - /** - * Utility class. - */ - private ClientStateless() { - - } - - /** - * Main method. - * @param args the arguments (not required) - * @throws Exception if exception is found. - */ - public static void main(final String[] args) throws Exception { - - Context initialContext = getInitialContext(); - - // Thread.currentThread().sleep(5000); - - StatelessRemote statelessBean = (StatelessRemote) initialContext - .lookup("org.ow2.easybeans.examples.statelessbean.StatelessBean" - + "_" + StatelessRemote.class.getName() + "@Remote"); - - System.out.println("Calling the first method..."); - System.out.println("Calling helloWorld method..."); - statelessBean.helloWorld(); - - System.out.println("-----------------------------"); - System.out.println("-----------------------------"); - System.out.println("Calling the secode method..."); - System.out.println("Add 1 + 2..."); - int resultAdd = statelessBean.add(1, 2); - System.out.println("Sum = '" + resultAdd + "'."); - - System.out.println("-----------------------------"); - System.out.println("-----------------------------"); - System.out.println("Calling the third method..."); - System.out.println("Div 6 / 3 (expect exception)..."); - int resultDiv = statelessBean.div(6, 3); - System.out.println("Div = '" + resultDiv + "'."); - } - - /** - * @return Returns the InitialContext. - * @throws NamingException If the Context cannot be created. - */ - private static Context getInitialContext() throws NamingException { - - // if user don't use jclient/client container - // we can specify the InitialContextFactory to use - // But this is *not recommended*. - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, getInitialContextFactory()); - - // Usually a simple new InitialContext() without any parameters is sufficent. - // return new InitialContext(); - - return new InitialContext(env); - } - - /** - * Returns a configurable InitialContextFactory classname.
    - * Can be configured with the easybeans.client.initial-context-factory System property. - * @return Returns a configurable InitialContextFactory classname. - */ - private static String getInitialContextFactory() { - String prop = System.getProperty("easybeans.client.initial-context-factory"); - // If not found, use the default - if (prop == null) { - prop = DEFAULT_INITIAL_CONTEXT_FACTORY; - } - return prop; - } - - -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessBean.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessBean.java deleted file mode 100644 index 7103a4deba..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessBean.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -import javax.ejb.Local; -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.interceptor.AroundInvoke; -import javax.interceptor.ExcludeClassInterceptors; -import javax.interceptor.Interceptors; -import javax.interceptor.InvocationContext; - - -import org.ow2.cmi.annotation.Cluster; -import org.ow2.cmi.annotation.Policy; -import org.ow2.cmi.lb.policy.RoundRobin; - -/** - * Simple stateless bean. - * @author Florent Benoit - */ -@Stateless -@Local(StatelessLocal.class) -@Remote(StatelessRemote.class) -@Interceptors({StatelessInterceptor.class}) -@Cluster(name="test_cluster") -@Policy(RoundRobin.class) -public class StatelessBean implements StatelessRemote { - - /** - * Hello world. - */ - public void helloWorld() { - System.out.println("Hello world !"); - } - - /** - * Compute a + b. - * @param a first int - * @param b second int - * @return a + b - */ - @Interceptors({StatelessOnlyAddMethodInterceptor.class}) - public int add(final int a, final int b) { - return a + b; - } - - /** - * Divide a by b. - * @param a first int - * @param b second int - * @return a / b - */ - public int div(final int a, final int b) { - if (b == 0) { - throw new IllegalArgumentException("cannot divide by 0"); - } - return a / b; - } - - /** - * Methods without interceptors. - */ - @ExcludeClassInterceptors - public void notInterceptedMethod() { - - } - - - /** - * Trace method's time. - * @param invocationContext contains attributes of invocation - * @return method's invocation result - * @throws Exception if invocation fails - */ - @AroundInvoke - public Object trace(final InvocationContext invocationContext) throws Exception { - System.out.println("TraceInterceptor : method '" + invocationContext.getMethod().getName() - + "'."); - long startPeriod = System.nanoTime(); - try { - return invocationContext.proceed(); - } finally { - long elapsed = System.nanoTime() - startPeriod; - System.out.println("TraceInterceptor : Elapsed time = " + elapsed + " ns"); - } - } -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessInterceptor.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessInterceptor.java deleted file mode 100644 index 72e55cc7f5..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessInterceptor.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -import java.lang.reflect.Method; - -import javax.annotation.PostConstruct; -import javax.interceptor.AroundInvoke; -import javax.interceptor.InvocationContext; - -/** - * Simple interceptor class. Mix of business interceptors and lifecycle interceptors. - * @author Florent Benoit - */ -public class StatelessInterceptor { - - /** - * Another class interceptor. - * @param invocationContext contains attributes of invocation - * @return method's invocation result - * @throws Exception if invocation fails - */ - @SuppressWarnings("finally") - @AroundInvoke - public Object toto(final InvocationContext invocationContext) throws Exception { - System.out.println("Another class interceptor"); - Method m = invocationContext.getMethod(); - // Change the returned value for add method - Object returnedValue = null; - try { - returnedValue = invocationContext.proceed(); - } finally { - if (m.getName().equals("add")) { - // Uncomment the following line to change the returned value - //return Integer.valueOf(-1); - return returnedValue; - } - return returnedValue; - } - } - - /** - * Callback in an external class. - * @param invocationContext the invocationcontext. - */ - @PostConstruct - public void myPostConst(final InvocationContext invocationContext) { - System.out.println("postConstruct in class Statelesslistener of bean " + invocationContext.getTarget()); - try { - invocationContext.proceed(); - } catch (Exception e) { - throw new RuntimeException("Cannot proceed invocationContext", e); - } - } - -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessLocal.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessLocal.java deleted file mode 100644 index 542b89a1fe..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessLocal.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -/** - * Simple interface for a stateless bean. - * It acts as a local interface. - * @author Florent Benoit - */ -public interface StatelessLocal { - - /** - * Hello world. - */ - void helloWorld(); - - /** - * Compute a + b. - * @param a first int - * @param b second int - * @return a + b - */ - int add(final int a, final int b); - - /** - * Divide a by b. - * @param a first int - * @param b second int - * @return a / b - */ - int div(final int a, final int b); - - - /** - * Methods without interceptors. - */ - void notInterceptedMethod(); -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessOnlyAddMethodInterceptor.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessOnlyAddMethodInterceptor.java deleted file mode 100644 index c6948710cf..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessOnlyAddMethodInterceptor.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - -import java.lang.reflect.Method; - -import javax.interceptor.AroundInvoke; -import javax.interceptor.InvocationContext; - - -/** - * Simple interceptor class which should be launched only on add method. - * @author Florent Benoit - */ -public class StatelessOnlyAddMethodInterceptor { - - /** - * Another class interceptor. - * @param invocationContext contains attributes of invocation - * @return method's invocation result - * @throws Exception if invocation fails - */ - @AroundInvoke - public Object onlyAdd(final InvocationContext invocationContext) throws Exception { - System.out.println("Add interceptor"); - Method m = invocationContext.getMethod(); - // Checks the method name - if (m.getName().equals("add")) { - System.out.println("Applied on the correct method"); - } else { - throw new Exception("Error, should be only on add method while it is applied on '" + m.getName() + "' method."); - } - return invocationContext.proceed(); - } - -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessRemote.java b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessRemote.java deleted file mode 100644 index 34be426ffb..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/StatelessRemote.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * EasyBeans - * Copyright (C) 2006 Bull S.A.S. - * Contact: easybeans@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.easybeans.examples.statelessbean; - - -/** - * Simple interface for a stateless bean. - * It acts as a remote interface. - * @author Florent Benoit - */ -public interface StatelessRemote extends StatelessLocal { - -} diff --git a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/package.html b/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/package.html deleted file mode 100644 index 42fce5fae5..0000000000 --- a/jonas_tests/examples/base/examples/statelessbean/src/java/org/ow2/easybeans/examples/statelessbean/package.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - EJB 3.0 - - -

    Example of EJB 3.0 container

    - - diff --git a/jonas_tests/examples/base/examples/webservices/README b/jonas_tests/examples/base/examples/webservices/README deleted file mode 100644 index 5233e72593..0000000000 --- a/jonas_tests/examples/base/examples/webservices/README +++ /dev/null @@ -1,64 +0,0 @@ - -JOnAS WebServices Sample -------------------------- - -This example is composed of 4 sub examples : - - a Standalone Web Application exposing a JaxRpc Endpoint as WebService and a simple client (wswarsample.war) - - a Standalone WebApplication which is client of a WebServices (Google) (wsaccess.war) - - an Application with 1 EJB : a Stateless Session bean exposed as web service (ws.ear). This example also shows - how to add security to a Stateless Session bean using WsGen. The security parameters are specified in jonas-webservices.xml - and the username and password required is jonas:jonas - - an Application composed by a Session Bean acting as web service client accessed through a JSP (wsclient.ear). - -What it show ? ---------------- - -In this sample, we will show the usage of a new tag in Web and Ejb Deployment Desc. - - service-ref tag is used to declare a dependancy of the component on a WebServices. - In other word, the component is client of an external WebService. - This tag can be used in the web.xml Deployment desc and in ejb-jar deployment desc. - -> This tag MAY be used jointly with jonas-service-ref tag in JOnAS specific Deployment Descriptor (jonas-web.xml and - jonas-ejb-jar.xml) : It's optionnal. - -For declaring a WebService endpoint, a new Deployment Descriptor has been introduced : webservices.xml. It can be used in an ejbjar or webapp file. - -You can notice that the beans/wsclient/build.xml do not use anymore the genic and wsgen tasks. They are automatically -applied on the server side. -Just make sure that the property jonas.service.ws.auto-wsgen.engaged (in jonas.properties) is set to 'true' (or commented). -Otherwise, needed ws artifacts will not be generated. - -Report to the documentation for more information. - -How to : ---------- - -1. Install the example - ant install - -2. start JOnAS - jonas start - -3. install the archives in JOnAS - jonas admin -a wsaccess.war - jonas admin -a wswarsample.war - jonas admin -a ws.ear - jonas admin -a wsclient.ear - -4. View the results in your browser - http://:/wsaccess/ - http://:/wswarsample/ - http://:/axis-ws/ssbEndpoint/WSBeanEndpointLocal?JWSDL (username:jonas password: jonas) - http://:/wsclient/ - - -Notes : --------- -If you have a proxy to access the internet, you have to add some properties in your JAVA_OPTS environment variable before you launch JOnAS. -export JAVA_OPTS=$JAVA_OPTS"-Dhttp.proxyHost= \ - -Dhttp.proxyPort= \ - -Dhttp.proxyUser= \ - -Dhttp.proxyPassword= \ - -Dhttp.nonProxyHosts= \ - -Dhttp.proxySet=true" - -You should see some Exceptions when using WsGen (Class not found with digester), don't be afraid, this is normal. \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/build.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/build.xml deleted file mode 100644 index 047962b7c6..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/build.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/jonas-webservices.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/jonas-webservices.xml deleted file mode 100644 index a5d1d4dbc2..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/jonas-webservices.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - gen-axis-webapp.war - axis-ws - - - - My Web Services - - - ssbEndpoint - - /services1/webservice - - - - - - - - Stateless Session Bean Endpoint - - /services1/webservice - - - jonas-admin - - - - - - BASIC - - WS Example Authentication Area - - - - - - jonas-admin - - - - memrlm_1 - - - - WS Example Authentication Area - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/ssbEndpointMapping.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/ssbEndpointMapping.xml deleted file mode 100644 index 9414385f85..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/ssbEndpointMapping.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - org.objectweb.wssample.beans.ws - http://ws.beans.wssample.objectweb.org - - - org.objectweb.wssample.beans.ws.WSBeanEndpoint - ns:WSBeanEndpointLocal - ns:WSBeanEndpointLocalSoapBinding - - getCotes - getCotes - - int - ns:getCotesResponse - getCotesReturn - - - - sayHello - sayHello - - 0 - java.lang.String - - ns:sayHelloRequest - in0 - IN - - - - java.lang.String - ns:sayHelloResponse - sayHelloReturn - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/webservices.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/webservices.xml deleted file mode 100644 index d7a709de7c..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/webservices.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - My Web Services - - My Web Services - META-INF/wsdl/ssbEndpoint.wsdl - META-INF/ssbEndpointMapping.xml - - ssbEndpoint - beanswssample:WSBeanEndpointLocal - org.objectweb.wssample.beans.ws.WSBeanEndpoint - - WSBeanEndpointSLL - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/wsdl/ssbEndpoint.wsdl b/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/wsdl/ssbEndpoint.wsdl deleted file mode 100644 index 6e9f48e67c..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/etc/xml/wsdl/ssbEndpoint.wsdl +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpoint.java b/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpoint.java deleted file mode 100644 index 5de3cd68ea..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpoint.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.beans.ws; - -import java.rmi.Remote; -import java.rmi.RemoteException; - - -/** - * ServiceEndpoint interface - * - * @author Guillaume Sauthier - */ -public interface WSBeanEndpoint extends Remote { - - /** - * @param name name - * @return Returns "Hello " + name - * @throws RemoteException RemoteException - */ - String sayHello(String name) throws RemoteException; - - /** - * @return Returns integer - * @throws RemoteException RemoteException - */ - int getCotes() throws RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpointSLL.java b/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpointSLL.java deleted file mode 100644 index e8f525f78b..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/WSBeanEndpointSLL.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.beans.ws; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * - */ -public class WSBeanEndpointSLL implements SessionBean { - - /** - * logger - */ - private static Logger logger = null; - - /** - * EJB SessionContext - */ - private SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - /** - * Set the SessionContext - * @param ctx SessionContext - */ - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - /** - * ejbRemove - */ - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbRemove - * @throws CreateException CreateException - */ - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbPassivate - */ - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbActivate - */ - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // WSBeanEndpoint implementation - // ------------------------------------------------------------------ - - /** - * @param name name - * @return Returns "Hello " + name - */ - public String sayHello(String name) { - logger.log(BasicLevel.INFO, "sayHello(" + name + ") invokation."); - return "Hello " + name; - } - - /** - * @return Returns integer - */ - public int getCotes() { - logger.log(BasicLevel.INFO, "getCotes invokation"); - return 12; - } -} - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/jonas-wsearsample.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/jonas-wsearsample.xml deleted file mode 100644 index d2cd8045ea..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/jonas-wsearsample.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - WSBeanEndpointSLL - ejbs/WSBeanEndpointHome - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/wsearsample.xml b/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/wsearsample.xml deleted file mode 100644 index 2da15f2e97..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/ws/src/org/objectweb/wssample/beans/ws/wsearsample.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - Describe here the content of this file - wsearsample - - - - Describe here the session bean WSBeanEndpoint - wsearsample/WSBeanEndpointSLL - WSBeanEndpointSLL - - org.objectweb.wssample.beans.ws.WSBeanEndpoint - org.objectweb.wssample.beans.ws.WSBeanEndpointSLL - Stateless - Container - - - - - - - jonas-admin - - - jonas-admin - - WSBeanEndpointSLL - * - - - - - WSBeanEndpointSLL - * - - Supports - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/build.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/build.xml deleted file mode 100644 index 44b974a028..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/build.xml +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jetty.gif b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jetty.gif deleted file mode 100644 index 01f44a87f6801b200f142513d0d02b12cea0fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 A+yDRo diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jonas.ico b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/jonas.ico deleted file mode 100644 index 108c5c21ede334f3b80d9a373f618c52efee7877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmYk0+e;H*7>A!No!^}E)J)5?xjf86PM6DLt#p~0TBfr!4;@qzEwhW!jFM`I;t@1F zR6^mYCV}Rmf@%a&EP}f0rvIgH+l?>$emu|1d-0Z5JCyimTLDH%kuqU23WR^}ksYlG z#}HrGZO>rhi+R49tp`y%je4v?Foq^Am|`*Rp~=y^G4V4ydH zr@gWK*s5XvQ6610%P>sVxBa;$t3kYVf#k@OAATO*VNm ztYzws{CiT(#*B@n*>>!cpBHpBE)vIIzc_U3l?Id8^NB zGZMs+Cga(?^~Dvz(qqzOsZ)klOV diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_jonas_logo.gif b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_jonas_logo.gif deleted file mode 100644 index 1b56943a721f82a8cb81776030567772265433f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_logo.png b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/images/ow_logo.png deleted file mode 100644 index 60617270bf0c0d21c9f40e4f7c85ef5bfdbda548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11700 zcmch71y@_&(=`+*QlPk7aEe3m;%>p+0;RY^vEXjSDGtR;aW4?up+Ipc?(Xi-{r$hf zyVko_lAGMzdvY>oX3w5ICsGwGi-AUh1_uX+AulJT4jd1G=Ul$@Q$~>%2|S}NgfYzOhKc`OWB{+!8t?lcD6bzGOT=f@(BNAme^4$M;6Sl2QRry0D-?4?VInAQr5-hc-LG+Y#5H%YiT<>JJE#f?N^hE;1XQ_L1#m2Yilj7ncI`cx3U>+o!Of z*VLYKPSVoSU%!48yHDiL9t%c(@3)-;J$8pq&rFFIcW3U$usoIgo%yxHXu37L)Ci66 zz$g;{#^d%_$v2qR=FIz9+Xb_|W4>Kt=1eCW5C-OSrxK|QOy_uS&&uAOm5C`*S(%XB zz4iHe&LsT!)c^Gnjqt;9SXGOq$w^KQ_lU!b`(XF^OTgcmC<$`F7~j_@y8R~)?Lp&- z=s(q~rP_f}uctMHJWi62ESeVIlko@K0!HA?Ja)N7wpsC3bJ^%ch50Hj5N`Okq@6t+ zR#ATP#A-Z+U4oI2GNT;2qIxR}-{dGd%8RPyL06qbS1h6(^a5H5a3!GFqobpRKH|wP z_tYUDn3;hEb3a}ACh9DhZPL8EqC3rvn1ZO^e02aC1+BW$7bQ^dTe_!b6o(&2j_cPb z5=kvk3x^vv5DVhb92^|zGabf7Utt*%q$DK#u|59n7sJd6T43ZP_a2>d-dEGs?i`pc zKO{+XOHJP`NKFpO1m=nDc)HSN;9GZ8T9VVf$li9Pj>t0w0)3-i&BGI62*xLFI*nLk z#1QCWEDUlkL6ERoZuxpJ^1R}^+PMfqa1sP1{O(4BCY~JCvipW-r?fv5%uhxQen`iX z=%pUyU9xXlE^arRg+*=hmm9S%SJvjn#8B^UZT0dH5%#!#b$1sei`7k`M>aHl%D*-A z9?|r4?G&yNQnWNrM{~4riK=mDSb4CojzHWOtRpQSPFXkVDP(7>WQpmwP$av8bTAW{ zUJZpp6%`Z}XADeMcnn{sO6Y`VI!~5cQ+kR}@}i>9o~lC)K`J=cJz^n3=8pM=|2m#V zPZ4f3-ZI;d=Lqvhge}y5d3V1H+yR)4_Ay?~^rhz}z#}7OpKC$d%8!;!S4nw8kl6~Q zC3|}(i?xOB`G(x)&CHg(aEXcYVy4_HDM-rFylDAME5#^|QC{Z8&E36NzZR3?6OrmU z@_UN<1v|hoI0fc%grSXg3pmx1q~5r51peSJj`_3H%C#N&&I+OgK*u6-J*N00 zPkbfE!n2};JK#FcB6jhWPMx|gatvu682%5ZeIQw$GhxfHoYx!@?DxX2!p-hD~Iw`&A(h8Ee{Osf(qFaSkPW(s{HV)D;iyQ!IRqL!rmWi zFNTa$AiHLxWh5jd)kW`TGv#hB=It6^Z^K{F=64{YWk2Gc0SK#!QUsQCp98M2cu06? z!v5l9J05&C=$I3LAxJX7*|xJ==*HZoXZ-djcuA zY~({GMjjcA65kJ~Jmb75Ki`t(#Jzz1zSJ$?nb`w50^QNW%}q+1ZmBHahb=@^OACJm zb3Ri}|h?cwtwb{xruOjcTIYBN6(XsnOUBcm)t zjuI^AW1Vv>KlnZkhPt(X{sH-0c52gcs}R0h(4hkSuFo7(CPO%(IRiL~QDFbrCcRF0Uy^jsHy~7^1fBH5Q;mdD(I$s6WU=It=ER^2s*Le-Z*9a{Ot|R++SYBNiErd( zv`<*B2h9pA6>SVAb%>L7|Iu~f5t}iL=-al2E6aW7S*7X4Sm+~Qh1&2Sx6obbUh@aQ zMdtGj#BdAE5XFF}8A2ZW?2SyS_s3u(ER0p&}G!NQ0e&Pm1n8)Gt%@2-4_ugmCm$uMT3i< z_fd#jU~>+1>z!sa=g=1>K8e9oiVMM(XP5yIv8rAyNj|z=g6Id(FntA+Qo!fYvcZ}J zbFy#d3#siir^eduLGp;Vs)HgCAz0D6y*{aMG+3H9_c zv1fSyA{MEKM*r?b+!9RYaCW#0DQq2GOzRhfd@?Y-ntJu#_G!nf-;<@0(el-{hj8l3 zja%-H&>|Jw5&6+M@U|6v|F$)x22^h00w+26+ggk%!r1ug0`QQ&;@hi`yRPB*{J2^= zkKJsKjpN2f-IeKTsuV%z1CAAXa&!TlI@u_$G+#QEt>&MN))a~HZ?rDm;JMKVkl^uX zyuCPT+RL7&Qdj95)28-)`d)H44$dwe5HiILT&xsh14n@mrqk>D!lKtJ=RoYMnD{kS zv}GT8v$DTm{~U;CK`Ugt={u$fz?90ZwdwSEKdIwdcE=Sl!LQw1w=U3dXu*B^QJ!SD z#7UKypP$G{jga@1m5GVT$0BL;Qcd*;zyoCO#YUDzlPQbV5R({Oo|$?(HLnMeiI~=m zinf}G#cI3vQuaqq!6tql2i?vbH9nS^9@UmJ49D7sOSq~U8m?nag4gdnYKrjf16RL0cRaj*E>Ll-P)I z1>_p@giZPtD_s;nDOM-CJ+dzZ*zYTEkXZl8nTz_OER> z^$Oz@AoDc-N0T2!r;s?0>Vfgru3nOPbo$moO;z{1GgFtJw$jplfw`~U@fKlDA)rw^ z!{#s`YM-CTOXpUo$aXO;%Y{*7ASA{a~_#5?o*jpk%tuQZ-42Pvgr_j20XfhJezZgQ<}OJ^M1Yes@V307!uKrp+u$y~?^M3yKT*F?KA(ldJsg?0u}{~dFE0X% z3#+UC2L1pbmEb;10-2I8h7Q^?d*TLT#+{3a()umIE*(q03l|E|%MYu*y zrU&0%vlb}YKVA3xb1fW}q&hR%eOMWAJwNKr>}bC^99SPe=dJ?2(Qx65-&T5hCh{^~ zJ^OMs1nn>PsU54F%h^$R3R<#X5bco4k;Ck}g{7-kTkpiJsjUp-!UV--)v=iu@IBUeUtO^1;)i=x zkWxZR-lyX(LRv@v-MUqDg1-UzTdVpfFM0Q6aY%w@n867KvJ)SlH0G;XS{~+WJ{PK# zD=8|z8zcltak6|-C}H(tLdsNk{GHjjCFky7XV<$3E~#s4Gh$l>rWSA^U7J8;&G(|x zSeP}$7KH1C4DD0{^Hu$xUuL>Ty>r7E)vK7TvmE~*bz zRbSt>2gMKK8}H*!y}!_k1P{wO-E8_N`0!twl0GH*I5aD6v3INo#8+i}siF zrd2;7-o-8U3!~%Q6JG$}l##wDt-ywUUAUHtW`_Wyw6}}Yeof2FG%z$I)82jO<>}|w zo?#;vJjA!bVX@<>gI{{OO>Ll$eO2$pmXm_$_HE8ro2A95`3=0v2ll9C2u7I#_6L3v z9~}VAco8y9KeXe&Cy7mj04c4DZ+?4U*b%}#KZ)jol{L0O1|!f^#&81;yn79K4u@C;;0*M}yVK`djvL7zQlMh!xmnL_t z@K+CyBm{=x;bAAFCk=-QA!&ESF+coUg2J&Nab^Dtct-S5N25UNkLKp1N)nh~NY-aq zy!%aOYYh1k-LS$wa!33*rO3$4{p4?{%DojEuNi=zYsw!h1k|o1Y*V7!014eqxfgBs zzM6N8BNM3gzCO6PxPUA})woVt-dc*I0L7&6#UM?BGB`33Sl(0>d1=i1g#QX)cTM#h$@9V3Q!GXS47@6rd})AZg;i=U|&(j3!SlUOS@g1$C` zXhz~Q0Q3q-%=46`bW|*3)m+Wnaa+bI?KKm>xiGbn#{{$i+ zSCYP3T_kzo|6pBMDc=B++SJO5v4O#%n;?MDv19_&9sUz_*C$W_>VRPXV^O#4unP0K zT&S}oeDS-zzV32*=i(%-p@Hjzf`;k2mOvv5h*;ZbD;@r#cn$uqewm}+4bj4088gC& zyCYP&36lJs`V#}G#9~oELlAQG=1c{h5HsD)VICBaYTY#N$TW+s^gSGF`P zw`Pgexf#Qrt$lr=P^hCLyWvB&kcY(B?flr39U$>JIyzcg2buw90rW0h&${>If>IyS zt{NZ#Vs8%ckl*~d>b2=FRwE*Y+eEX$O!Fgt{Cl89iXLfyqtfg<7VYPkrFpsD6W$fS zwpE zIv>k-U^$>H*yq!aL&P1=-R$8_9(uzN-6R584DfBJ2jOMtcN{BINjDs*%6! zGntxA3;Cpt^>+GR5~4GJO)O^&&YQ2<^_q5#MY;BoBcnFH`gWtikeq)@c9 zw7RS)7~wZ5+M+CEFRyNH5>2`o8-dFh8;gpNz~2s{zNlSu*|~=Pc;eFMjA^ z?*b`0W%swh#kZ+M3UHzFV5!*Z;6=FHO#?-O{2ve>4?6$uW7;xg{lEiL2=WvDN<4Gg zCo(^#Be;Kk9h#L8RU)5=DpC5HwbAWa4JaNcbC{590+~Fq-8-wUG!-NH5gFTotl)Evjxa++7 z#Xo%b@Nl;oM<>0#yBq9}dODhsk&&2);~BRpAPs~(XcsSGAHK7xe_L|B>lZ_*5}?_~ z`9Ey}m7YPxY(UlLv);8bw@b9AJKv}C0sa#0PCVk>@m$$DR_W9cq=pad?8uIfg9$W1 zq5@=-HEd@xWS)UdV!EX9^FDaTlDaxv=$R8WQvRV9CJwGH5qfD|-L_06qetC36(>D} za^=^bZTR=A4YoSJ?L{(2wT+DI8}#W4_-G^rI720_-A|SlR#yD3_SCp+gSe<<6Cr*a z{dTx2UbkYlv5|LaZDf4BX~FJ8nPuHVxwfs2 zPO8fjY2}~ahx$;ckf!JL!OXnUTO|QwZEg3LCoelDXL8^wX=$YT%r07?Y_Mne{PB%Z ztNZ$_O(zoF53HvRb=U2l@k|Q{ft^$=7oIXHS1p!A_s<^D?c!jMFdh5H8vxK6?H9GR z{!{hhD1`O3w4`@JJDzVAnVFdZtU;_&`+W}3H}~UzGgDKpfa%C0HP)6ySISCDOUud- zk`O$s24cxk^8Wq%2SDi97&vVj(E~5!H&83&=jR91Z3i&q`rvT&6X4^M3%c!f1|mR~ zwX{_PY~FUbEjHS>x*t>fW&)`rBZDLaYruJ2Z%j?VI;^JbLlQwW>W(M$(R3Q1x@au(3%wqaftdVq|YTco_4HAc{OHGLS zX%T%TVij<+puh)D_N7S@>%HDp55`SdTlCc8cYR3eF4or61T^@YD*xxQ1v|gH^>F`- zq})!Oii!%qj*jy3qd)1~CNCGMCU$~|+@DXMcjm&YVzUHX0lyKwU2-MmbC5#uYFnwT zp!j(DdbhDcS#XMouof3UH zj}yr~T@R;ZV`dH>r?U)PUh&$^en-f*b)8q2Zx8p?vMGXr|ja?H9r!y zIB=p9m_u&JD13|S3L}<~1FpGnFe%vCW6-5IyoLGrbSO&yPGBXNcixOQZsD9rzyXq> zN3|>w`IW1}adSYgQ#^^EpP5jnzHIv79G8O6M|%Pwd2+{wKvBXjSe%d`9Q7P7eSBO$ zIH)xlD5NSOA@PhTs2zX?8j<51r7R00)&8w5S}Z_s8Sdq?lR~Oz0t8&zUa`g8A~_r>@~-CSm%?bCnhtLiXKI zATt06Oktt2@8VEWbiy?2PB>*%Xa%58No=ND3Y`m%R5XIz>=X;mRCuftj7dgPmOGOp z&CTK@b&Yy#RG%W!jmM;mDI(q1rD=yOd2~!Sq_I^;Jujj~EfMG+iFzy-&5d(&IF_w>s4Q>Na`)t}_DF@zP;@>O0U! zK2GNaG^5esUjEBm^Tf8oZ$%e$v293`mBCF|MeNM-#vp-EL*ec{e3vn9E4~M7P1o!5 z3zR%aBQeEXas%mC54}MCol076UPSIcc$u*?F}qtsZK3=PP+FekpXp{(npDz{+VnW5EiK$tt=kdt$}TJ=QCMQOaMM^m)-83ZG;K=)@38yKMZY3(=D`+ z^dxgEEtlHA_rdt++#Hr}xVvv27>r(+2n)xGSp`aSJ7_>NVs$j9@oXDwv{VSZZ$qdr zHnA2k%D#5Mp?sFqI3<@wsiE7BA2D0+B8Fi{=-x(tp>^>QG>(oPN>AUjG;F5#I>BoD zWNX1nEZgJ*4+{;fx#!`?xiHSBaS4r^1%9VjjZ0uIWEJpRId(NxDnD0bn*YdPwv02Lh=(Rq7aOuF zoV*t$mq$c^gW-(~4Vhq$EJsxy$36d{{_mkkQk^l)OsQJQOntPohr_Grw|wgS9G~ zG^)ig&vov7T^$t5r?w@EGEHB?IU6g1uIg=2gVB&^LZ}`w3(pnZjNbHYeGec8ho#_S zSX*eU(;M|Ndf~sh!viRnQwRrFeEp^lV_5e7nw*W_#d znJ#(CSh&4yvRDLK`GO=sKmtlZmYR~sD|J_fMCmR(<;@A~p|c>&w|&(z4n~PmvmD%I zg`ln7WqCjN&)`}{BGAXWZo*R;KgayT{1BkI@JW}Nc;#RBJl5)0G#PzBGjp>ro@_Ba zr}~v8ToY=h;Fb+CwPAfMQRC3F`Ao59)~oGFx$HelLBMPO>;c;CMu!va=hg=5(D}x-_eN| zw#0rBMw)Lk=XOh#{@!`*@fuurW3sJO`DZDzLYoxyY>Xm{QV{$SY3n@fK|l=gUibaB z6AkEtq5J9_BP5{0YTB<#=yiMBCF~vV($TL z{xi#+lH(akjJ^xykTBu6F*%4dwRrQtSisDR{F4}t6?Bvg?>aA))TAOD4{~jJeRG4H zuckC;7#V-7-i&pcg6a9)?LLuKrYk;DDNzftUdXYq=szHTO^#N2mZHGv3He1^SP+TD zg`eE_fs~cv33B|QL`~z5MC9{`?gH&ou}mFnyJ69 z9f#=kG6*NO2a@D0@x{to*33i%!tM}|7N|o8!>BSwMN41&knL(%eJD&`3l($j-*ez6 z6W7f#$lGz2MmU}*$PZtqS?PFxUnqZtcSR_ZH$rDe&SK;u<}yiW#>rch&~f4bI*C@^ zpO4ve(F2v38OP%zABU<<-!{RYriWBnb2;k2nQEfr=G1l)JMOn(eRB;VrS~V_{7#wf zESOGumrtd1+kQ-b#92*TykU@3mxxMhffk03u=P**4u61{Yx~*UDo@`|Z6nw1oSYR) zfg9gJ;a8JXccgaLMMKTmh9T-)B_dgL-w2J>;4h$cm~%4aw^H#wBp&O2kb(t8y|tcB z$Qt20Ue6@@J8zysw%e$#-Z@j?_3WkvLMgZ zWHhA>J_}k9hYQkHH1dX(W-FZiPywqz_fML12A-k3RLdf~r9qFzuC~7e$Yt4OF@0#Z zk3>3^6ZJmW5_rmzW^3khJA?%NDYiQVbh>5>psk-;)r=_dON3m9ESNxNG5)?ww1^IX zu^2-Tt+8J1P%+1^OKDmU%<#b`I{dhKlHoa(&x;`5qUb4 z?#Un6>9|A~X2b&B3Hla6R2n-{^d_GPG0UCN;sT{8B|lSfgNtfOn7IzE>M=4@SUx9- zoeL1|&W?QbU1_mC%2<+b(8>okoP}ibebbj>6$lvn!&6O6Et*4%s?`(Z79qS`(txiS zi7KCb&#v}&L?B8z95x$SsYokEag>hNow{OdQz1BG9O9_IHDHQ4PK{7S#1MmNb9E!h zhb)2O(rq(F9u;pbQDaT*GNR)4tVdPH=Q!0LBx4I1v z30+Cd?25O^;e^On8yfbiqT2!xTm>yrYZ77U);Tjf&Qj#IZ4*ZBw8KQ)^!s=?TgLF@ zS=}FA$OM?Fi&>Y*mA-{dt!pcVEju(->#-}kMiTs{FYQb$S89$N&fSe*Z-w+#;R;`9bc76^Y;C$hBBIee6OE6qMetlA8{-B_xV^U4 zNtCwG{GP;N9EdW{nqGhd5jtC-E=R||IiZn|YYjA2!}1x6UK1@WZ}xNEP5z5d1{Y=O z92Y<^TJ2cCziN9U{jQ4aCVva zOP`M(5d{>PZ|@`9%;@rIh# zG(19?UM}5CcQ_dgfPul!9FKPem-?erCY>bWPmassfE1DfDl+jWB zt@H;A{XZbQ6u4>jCP)4Re{r^)_1#zoyzy`^tZ%rWemFn%7Sm1Q%EP*)gGdX_*rz8b z^nV*R_>ZtIF?Hi>L8IvQBI?7yx=2J&5OY-TV=FG~!afo{8zr8w)7J-`qmgv){kT;? z?kgUEMm~5Ja2;XcRwsW07+&rEODU(R8y4A@kIY~88nl_dd~(YkVxyMyQ^eIe`~Vm) zUeQm(PB2MBiL(?H)n7(l*EF0TzU*gk@;N#$ib+T^SF-|t>kF@PW?~xPFrN30E?%A} zn;Ld4+61W~ehq`&n9gs?xxBQnu{Dchn39>Y>#=|Dm*(+|ZYq1)E=C7Y#TcjCW>bYk zFgwVN%IPPGH7+JPd3jb3qp9;2rVn*e8mL!Rm7#}}K+xy8hwv?Hqk#x%-j?Gx_u!;B zj^9&2qEAas&oWD(M1GZ>+-&Owc5@J!+C>;Lk|od!2*Awc=f#Eeb`Fhy zz15MZM|<1Z8gR~bCrOkc$G(fhkLV2Q!8{kkL!96~A>TtJHT|!Z5EasTDlct^7ZX^F z3Oia$Lc|nT3agex2THLyg#s^7WK9tK#K^nPU{iBAeJ~uq>pNVf%KRvX7XVu&U$>4{dX3+^V- z^num~g?=Hv<&)uQ5W0{Rr%f>~C#nX=TV%GuJz>uwyiAJ8WQA@_fKtwRPb)F7;8a1- z1@5q*gu|O%pLvEPWLs$yf;fR40o0=4{ff{|O-{$MGe{_)|J-%bq#OVM0RR90A^8LV00000EC2ui0D=Hq000F4@X1N5y*TSF&na9eTE=0F zXsU9B<0{}PKjk~$IH$NSkmRDkjt2l5j{qL;bHo&qN=K|oO|=|D;;AZ0L=VX=cf2t; z0E?(g+|2R_2gi?0$9MsZxS9=g^A~*Hx%V1l1;r`f=TCCFQpUwJbcGuVNO5* z033iC=VVk|sm262%8iJ$T~RLNjfFUO=X z7y$9r1j~ITJ@%Cg5w5Vx0X#i0o;47Cm(hv??7-rS8NpHsixUZO4rn7Zf}q%;eh6AKO_#>7hkdO&B82UI#l<&{-#gQYYpCK(D2o$#mDQG+p=;6Rk`%z+Wd{&|Km*h)!J$o=XsD)mXQd*prmbNIPQep&1l&XMOM*vVNQRtzWwyMXc-cW=`PGZgHhL{^%fvbpv zs@m$Wm?j$PM+*33?6Jr0u;&1A=z@d)u3Vtn9vZ;@>QJW?5k>?}*}AC$v`t8>jR4iQ zn&_TCzJTJo*64v@no8Z1-Y3bfG^4BrekJFK@A|Re9UO$tPF7CU@s95 z4|IUOnF>3Umq}QB<{HNo4Q6mF6mX6QN+ydi$$zOg3^EqYv z*&t8Uy^Fh(2Ma*?*khk4Zm50kS0s(FarYV5H-JF-2tbs6?ui~CFimD z6ZMOn3lg}$vSE%dq!L9Z1aZLQsjgWKsgpW*?>l~bngdWhBzxH_MKe@1n0Fns9GM?d)eK20xbe0qYxKa%sv&t`E z37~t>5_{TPl|!J{giag}il^V0?{DX`8mDd3&BLt*qjsYWP3v54q^;#}DBg@0xc zngkPxE;R)b5x|B22!KhIs_=+A8R8|P@o)&_0+@pB?BNK4Qqn^>y0>N-6Hzw=LOp{O zQxy0z7xPTo&D_Z|0vPIHTeF!9%D2p=;EM;p%PGRxsZEyZE~rbHC{42?qKgV7K!5Cy zMzbiwips!xt`gr2ZkCN9hK#9aaA+Ifw}M9C52`oFr#2MIwXI^osleLLw}SR7I4N}m zmZ2sY5|#aJ7~;z(db3T(!02a#JaTCR9!*g_*D z=>o_O7fh%-H16tnZ~}>8i5vTTE_4H@y7gTl9iP>%3W~c!b+PNb)(Ee7$BRmzy7#?4 Ub;x?xOW1VGcfR$_MFao - - - EJB accessing Google WS API - - - - - - -
    - Jakarta Tomcat - Mortbay Jetty - JOnAS WebSite -
    - -
    - EJB accessing Google WebService API -
    - -
    -
    - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/search-google.jsp b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/search-google.jsp deleted file mode 100644 index 430c6ed9df..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/search-google.jsp +++ /dev/null @@ -1,84 +0,0 @@ -<%@page contentType="text/html"%> - -<%@page import="org.objectweb.wssample.beans.wsclient.*"%> -<%@page import="org.objectweb.wssample.genbean.google.*"%> - -<%@page import="javax.naming.*"%> - - - Using Google WebServices - - - - - -
    - Jakarta Tomcat - Mortbay Jetty - JOnAS WebSite -
    -<% - if (request.getParameter("search") == null) { -%> -
    - Google Search -
    - - -<% - } else { -%> -
    - Results -
    - -<% - } -%> - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/style/ow_jonas.css b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/style/ow_jonas.css deleted file mode 100644 index c3f068d9a5..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/web/style/ow_jonas.css +++ /dev/null @@ -1,119 +0,0 @@ -/* - Context Root css. based on css from http://jonas.objectweb.org - XHTML by Florent BENOIT -*/ - -.bodywelcome -{ - background-color: #FFFFFF; - color: #000000; - background-image: url(../images/ow_logo.png); - background-repeat: no-repeat; - margin: 0; -} - - -img { - margin: 5px; - border:0; -} - -body -{ - background-color: #FFFFFF; - margin: 10px; - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - -} - -div.logos { - top: 5px; - width: 99%; - text-align: right; -} - - -div.links { - margin-top : 40px; - margin-left : 200px; -} - - -div.titlepage { - margin-left: 200px; - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - line-height: 27px; - font-weight: bold; - border-color: #99C; - border-width: 0 0 4px 0; - border-style: none none solid none; -} - - -div.footer { - margin-top : 50px; - color: #FFFFFF; - font-size: 8pt; - text-align: center; -} - - -/*HTML elements */ - - - -ul, ol, dl -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; -} - -li -{ - color: black; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - font-weight: normal; - margin: 10px 0px 5px 0px; - -} -a -{ - color: #3F3975; - background-color: transparent; - text-decoration: underline; -} - -a:visited -{ - color: #9898CB; - background-color: transparent; - text-decoration: underline; -} - -a:hover -{ - color: #E06611; - background-color: transparent; - text-decoration: underline; -} - - -a:active -{ - color: #FFFFFF; - background-color: #E06611; - text-decoration: underline; -} - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/application-wsclient.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/application-wsclient.xml deleted file mode 100644 index 90057b129e..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/application-wsclient.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - ear example secusb/servlet - earsample secusb/servlet - - - wsclient.jar - - - - - wsclient-front.war - wsclient - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/ejb-jar.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/ejb-jar.xml deleted file mode 100644 index f5f7045b38..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/ejb-jar.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - Describe here the content of this file - wsearsample - - - Describe here the session bean GoogleClientBean - googleClient/GoogleClientBeanSLL - GoogleClientBeanSLR - org.objectweb.wssample.beans.wsclient.GoogleClientBeanHome - org.objectweb.wssample.beans.wsclient.GoogleClientBean - - org.objectweb.wssample.beans.wsclient.GoogleClientBeanSLR - Stateless - Container - - googleKey - java.lang.String - j1LnsP9QFHLsT76x8dXU5HYjG1wxlgU3 - - - service/google - - org.objectweb.wssample.genbean.google.GoogleSearchService - META-INF/wsdl/GoogleSearch.wsdl - META-INF/googleMapping.xml - - google:GoogleSearchService - - - - - - - - GoogleClientBeanSLR - * - - Supports - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/googleMapping.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/googleMapping.xml deleted file mode 100644 index 8d075e6d81..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/googleMapping.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - org.objectweb.wssample.genbean.google - urn:GoogleSearch - - - org.objectweb.wssample.genbean.google.GoogleSearchResult - ns:GoogleSearchResult - complexType - - - org.objectweb.wssample.genbean.google.ResultElement - ns:ResultElement - complexType - - - org.objectweb.wssample.genbean.google.ResultElement[] - ns:ResultElementArray - complexType - - - org.objectweb.wssample.genbean.google.DirectoryCategory[] - ns:DirectoryCategoryArray - complexType - - - org.objectweb.wssample.genbean.google.DirectoryCategory - ns:DirectoryCategory - complexType - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/jonas-ejb-jar.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/jonas-ejb-jar.xml deleted file mode 100644 index bdc3f59bb8..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/jonas-ejb-jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - GoogleClientBeanSLR - ejbs/GoogleClientBeanHome - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/web-wsclient-front.xml b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/web-wsclient-front.xml deleted file mode 100644 index 91226811bb..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/web-wsclient-front.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - ejb/GoogleClient - Session - org.objectweb.wssample.beans.wsclient.GoogleClientBeanHome - org.objectweb.wssample.beans.wsclient.GoogleClientBean - wsclient.jar#GoogleClientBeanSLR - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/wsdl/GoogleSearch.wsdl b/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/wsdl/GoogleSearch.wsdl deleted file mode 100644 index 746ad2298c..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/etc/xml/wsdl/GoogleSearch.wsdl +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBean.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBean.java deleted file mode 100644 index 69147d766f..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBean.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume Sauthier______________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.beans.wsclient; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - -import org.objectweb.wssample.genbean.google.GoogleSearchResult; - -/** - * GoogleClientBean local interface - */ -public interface GoogleClientBean extends EJBObject { - /** - * Execute a Query via Google WS api. - * - * @param query Query String - * @return Result of the Search - * - * @throws RemoteException When query went wrong - */ - GoogleSearchResult executeQuery(java.lang.String query) throws RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanHome.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanHome.java deleted file mode 100644 index beb77bc543..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanHome.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume Sauthier______________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.beans.wsclient; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Local Home interface for the bean GoogleClientBean - */ -public interface GoogleClientBeanHome extends EJBHome { - - /** - * Create a new GoogleCLientBean local instance. - * - * @return a new GoogleCLientBean local instance. - * @throws CreateException When server cannot create the instance. - * @throws RemoteException When creation went wrong - */ - GoogleClientBean create() throws CreateException, RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanSLR.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanSLR.java deleted file mode 100644 index af36799001..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/beans/wsclient/GoogleClientBeanSLR.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer(s): Guillaume Sauthier______________. - * Contributor(s): ______________________________________. - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.beans.wsclient; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -import org.objectweb.wssample.genbean.google.GoogleSearchResult; -import org.objectweb.wssample.genbean.google.GoogleSearchService; -import org.objectweb.wssample.genbean.google.GoogleSearchPort; - -import javax.xml.rpc.ServiceException; - -/** - * GoogleClientBean implementation. This bean use Google WebServices API - * to execute a given Query. - * - * @author Guillaume Sauthier - */ -public class GoogleClientBeanSLR implements SessionBean { - - /** - * logger - */ - private static Logger logger = null; - - /** - * Session Context - */ - private SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - /** - * Set the SessionContext - * @param ctx the SessionContext - */ - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - /** - * ejbRemove - */ - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbCreate - * @throws CreateException CreateException - */ - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbPassivate - */ - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * ejbActivate - */ - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // GoogleClientBean implementation - // ------------------------------------------------------------------ - - /** - * Execute a Query via Google WS api. - * - * @param query Query String - * @return query results - */ - public GoogleSearchResult executeQuery(java.lang.String query) { - - logger.log(BasicLevel.INFO, "Executing Google Query '" + query + "'"); - - try { - - // Get the InitialContext where retrieve Service - Context ctx = new InitialContext(); - - // Lookup the service - GoogleSearchService google = - (GoogleSearchService) ctx.lookup("java:comp/env/service/google"); - - // get Google Port - GoogleSearchPort search = google.getGoogleSearchPort(); - - // get Google Key - String key = (String) ctx.lookup("java:comp/env/googleKey"); - - // Execute the query - return search.doGoogleSearch(key, - query, - 0, // first index - 10, // maxresult - false, //filter - null, //restrict - false, // safesearch - null, //lr - null, //ie - null //oe - ); - } catch (NamingException ne) { - return null; - } catch (RemoteException re) { - return null; - } catch (ServiceException se) { - return null; - } - } -} - diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/DirectoryCategory.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/DirectoryCategory.java deleted file mode 100644 index 4509e3edfb..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/DirectoryCategory.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * DirectoryCategory.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC1 Sep 29, 2004 (08:29:40 EDT) WSDL2Java emitter. - */ - -package org.objectweb.wssample.genbean.google; - -public class DirectoryCategory implements java.io.Serializable { - private java.lang.String fullViewableName; - private java.lang.String specialEncoding; - - public DirectoryCategory() { - } - - public DirectoryCategory( - java.lang.String fullViewableName, - java.lang.String specialEncoding) { - this.fullViewableName = fullViewableName; - this.specialEncoding = specialEncoding; - } - - - /** - * Gets the fullViewableName value for this DirectoryCategory. - * - * @return fullViewableName - */ - public java.lang.String getFullViewableName() { - return fullViewableName; - } - - - /** - * Sets the fullViewableName value for this DirectoryCategory. - * - * @param fullViewableName - */ - public void setFullViewableName(java.lang.String fullViewableName) { - this.fullViewableName = fullViewableName; - } - - - /** - * Gets the specialEncoding value for this DirectoryCategory. - * - * @return specialEncoding - */ - public java.lang.String getSpecialEncoding() { - return specialEncoding; - } - - - /** - * Sets the specialEncoding value for this DirectoryCategory. - * - * @param specialEncoding - */ - public void setSpecialEncoding(java.lang.String specialEncoding) { - this.specialEncoding = specialEncoding; - } - - private java.lang.Object __equalsCalc = null; - public synchronized boolean equals(java.lang.Object obj) { - if (!(obj instanceof DirectoryCategory)) return false; - DirectoryCategory other = (DirectoryCategory) obj; - if (obj == null) return false; - if (this == obj) return true; - if (__equalsCalc != null) { - return (__equalsCalc == obj); - } - __equalsCalc = obj; - boolean _equals; - _equals = true && - ((this.fullViewableName==null && other.getFullViewableName()==null) || - (this.fullViewableName!=null && - this.fullViewableName.equals(other.getFullViewableName()))) && - ((this.specialEncoding==null && other.getSpecialEncoding()==null) || - (this.specialEncoding!=null && - this.specialEncoding.equals(other.getSpecialEncoding()))); - __equalsCalc = null; - return _equals; - } - - private boolean __hashCodeCalc = false; - public synchronized int hashCode() { - if (__hashCodeCalc) { - return 0; - } - __hashCodeCalc = true; - int _hashCode = 1; - if (getFullViewableName() != null) { - _hashCode += getFullViewableName().hashCode(); - } - if (getSpecialEncoding() != null) { - _hashCode += getSpecialEncoding().hashCode(); - } - __hashCodeCalc = false; - return _hashCode; - } - - // Type metadata - private static org.apache.axis.description.TypeDesc typeDesc = - new org.apache.axis.description.TypeDesc(DirectoryCategory.class, true); - - static { - typeDesc.setXmlType(new javax.xml.namespace.QName("urn:GoogleSearch", "DirectoryCategory")); - org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); - elemField.setFieldName("fullViewableName"); - elemField.setXmlName(new javax.xml.namespace.QName("", "fullViewableName")); - elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); - typeDesc.addFieldDesc(elemField); - elemField = new org.apache.axis.description.ElementDesc(); - elemField.setFieldName("specialEncoding"); - elemField.setXmlName(new javax.xml.namespace.QName("", "specialEncoding")); - elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); - typeDesc.addFieldDesc(elemField); - } - - /** - * Return type metadata object - */ - public static org.apache.axis.description.TypeDesc getTypeDesc() { - return typeDesc; - } - - /** - * Get Custom Serializer - */ - public static org.apache.axis.encoding.Serializer getSerializer( - java.lang.String mechType, - java.lang.Class _javaType, - javax.xml.namespace.QName _xmlType) { - return - new org.apache.axis.encoding.ser.BeanSerializer( - _javaType, _xmlType, typeDesc); - } - - /** - * Get Custom Deserializer - */ - public static org.apache.axis.encoding.Deserializer getDeserializer( - java.lang.String mechType, - java.lang.Class _javaType, - javax.xml.namespace.QName _xmlType) { - return - new org.apache.axis.encoding.ser.BeanDeserializer( - _javaType, _xmlType, typeDesc); - } - -} diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchPort.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchPort.java deleted file mode 100644 index 669b9e07ab..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchPort.java +++ /dev/null @@ -1,14 +0,0 @@ -/** - * GoogleSearchPort.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC1 Sep 29, 2004 (08:29:40 EDT) WSDL2Java emitter. - */ - -package org.objectweb.wssample.genbean.google; - -public interface GoogleSearchPort extends java.rmi.Remote { - public byte[] doGetCachedPage(java.lang.String key, java.lang.String url) throws java.rmi.RemoteException; - public java.lang.String doSpellingSuggestion(java.lang.String key, java.lang.String phrase) throws java.rmi.RemoteException; - public org.objectweb.wssample.genbean.google.GoogleSearchResult doGoogleSearch(java.lang.String key, java.lang.String q, int start, int maxResults, boolean filter, java.lang.String restrict, boolean safeSearch, java.lang.String lr, java.lang.String ie, java.lang.String oe) throws java.rmi.RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchResult.java b/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchResult.java deleted file mode 100644 index b6f843845f..0000000000 --- a/jonas_tests/examples/base/examples/webservices/beans/wsclient/src/org/objectweb/wssample/genbean/google/GoogleSearchResult.java +++ /dev/null @@ -1,450 +0,0 @@ -/** - * GoogleSearchResult.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC1 Sep 29, 2004 (08:29:40 EDT) WSDL2Java emitter. - */ - -package org.objectweb.wssample.genbean.google; - -public class GoogleSearchResult implements java.io.Serializable { - private boolean documentFiltering; - private java.lang.String searchComments; - private int estimatedTotalResultsCount; - private boolean estimateIsExact; - private org.objectweb.wssample.genbean.google.ResultElement[] resultElements; - private java.lang.String searchQuery; - private int startIndex; - private int endIndex; - private java.lang.String searchTips; - private org.objectweb.wssample.genbean.google.DirectoryCategory[] directoryCategories; - private double searchTime; - - public GoogleSearchResult() { - } - - public GoogleSearchResult( - boolean documentFiltering, - java.lang.String searchComments, - int estimatedTotalResultsCount, - boolean estimateIsExact, - org.objectweb.wssample.genbean.google.ResultElement[] resultElements, - java.lang.String searchQuery, - int startIndex, - int endIndex, - java.lang.String searchTips, - org.objectweb.wssample.genbean.google.DirectoryCategory[] directoryCategories, - double searchTime) { - this.documentFiltering = documentFiltering; - this.searchComments = searchComments; - this.estimatedTotalResultsCount = estimatedTotalResultsCount; - this.estimateIsExact = estimateIsExact; - this.resultElements = resultElements; - this.searchQuery = searchQuery; - this.startIndex = startIndex; - this.endIndex = endIndex; - this.searchTips = searchTips; - this.directoryCategories = directoryCategories; - this.searchTime = searchTime; - } - - - /** - * Gets the documentFiltering value for this GoogleSearchResult. - * - * @return documentFiltering - */ - public boolean isDocumentFiltering() { - return documentFiltering; - } - - - /** - * Sets the documentFiltering value for this GoogleSearchResult. - * - * @param documentFiltering - */ - public void setDocumentFiltering(boolean documentFiltering) { - this.documentFiltering = documentFiltering; - } - - - /** - * Gets the searchComments value for this GoogleSearchResult. - * - * @return searchComments - */ - public java.lang.String getSearchComments() { - return searchComments; - } - - - /** - * Sets the searchComments value for this GoogleSearchResult. - * - * @param searchComments - */ - public void setSearchComments(java.lang.String searchComments) { - this.searchComments = searchComments; - } - - - /** - * Gets the estimatedTotalResultsCount value for this GoogleSearchResult. - * - * @return estimatedTotalResultsCount - */ - public int getEstimatedTotalResultsCount() { - return estimatedTotalResultsCount; - } - - - /** - * Sets the estimatedTotalResultsCount value for this GoogleSearchResult. - * - * @param estimatedTotalResultsCount - */ - public void setEstimatedTotalResultsCount(int estimatedTotalResultsCount) { - this.estimatedTotalResultsCount = estimatedTotalResultsCount; - } - - - /** - * Gets the estimateIsExact value for this GoogleSearchResult. - * - * @return estimateIsExact - */ - public boolean isEstimateIsExact() { - return estimateIsExact; - } - - - /** - * Sets the estimateIsExact value for this GoogleSearchResult. - * - * @param estimateIsExact - */ - public void setEstimateIsExact(boolean estimateIsExact) { - this.estimateIsExact = estimateIsExact; - } - - - /** - * Gets the resultElements value for this GoogleSearchResult. - * - * @return resultElements - */ - public org.objectweb.wssample.genbean.google.ResultElement[] getResultElements() { - return resultElements; - } - - - /** - * Sets the resultElements value for this GoogleSearchResult. - * - * @param resultElements - */ - public void setResultElements(org.objectweb.wssample.genbean.google.ResultElement[] resultElements) { - this.resultElements = resultElements; - } - - - /** - * Gets the searchQuery value for this GoogleSearchResult. - * - * @return searchQuery - */ - public java.lang.String getSearchQuery() { - return searchQuery; - } - - - /** - * Sets the searchQuery value for this GoogleSearchResult. - * - * @param searchQuery - */ - public void setSearchQuery(java.lang.String searchQuery) { - this.searchQuery = searchQuery; - } - - - /** - * Gets the startIndex value for this GoogleSearchResult. - * - * @return startIndex - */ - public int getStartIndex() { - return startIndex; - } - - - /** - * Sets the startIndex value for this GoogleSearchResult. - * - * @param startIndex - */ - public void setStartIndex(int startIndex) { - this.startIndex = startIndex; - } - - - /** - * Gets the endIndex value for this GoogleSearchResult. - * - * @return endIndex - */ - public int getEndIndex() { - return endIndex; - } - - - /** - * Sets the endIndex value for this GoogleSearchResult. - * - * @param endIndex - */ - public void setEndIndex(int endIndex) { - this.endIndex = endIndex; - } - - - /** - * Gets the searchTips value for this GoogleSearchResult. - * - * @return searchTips - */ - public java.lang.String getSearchTips() { - return searchTips; - } - - - /** - * Sets the searchTips value for this GoogleSearchResult. - * - * @param searchTips - */ - public void setSearchTips(java.lang.String searchTips) { - this.searchTips = searchTips; - } - - - /** - * Gets the directoryCategories value for this GoogleSearchResult. - * - * @return directoryCategories - */ - public org.objectweb.wssample.genbean.google.DirectoryCategory[] getDirectoryCategories() { - return directoryCategories; - } - - - /** - * Sets the directoryCategories value for this GoogleSearchResult. - * - * @param directoryCategories - */ - public void setDirectoryCategories(org.objectweb.wssample.genbean.google.DirectoryCategory[] directoryCategories) { - this.directoryCategories = directoryCategories; - } - - - /** - * Gets the searchTime value for this GoogleSearchResult. - * - * @return searchTime - */ - public double getSearchTime() { - return searchTime; - } - - - /** - * Sets the searchTime value for this GoogleSearchResult. - * - * @param searchTime - */ - public void setSearchTime(double searchTime) { - this.searchTime = searchTime; - } - - private java.lang.Object __equalsCalc = null; - public synchronized boolean equals(java.lang.Object obj) { - if (!(obj instanceof GoogleSearchResult)) return false; - GoogleSearchResult other = (GoogleSearchResult) obj; - if (obj == null) return false; - if (this == obj) return true; - if (__equalsCalc != null) { - return (__equalsCalc == obj); - } - __equalsCalc = obj; - boolean _equals; - _equals = true && - this.documentFiltering == other.isDocumentFiltering() && - ((this.searchComments==null && other.getSearchComments()==null) || - (this.searchComments!=null && - this.searchComments.equals(other.getSearchComments()))) && - this.estimatedTotalResultsCount == other.getEstimatedTotalResultsCount() && - this.estimateIsExact == other.isEstimateIsExact() && - ((this.resultElements==null && other.getResultElements()==null) || - (this.resultElements!=null && - java.util.Arrays.equals(this.resultElements, other.getResultElements()))) && - ((this.searchQuery==null && other.getSearchQuery()==null) || - (this.searchQuery!=null && - this.searchQuery.equals(other.getSearchQuery()))) && - this.startIndex == other.getStartIndex() && - this.endIndex == other.getEndIndex() && - ((this.searchTips==null && other.getSearchTips()==null) || - (this.searchTips!=null && - this.searchTips.equals(other.getSearchTips()))) && - ((this.directoryCategories==null && other.getDirectoryCategories()==null) || - (this.directoryCategories!=null && - java.util.Arrays.equals(this.directoryCategories, other.getDirectoryCategories()))) && - this.searchTime == other.getSearchTime(); - __equalsCalc = null; - return _equals; - } - - private boolean __hashCodeCalc = false; - public synchronized int hashCode() { - if (__hashCodeCalc) { - return 0; - } - __hashCodeCalc = true; - int _hashCode = 1; - _hashCode += (isDocumentFiltering() ? Boolean.TRUE : Boolean.FALSE).hashCode(); - if (getSearchComments() != null) { - _hashCode += getSearchComments().hashCode(); - } - _hashCode += getEstimatedTotalResultsCount(); - _hashCode += (isEstimateIsExact() ? Boolean.TRUE : Boolean.FALSE).hashCode(); - if (getResultElements() != null) { - for (int i=0; - i - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/etc/xml/application.xml b/jonas_tests/examples/base/examples/webservices/etc/xml/application.xml deleted file mode 100644 index 37339099c2..0000000000 --- a/jonas_tests/examples/base/examples/webservices/etc/xml/application.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - WebServices Sample application - WebServices Sample application - - - ws.jar - - - - - wsEarSample.war - wsEarSample - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/build.xml b/jonas_tests/examples/base/examples/webservices/webs/webclient/build.xml deleted file mode 100644 index 590cc42947..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/build.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByJSP.jsp b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByJSP.jsp deleted file mode 100644 index 0909c82a8c..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByJSP.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%@page contentType="text/html"%> - -<%@page import="org.objectweb.wssample.gen.google.*"%> -<%@page import="javax.naming.*"%> - - - Using Google WebServices - - - -
    - - Jakarta Tomcat - - Mortbay Jetty - JOnAS WebSite -
    - - -<% - if (request.getParameter("search") == null) { -%> -
    Google WebServices Access via JSP
    - - - -<% - } else { -%> -
    Results
    - -<% - } -%> - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByServlet.html b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByServlet.html deleted file mode 100644 index 49eb724189..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/googleByServlet.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Google WebServices Access via Servlet - - - - -
    - - Jakarta Tomcat - - Mortbay Jetty - JOnAS WebSite -
    - -
    Google WebServices Access via Servlet
    - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jetty.gif b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jetty.gif deleted file mode 100644 index 01f44a87f6801b200f142513d0d02b12cea0fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 A+yDRo diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jonas.ico b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/jonas.ico deleted file mode 100644 index 108c5c21ede334f3b80d9a373f618c52efee7877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmYk0+e;H*7>A!No!^}E)J)5?xjf86PM6DLt#p~0TBfr!4;@qzEwhW!jFM`I;t@1F zR6^mYCV}Rmf@%a&EP}f0rvIgH+l?>$emu|1d-0Z5JCyimTLDH%kuqU23WR^}ksYlG z#}HrGZO>rhi+R49tp`y%je4v?Foq^Am|`*Rp~=y^G4V4ydH zr@gWK*s5XvQ6610%P>sVxBa;$t3kYVf#k@OAATO*VNm ztYzws{CiT(#*B@n*>>!cpBHpBE)vIIzc_U3l?Id8^NB zGZMs+Cga(?^~Dvz(qqzOsZ)klOV diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_jonas_logo.gif b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_jonas_logo.gif deleted file mode 100644 index 1b56943a721f82a8cb81776030567772265433f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_logo.png b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/images/ow_logo.png deleted file mode 100644 index 60617270bf0c0d21c9f40e4f7c85ef5bfdbda548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11700 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 Ub;x?xOW1VGcfR$_MFao - - - WebServices Client from a WebApp - - - - -
    - - Jakarta Tomcat - - Mortbay Jetty - JOnAS WebSite -
    - -
    WebServices Client from a WebApp
    - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/style/ow_jonas.css b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/style/ow_jonas.css deleted file mode 100644 index c3f068d9a5..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/resources/style/ow_jonas.css +++ /dev/null @@ -1,119 +0,0 @@ -/* - Context Root css. based on css from http://jonas.objectweb.org - XHTML by Florent BENOIT -*/ - -.bodywelcome -{ - background-color: #FFFFFF; - color: #000000; - background-image: url(../images/ow_logo.png); - background-repeat: no-repeat; - margin: 0; -} - - -img { - margin: 5px; - border:0; -} - -body -{ - background-color: #FFFFFF; - margin: 10px; - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - -} - -div.logos { - top: 5px; - width: 99%; - text-align: right; -} - - -div.links { - margin-top : 40px; - margin-left : 200px; -} - - -div.titlepage { - margin-left: 200px; - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - line-height: 27px; - font-weight: bold; - border-color: #99C; - border-width: 0 0 4px 0; - border-style: none none solid none; -} - - -div.footer { - margin-top : 50px; - color: #FFFFFF; - font-size: 8pt; - text-align: center; -} - - -/*HTML elements */ - - - -ul, ol, dl -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; -} - -li -{ - color: black; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - font-weight: normal; - margin: 10px 0px 5px 0px; - -} -a -{ - color: #3F3975; - background-color: transparent; - text-decoration: underline; -} - -a:visited -{ - color: #9898CB; - background-color: transparent; - text-decoration: underline; -} - -a:hover -{ - color: #E06611; - background-color: transparent; - text-decoration: underline; -} - - -a:active -{ - color: #FFFFFF; - background-color: #E06611; - text-decoration: underline; -} - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/googleMapping.xml b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/googleMapping.xml deleted file mode 100644 index 2cba3939ee..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/googleMapping.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - org.objectweb.wssample.gen.google - urn:GoogleSearch - - - org.objectweb.wssample.gen.google.GoogleSearchResult - ns:GoogleSearchResult - complexType - - - org.objectweb.wssample.gen.google.ResultElement - ns:ResultElement - complexType - - - org.objectweb.wssample.gen.google.ResultElement[] - ns:ResultElementArray - complexType - - - org.objectweb.wssample.gen.google.DirectoryCategory[] - ns:DirectoryCategoryArray - complexType - - - org.objectweb.wssample.gen.google.DirectoryCategory - ns:DirectoryCategory - complexType - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/jonas-web.xml b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/jonas-web.xml deleted file mode 100644 index c6d0fef833..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/jonas-web.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - service/google - - - org.objectweb.wssample.gen.google.GoogleSearchPort - ns:GoogleSearchPort - - javax.xml.rpc.session.maintain - true - - - javax.xml.rpc.session.maintain - true - - - - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/web.xml b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/web.xml deleted file mode 100644 index 5ea6ffa00a..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/web.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - WebApplication using Distant WebServices - - - GoogleClientServlet - org.objectweb.wssample.servlets.wsclient.WsClientServlet - - - - GoogleClientServlet - /googleByServlet.action - - - - index.html - index.jsp - - - - service/google - org.objectweb.wssample.gen.google.GoogleSearchService - WEB-INF/wsdl/GoogleSearch.wsdl - WEB-INF/googleMapping.xml - google:GoogleSearchService - - org.objectweb.wssample.gen.google.GoogleSearchPort - - - - - key - java.lang.String - j1LnsP9QFHLsT76x8dXU5HYjG1wxlgU3 - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/wsdl/GoogleSearch.wsdl b/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/wsdl/GoogleSearch.wsdl deleted file mode 100644 index c99d55a69d..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/etc/xml/wsdl/GoogleSearch.wsdl +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/DirectoryCategory.java b/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/DirectoryCategory.java deleted file mode 100644 index 6f87726864..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/DirectoryCategory.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * DirectoryCategory.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC2 Dec 15, 2004 (10:53:17 CET) WSDL2Java emitter. - */ - -package org.objectweb.wssample.gen.google; - -public class DirectoryCategory implements java.io.Serializable { - private java.lang.String fullViewableName; - private java.lang.String specialEncoding; - - public DirectoryCategory() { - } - - public DirectoryCategory( - java.lang.String fullViewableName, - java.lang.String specialEncoding) { - this.fullViewableName = fullViewableName; - this.specialEncoding = specialEncoding; - } - - - /** - * Gets the fullViewableName value for this DirectoryCategory. - * - * @return fullViewableName - */ - public java.lang.String getFullViewableName() { - return fullViewableName; - } - - - /** - * Sets the fullViewableName value for this DirectoryCategory. - * - * @param fullViewableName - */ - public void setFullViewableName(java.lang.String fullViewableName) { - this.fullViewableName = fullViewableName; - } - - - /** - * Gets the specialEncoding value for this DirectoryCategory. - * - * @return specialEncoding - */ - public java.lang.String getSpecialEncoding() { - return specialEncoding; - } - - - /** - * Sets the specialEncoding value for this DirectoryCategory. - * - * @param specialEncoding - */ - public void setSpecialEncoding(java.lang.String specialEncoding) { - this.specialEncoding = specialEncoding; - } - - private java.lang.Object __equalsCalc = null; - public synchronized boolean equals(java.lang.Object obj) { - if (!(obj instanceof DirectoryCategory)) return false; - DirectoryCategory other = (DirectoryCategory) obj; - if (obj == null) return false; - if (this == obj) return true; - if (__equalsCalc != null) { - return (__equalsCalc == obj); - } - __equalsCalc = obj; - boolean _equals; - _equals = true && - ((this.fullViewableName==null && other.getFullViewableName()==null) || - (this.fullViewableName!=null && - this.fullViewableName.equals(other.getFullViewableName()))) && - ((this.specialEncoding==null && other.getSpecialEncoding()==null) || - (this.specialEncoding!=null && - this.specialEncoding.equals(other.getSpecialEncoding()))); - __equalsCalc = null; - return _equals; - } - - private boolean __hashCodeCalc = false; - public synchronized int hashCode() { - if (__hashCodeCalc) { - return 0; - } - __hashCodeCalc = true; - int _hashCode = 1; - if (getFullViewableName() != null) { - _hashCode += getFullViewableName().hashCode(); - } - if (getSpecialEncoding() != null) { - _hashCode += getSpecialEncoding().hashCode(); - } - __hashCodeCalc = false; - return _hashCode; - } - - // Type metadata - private static org.apache.axis.description.TypeDesc typeDesc = - new org.apache.axis.description.TypeDesc(DirectoryCategory.class, true); - - static { - typeDesc.setXmlType(new javax.xml.namespace.QName("urn:GoogleSearch", "DirectoryCategory")); - org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); - elemField.setFieldName("fullViewableName"); - elemField.setXmlName(new javax.xml.namespace.QName("", "fullViewableName")); - elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); - typeDesc.addFieldDesc(elemField); - elemField = new org.apache.axis.description.ElementDesc(); - elemField.setFieldName("specialEncoding"); - elemField.setXmlName(new javax.xml.namespace.QName("", "specialEncoding")); - elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); - typeDesc.addFieldDesc(elemField); - } - - /** - * Return type metadata object - */ - public static org.apache.axis.description.TypeDesc getTypeDesc() { - return typeDesc; - } - - /** - * Get Custom Serializer - */ - public static org.apache.axis.encoding.Serializer getSerializer( - java.lang.String mechType, - java.lang.Class _javaType, - javax.xml.namespace.QName _xmlType) { - return - new org.apache.axis.encoding.ser.BeanSerializer( - _javaType, _xmlType, typeDesc); - } - - /** - * Get Custom Deserializer - */ - public static org.apache.axis.encoding.Deserializer getDeserializer( - java.lang.String mechType, - java.lang.Class _javaType, - javax.xml.namespace.QName _xmlType) { - return - new org.apache.axis.encoding.ser.BeanDeserializer( - _javaType, _xmlType, typeDesc); - } - -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchPort.java b/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchPort.java deleted file mode 100644 index 44c06c879c..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchPort.java +++ /dev/null @@ -1,14 +0,0 @@ -/** - * GoogleSearchPort.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC2 Dec 15, 2004 (10:53:17 CET) WSDL2Java emitter. - */ - -package org.objectweb.wssample.gen.google; - -public interface GoogleSearchPort extends java.rmi.Remote { - public byte[] doGetCachedPage(java.lang.String key, java.lang.String url) throws java.rmi.RemoteException; - public java.lang.String doSpellingSuggestion(java.lang.String key, java.lang.String phrase) throws java.rmi.RemoteException; - public org.objectweb.wssample.gen.google.GoogleSearchResult doGoogleSearch(java.lang.String key, java.lang.String q, int start, int maxResults, boolean filter, java.lang.String restrict, boolean safeSearch, java.lang.String lr, java.lang.String ie, java.lang.String oe) throws java.rmi.RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchResult.java b/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchResult.java deleted file mode 100644 index 92d54ba100..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webclient/src/org/objectweb/wssample/gen/google/GoogleSearchResult.java +++ /dev/null @@ -1,450 +0,0 @@ -/** - * GoogleSearchResult.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC2 Dec 15, 2004 (10:53:17 CET) WSDL2Java emitter. - */ - -package org.objectweb.wssample.gen.google; - -public class GoogleSearchResult implements java.io.Serializable { - private boolean documentFiltering; - private java.lang.String searchComments; - private int estimatedTotalResultsCount; - private boolean estimateIsExact; - private org.objectweb.wssample.gen.google.ResultElement[] resultElements; - private java.lang.String searchQuery; - private int startIndex; - private int endIndex; - private java.lang.String searchTips; - private org.objectweb.wssample.gen.google.DirectoryCategory[] directoryCategories; - private double searchTime; - - public GoogleSearchResult() { - } - - public GoogleSearchResult( - boolean documentFiltering, - java.lang.String searchComments, - int estimatedTotalResultsCount, - boolean estimateIsExact, - org.objectweb.wssample.gen.google.ResultElement[] resultElements, - java.lang.String searchQuery, - int startIndex, - int endIndex, - java.lang.String searchTips, - org.objectweb.wssample.gen.google.DirectoryCategory[] directoryCategories, - double searchTime) { - this.documentFiltering = documentFiltering; - this.searchComments = searchComments; - this.estimatedTotalResultsCount = estimatedTotalResultsCount; - this.estimateIsExact = estimateIsExact; - this.resultElements = resultElements; - this.searchQuery = searchQuery; - this.startIndex = startIndex; - this.endIndex = endIndex; - this.searchTips = searchTips; - this.directoryCategories = directoryCategories; - this.searchTime = searchTime; - } - - - /** - * Gets the documentFiltering value for this GoogleSearchResult. - * - * @return documentFiltering - */ - public boolean isDocumentFiltering() { - return documentFiltering; - } - - - /** - * Sets the documentFiltering value for this GoogleSearchResult. - * - * @param documentFiltering - */ - public void setDocumentFiltering(boolean documentFiltering) { - this.documentFiltering = documentFiltering; - } - - - /** - * Gets the searchComments value for this GoogleSearchResult. - * - * @return searchComments - */ - public java.lang.String getSearchComments() { - return searchComments; - } - - - /** - * Sets the searchComments value for this GoogleSearchResult. - * - * @param searchComments - */ - public void setSearchComments(java.lang.String searchComments) { - this.searchComments = searchComments; - } - - - /** - * Gets the estimatedTotalResultsCount value for this GoogleSearchResult. - * - * @return estimatedTotalResultsCount - */ - public int getEstimatedTotalResultsCount() { - return estimatedTotalResultsCount; - } - - - /** - * Sets the estimatedTotalResultsCount value for this GoogleSearchResult. - * - * @param estimatedTotalResultsCount - */ - public void setEstimatedTotalResultsCount(int estimatedTotalResultsCount) { - this.estimatedTotalResultsCount = estimatedTotalResultsCount; - } - - - /** - * Gets the estimateIsExact value for this GoogleSearchResult. - * - * @return estimateIsExact - */ - public boolean isEstimateIsExact() { - return estimateIsExact; - } - - - /** - * Sets the estimateIsExact value for this GoogleSearchResult. - * - * @param estimateIsExact - */ - public void setEstimateIsExact(boolean estimateIsExact) { - this.estimateIsExact = estimateIsExact; - } - - - /** - * Gets the resultElements value for this GoogleSearchResult. - * - * @return resultElements - */ - public org.objectweb.wssample.gen.google.ResultElement[] getResultElements() { - return resultElements; - } - - - /** - * Sets the resultElements value for this GoogleSearchResult. - * - * @param resultElements - */ - public void setResultElements(org.objectweb.wssample.gen.google.ResultElement[] resultElements) { - this.resultElements = resultElements; - } - - - /** - * Gets the searchQuery value for this GoogleSearchResult. - * - * @return searchQuery - */ - public java.lang.String getSearchQuery() { - return searchQuery; - } - - - /** - * Sets the searchQuery value for this GoogleSearchResult. - * - * @param searchQuery - */ - public void setSearchQuery(java.lang.String searchQuery) { - this.searchQuery = searchQuery; - } - - - /** - * Gets the startIndex value for this GoogleSearchResult. - * - * @return startIndex - */ - public int getStartIndex() { - return startIndex; - } - - - /** - * Sets the startIndex value for this GoogleSearchResult. - * - * @param startIndex - */ - public void setStartIndex(int startIndex) { - this.startIndex = startIndex; - } - - - /** - * Gets the endIndex value for this GoogleSearchResult. - * - * @return endIndex - */ - public int getEndIndex() { - return endIndex; - } - - - /** - * Sets the endIndex value for this GoogleSearchResult. - * - * @param endIndex - */ - public void setEndIndex(int endIndex) { - this.endIndex = endIndex; - } - - - /** - * Gets the searchTips value for this GoogleSearchResult. - * - * @return searchTips - */ - public java.lang.String getSearchTips() { - return searchTips; - } - - - /** - * Sets the searchTips value for this GoogleSearchResult. - * - * @param searchTips - */ - public void setSearchTips(java.lang.String searchTips) { - this.searchTips = searchTips; - } - - - /** - * Gets the directoryCategories value for this GoogleSearchResult. - * - * @return directoryCategories - */ - public org.objectweb.wssample.gen.google.DirectoryCategory[] getDirectoryCategories() { - return directoryCategories; - } - - - /** - * Sets the directoryCategories value for this GoogleSearchResult. - * - * @param directoryCategories - */ - public void setDirectoryCategories(org.objectweb.wssample.gen.google.DirectoryCategory[] directoryCategories) { - this.directoryCategories = directoryCategories; - } - - - /** - * Gets the searchTime value for this GoogleSearchResult. - * - * @return searchTime - */ - public double getSearchTime() { - return searchTime; - } - - - /** - * Sets the searchTime value for this GoogleSearchResult. - * - * @param searchTime - */ - public void setSearchTime(double searchTime) { - this.searchTime = searchTime; - } - - private java.lang.Object __equalsCalc = null; - public synchronized boolean equals(java.lang.Object obj) { - if (!(obj instanceof GoogleSearchResult)) return false; - GoogleSearchResult other = (GoogleSearchResult) obj; - if (obj == null) return false; - if (this == obj) return true; - if (__equalsCalc != null) { - return (__equalsCalc == obj); - } - __equalsCalc = obj; - boolean _equals; - _equals = true && - this.documentFiltering == other.isDocumentFiltering() && - ((this.searchComments==null && other.getSearchComments()==null) || - (this.searchComments!=null && - this.searchComments.equals(other.getSearchComments()))) && - this.estimatedTotalResultsCount == other.getEstimatedTotalResultsCount() && - this.estimateIsExact == other.isEstimateIsExact() && - ((this.resultElements==null && other.getResultElements()==null) || - (this.resultElements!=null && - java.util.Arrays.equals(this.resultElements, other.getResultElements()))) && - ((this.searchQuery==null && other.getSearchQuery()==null) || - (this.searchQuery!=null && - this.searchQuery.equals(other.getSearchQuery()))) && - this.startIndex == other.getStartIndex() && - this.endIndex == other.getEndIndex() && - ((this.searchTips==null && other.getSearchTips()==null) || - (this.searchTips!=null && - this.searchTips.equals(other.getSearchTips()))) && - ((this.directoryCategories==null && other.getDirectoryCategories()==null) || - (this.directoryCategories!=null && - java.util.Arrays.equals(this.directoryCategories, other.getDirectoryCategories()))) && - this.searchTime == other.getSearchTime(); - __equalsCalc = null; - return _equals; - } - - private boolean __hashCodeCalc = false; - public synchronized int hashCode() { - if (__hashCodeCalc) { - return 0; - } - __hashCodeCalc = true; - int _hashCode = 1; - _hashCode += (isDocumentFiltering() ? Boolean.TRUE : Boolean.FALSE).hashCode(); - if (getSearchComments() != null) { - _hashCode += getSearchComments().hashCode(); - } - _hashCode += getEstimatedTotalResultsCount(); - _hashCode += (isEstimateIsExact() ? Boolean.TRUE : Boolean.FALSE).hashCode(); - if (getResultElements() != null) { - for (int i=0; - iGET and POST - * methods. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException default servlet exception thrown - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - // output your page here - out.println(""); - out.println(""); - out.println("Google WebService Response"); - out.println(""); - out.println(""); - out.println(""); - - out.println("
    "); - out.println("\"Jakarta"); - out.println("\"Mortbay"); - out.println("\"JOnAS"); - out.println("
    "); - - // Get and Display results - try { - // Get the Context - Context ctx = new InitialContext(); - - String key = (String) ctx.lookup("java:comp/env/key"); - - // Lookup the binded service - Object s = ctx.lookup("java:comp/env/service/google"); - GoogleSearchService google = (GoogleSearchService) s; - - // get the Port object - GoogleSearchPort search = google.getGoogleSearchPort(); - - // execute the query - GoogleSearchResult result = search.doGoogleSearch(key, request.getParameter("search"), 0, // first - // index - 10, // maxresult - false, //filter - null, //restrict - false, // safesearch - null, //lr - null, //ie - null //oe - ); - - out.println("
    Results
    "); - out.println("
    "); - - // Display the results - ResultElement[] elements = result.getResultElements(); - for (int i = 0; i < elements.length; i++) { - out.println("" + elements[i].getTitle() + "
    "); - out.println(elements[i].getSummary() + "

    "); - } - out.println("
    "); - - } catch (NamingException ne) { - out.println("
    Error when looking for service-ref
    "); - ne.printStackTrace(out); - } catch (ServiceException se) { - out.println("
    Error when performign service-ref
    "); - se.printStackTrace(out); - } - - out.println(""); - out.println(""); - out.close(); - } - - /** - * Handles the HTTP GET method. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException default servlet exception thrown - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Handles the HTTP POST method. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException default servlet exception thrown - */ - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - processRequest(request, response); - } - - /** - * @return Returns a short description of the servlet. - */ - public String getServletInfo() { - return "Servlet which is client of the WebServices API of Google"; - } - -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/README b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/README deleted file mode 100644 index 91034c89bc..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/README +++ /dev/null @@ -1,40 +0,0 @@ -webendpoint sample README ----------------------------- - -This sample show you how to use secured endpoint : -* how to configure the endpoint for Authentication -* how to configure your endpoint for Encryption - -You can directly use the authentication endpoint, but -some preliminary steps are required for the Encryption, -as it use a keystore and because Encryption needs BouncyCastle -JCE provider that is not packaged inside JOnAS (please -read the following). - -IMPORTANT : ------------ -If you want to use advanced capabilities of WSS4J, in particular Encryption, ... -You have to download BouncyCastle JCE Provider. -You can download latest version here : -http://www.bouncycastle.org/latest_releases.html -Choose the bcprov-jdk**-XXX.jar according to the JDK version you're running JOnAS on. -Place that downloaded jar in JONAS_ROOT/lib/commons/jonas/ws-security. -BouncyCastle provider will be available for the next JOnAS reboot. - -Please take the time to read the following web page : -http://www.bouncycastle.org/specifications.html -Especially the patent statement. - -How to create a keystore ? ---------------------------- - -Here are the steps : -1. create the keystore with an single certificate : -$> $JAVA_HOME/bin/keytool -genkey -alias jonas-ws -keyalg RSA -keystore $JONAS_BASE/conf/my-wssample-keystore - -2. You will be prompted for the keystore password, type "security" (without the quote) -3. Enter the certificate information (Name, Company, ...) -4. Reuse the SAME password ("security") for the certificate (just press enter) - -This will create a keystore in JONAS_BASE/conf with 1 certificate for the user 'jonas-ws'. -This keystore is used by WSS4Jhandler. diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/build.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/build.xml deleted file mode 100644 index 4f59f6fdde..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/build.xml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/credentials.properties b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/credentials.properties deleted file mode 100644 index e438706e37..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/credentials.properties +++ /dev/null @@ -1,2 +0,0 @@ -# Couple user/password -jonas SHA:NaLG+uYfgHeqth+qQBlyKr8FCTw= \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/sample-crypto.properties b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/sample-crypto.properties deleted file mode 100644 index ce0c0908e9..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/resources/sample-crypto.properties +++ /dev/null @@ -1,8 +0,0 @@ -org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin -org.apache.ws.security.crypto.merlin.keystore.type=pkcs12 -org.apache.ws.security.crypto.merlin.keystore.password=security -org.apache.ws.security.crypto.merlin.keystore.alias=jonas-ws -org.apache.ws.security.crypto.merlin.alias.password=security -# keystore filname -# Must be available from ClassLoader -org.apache.ws.security.crypto.merlin.file=my-wssample-keystore diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jetty.gif b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jetty.gif deleted file mode 100644 index 01f44a87f6801b200f142513d0d02b12cea0fb46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6649 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 A+yDRo diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jonas.ico b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/jonas.ico deleted file mode 100644 index 108c5c21ede334f3b80d9a373f618c52efee7877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmYk0+e;H*7>A!No!^}E)J)5?xjf86PM6DLt#p~0TBfr!4;@qzEwhW!jFM`I;t@1F zR6^mYCV}Rmf@%a&EP}f0rvIgH+l?>$emu|1d-0Z5JCyimTLDH%kuqU23WR^}ksYlG z#}HrGZO>rhi+R49tp`y%je4v?Foq^Am|`*Rp~=y^G4V4ydH zr@gWK*s5XvQ6610%P>sVxBa;$t3kYVf#k@OAATO*VNm ztYzws{CiT(#*B@n*>>!cpBHpBE)vIIzc_U3l?Id8^NB zGZMs+Cga(?^~Dvz(qqzOsZ)klOV diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_jonas_logo.gif b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_jonas_logo.gif deleted file mode 100644 index 1b56943a721f82a8cb81776030567772265433f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_logo.png b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/images/ow_logo.png deleted file mode 100644 index 60617270bf0c0d21c9f40e4f7c85ef5bfdbda548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11700 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 Ub;x?xOW1VGcfR$_MFao - - - - WebServices Endpoint Deployment in WebApp - - - - -
    - - Jakarta Tomcat - - Mortbay Jetty - JOnAS WebSite -
    - -
    WebServices Endpoint Deployment in WebApp
    - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/jaxrpcTest.jsp b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/jaxrpcTest.jsp deleted file mode 100644 index c816922d9f..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/jaxrpcTest.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@page contentType="text/html"%> - - - - Prepare Local JaxRpc WebService Call - - - - -
    - - Jakarta Tomcat - - Mortbay Jetty - JOnAS WebSite -
    - -
    Prepare Local JaxRpc WebService Call
    - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/style/ow_jonas.css b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/style/ow_jonas.css deleted file mode 100644 index c3f068d9a5..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/web/style/ow_jonas.css +++ /dev/null @@ -1,119 +0,0 @@ -/* - Context Root css. based on css from http://jonas.objectweb.org - XHTML by Florent BENOIT -*/ - -.bodywelcome -{ - background-color: #FFFFFF; - color: #000000; - background-image: url(../images/ow_logo.png); - background-repeat: no-repeat; - margin: 0; -} - - -img { - margin: 5px; - border:0; -} - -body -{ - background-color: #FFFFFF; - margin: 10px; - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; - -} - -div.logos { - top: 5px; - width: 99%; - text-align: right; -} - - -div.links { - margin-top : 40px; - margin-left : 200px; -} - - -div.titlepage { - margin-left: 200px; - color: #E06611; - font-family: Arial, Helvetica, sans-serif; - font-size: 22px; - line-height: 27px; - font-weight: bold; - border-color: #99C; - border-width: 0 0 4px 0; - border-style: none none solid none; -} - - -div.footer { - margin-top : 50px; - color: #FFFFFF; - font-size: 8pt; - text-align: center; -} - - -/*HTML elements */ - - - -ul, ol, dl -{ - color: black; - font-family: Arial,Helvetica, sans-serif; - font-size: 12px; - line-height: 16px; - font-weight: normal; -} - -li -{ - color: black; - font-family: Arial, Helvetica, sans-serif; - font-size: 14px; - font-weight: normal; - margin: 10px 0px 5px 0px; - -} -a -{ - color: #3F3975; - background-color: transparent; - text-decoration: underline; -} - -a:visited -{ - color: #9898CB; - background-color: transparent; - text-decoration: underline; -} - -a:hover -{ - color: #E06611; - background-color: transparent; - text-decoration: underline; -} - - -a:active -{ - color: #FFFFFF; - background-color: #E06611; - text-decoration: underline; -} - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/clientMapping.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/clientMapping.xml deleted file mode 100644 index 6ad4979e7a..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/clientMapping.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - org.objectweb.wssample.gen.jaxrpc - http://ws.servlets.wssample.objectweb.org - - \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jaxrpcEndpointMapping.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jaxrpcEndpointMapping.xml deleted file mode 100644 index 143af0b1db..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jaxrpcEndpointMapping.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - org.objectweb.wssample.servlets.ws - http://ws.servlets.wssample.objectweb.org - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jonas-webservices.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jonas-webservices.xml deleted file mode 100644 index c69b1dda8b..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/jonas-webservices.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - MyWebService - - - jaxrpcEndpoint1 - /endpoints/jaxrpc - - - encryptedEndpoint - /endpoints/encrypted - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/web.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/web.xml deleted file mode 100644 index fb7140f49b..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/web.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - WebServices packaged in WebApp Sample - - JaxRpcEndpoint1 Servlet - JaxRpcEndpoint1 - org.objectweb.wssample.servlets.ws.JaxRpcEndpoint - - - EncryptedJaxRpcEndpoint Servlet - EncryptedJaxRpcEndpoint - org.objectweb.wssample.servlets.ws.JaxRpcEndpoint - - - - JaxRpcEndpoint Test Servlet - JaxRpcEndpointTest - org.objectweb.wssample.servlets.wsclient.JOnASJaxRpcClientServlet - - - - JaxRpcEndpointTest - /jaxrpcTest.do - - - - service/jaxrpc - org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterfaceService - WEB-INF/wsdl/jaxrpcEndpoint.wsdl - WEB-INF/clientMapping.xml - - org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface - wswarsample.war#jaxrpcEndpoint1 - - - - WSS4JHandler-UsernameToken - org.apache.ws.security.handler.WSS4JHandler - - - - - - - - action - UsernameToken - - - - - flow - request-only - - - - - - passwordCallbackClass - org.objectweb.wssample.security.ServerSideCallbackHandler - - - - - passwordType - PasswordDigest - - - - - - deployment - client - - - - - - JaxRpcEndpoint1 - - - - - service/crypted-jaxrpc - org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterfaceService - WEB-INF/wsdl/jaxrpcEndpoint.wsdl - WEB-INF/clientMapping.xml - - org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface - wswarsample.war#encryptedEndpoint - - - - WSS4JHandler-Encryption - org.apache.ws.security.handler.WSS4JHandler - - - - - - - - - action - UsernameToken Encrypt - - - - - flow - request-only - - - - - - passwordCallbackClass - org.objectweb.wssample.security.ServerSideCallbackHandler - - - - - passwordType - PasswordDigest - - - - - - deployment - client - - - - - - mustUnderstand - true - - - - addUTElement - Nonce Created - - - - - - - encryptionPropFile - sample-crypto.properties - - - - encryptionKeyIdentifier - X509KeyIdentifier - - - - encryptionUser - jonas-ws - - - - encryptionParts - {Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken - - - - - - EncryptedJaxRpcEndpoint - - - - - - - Protected Area - - /jaxrpcTest.do - - DELETE - GET - POST - PUT - - - - ws-security - - - - - - BASIC - Example Basic Authentication Area - - - - - ws-security - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/webservices.xml b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/webservices.xml deleted file mode 100644 index c3bf0b44b4..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/webservices.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - MyWebServices - - MyWebService - WEB-INF/wsdl/jaxrpcEndpoint.wsdl - WEB-INF/jaxrpcEndpointMapping.xml - - jaxrpcEndpoint1 - servletswssample:JaxRpcEndpoint1 - org.objectweb.wssample.servlets.ws.JaxRpcEndpointInterface - - JaxRpcEndpoint1 - - - - WSS4JHandler - - org.apache.ws.security.handler.WSS4JHandler - - - - - - - action - UsernameToken - - - - flow - request-only - - - - - passwordCallbackClass - org.objectweb.wssample.security.ServerSideCallbackHandler - - - - deployment - server - - - - - - encryptedEndpoint - ws:EncryptedJaxRpcEndpoint - org.objectweb.wssample.servlets.ws.JaxRpcEndpointInterface - - EncryptedJaxRpcEndpoint - - - - WSS4JHandler - - org.apache.ws.security.handler.WSS4JHandler - - - - - - - action - UsernameToken Encrypt - - - - flow - request-only - - - - - passwordCallbackClass - org.objectweb.wssample.security.ServerSideCallbackHandler - - - - deployment - server - - - - - decryptionPropFile - sample-crypto.properties - - - - mustUnderstand - true - - - - encryptionUser - jonas-ws - - - - encryptionParts - {Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken - - - - encryptionKeyIdentifier - DirectReference - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/wsdl/jaxrpcEndpoint.wsdl b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/wsdl/jaxrpcEndpoint.wsdl deleted file mode 100644 index 68966684a7..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/etc/xml/wsdl/jaxrpcEndpoint.wsdl +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterface.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterface.java deleted file mode 100644 index 4f4ea1a6bf..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterface.java +++ /dev/null @@ -1,13 +0,0 @@ -/** - * JaxRpcEndpointInterface.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC2 Dec 15, 2004 (10:53:17 CET) WSDL2Java emitter. - */ - -package org.objectweb.wssample.gen.jaxrpc; - -public interface JaxRpcEndpointInterface extends java.rmi.Remote { - public java.lang.String sayHello(java.lang.String in0) throws java.rmi.RemoteException; - public int getCotes() throws java.rmi.RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterfaceService.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterfaceService.java deleted file mode 100644 index 2c077c7234..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/gen/jaxrpc/JaxRpcEndpointInterfaceService.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * JaxRpcEndpointInterfaceService.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2RC2 Dec 15, 2004 (10:53:17 CET) WSDL2Java emitter. - */ - -package org.objectweb.wssample.gen.jaxrpc; - -public interface JaxRpcEndpointInterfaceService extends javax.xml.rpc.Service { - public java.lang.String getJaxRpcEndpoint1Address(); - - public org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface getJaxRpcEndpoint1() throws javax.xml.rpc.ServiceException; - - public org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface getJaxRpcEndpoint1(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; - - public org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface getEncryptedJaxRpcEndpoint() throws javax.xml.rpc.ServiceException; - - public org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface getEncryptedJaxRpcEndpoint(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/security/ServerSideCallbackHandler.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/security/ServerSideCallbackHandler.java deleted file mode 100644 index c093be3114..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/security/ServerSideCallbackHandler.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.security; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.UnsupportedCallbackException; - -import org.apache.ws.security.WSPasswordCallback; - -/** - * WSS4J Sample CallbackHandler. It is intended to be used from a JOnAS server (servlet/ejb client & JAX-RPC/SSB endpoint). - * It will get the 'memrlm_1' instance and try to get the needed password from that JResource. - * - * @author Guillaume Sauthier - */ -public class ServerSideCallbackHandler implements CallbackHandler { - - /** - * encryptionUser value (used to access keystore - look in crypto.properties) - */ - private static final String ENCRYPTION_USER = "jonas-ws"; - - /** - * encryptionUser password : password used to access keystore - */ - private static final String ENCRYPTION_PASSWORD = "security"; - - /** - * File name which contains credentials - */ - private static final String CREDENTIALS_FILE_NAME = "credentials.properties"; - - /** - * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[]) - */ - public void handle(Callback[] callbacks) throws IOException, - UnsupportedCallbackException { - for (int i = 0; i < callbacks.length; i++) { - if (callbacks[i] instanceof WSPasswordCallback) { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; - // set the password given a username - - if (!ENCRYPTION_USER.equals(pc.getIdentifer())) { - // Get hash password for this identifier - InputStream is = getClass().getResourceAsStream("/" + CREDENTIALS_FILE_NAME); - Properties props = new Properties(); - props.load(is); - String password = props.getProperty(pc.getIdentifer()); - // Set the password - pc.setPassword(password); - } else { - // this is the ecryption username - // we must return the correct password (stored in crypto.properties) - pc.setPassword(ENCRYPTION_PASSWORD); - } - - } else { - throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback"); - } - } - } - -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpoint.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpoint.java deleted file mode 100644 index 6477f88047..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpoint.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.servlets.ws; - -import org.ow2.jonas.lib.util.Log; - -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * Service implementation of JaxRpcEndpointInterface. This class is a JaxRpc - * endpoint. It is declared in the web.xml. And it will run inside the web - * container. - * - * Notice that a default class constructor is REQUIRED. - * Notice that JaxRpcEndpoint does not implements JaxRpcEndpointInterface - * This is not a requirement. - * - * This JAXRPC service endpoint class may implements javax.xml.rpc.server.ServiceLifecycle - * interface. - * - * @see org.objectweb.wssample.servlets.ws.JaxRpcEndpointInterface - * - * @author Guillaume Sauthier - */ -public class JaxRpcEndpoint { - - /** - * return value of getCotes() - */ - private static final int GET_COTES_VALUE = 12; - - /** - * logger - */ - private static Logger logger = Log.getLogger("org.ow2.jonas.ws"); - - /** - * default constructor needed for JaxRpc Service Endpoint. - */ - public JaxRpcEndpoint() { - } - - /** - * @param name String to append to "Hello " - * @return Returns "Hello " + name - */ - public String sayHello(String name) { - logger.log(BasicLevel.INFO, "sayHello(" + name + ") invoked."); - return "Hello " + name; - } - - /** - * @return Returns an arbitrary integer - */ - public int getCotes() { - logger.log(BasicLevel.INFO, "getCotes() invoked."); - return GET_COTES_VALUE; - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpointInterface.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpointInterface.java deleted file mode 100644 index 44bca25b38..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/ws/JaxRpcEndpointInterface.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.servlets.ws; - -import java.rmi.Remote; -import java.rmi.RemoteException; - -/** - * The Service interface. - * Notice that it extends Remote and all methods are throwing RemoteException - * @see org.objectweb.wssample.servlets.ws.JaxRpcEndpoint - * @author Guillaume Sauthier - */ -public interface JaxRpcEndpointInterface extends Remote { - - /** - * @param name String to append to "Hello " - * @return Returns "Hello " + name - * @throws RemoteException required because of the Remote interface - */ - String sayHello(String name) throws RemoteException; - - /** - * @return Returns an arbitrary integer - * @throws RemoteException required because of the Remote interface - */ - int getCotes() throws RemoteException; -} diff --git a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/wsclient/JOnASJaxRpcClientServlet.java b/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/wsclient/JOnASJaxRpcClientServlet.java deleted file mode 100644 index 7ffc78f225..0000000000 --- a/jonas_tests/examples/base/examples/webservices/webs/webendpoint/src/org/objectweb/wssample/servlets/wsclient/JOnASJaxRpcClientServlet.java +++ /dev/null @@ -1,191 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.wssample.servlets.wsclient; - -import java.io.IOException; -import java.io.PrintWriter; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.rpc.ServiceException; -import javax.xml.rpc.Stub; - -import org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterface; -import org.objectweb.wssample.gen.jaxrpc.JaxRpcEndpointInterfaceService; - -/** - * @author Guillaume Sauthier - */ -public class JOnASJaxRpcClientServlet extends HttpServlet { - - /** - * Initializes the servlet. - * @param config ServletConfig - * @throws ServletException thrown by super.init(config); - */ - public void init(ServletConfig config) throws ServletException { - super.init(config); - } - - /** - * Destroys the servlet. - */ - public void destroy() { - - } - - /** - * Processes requests for both HTTP GET and POST - * methods. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException servlet exception thrown - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - - out.println(""); - out.println(""); - out.println("JOnAS JaxRpc WebService Test Page"); - out.println(""); - out.println(""); - out.println(""); - - out.println("
    "); - out.println("\"Jakarta"); - out.println("\"Mortbay"); - out.println("\"JOnAS"); - out.println("
    "); - - // do we need to use the encrypted endpoint or not ? - boolean encrypt = false; - if ("true".equalsIgnoreCase(request.getParameter("encrypt"))) { - encrypt = true; - } - - try { - - // Get the service instance - //--------------------------------------------- - Context ctx = new InitialContext(); - JaxRpcEndpointInterfaceService service = null; - JaxRpcEndpointInterface port = null; - - // We can use the same service because the 2 ws use the same interface - // Get the port where execute methods - - if (encrypt) { - service = (JaxRpcEndpointInterfaceService) ctx.lookup("java:comp/env/service/crypted-jaxrpc"); - //--------------------------------------------- - port = service.getEncryptedJaxRpcEndpoint(); - } else { - service = (JaxRpcEndpointInterfaceService) ctx.lookup("java:comp/env/service/jaxrpc"); - //--------------------------------------------- - port = service.getJaxRpcEndpoint1(); - } - - // Use the context username for WSS4JHandler - ((Stub) port)._setProperty("user", request.getUserPrincipal().getName()); - - // Execute Methods : - String hello = port.sayHello(request.getParameter("name")); - int cotes = port.getCotes(); - - if (encrypt) { - out.println("
    Results With Encryption
    "); - } else { - out.println("
    Results
    "); - } - out.println("
    "); - - // Display results : - out.println("Working with URL : " + ((Stub) port)._getProperty(Stub.ENDPOINT_ADDRESS_PROPERTY) - + "
    "); - out.println("result of sayHello(name) method :" + hello + "
    "); - out.println("result of getCotes() method :" + cotes + "
    "); - - out.println("
    "); - } catch (ServiceException se) { - out.println("
    Something goes wrong when calling the WebService
    "); - se.printStackTrace(out); - out.println("
    "); - } catch (NamingException ne) { - out.println("
    Exception while retrieving InitialContext
    "); - ne.printStackTrace(out); - out.println("
    "); - } - - out.println(""); - out.println(""); - - out.close(); - } - - /** - * Handles the HTTP GET method. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException default servlet exception thrown - */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Handles the HTTP POST method. - * - * @param request servlet request - * @param response servlet response - * - * @throws ServletException default servlet exception thrown - * @throws IOException default servlet exception thrown - */ - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, - IOException { - processRequest(request, response); - } - - /** - * @return Returns a short description of the servlet. - */ - public String getServletInfo() { - return "Short description"; - } - -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/xdoclet/ClientCustomer.java b/jonas_tests/examples/base/examples/xdoclet/ClientCustomer.java deleted file mode 100644 index f930ff7b21..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/ClientCustomer.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package xdoclet; - -import java.io.BufferedReader; -import java.io.FileInputStream; -import java.io.InputStreamReader; -import java.io.IOException; -import java.rmi.RemoteException; -import java.util.Collection; -import java.util.Iterator; -import java.util.Hashtable; -import java.util.Properties; -import javax.ejb.FinderException; -import javax.ejb.RemoveException; -import javax.transaction.UserTransaction; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import xdoclet.CustomerHomeRemote; -import xdoclet.CustomerRemote; - -/** - * Sample for entity beans CMP2 xdoclet - */ - -public class ClientCustomer { - - private static UserTransaction utx = null; - - private static void PrintAllCustomerAndPhones(CustomerHomeRemote h) { - Iterator alist; - CustomerRemote customer; - String phone; - try { - utx.begin(); // faster if made inside a Tx - alist = h.findAllCustomers().iterator(); - while (alist.hasNext()) { - customer = (CustomerRemote) alist.next(); - System.out.println("Customer name is :" + customer.getLastName() + " " + customer.getFirstName()); - Iterator phonelist = customer.getPhoneList().iterator(); - while (phonelist.hasNext()) { - phone = (String) phonelist.next(); - System.out.println("Phone number is: " + phone); - } - } - utx.commit(); - } catch (Exception e) { - System.err.println("Exception getting all Customer phone list: " + e); - System.exit(2); - } - } - - public static void main(String[] args) { - - String beanName = "CustomerBeanHome"; - - // get JNDI initial context - Context initialContext = null; - try { - initialContext = new InitialContext(); - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: " + e); - System.exit(2); - } - - // We want to start transactions from client: get UserTransaction - System.out.println("Getting a UserTransaction object from JNDI"); - try { - - // Comment the following lines if you want to use a David Client: - utx = (UserTransaction) initialContext.lookup("javax.transaction.UserTransaction"); - - } catch (Exception e) { - System.err.println("Cannot lookup UserTransaction: " + e); - System.exit(2); - } - - // Connecting to Home thru JNDI - System.out.println("Connecting to the CustomerHome"); - CustomerHomeRemote home = null; - try { - home = (CustomerHomeRemote) PortableRemoteObject.narrow(initialContext.lookup(beanName), - CustomerHomeRemote.class); - } catch (Exception e) { - System.err.println("Cannot lookup " + beanName + ": " + e); - System.exit(2); - } - - // List existing customer - System.out.println("Getting the list of existing Customer in database"); - PrintAllCustomerAndPhones(home); - - // Create a first customer - System.out.println("Creating a new customer in database"); - CustomerRemote c1 = null; - try { - c1 = home.create(new Integer(1), new Name("jerome", "camilleri")); - } catch (Exception e) { - System.err.println("Cannot create Customer: " + e); - System.exit(2); - } - - // Add phone number - try { - c1.addPhoneNumber("0476254717", (byte) 0); - c1.addPhoneNumber("0625785511", (byte) 0); - } catch (Exception e) { - System.out.println("Problem during add phone number"); - e.printStackTrace(System.out); - } - // List existing customer - System.out.println("Getting the list of customer with Phone number in database"); - PrintAllCustomerAndPhones(home); - - // Delete Account2 - System.out.println("Removing Customer and phone previously created in database"); - try { - c1.removePhoneNumber((byte) 0); - c1.remove(); - } catch (Exception e) { - System.err.println("exception during remove: " + e); - System.exit(2); - } - - // Exit program - System.out.println("ClientCustomer terminated"); - } - -} - diff --git a/jonas_tests/examples/base/examples/xdoclet/CustomerBean.java b/jonas_tests/examples/base/examples/xdoclet/CustomerBean.java deleted file mode 100644 index 91756f811b..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/CustomerBean.java +++ /dev/null @@ -1,262 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package xdoclet; - -import java.rmi.RemoteException; -import javax.ejb.EntityBean; -import javax.ejb.EntityContext; -import javax.ejb.ObjectNotFoundException; -import javax.ejb.RemoveException; -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import java.util.Date; -import java.util.Collection; -import java.util.Iterator; -import java.util.Vector; -import javax.naming.InitialContext; -import javax.naming.NamingException; -/** - * CustomerBean is an entity bean with "container managed persistence version 2". - * The state of an instance is stored into a relational database. - * - * @ejb.bean - * name="CustomerBean" - * description="Deployment descriptor for the CustomerBean bean with CMP2 JOnAS example" - * type="CMP" - * view-type="both" - * primkey-field="id" - * jndi-name="CustomerBeanHome" - * cmp-version="2.x" - * reentrant="false" - * @ejb.home - * remote-class="xdoclet.CustomerHomeRemote" - * local-class="xdoclet.CustomerHomeLocal" - * @ejb.interface - * remote-class="xdoclet.CustomerRemote" - * local-class="xdoclet.CustomerLocal" - * @ejb:pk - * class="java.lang.Integer" - * @ejb.ejb-ref - * ejb-name="PhoneBean" - * view-type="local" - * ref-name="ejb/PhoneHomeLocal" - * - * @jonas.jdbc-mapping - * jdbc-table-name = "MyCustomer" - * - * @ejb:finder - * signature= "java.util.Collection findByName(java.lang.String lastName, java.lang.String firstName)" - * query ="SELECT OBJECT(c) FROM CustomerBean c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2" - * @ejb:finder - * signature= "java.util.Collection findAllCustomers()" - * query ="SELECT OBJECT(c) FROM CustomerBean AS c" - * - * @jonas.session-timeout - * session-timeout="60" - * @ejb:transaction - * type="Required" - */ -public abstract class CustomerBean implements EntityBean { - - // Keep the reference on the EntityContext - protected EntityContext entityContext; - - /** - * EJBCREATE - * @return pk primary key set to null - * - * @ejb.create-method - */ - public Integer ejbCreate(Integer id, Name name) - throws CreateException { - setLastName(name.getLastName()); - setFirstName(name.getFirstName()); - - // Init object state - this.setId(id); - return null; - } - - public void ejbPostCreate(Integer id, Name name) {} - - // business methods - /** - * @ejb.interface-method - * - **/ - public Name getName() { - Name name = new Name(getLastName(),getFirstName()); - return name; - } - /** - * @ejb.interface-method - **/ - public void setName(Name name) { - setLastName(name.getLastName()); - setFirstName(name.getFirstName()); - } - - - /** - * @ejb.interface-method - **/ - public void addPhoneNumber(String number, byte type) throws NamingException, CreateException { - InitialContext jndiEnc = new InitialContext(); - PhoneHomeLocal phoneHomeL = (PhoneHomeLocal) (jndiEnc.lookup("java:comp/env/ejb/PhoneHomeLocal")); - - PhoneLocal phone = phoneHomeL.create(number, type); - Collection phoneNumbers = this.getPhoneNumber(); - phoneNumbers.add(phone); - } - - /** - * @ejb.interface-method - **/ - public void removePhoneNumber(byte typeToRemove) { - Collection phoneNumbers = this.getPhoneNumber(); - Iterator iterator = phoneNumbers.iterator(); - - while (iterator.hasNext()) { - PhoneLocal phone = (PhoneLocal) iterator.next(); - if (phone.getType() == typeToRemove) { - phoneNumbers.remove(phone); - try { - phone.remove(); - } catch (Exception e) { - System.out.println("Problem during removing phone"); - } - } - - } - } - - /** - * @ejb.interface-method - **/ - public void updatePhoneNumber(String number, byte typeToUpdate) { - Collection phoneNumbers = this.getPhoneNumber(); - Iterator iterator = phoneNumbers.iterator(); - while (iterator.hasNext()) { - PhoneLocal phone = (PhoneLocal) iterator.next(); - if (phone.getType() == typeToUpdate) { - phone.setNumber(number); - break; - } - } - } - - /** - * @ejb.interface-method - **/ - public Vector getPhoneList() { - - Vector vv = new Vector(); - Collection phoneNumbers = this.getPhoneNumber(); - - Iterator iterator = phoneNumbers.iterator(); - while (iterator.hasNext()) { - PhoneLocal phone = (PhoneLocal) iterator.next(); - String ss = "Type=" + phone.getType() + " Number=" + phone.getNumber(); - vv.add(ss); - } - return vv; - } - - // persistent relationships - /** - * @ejb.relation - * name="CUSTOMER-PHONE" - * role-name="PHONE-has-CUSTOMER" - * target-ejb="PhoneBean" - * target-role-name="CUSTOMER-has-PHONE" - * - * @jonas.field-mapping - * foreign-key-jdbc-name="CUSTOMER_FK_PHONE" - * key-jdbc-name="CustomerId" - **/ - public abstract Collection getPhoneNumber( ); - public abstract void setPhoneNumber(Collection phones); - - // abstract accessor methods - /** - * @ejb.persistent-field - * @ejb.interface-method - * @jonas.cmp-field-jdbc-mapping - * field-name="id" - * jdbc-field-name="CustomerId" - */ - public abstract Integer getId(); - - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract void setId(Integer id); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract String getLastName( ); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract void setLastName(String lname); - - /** - * @ejb.persistence - * column-name="CustomerFirstName" - * jdbc-type="VARCHAR" - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract String getFirstName( ); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract void setFirstName(String fname); - - // standard call back methods - - public void ejbActivate() {} - public void ejbLoad() {} - public void ejbPassivate() {} - public void ejbRemove() throws RemoveException {} - - public void ejbStore() {} - - - public void setEntityContext(EntityContext ctx) { - - // Keep the entity context in object - entityContext = ctx; - } - - public void unsetEntityContext() { - entityContext = null; - } - -} diff --git a/jonas_tests/examples/base/examples/xdoclet/Name.java b/jonas_tests/examples/base/examples/xdoclet/Name.java deleted file mode 100644 index 4faa7469ca..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/Name.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package xdoclet; - -public class Name implements java.io.Serializable { - - private String lastName; - - private String firstName; - - public Name(String lname, String fname) { - lastName = lname; - firstName = fname; - } - - public String getLastName() { - return lastName; - } - - public String getFirstName() { - return firstName; - } -} \ No newline at end of file diff --git a/jonas_tests/examples/base/examples/xdoclet/PhoneBean.java b/jonas_tests/examples/base/examples/xdoclet/PhoneBean.java deleted file mode 100644 index 66c64b9aed..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/PhoneBean.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2004 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package xdoclet; - -import javax.ejb.EntityContext; -import java.util.Date; -import javax.naming.InitialContext; -import javax.naming.NamingException; -/** - * PhoneBean is an entity bean with "container managed persistence version 2". - * The state of an instance is stored into a relational database. - * - * @ejb.bean - * name="PhoneBean" - * description="Deployment descriptor for the PhoneBean bean with CMP2 JOnAS example" - * type="CMP" - * view-type="local" - * jndi-name="PhoneBeanHome" - * cmp-version="2.x" - * reentrant="false" - * @ejb.home - * local-class="xdoclet.PhoneHomeLocal" - * @ejb.interface - * local-class="xdoclet.PhoneLocal" - * @ejb:pk - * class="java.lang.Object" - * @jonas.jdbc-mapping - * automatic-pk-field-name="pkphone" - * @ejb:finder - * signature= "java.util.Collection findAllPhones()" - * query ="SELECT OBJECT(o) FROM PhoneBean o" - * @jonas.session-timeout - * session-timeout="60" - * @ejb:transaction type="Required" - */ - -public abstract class PhoneBean implements javax.ejb.EntityBean { - - /** - * EJBCREATE - * @return pk primary key set to null - * - * @ejb.create-method - */ - public Object ejbCreate( String number, byte type) throws javax.ejb.CreateException { - setNumber(number); - setType(type); - return null; - } - - public void ejbPostCreate(String number, byte type) { - System.out.println("PhoneBean ejbPostCreate number= "+number); - } - - - - /** - * @ejb.persistent-field - * @ejb.interface-method - * @jonas.cmp-field-jdbc-mapping - * field-name="number" - * jdbc-field-name="PhoneNumber" - */ - public abstract String getNumber(); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract void setNumber(String number); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract byte getType(); - /** - * @ejb.persistent-field - * @ejb.interface-method - */ - public abstract void setType(byte type); - - // standard call back methods - - public void setEntityContext(EntityContext ec){} - public void unsetEntityContext(){} - public void ejbLoad(){} - public void ejbStore(){} - public void ejbActivate(){} - public void ejbPassivate(){} - public void ejbRemove() throws javax.ejb.RemoveException{} - -} diff --git a/jonas_tests/examples/base/examples/xdoclet/README b/jonas_tests/examples/base/examples/xdoclet/README deleted file mode 100644 index ece9448495..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/README +++ /dev/null @@ -1,131 +0,0 @@ -Copyright (C) BULL S.A. 1998-2002 - -Please read How to configure and use xdoclet for JOnAS at : -http://jonas.objectweb.org/current/doc/howto/howtoXdoclet.html - -Entity beans "Customer-Phone" for xdoclet ------------------------------------------ -CustomerBean entity bean with CMP2 persistance and relationship (CustomerBean--1------------n-->PhoneBean) -PhoneBean entity bean with CMP2 persitance - -this directory contains initially only this files : -build.xml : the build which contain target for xdoclet and jonas compilation -build.properties : properties for jonas target -CustomerBean.java : Bean class with xdoclet tag -PhoneBean.java : Bean class with xdoclet tag -Name.java : Utilities class -ClientCustomer.java : Client -README : - -Generated this example with xdoclet: ------------------------------------ -Using default target (install) ; - -You should have this return : -ejbdoclet: -[ejbdoclet] Dec 15, 2004 2:39:04 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Generating Remote interface for 'xdoclet.CustomerBean'. -[ejbdoclet] Dec 15, 2004 2:39:04 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Generating Local interface for 'xdoclet.CustomerBean'. -[ejbdoclet] Generating Local interface for 'xdoclet.PhoneBean'. -[ejbdoclet] Dec 15, 2004 2:39:04 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Generating Home interface for 'xdoclet.CustomerBean'. -[ejbdoclet] Dec 15, 2004 2:39:04 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Generating Local Home interface for 'xdoclet.CustomerBean'. -[ejbdoclet] Generating Local Home interface for 'xdoclet.PhoneBean'. -[ejbdoclet] Dec 15, 2004 2:39:05 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Generating EJB deployment descriptor (ejb-jar.xml). -[ejbdoclet] Dec 15, 2004 2:39:05 PM xdoclet.XDocletMain start -[ejbdoclet] INFO: Running -[ejbdoclet] Dec 15, 2004 2:39:05 PM xdoclet.TemplateSubTask engineStarted -[ejbdoclet] INFO: Generating output 'jonas-ejb-jar.xml' using template file 'jar:file:/home/camillej/MyJonas/JONAS_4_2/lib/examples/xdoclet-objectweb-module-1.2.2.jar!/xdoclet/modules/objectweb/jonas/ejb/resources/jonas.xdt'. - -compile: - [javac] Compiling 10 source files to /home/camillej/MyJonas/JONAS_4_2/examples/classes - -jonasejbjar: - [ejbjar] building xdoclet.jar with 11 files - [genic] GenIC for JOnAS 4.2.2: 'CustomerBean', 'PhoneBean' generation ... - [genic] Stubs and Skels successfully generated for rmi/jrmp - -install: - [copy] Copying 1 file to /home/camillej/MyJonas/JONAS_4_2/ejbjars - - -9 files must be generated into the current directory : - CustomerRemote.java - CustomerLocal.java - CustomerHomeRemote.java - PhoneLocal.java - PhoneHomeLocal.java - PhoneBean.java - CustomerHomeLocal.java - jonas-ejb-jar.xml - ej-jar.xml - -Compiling this example: ------------------------ -ant install - - -Running this example: ---------------------- -Your database access should be configured: a properties files defining a - Datasource object should be defined in $JONAS_BASE/conf (e.g. InstantDB1.properties), - and the property jonas.service.dbm.datasources of the jonas.properties file should - be set to the name of this datasource description file (e.g. InstantDB1). See JOnAS - documentation for more details. - -1) Run an EJB Server to make beans available to clients: - -on UNIX or Windows - - jonas start - -2) Load xdoclet.jar if you have not added it in the ejb vice descriptors list: - - jonas admin -a $JONAS_BASE/ejbjars/xdoclet.jar - -You should see something like this when the bean is loaded : - ... -2003-03-07 13:50:24,112 : JContainer.addBean : CustomerBean is loaded and using rdb.mysql -2003-03-07 13:50:24,112 : JContainer.addBean : CustomerBean available -2003-03-07 13:50:24,622 : JContainer.addBean : PhoneBean is loaded and using rdb.mysql -2003-03-07 13:50:24,622 : JContainer.addBean : PhoneBean available -2003-03-07 13:50:24,662 : ServiceManager.startServices : ejb service started - -3) Run the client program: - -on UNIX: - jclient -cp $JONAS_BASE/ejbjars/xdoclet.jar xdoclet.ClientCustomer - -On Windows: - jclient -cp "%JONAS_BASE%\ejbjars\xdoclet.jar" xdoclet.ClientCustomer - -In fact, the "-cp" option is not useful here, because classes are found in the CLASSPATH. - -You should see something like this when the client is run : - -Getting a UserTransaction object from JNDI -Connecting to the CustomerHome -Getting the list of existing Customer in database -Creating a new customer in database -PhoneBean ejbPostCreate number= 0476254717ID = 0 -PhoneBean ejbPostCreate number= 0625785511ID = 1 -Getting the list of customer with Phone number in database -Customer name is :jerome camilleri -Phone number is:Type=0 Number=0476254717 -Phone number is:Type=0 Number=0625785511 -Removing Customer and phone previously created in database -ClientCustomer terminated - -At the end of the test all bean are removed. - -4) Stop the jonas server - jonas stop - diff --git a/jonas_tests/examples/base/examples/xdoclet/build.xml b/jonas_tests/examples/base/examples/xdoclet/build.xml deleted file mode 100644 index ce8157ca2a..0000000000 --- a/jonas_tests/examples/base/examples/xdoclet/build.xml +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-1.2.2.jar b/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-1.2.2.jar deleted file mode 100644 index a5a2764441976e2e0d8a26bdb3ece84e87ac4146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146897 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
    DX;PHi0DO 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 YmMXN02m_nQVz6F1urkR4B0AXr0jZ=AVE_OC diff --git a/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-ejb-module-1.2.2.jar b/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-ejb-module-1.2.2.jar deleted file mode 100644 index 8692fd538eaa435e43d9bc6fdb70beff1f3ccbaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211057 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�RrdFHKIaR~IxjUc>}dyS55su7xW>UrEA`WTGP(U5NfsGIIQY zsU>q;&!=SyUovJdGv{{RsP{HjJnM8$<0_TToitTPLuF`YtkSMMMV>C``6v5#z?*9f z!?33alVi;>b?v7gyypCoNaivp6V_kj$N@JA7Gq`C&LbB9F)nQ~(-<`I89e;x`kEm{ zaZe6Pt`y09x^yFfXL#RtNvzW$dX;^pSVqH`8XDZw-(x%)3@k=3N%n7ZLF;r`V3te1S|UK#y`=4*(TEG2Z&%xTUKo!tM&TzfZsM2QVcmzC?=+%Bquj zr$OEGc^e253J1URtmu@VO1*$;$Qoq^6AEL3zz7V)S=z^-?EEEvJt7yaOCM-m?I!n; z5l%Jc>|NbGy+KqYjd61i8PwyuEX?nrY95p9^_P)eENHPn+YQK-e4+Lgk5}?X^^G-< zY)jy=!FIN|5oGDVXYF`(BaE{Hh86PVQ?Z>s^@S?dky&gTx&&;$?}EEidc+%@+jv{;~XG?EG;Zcr^pp#`57wB zujDRj+`tK`cjJ!yamOI5**J1sWwlA`>bG4U4%huebwN?`x+?ui1*%Ltv1G*Imc}-t z7M?-%jCswPFgfA?{!SR=iX?abkb>PUEV2|!mw3@NMGCp%d~B<|m|>C+qVfb5>=H!{ zJ+}Ze?KKq-KlY{i>oXDod|3|VNGXL%`<00ZQ4695N|9ZHd(o(yydxMMRMrOFIvH#e z?Z_Gl$BY>h)yhr{HoHSdN5Lx{6^vKx0?G9m+WE#K*(MOy+0=UaL()r21JNW5zUfMt z{`mTO3l4U9LHAz=9D4AW!GWa3WNQuGR=0;ys zNxm%IY|S-}n;sHqG0 zhT2kdFoUgHM(GxjU#L_Wb+AHXZwS)Vsce7b9<3)pxE#%Nv}~}_4nbWz3c%zQ&OhBc z-yzxW276wDw+nHjpR|iJic450osyJ&x{rcxh$xT}O0i8#UdyK>EFse7ky>LOjF$pD z&xD}Cep{*rw6~#W!j8zR-d={h;7|}|qQ%%1?zXvX z8OE4{{}0CADLm4EZPuNMor%*O&BV5C+qP|IV%xTD8y(xW?PP+Po$vbh$-35F-`WR# z)W_X#J@r=I#e$!D03jSp7OI)b6iUG%o}-ku&KF?8td=@RQgik=+Mhg#5Nl2z{H;u?ft{o@Ct~Lv`P>s^ny9myKZIm#sk3Hkj`BHKbuNyB^gm z4x~HrZS!aj4QatS4~Pl(1X-s&(}5?7r@^BapgI zC9zdS=;7A_<`$ks^aiJBj>oD-#hSNn8k4=olg4fbb7(O1E>G~=-$M0Agmdj{1?^>D zgh+f5#Hlt+HJ)IS&*YkrTk@2c-TMXY1s4&dXpGRh#d)iJPkgD`u|+FKmRLgo76Gyk zFC_G3k>9rpmTbkE1Eu5tI~$-zm?`CIXPT$ElO*~gAMjsrZk1OF#~G+EsCU@ z8h(od+=}oF5W&mvcylUqj>MOR3K-Q{ToI}{I+@8jmFYT_R)5GXnr zuUHYNH~?Rbg?8XW+SA|;YIMh**+b!u9XSp8X#4u(3t&S2$AR+~@=?l+jQPGP*ZNF& zd%Pe4+XEjf*3->s1IQp41L`fdS5Q@|5+k3|Npr!L=B7#j7|PmlUL0`A8q76ChvB0*Y3~j zLE*g!`k#CJf%4Y7>GdJroKMchwm zb3rMkg!%WLo3GDIk)5kr1Mvi|udCa3*Gu>N)a4ph?r%)LSeEu%V3+E^1##DQFtDpX zSo6{$AIHvlPxdnTjkUM6hco=z!)d^6% zW5?Oa4+ae%hywmG00=N{zP^tk(|*N9f^Q*Wj2RzoyCu#+<%}I0W!q;DG08F?T3|mL z82K8LH-o(UYW0lL>%0=nPJ9)7PK>=ZhXG$>NbUl0d_)ITQ8OL49NxOaSioBmZ;9bl zomaS?FGmlxXPUm2XBA}?J3=^cPu#4CZXLxOz6rX}CZFHV&e`WDD(rI*U^Cz5Ty`l} zwYjKwWwNB{&;{XO!+DBcWoomi#3^g<9xN#kMZ1*~h~x|@reA{2PS{`bl+RC$eRYZe z2`F)zl1}gBTx`qOwXs;DU#=_}YXlBX&R6fYsH@{0f~Jn!cC-1CW)CcEr*}4OyF1$q z$|P**rKuS<0!S)xJl!mgzp*Jfgd82+2YM2w9uIr>(5MbINEEq4xPVp_Tk0PINmyTw z4N;a>r{#TpB&E{X7#BUUYz)h+7SPa}O5`OE_BQpS%!n+hr$nlr+A_9_OqC3;eq2oY zqnGPqIySxGRsWtpZ*6|7G$-*jBWVZVGIb?(M^+TKv+tbEy%o zCpah|GY&mAlf+xA-|be%a)+9Y+6bXk@+$2$1hpjKX73&Dw;zEbC*@!r=gQ6uEGw

    ZoKmxWiK!CndfDQA`lf6}wR(H?i0d?1wwUQCCDpIT^Bc;GIuPTp5=Swr zt8^yZSBO>T>LJT{hJ>3#1>^K)%q4<9zXh^fl4Su|Sfbi-E~6RyvPTD9?P{(vo0Vc) z7h`4Zwey4}_Hsqm(+#>$O#GNoG>Cm6aO=06UqJ@U_5&OM z-|jywUH}6+KPlUn`o8%a+k=XV9}@n$d;whK@PojLd+(b+&(DA20vA2}ATZa#ee);R z&r|oGxWPpbKM2fCcyFFRbN^Nn@w>(TjAem~B7PU5`1eA7E0OqJ)?XD#{4VRw|0(N7 z$;9u|0v_ALt7LG|#81lh9r{=D{-T89;mm_oJVdg=chWy8+js2#{`zlh_`vV|Q1QQR zsQ;|yA>Imx#eY(^Z#B}tQS+}r@`p;n)A10%1Vgz$Dcjc><^MtHUjVxgM*z0&LtyWZ z`zrZ9=J;)2{c2_~2=_z6-vfX@o&mhZq0s-$GyEQxJRBPs5PX;ofC0gulj>djcwyy`_f2Zj|Z1zwY p*abd3UBNE!CuRFO5dT-oemX=28E6==F!cLZ5i|q@3n}=o{{abis5t-t diff --git a/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-objectweb-module-1.2.2.jar b/jonas_tests/examples/base/examples/xdoclet/lib/xdoclet-objectweb-module-1.2.2.jar deleted file mode 100644 index ce9f35e76b7e774fe888420c2629996e7d85fbcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279234 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�y6o%Hs5}i$V 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/alarm/C_alarm.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/alarm/C_alarm.java deleted file mode 100644 index eb193ecdf7..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/alarm/C_alarm.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.alarm; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.AuthorizationRequiredException; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to test the Alarm example - * Test authentication, generate alarm and process alarms - * @author Florent Benoit - */ -public class C_alarm extends JExampleTestCase { - - - /** - * URL of the alarm index - */ - private static final String URL_ALARM = "/alarm/secured/list.jsp"; - - /** - * URL of the list of alarms - */ - private static final String URL_ALARM_LIST = "/alarm/secured/setfilter.jsp?profil=all-I"; - - /** - * URL of the alarm generator - */ - private static final String URL_ALARM_GENERATE = "/alarm/generator.html"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_alarm(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_alarm.class); - } - - /** - * Setup need for these tests - * alarm is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("alarm"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_alarm(String s) { - super(s, URL_ALARM); - } - - - /** - * Try to log in without authentication - * @throws Exception if an error occurs - */ - public void testTryWithoutAuth() throws Exception { - try { - WebResponse wr = wc.getResponse(url); - fail("Alarm is not protected"); - } catch (AuthorizationRequiredException e) { - ; - } - } - - /** - * Try to authenticate with a bad login/password - * @throws Exception if an error occurs - */ - public void testTryWithBadAuth() throws Exception { - try { - wc.setAuthorization("bad", "bad"); - WebResponse wr = wc.getResponse(url); - fail("Alarm is not protected"); - } catch (AuthorizationRequiredException e) { - ; - } - } - - /** - * Try to authenticate with a right login/password (jetty) - * @throws Exception if an error occurs - */ - public void testTryWithJettyAuth() throws Exception { - try { - wc.setAuthorization("jetty", "jetty"); - WebResponse wr = wc.getResponse(url); - } catch (AuthorizationRequiredException e) { - fail("Alarm don't accept l/p jetty/jetty"); - } - } - - /** - * Try to authenticate with a right login/password (tomcat) - * @throws Exception if an error occurs - */ - public void testTryWithTomcatAuth() throws Exception { - try { - wc.setAuthorization("tomcat", "tomcat"); - WebResponse wr = wc.getResponse(url); - } catch (AuthorizationRequiredException e) { - fail("Alarm don't accept l/p tomcat/tomcat"); - } - } - /** - * Try to generate alarms. One of each kind of alarm (severe, informative, warning) - * @throws Exception if an error occurs - */ - public void testGenerateAlarms() throws Exception { - try { - wc.setAuthorization("tomcat", "tomcat"); - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_ALARM_GENERATE)); - - WebForm[] webForms = wr.getForms(); - - WebForm webForm = webForms[0]; - assertNotNull("There must be a form in the html page", webForm); - - String[] levels = new String[] {"S", "W", "I"}; - - for (int i = 0; i < 3; i++) { - webForm.setParameter("message", "Automatic test" + i); - webForm.setParameter("device", "aut" + i); - webForm.setParameter("level", levels[i]); - WebResponse wFormRes = webForm.submit(); - String txt = wFormRes.getText(); - if (txt.indexOf("Message sent") == -1) { - fail("The alarm was not generated : " + txt); - } - } - - } catch (AuthorizationRequiredException e) { - fail("Alarm don't accept l/p tomcat/tomcat"); - } - } - - /** - * Try to process all alarms which were generated - * @throws Exception if an error occurs - */ - public void testProcessAlarms() throws Exception { - try { - // Wait a little if the previous alarms were not generated - Thread.sleep(1000); - - wc.setAuthorization("tomcat", "tomcat"); - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_ALARM_LIST)); - WebTable[] webTables = wr.getTables(); - - WebTable wTable = webTables[1]; - assertNotNull("There must be a table in the html page", wTable); - - int rows = wTable.getRowCount(); - int cols = wTable.getColumnCount(); - - assertEquals("The tables must have 6 columns", 6, cols); - - // For each alarm - for (int i = 1; i < rows; i++) { - TableCell tableCell = wTable.getTableCell(i, cols - 1); - assertNotNull("There must be a cell in this row", tableCell); - WebLink[] links = tableCell.getLinks(); - assertNotNull("There must have links in this cell", links); - for (int l = 0; l < links.length; l++) { - links[l].click(); - } - } - - //Now check alarms are empty (rows = 1) - wr = wc.getResponse(getAbsoluteUrl(URL_ALARM_LIST)); - webTables = wr.getTables(); - wTable = webTables[1]; - rows = wTable.getRowCount(); - assertEquals(1, rows); - - } catch (AuthorizationRequiredException e) { - fail("Authentication failed"); - } - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/cmp2/C_cmp2.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/cmp2/C_cmp2.java deleted file mode 100644 index 92d3d813fe..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/cmp2/C_cmp2.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.cmp2; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the cmp2 example - * Test the three servlet are ok - * @author Philippe Coq - */ -public class C_cmp2 extends JExampleTestCase { - - /** - * URL of the cmp2 page - */ - private static final String URL_EARCMP2 = "/cmp2"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_cmp2(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_cmp2.class); - } - - /** - * Setup need for these tests - * cmp2 is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("cmp2"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_cmp2(String s) { - super(s, URL_EARCMP2); - } - - /** - * Test the examples showing 1-to-1 relationship - * @throws Exception if an error occurs - */ - public void testFirstServlet() throws Exception { - - WebResponse wr = wc.getResponse(url); - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - assertNotNull("There must be a form in the html page", webForm); - WebResponse wFormRes = webForm.submit(); - String txt = wFormRes.getText(); - if (txt.indexOf("Servlet is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - - - /** - * Test the examples showing n-to-1 1-to-n relationship - * @throws Exception if an error occurs - */ - public void testSecondServlet() throws Exception { - - WebResponse wr = wc.getResponse(url); - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[1]; - assertNotNull("There must be a form in the html page", webForm); - WebResponse wFormRes = webForm.submit(); - String txt = wFormRes.getText(); - if (txt.indexOf("Servlet is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - - /** - * Test the examples using EJB-QL - * @throws Exception if an error occurs - */ - public void testThirdServlet() throws Exception { - - WebResponse wr = wc.getResponse(url); - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[2]; - assertNotNull("There must be a form in the html page", webForm); - WebResponse wFormRes = webForm.submit(); - String txt = wFormRes.getText(); - if (txt.indexOf("Servlet is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/earsample/C_earsample.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/earsample/C_earsample.java deleted file mode 100644 index 2f11320a9d..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/earsample/C_earsample.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.earsample; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.AuthorizationRequiredException; -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the Alarm example - * Test authentication, and check the sample is ok - * @author Florent Benoit - */ -public class C_earsample extends JExampleTestCase { - - /** - * URL of the earsample page - */ - private static final String URL_EARSAMPLE = "/earsample/secured/Op"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_earsample(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_earsample.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("earsample"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_earsample(String s) { - super(s, URL_EARSAMPLE); - } - - /** - * Try to log in without authentication - * @throws Exception if an error occurs - */ - public void testTryWithoutAuth() throws Exception { - try { - WebResponse wr = wc.getResponse(url); - fail("earsample is not protected"); - } catch (AuthorizationRequiredException e) { - ; - } - } - - /** - * Try to authenticate with a bad login/password - * @throws Exception if an error occurs - */ - public void testTryWithBadAuth() throws Exception { - try { - wc.setAuthorization("bad", "bad"); - WebResponse wr = wc.getResponse(url); - fail("earsample is not protected"); - } catch (AuthorizationRequiredException e) { - ; - } - } - - /** - * Try to authenticate with a right login/password (jetty) - * @throws Exception if an error occurs - */ - public void testTryWithJettyAuth() throws Exception { - try { - wc.setAuthorization("jetty", "jetty"); - WebResponse wr = wc.getResponse(url); - } catch (AuthorizationRequiredException e) { - fail("earsample don't accept l/p jetty/jetty"); - } - } - - /** - * Try to authenticate with a right login/password (tomcat) - * @throws Exception if an error occurs - */ - public void testTryWithTomcatAuth() throws Exception { - try { - wc.setAuthorization("tomcat", "tomcat"); - WebResponse wr = wc.getResponse(url); - } catch (AuthorizationRequiredException e) { - fail("earsample don't accept l/p tomcat/tomcat"); - } - } - - /** - * Check if the sample is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsSampleOk() throws Exception { - try { - wc.setAuthorization("tomcat", "tomcat"); - WebResponse wr = wc.getResponse(url); - String txt = wr.getText(); - - if (txt.indexOf("Sample is OK.") == -1) { - fail("The example was not ok : " + txt); - } - - } catch (AuthorizationRequiredException e) { - fail("Authentication failed"); - } - } - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/eb/C_eb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/eb/C_eb.java deleted file mode 100644 index 54fcd48d72..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/eb/C_eb.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.eb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the eb example - * Test the client of eb example (Check if the text is "ClientAccount terminated") - * - test case of AccountImplHome - * - test case of AccountExplHome - * @author Florent Benoit - */ -public class C_eb extends JExampleTestCase { - - - /** - * Class of the eb.client - */ - private static final String CLIENT_CLASS = "eb.ClientAccount"; - - /** - * Text to check - */ - private static final String CLIENT_OK_TXT = "ClientAccount terminated" ; - - /** - * Impl EJB1.x - */ - private static final String ACC_IMPL = "AccountImplHome"; - - /** - * Impl EJB2.x - */ - private static final String ACC_IMPL2 = "AccountImpl2Home"; - /** - * Expl - */ - private static final String ACC_EXPL = "AccountExplHome"; - - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_eb(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_eb.class); - } - - /** - * Setup need for these tests - * eb is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("eb"); - } - - /** - * Step to do at the end - * unload eb - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("eb"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_eb(String s) { - super(s); - } - - /** - * Test the return text of the example eb - * by using a specific mode (Impl or Expl) - * @param mode Can be AccountImplHome or AccountExplHome - */ - private void doTestEb(String mode) { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - // Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - // Call Method - callMainMethod(CLIENT_CLASS, "eb" , new String[] {mode}); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - // Check the text - if (txt.indexOf(CLIENT_OK_TXT) == -1) { - fail("The text that the client sent was not " + CLIENT_OK_TXT); - } - } - - - /** - * Try to launch the client of the example eb - * with the case AccountImpl2 - * @throws Exception if an error occurs - */ - public void testClientAccountImpl2() throws Exception { - doTestEb(ACC_IMPL2); - } - /** - * Try to launch the client of the example eb - * with the case AccountImpl - * @throws Exception if an error occurs - */ - public void testClientAccountImpl() throws Exception { - doTestEb(ACC_IMPL); - } - - /** - * Try to launch the client of the example eb - * with the case AccountExpl - * @throws Exception if an error occurs - */ - public void testClientAccountExpl() throws Exception { - doTestEb(ACC_EXPL); - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/hibernate/C_hibernate.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/hibernate/C_hibernate.java deleted file mode 100644 index 6999edaca2..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/hibernate/C_hibernate.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Guillaume Sauthier - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.hibernate; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the Alarm example - * Test authentication, and check the sample is ok - * @author Florent Benoit - */ -public class C_hibernate extends JExampleTestCase { - - /** - * URL of the hibernate page - */ - private static final String URL_HIBERNATE = "/hibernate-sample/testHibernate"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_hibernate(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_hibernate.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useWar("hibernate-sample"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_hibernate(String s) { - super(s, URL_HIBERNATE); - } - - /** - * Try to log in without authentication - * @throws Exception if an error occurs - */ - public void testAccessHibernatePage() throws Exception { - WebResponse wr = wc.getResponse(url); - String page = wr.getText(); - - // check "Servlet is OK" - if (page.indexOf("Servlet is OK") == -1) { - fail("Missing 'Servlet is OK' ending text. Check on " + this.url); - } - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/j2eemanagement/C_j2eemanagement.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/j2eemanagement/C_j2eemanagement.java deleted file mode 100644 index 3cd2fbfcee..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/j2eemanagement/C_j2eemanagement.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.j2eemanagement; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the j2eemanagement example - * Test authentication, and check the sample is ok - * @author Adriana Danes - */ -public class C_j2eemanagement extends JExampleTestCase { - - /** - * URL of the earsample page - */ - private static final String URL_J2EEMANAGEMENT_DOMAIN = "/j2eemanagement/mgmt?domainName=jonas"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_j2eemanagement(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_j2eemanagement.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("j2eemanagement"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public C_j2eemanagement(String s) { - // Need to use login/password because the web pages we want to access are secured - super(s, URL_J2EEMANAGEMENT_DOMAIN, "jonas", "jonas"); - } - - /** - * Check if the sample is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsSampleOk() throws Exception { - WebResponse wr = wc.getResponse(url); - String txt = wr.getText(); - - if (txt.indexOf("Application is OK") == -1) { - fail("The example was not ok : " + txt); - } - } - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/lb/C_lb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/lb/C_lb.java deleted file mode 100644 index 1c850f0ce4..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/lb/C_lb.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.lb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the lb example - * Test the client of lb example (Check if the text is "PASS when checking all accounts") - * @author Florent Benoit - */ -public class C_lb extends JExampleTestCase { - - - /** - * Class of the lb.client - */ - private static final String CLIENT_CLASS = "lb.Client"; - - /** - * Text to check - */ - private static final String CLIENTOP_OK_TXT = "PASS when checking all accounts" ; - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_lb(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_lb.class); - } - - /** - * Setup need for these tests - * lb is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("lb"); - } - - /** - * Step to do at the end - * unload lb - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("lb"); - } - - - /** - * Constructor with a specified name - * @param s name - */ - public C_lb(String s) { - super(s); - } - - - /** - * Try to launch the client of the example lb - * @throws Exception if an error occurs - */ - public void testClient() throws Exception { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - //Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - //Call Method - callMainMethod(CLIENT_CLASS, "lb"); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - System.out.println("Error = " + ite); - ite.printStackTrace(); - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - // Check the text - if (txt.indexOf(CLIENTOP_OK_TXT) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT); - } - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mailsb/C_mailsb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mailsb/C_mailsb.java deleted file mode 100644 index 130a1c5275..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mailsb/C_mailsb.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.mailsb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the mailsb example - * Test the client of mailsb example - * Test only MimePartDS as MailSession do some prompts - * (Check if the text is "OK !OK !OK !OK !") - * @author Florent Benoit - */ -public class C_mailsb extends JExampleTestCase { - - - /** - * Class of the mailsb.client - */ - private static final String CLIENT_CLASS = "mailsb.ClientMailer"; - - /** - * Text to check - */ - private static final String CLIENTOP_OK_TXT = "OK !OK !OK !OK !" ; - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_mailsb(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_mailsb.class); - } - - /** - * Setup need for these tests - * mailsb is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("mailsb"); - } - - /** - * Step to do at the end - * unload mailsb - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("mailsb"); - } - - - /** - * Constructor with a specified name - * @param s name - */ - public C_mailsb(String s) { - super(s); - } - - - /** - * Try to launch the client of the example mailsb - * @throws Exception if an error occurs - */ - public void testClientMimePartDS() throws Exception { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - //Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - //Call Method - callMainMethod(CLIENT_CLASS, "mailsb", new String[] {"MimePartDSMailer", "content of junit test"}); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - // Check the text - if (txt.indexOf(CLIENTOP_OK_TXT) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT); - } - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/C_mdb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/C_mdb.java deleted file mode 100644 index 4d6d9a92a2..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/C_mdb.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:C_mdb.java 10573 2007-06-08 10:12:46Z coqp $ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.mdb; - -import junit.framework.Test; -import junit.framework.TestSuite; - - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -/** - * Define a class to test all the mdb examples - * Test : - sampleappli - * - samplemdb - * @author Philippe Coq - */ -public class C_mdb extends JExampleTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_mdb(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes earsample, alarm and jonasAdmin - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - /**suite.addTest(F_sampleappli.suite());**/ - suite.addTest(F_samplemdb.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_sampleappli.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_sampleappli.java deleted file mode 100644 index 364f2adb88..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_sampleappli.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.mdb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the mdb example - * Test the client of mdb/sampleAppli example - * (Check if the text is "SampleApplicationClient OK" - * @author Florent Benoit - */ -public class F_sampleappli extends JExampleTestCase { - - - /** - * Class of the mdb.client - */ - private static final String CLIENT_CLASS = "sampleappli.SampleAppliClient"; - - /** - * Text to check - */ - private static final String CLIENTOP_OK_TXT1 = "Nb messages sent and received OK"; - - /** - * Second text to check - */ - private static final String CLIENTOP_OK_TXT2 = "SampleApplicationClient OK" ; - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_sampleappli(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_sampleappli.class); - } - - /** - * Setup need for these tests - * sampleappli is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("sampleappli"); - } - - /** - * Step to do at the end - * unload sampleappli - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("sampleappli"); - } - - - /** - * Constructor with a specified name - * @param s name - */ - public F_sampleappli(String s) { - super(s); - } - - - /** - * Try to launch the client of the example mdb.sampleappli - * @throws Exception if an error occurs - */ - public void testClient() throws Exception { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - //Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - //Call Method - callMainMethod(CLIENT_CLASS, "mdb"); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - System.out.println("Error = " + ite); - ite.printStackTrace(); - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - System.out.println("Sample appli txt = " + txt); - - // Check the text - if (txt.indexOf(CLIENTOP_OK_TXT1) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT1); - } - - // Check the second text - if (txt.indexOf(CLIENTOP_OK_TXT2) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT2); - } - - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_samplemdb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_samplemdb.java deleted file mode 100644 index 5a011057ab..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/mdb/F_samplemdb.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.mdb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the mdb example - * Test the client of mdb/sampleAppli example - * (Check if the text is "SampleApplicationClient OK" - * @author Florent Benoit - */ -public class F_samplemdb extends JExampleTestCase { - - - /** - * Class of the mdb.client - */ - private static final String CLIENT_CLASS = "samplemdb.MdbClient"; - - /** - * Text to check - */ - private static final String CLIENTOP_OK_TXT = "MDBsample is Ok"; - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_samplemdb(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_samplemdb.class); - } - - /** - * Setup need for these tests - * samplemdb is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("samplemdb"); - } - - /** - * Step to do at the end - * unload samplemdb - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("samplemdb"); - } - - - /** - * Constructor with a specified name - * @param s name - */ - public F_samplemdb(String s) { - super(s); - } - - - /** - * Try to launch the client of the example mdb - * @throws Exception if an error occurs - */ - public void testClient() throws Exception { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - //Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - //Call Method - callMainMethod(CLIENT_CLASS, "mdb"); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - System.out.println("Error = " + ite); - ite.printStackTrace(); - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - System.out.println("Sample mdb txt = " + txt); - - // Check the text - if (txt.indexOf(CLIENTOP_OK_TXT) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT); - } - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sampleCluster2/C_sampleCluster2.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sampleCluster2/C_sampleCluster2.java deleted file mode 100644 index 85b57326cf..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sampleCluster2/C_sampleCluster2.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - */ - -package org.objectweb.jonas.examples.clients.sampleCluster2; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the sampleCluster2 example - * @author Georges Goebel - */ -public class C_sampleCluster2 extends JExampleTestCase { - - /** - * URL of the earsample page - */ - private static final String URL_EARSAMPLE = "/sampleCluster2"; - - /** - * Constructor with a specified name - * @param s name - */ - public C_sampleCluster2(String s) { - super(s, URL_EARSAMPLE); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_sampleCluster2(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_sampleCluster2.class); - } - - /** - * Setup need for these tests sampleCluster2 is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("sampleCluster2"); - } - - /** - * Check if the First Page is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsFirstPageOk() throws Exception { - WebResponse wr = wc.getResponse(url); - String txt = wr.getText(); - - if (txt.indexOf("Sample is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - - /** - * Check if the sessionServlet is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsSessionOk() throws Exception { - WebResponse wr = wc.getResponse(url + "/servlet/session"); - String txt = wr.getText(); - - if (txt.indexOf("Sample is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - - /** - * Check if the checkServlet is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsCheckOk() throws Exception { - WebResponse wr = wc.getResponse(url + "/servlet/check"); - String txt = wr.getText(); - - if (txt.indexOf("Sample is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - - /** - * Check if the releaseServlet is OK. Analyze response - * @throws Exception if an error occurs - */ - public void testIsReleaseOk() throws Exception { - WebResponse wr = wc.getResponse(url + "/servlet/release"); - String txt = wr.getText(); - - if (txt.indexOf("Sample is OK.") == -1) { - fail("The example was not ok : " + txt); - } - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sb/C_sb.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sb/C_sb.java deleted file mode 100644 index 1c1fa9a4f6..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/sb/C_sb.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.sb; - -import java.lang.reflect.InvocationTargetException; -import junit.framework.*; - -import org.objectweb.jonas.examples.util.JExampleTestCase; -import org.objectweb.jonas.examples.util.JPrintStream; -import org.objectweb.jonas.examples.util.NoExitSecurityManager; - -/** - * Define a class to test the sb example - * Test the client of sb example (Check if the text is "ClientOp OK. Exiting.") - * @author Florent Benoit - */ -public class C_sb extends JExampleTestCase { - - - /** - * Class of the sb.client - */ - private static final String CLIENT_CLASS = "sb.ClientOp"; - - /** - * Text to check - */ - private static final String CLIENTOP_OK_TXT = "ClientOp OK. Exiting." ; - - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new C_sb(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(C_sb.class); - } - - /** - * Setup need for these tests - * sb is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useBeans("sb"); - } - - /** - * Step to do at the end - * unload sb - * @throws Exception if it fails - */ - protected void tearDown() throws Exception { - super.tearDown(); - unUseBeans("sb"); - } - - - /** - * Constructor with a specified name - * @param s name - */ - public C_sb(String s) { - super(s); - } - - - /** - * Try to launch the client of the example sb - * @throws Exception if an error occurs - */ - public void testClient() throws Exception { - JPrintStream jPrintStream = new JPrintStream(System.out); - System.setOut(jPrintStream); - String txt = null; - try { - //Define a SecurityManager to handle System.exit() case - System.setSecurityManager(new NoExitSecurityManager()); - - //Call Method - callMainMethod(CLIENT_CLASS, "sb"); - - txt = jPrintStream.getStringBuffer().toString(); - } catch (InvocationTargetException ite) { - fail("Fail when invoking the client. It can be due to a System.exit()"); - } catch (Exception e) { - fail("Client was not ok" + e); - } finally { - System.setSecurityManager(new SecurityManager()); - jPrintStream.remove(); - } - - // Check the text - if (txt.indexOf(CLIENTOP_OK_TXT) == -1) { - fail("The text that the client sent was not " + CLIENTOP_OK_TXT); - } - - } - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_WebExamples.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_WebExamples.java deleted file mode 100644 index fce70b24d6..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_WebExamples.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.suite; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.clients.alarm.C_alarm; -import org.objectweb.jonas.examples.clients.earsample.C_earsample; -import org.objectweb.jonas.examples.util.JExampleTestCase; - -/** - * Define a class to test all the examples - * Test : - alarm - * - earsample - * @author Florent Benoit - */ -public class C_WebExamples extends JExampleTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_WebExamples(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes earsample, alarm and jonasAdmin - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(C_earsample.suite()); - suite.addTest(C_alarm.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_suite.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_suite.java deleted file mode 100644 index 700740966e..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/suite/C_suite.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:C_suite.java 10573 2007-06-08 10:12:46Z coqp $ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.suite; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.examples.clients.alarm.C_alarm; -import org.objectweb.jonas.examples.clients.cmp2.C_cmp2; -import org.objectweb.jonas.examples.clients.earsample.C_earsample; -import org.objectweb.jonas.examples.clients.eb.C_eb; -import org.objectweb.jonas.examples.clients.hibernate.C_hibernate; -import org.objectweb.jonas.examples.clients.j2eemanagement.C_j2eemanagement; -import org.objectweb.jonas.examples.clients.lb.C_lb; -import org.objectweb.jonas.examples.clients.mailsb.C_mailsb; -import org.objectweb.jonas.examples.clients.mdb.C_mdb; -import org.objectweb.jonas.examples.clients.sb.C_sb; -import org.objectweb.jonas.examples.clients.webservices.C_webservices; -import org.objectweb.jonas.examples.util.JExampleTestCase; - -/** - * Define a class to test all the examples - * - * @author Florent Benoit - */ -public class C_suite extends JExampleTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_suite(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes earsample, alarm and jonasAdmin - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(C_earsample.suite()); - suite.addTest(C_alarm.suite()); - suite.addTest(C_cmp2.suite()); - suite.addTest(C_eb.suite()); - suite.addTest(C_hibernate.suite()); - suite.addTest(C_j2eemanagement.suite()); - suite.addTest(C_lb.suite()); - suite.addTest(C_mailsb.suite()); - suite.addTest(C_sb.suite()); - suite.addTest(C_webservices.suite()); - suite.addTest(C_mdb.suite()); - - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServices.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServices.java deleted file mode 100644 index ef05bac0ad..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServices.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Define an abstract class to test the webServices examples - * @author Guillaume Sauthier - */ -public abstract class A_WebServices extends JExampleTestCase { - - public A_WebServices(String s, String urlPrefix) { - super(s, urlPrefix); - } - - public A_WebServices(String s, String urlPrefix, String username, String password){ - super(s, urlPrefix, username, password); - } - - /** - * Check if home page is accessible - * @throws Exception if an error occurs - */ - public void checkDeploymentCompleted(int nbHomePageLinks) throws Exception { - WebResponse wr = wc.getResponse(url + "index.html"); - WebLink[] links = wr.getLinks(); - assertEquals("deployment OK", nbHomePageLinks, links.length); - } - - public WebResponse executeGoogleWebService(String page, String query) throws Exception { - - WebResponse wr = wc.getResponse(url + page); - - WebForm form = wr.getForms()[0]; - // set Search Query - form.setParameter("search", query); - return form.submit(); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServicesEndpoint.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServicesEndpoint.java deleted file mode 100644 index d3823ebced..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/A_WebServicesEndpoint.java +++ /dev/null @@ -1,182 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - -import java.io.File; -import java.io.FileInputStream; -import java.util.Properties; - -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.Service; -import javax.wsdl.extensions.soap.SOAPAddress; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; - -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the webServices examples wsWarExample - * Test WebServices deployment OK and test Call on deployed WebService - * @author Guillaume Sauthier - */ -public abstract class A_WebServicesEndpoint extends A_WebServices { - - /** - * property name => file1 WSDLHandler is mandatory for this test ! - */ - private static final String JPROP_WSDL_LOCATION = "jonas.service.publish.file.directory"; - - public A_WebServicesEndpoint(String s, String urlPrefix) { - super(s, urlPrefix); - } - - public A_WebServicesEndpoint(String s, String urlPrefix, String username, String password) { - super(s, urlPrefix, username, password); - } - - /** - * Check if Axis is Running - * @param idServicesLink indicate where is the link to /services in the homepage - * @param portName the name of the port we want to check - * @throws Exception if an error occurs - */ - public void checkAxisServicesAccessible(int idServicesLink, String context, String portName) throws Exception { - - WebResponse wr = wc.getResponse(url + "index.html"); - WebLink services = wr.getLinks()[idServicesLink]; - - // click the link - WebResponse swr = services.click(); - - // traverse the links and find the interresting one. - boolean found = false; - for (int i = 0; i < swr.getLinks().length; i++) { - String ws_url = swr.getLinks()[i].getURLString(); - if (ws_url.equalsIgnoreCase(url + context + "/" + portName + "?jwsdl")) - found = true; - } - if (!found) - fail("endpoint '" + portName + "' not found in /" + context); - - } - - /** - * Check if WSDL is generated - * @param idWSDLServiceLink indicate where we can find the link - * to WSDL of the port we want to test. (first, second, ...) - * @throws Exception if an error occurs - */ - public void checkAxisWSDL(String path) throws Exception { - - WebResponse wr = wc.getResponse(url + path); - assertEquals("Must be an XML mime type", "text/xml", wr.getContentType()); - - } - - /** - * Check if deployed WebService is running - * @param formPage the filename of the webpage containing the form - * @param endpoint the URL where local service can be found - * @param name the name to set as parameter - * @param pageTitle title of the returned page - * @throws Exception if an error occurs - */ - public void checkDeployedWebService(String formPage, - String endpoint, - String name, - String pageTitle) throws Exception { - - // Get the page containing the form - WebResponse wr = wc.getResponse(url + formPage); - - // get the form named "prepare" - WebForm form = wr.getFormWithName("prepare"); - // set all parameters - form.setParameter("name", name); - // submit - WebResponse wr2 = form.submit(); - - String text = wr2.getText(); - - String valTitle = "" + pageTitle + ""; - String valURL = "Working with URL : " + endpoint + "
    "; - String valHello = "result of sayHello(name) method :Hello " + name + "
    "; - String valQuotes = "result of getCotes() method :12
    "; - - assertTrue("incorrect title", (text.indexOf(valTitle) != -1)); - assertTrue("incorrect URL", (text.indexOf(valURL) != -1)); - assertTrue("incorrect Name", (text.indexOf(valHello) != -1)); - assertTrue("incorrect Cotes", (text.indexOf(valQuotes) != -1)); - - } - - - /** - * Check if WSDL has been published. - * @param wsdlFilename the filename of the WSDL file - * @param tns targetNameSpace of the Definition - * @param serviceName the localpart of the Service QName - * @param portName the name of the WSDL' Port - * @param endpoint the expected URL - * @throws Exception if an error occurs - */ - public void checkWSDLPublication(String wsdlFilename, - String tns, - String serviceName, - String portName, - String endpoint) throws Exception { - - String jonasbase = System.getProperty("jonas.base"); - Properties props = new Properties(); - props.load(new FileInputStream(new File(jonasbase, "conf" + File.separator + "file1.properties"))); - String wsdlLoc = props.getProperty(JPROP_WSDL_LOCATION); - - File wsdl = new File(wsdlLoc, wsdlFilename); - - assertTrue("WSDL is not created", wsdl.exists()); - assertTrue("WSDL is not a file", wsdl.isFile()); - - WSDLFactory f = WSDLFactory.newInstance(); - WSDLReader r = f.newWSDLReader(); - - r.setFeature("javax.wsdl.verbose", true); - r.setFeature("javax.wsdl.importDocuments", false); - - Definition def = r.readWSDL(wsdl.getPath()); - Service s = def.getService(new QName(tns, serviceName)); - Port p = s.getPort(portName); - SOAPAddress sa = (SOAPAddress) p.getExtensibilityElements().get(0); - - assertEquals("URL has not been updated", endpoint, sa.getLocationURI()); - - } - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/C_webservices.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/C_webservices.java deleted file mode 100644 index c2a0cf7a35..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/C_webservices.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id:C_webservices.java 10573 2007-06-08 10:12:46Z coqp $ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - -import junit.framework.Test; -import junit.framework.TestSuite; - - -import org.objectweb.jonas.examples.util.JExampleTestCase; - -/** - * Define a class to test all the webservices examples - * Test : - F_WsAccessTest - * - F_WsEarSample - * - F_WsWarSample - * @author Philippe Coq - */ -public class C_webservices extends JExampleTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_webservices(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes earsample, alarm and jonasAdmin - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - // The WsAccessTest is using a SOAP Search WS from Google that have been retired on 07/09/2009 - // http://googlecode.blogspot.com/2009/08/well-earned-retirement-for-soap-search.html - // Commented until a replacement WS has been found - //suite.addTest(F_WsAccessTest.suite()); - suite.addTest(F_WsEarSample.suite()); - /**suite.addTest(F_WsWarSample.suite()); **/ - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsAccessTest.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsAccessTest.java deleted file mode 100644 index aa785a25de..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsAccessTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - -import junit.framework.TestSuite; - -import com.meterware.httpunit.WebResponse; - - -/** - * Define a class to test the webServices examples wsAccessTest - * Test WebServices deployment OK - * @author Guillaume Sauthier - */ -public class F_WsAccessTest extends A_WebServices { - - /** - * URL of the wsAccessTest page - */ - private static final String URL_WSACCESSTEST = "/wsaccess/"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_WsAccessTest(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_WsAccessTest.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useWar("wsaccess"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public F_WsAccessTest(String s) { - super(s, URL_WSACCESSTEST); - } - - /** - * Check if home page is accessible - * @throws Exception if an error occurs - */ - public void testDeploymentCompleted() throws Exception { - // 2 links + 3 logo links on homepage - checkDeploymentCompleted(2+3); - } - - /** - * Check if JSP can access external google WebService - * @throws Exception if an error occurs - */ - public void testWebServiceJspAccess() throws Exception { - - WebResponse wr = executeGoogleWebService("googleByJSP.jsp", - "ObjectWeb JOnAS"); - assertTrue("a list is returned", wr.getLinks().length > 0); - } - - /** - * Check if JSP can access external google WebService - * @throws Exception if an error occurs - */ - public void testWebServiceServletAccess() throws Exception { - - WebResponse wr = executeGoogleWebService("googleByServlet.html", - "ObjectWeb JOnAS"); - assertTrue("a list is returned", wr.getLinks().length > 0); - - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsEarSample.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsEarSample.java deleted file mode 100644 index ccc41a3c9f..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsEarSample.java +++ /dev/null @@ -1,139 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - - -import java.io.File; - -import junit.framework.TestSuite; - -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to test the webServices examples - * Test WebServices deployment OK and test Call on deployed WebService - * @author Guillaume Sauthier - */ -public class F_WsEarSample extends A_WebServicesEndpoint { - - /** - * URL of the wsEarSample page - */ - private static final String URL_WSEARSAMPLE = "/axis-ws/"; - - /** - * The username to use for the webapp - */ - private static final String USERNAME = "jonas"; - - /** - * The password to use for teh webapp - */ - private static final String PASSWORD = "jonas"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_WsEarSample(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_WsEarSample.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useEar("ws"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public F_WsEarSample(String s) { - super(s, URL_WSEARSAMPLE, USERNAME, PASSWORD); - } - - /** - * Check if services page is accessible - * @throws Exception if an error occurs - */ - public void testDeploymentCompleted() throws Exception { - - WebResponse wr = wc.getResponse(url + "services1/webservice"); - assertNotNull("no homepage", wr); - } - - /** - * Check if WSDL is generated - * @throws Exception if an error occurs - */ - public void testAxisWSDL() throws Exception { - - // for wsEarSample axis generated WSDL link is in second place (1) - checkAxisWSDL("services1/webservice?JWSDL"); - } - - /** - * Check if WSDL has been published - * @throws Exception if an error occurs - */ - public void testWSDLPublication() throws Exception { - - checkWSDLPublication("My Web Services" + File.separator + "ssbEndpoint.wsdl", - "http://ws.beans.wssample.objectweb.org", - "WSBeanEndpointLocalService", - "WSBeanEndpointLocal", - url + "services1/webservice"); - } - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsWarSample.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsWarSample.java deleted file mode 100644 index 7656ed4e1a..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/clients/webservices/F_WsWarSample.java +++ /dev/null @@ -1,151 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.clients.webservices; - - -import java.io.File; - -import junit.framework.TestSuite; - - -/** - * Define a class to test the webServices examples wsWarExample - * Test WebServices deployment OK and test Call on deployed WebService - * @author Guillaume Sauthier - */ -public class F_WsWarSample extends A_WebServicesEndpoint { - - /** - * URL of the wsWarSample page - */ - private static final String URL_WSWARSAMPLE = "/wswarsample/"; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_WsWarSample(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_WsWarSample.class); - } - - /** - * Setup need for these tests - * earsample is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - useWar("wswarsample"); - } - - /** - * Constructor with a specified name - * @param s name - */ - public F_WsWarSample(String s) { - super(s, URL_WSWARSAMPLE); - } - - /** - * Check if home page is accessible - * @throws Exception if an error occurs - */ - public void testDeploymentCompleted() throws Exception { - // 3 links + 3 logo links on homepage - checkDeploymentCompleted(3+3); - } - - /** - * Check if Axis is Running - * @throws Exception if an error occurs - */ - public void testAxisServicesAccessible() throws Exception { - - // links to /jaxrpcEndpoint1/* in first place (0) - checkAxisServicesAccessible(3, "endpoints", "jaxrpc"); - } - - /** - * Check if WSDL is generated - * @throws Exception if an error occurs - */ - public void testAxisWSDL() throws Exception { - - // for wsWarSample axis generated WSDL link is in second place (1) - checkAxisWSDL("endpoints/jaxrpc?JWSDL"); - } - - /** - * Check if deployed WebService is running - * @throws Exception if an error occurs - */ - public void testDeployedWebService() throws Exception { - - this.wc.setAuthorization("jonas", "jonas"); - checkDeployedWebService("jaxrpcTest.jsp", - url + "endpoints/jaxrpc", - "JOnAS", - "JOnAS JaxRpc WebService Test Page"); - } - - /** - * Check if WSDL has been published - * @throws Exception if an error occurs - */ - public void testWSDLPublication() throws Exception { - - checkWSDLPublication("MyWebService" + File.separator + "jaxrpcEndpoint.wsdl", - "http://ws.servlets.wssample.objectweb.org", - "JaxRpcEndpointInterfaceService", - "JaxRpcEndpoint1", - url + "endpoints/jaxrpc"); - - } - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JExampleTestCase.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JExampleTestCase.java deleted file mode 100644 index c133c9d7e4..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JExampleTestCase.java +++ /dev/null @@ -1,500 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.util; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.Set; -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import junit.framework.TestCase; - -import com.meterware.httpunit.WebConversation; - -/** - * Define a class to add useful methods for test the examples - * - Deploy ear, war and beans - * - Retrieve initial context - * @author Florent Benoit - */ -public class JExampleTestCase extends TestCase { - - /** - * Name of the JOnAS server used for tests - */ - private static String jonasName = "jonas"; - - /** - * Initial context used for lookup - */ - private static Context ictx = null; - - /* - * JONAS_BASE - */ - protected static String jb = null; - - /** - * Connection to the MBeanServer - */ - private static MBeanServerConnection cnx = null; - - - /** - * Conversation used for HttpUnit - */ - protected WebConversation wc = null; - - /** - * URL used for the constructor - */ - protected String url = null; - - /** - * Prefix for build URLs - */ - private String prefixUrl = null; - - /** - * Add to the specified url the prefix - * @param url relative URL - * @return absolute path of URL - */ - protected String getAbsoluteUrl (String url) { - return (this.prefixUrl + url); - } - - /** - * Make an absolute path with the filename. - */ - public String absPath(String name, String extension) { - - String ret = ""; - if ( extension.equals(".jar")) { - ret = jb + "/ejbjars/" + name + ".jar"; - } else if ( extension.equals(".war")) { - ret = jb + "/webapps/" + name + ".war"; - } else if (extension.equals(".ear")) { - ret = jb + "/apps/" + name + ".ear"; - } - return ret; - } - private static JMXServiceURL jmxServerUrl = null; - private static String urlSuffix = "service:jmx:"; - private static String registry = null; - private static String defaultRegistry = "rmi://localhost:1099"; - private static String protocol = null; - private static String defaultProtocol = "jrmp"; - - /* - * Get Connection to the MBean server - * Set the static cnx variable - */ - private void getJmxCnx() { - if (cnx == null) { - try { - if (registry == null) { - registry = defaultRegistry; - } - registry = registry + "/"; - int indx = registry.lastIndexOf(":"); - String st = registry.substring(0, indx); - String serverUrl = urlSuffix + st +"/jndi/"+registry; - if (protocol == null) { - protocol = defaultProtocol; - } - String connectorName = protocol.concat("connector_"); - connectorName = connectorName.concat(jonasName); - serverUrl = serverUrl.concat(connectorName); - jmxServerUrl = new JMXServiceURL(serverUrl); - System.out.println("JMX connector: "+serverUrl); - JMXConnector cntor = JMXConnectorFactory.connect(jmxServerUrl, null); - cnx = cntor.getMBeanServerConnection(null); - } catch (IOException e) { - System.err.println("Can't reach server " + jonasName - + " as couldn't create JMXConnector (" + e.getMessage() - + ")"); - System.err.println("Check name, registry and protocol options."); - System.exit(2); - } - } - } - - /* - * ObjectName of y=the J2eeServerMBean - */ - private static ObjectName j2eeserver = null; - - /* - * Get the ObjectName of the J2eeServerMBean - * @return the ObjectName - */ - private ObjectName getJ2eeServer() { - if (j2eeserver == null) { - try { - ObjectName on = ObjectName.getInstance("*:j2eeType=J2EEServer,name=" + jonasName); - Set j2eeservers = cnx.queryNames(on, null); - if (j2eeservers.isEmpty()) { - System.err.println("Can't admin server " + jonasName + ": didn't found J2EEServer MBean"); - System.exit(2); - } - j2eeserver = (ObjectName) j2eeservers.iterator().next(); - } catch (Exception e) { - System.err.println("Can't invoke mbeanServer: " + e); - } - } - return j2eeserver; - } - - /** - * Initialize the port used by tests and the prefix - */ - private void init() { - String port = System.getProperty("http.port"); - if (port == null) { - port = "9000"; - } - - prefixUrl = "http://localhost:" + port; - } - - /** - * Constructor with a specified name - * @param s the name - */ - public JExampleTestCase(String s) { - super(s); - init(); - } - /** - * Constructor with a specified name and url - * @param s the name - * @param url the url which can be used - */ - public JExampleTestCase(String s, String url) { - super(s); - wc = new WebConversation(); - init(); - this.url = getAbsoluteUrl(url); - } - - public JExampleTestCase(String s, String url, String username, String password) { - super(s); - wc = new WebConversation(); - wc.setAuthorization(username, password); - init(); - this.url = getAbsoluteUrl(url); - } - - /** - * Get initialContext - * @return the initialContext - * @throws NamingException if the initial context can't be retrieved - */ - private Context getInitialContext() throws NamingException { - return new InitialContext(); - } - - /** - * Common setUp routine, used for every test. - * @throws Exception if an error occurs - */ - protected void setUp() throws Exception { - try { - // get InitialContext - if (ictx == null) { - ictx = getInitialContext(); - } - jb = System.getProperty("jonas.base"); - registry = System.getProperty("registry"); - protocol = System.getProperty("protocol"); - getJmxCnx(); - - } catch (NamingException e) { - System.err.println("Cannot setup test: " + e); - e.printStackTrace(); - } - } - - - /** - * Load an ear file in the jonas server - * @param fname ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void useEar(String fname) throws Exception { - String filename = absPath(fname, ".ear"); - try { - // Load ear in JOnAS if not already loaded. - if (!isEarLoaded(filename)) { - loadEar(filename); - } - - } catch (Exception e) { - throw new Exception("Cannot load Ear : " + e.getMessage()); - } - } - - /** - * Load a war file in the jonas server - * @param filename war file, without ".war" extension - * @throws Exception if an error occurs - */ - public void useWar(String fname) throws Exception { - String filename = absPath(fname, ".war"); - try { - // Load war in JOnAS if not already loaded. - if (!isWarLoaded(filename)) { - loadWar(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load War : " + e.getMessage()); - } - } - - /** - * Load a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void useBeans(String fname) throws Exception { - try { - String filename = absPath(fname, ".jar"); - // Load bean in EJBServer if not already loaded. - if (!isJarLoaded(filename)) { - addBeans(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load Bean : " + e.getMessage()); - } - } - - /* - * isLoaded remote operation - */ - private boolean isLoaded(String filename) { - boolean ret = false; - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - Boolean r = (Boolean) cnx.invoke(getJ2eeServer(), "isDeployed", params, signature); - ret = r.booleanValue(); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - return ret; - } - /** - * isJarLoaded remote operation - * @param filename jar file, with ".jar" extension - */ - private boolean isJarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - - /** - * addBean remote operation - * @param filename jar file, with ".jar" extension - */ - public void addBeans(String filename) { - - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - - - /** - * unloadBean remote operation - * @param filename jar file, with ".jar" extension - */ - public void unloadBeans(String filename) { - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "undeploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot undeploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot unload bean: " + e); - } - } - - - /** - * isEarLoaded remote operation - * @param filename ear file, with ".ear" extension - */ - private boolean isEarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - /** - * loadEar remote operation - * @param filename ear file, with ".ear" extension - */ - public void loadEar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * isWarLoaded remote operation - * @param filename war file, with ".war" extension - */ - private boolean isWarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - - /** - * loadEar remote operation - * @param filename war file, with ".war" extension - */ - public void loadWar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * Unload a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void unUseBeans(String filename) throws Exception { - try { - - if (isJarLoaded(filename + ".jar")) { - unloadBeans(filename + ".jar"); - } - } catch (Exception e) { - throw new Exception("Cannot unload Bean : " + e.getMessage()); - } - } - - - /** - * Call the main method of a specific class with empty args - * @param classToLoad name of class which contains the main method - * @throws Exception if it fails - */ - protected void callMainMethod(String classToLoad, String ejbname) throws Exception { - callMainMethod(classToLoad, ejbname, new String[]{}); - } - - - /** - * Call the main method of a specific class and the specific args - * @param classToLoad name of class which contains the main method - * @param args args to give to the main method - * @throws Exception if it fails - */ - protected void callMainMethod(String classToLoad, String ejbname , String[] args) throws Exception { - //Build classloader - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - URL[] urls = new URL[4]; - urls[0] = new File(System.getProperty("jonas.root") + File.separator + "examples" + File.separator + "classes").toURL(); - urls[1] = new File("base" + File.separator + "examples" + File.separator + "classes").toURL(); - urls[2] = new File("examples" + File.separator + "base" + File.separator + "examples" + File.separator + "classes").toURL(); - urls[3] = new File(System.getProperty("jonas.base") + File.separator + "ejbjars" + File.separator + ejbname + ".jar").toURL(); - URLClassLoader loader = new URLClassLoader(urls); - Thread.currentThread().setContextClassLoader(loader); - Class clazz = loader.loadClass(classToLoad); - Class[] argList = new Class[] {args.getClass()}; - Method meth = clazz.getMethod("main", argList); - Object appli = meth.invoke(null, new Object[]{args}); - } - - - - - -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JPrintStream.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JPrintStream.java deleted file mode 100644 index a6cfeebe07..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/JPrintStream.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.util; - -import java.io.PrintStream; - -/** - * Allow to redirect the System.out stream or System.err - * @author Florent Benoit - */ -public class JPrintStream extends PrintStream { - - - /** - * Old PrintStream - */ - protected PrintStream printStream = null; - - - /** - * Text which was sent to this stream - */ - protected StringBuffer buffer = null; - - /** - * Constructor. Build a new JPrintStream. - * @param printStream stream to use - */ - public JPrintStream(PrintStream printStream) { - super(printStream); - this.buffer = new StringBuffer(); - this.printStream = printStream; - System.setOut(this); - } - - /** - * Return the buffer which is used - * @return buffer which is used - */ - public StringBuffer getStringBuffer() { - return buffer; - } - - - /** - * Print to the stream and log it - * @param x text to log - */ - public void println(String x) { - buffer.append(x); - // Don't print info - //printStream.println(x); - } - - /** - * Print to the stream and log it - * @param x text to log - */ - public void println(Object x) { - buffer.append(x.toString()); - } - - /** - * Remove all the information logged - */ - public void reset() { - buffer = new StringBuffer(); - } - - /** - * Set the stream back - */ - public void remove() { - System.setOut(printStream); - } -} diff --git a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/NoExitSecurityManager.java b/jonas_tests/examples/src/org/objectweb/jonas/examples/util/NoExitSecurityManager.java deleted file mode 100644 index db3b15dcb2..0000000000 --- a/jonas_tests/examples/src/org/objectweb/jonas/examples/util/NoExitSecurityManager.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.examples.util; - -/** - * Defines a Security Manager without Exit permission - * @author Florent Benoit - */ - -public class NoExitSecurityManager extends SecurityManager { - - /** - * Method use to catch the exit() which can be done in examples - * @param status status code. For us in all cases, raise a new Exception - */ - public void checkExit(int status) { - throw new SecurityException("Fail !"); - } -} - diff --git a/jonas_tests/j2eeca/.cvsignore b/jonas_tests/j2eeca/.cvsignore deleted file mode 100644 index edd6709bda..0000000000 --- a/jonas_tests/j2eeca/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -classes -jar diff --git a/jonas_tests/j2eeca/build.xml b/jonas_tests/j2eeca/build.xml deleted file mode 100644 index ee3325ce93..0000000000 --- a/jonas_tests/j2eeca/build.xml +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/ErsatzEIS/ErsatzEIS.rar b/jonas_tests/j2eeca/rars/ErsatzEIS/ErsatzEIS.rar deleted file mode 100644 index 7f997a6fdbb9e4b27248f01ffd31514aff843fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37633 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 UCBYpA00{2<>0M4(^55vc050AS*#H0l diff --git a/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/jonas-ra.xml deleted file mode 100644 index e8bde55dc5..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/jonas-ra.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - true - ersatz.resourceadapter - - 0 - 0 - -1 - 0 - 10 - - - 0 - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - eis/ErsatzEIS - - - ersatz.resourceadapter.MsgListenerInterface - eis/ErsatzAS - - diff --git a/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/ra.xml b/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/ra.xml deleted file mode 100644 index 8d47876ab1..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzEIS/META-INF/ra.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - Ersatz Resource Adapter --ErsatzEIS-- to Test JOnAS - ErsatzEIS - - Bull HN - ErsatzEIS - 1.1 - - false - - - - ersatz.resourceadapter.ResourceAdapterImpl - - - - URL for EIS instance - EIS_URL - java.lang.String - ErsatzEIS - - - - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - - - - - Test ServerName Property 1 - ServerName - java.lang.String - 111.111.111.111 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use - protocol - java.lang.String - LINE - - - - javax.resource.cci.ConnectionFactory - - - ersatz.resourceadapter.ConnectionFactoryImpl - - javax.resource.cci.Connection - ersatz.resourceadapter.ConnectionImpl - - NoTransaction - false - - - - - - - ersatz.resourceadapter.MsgListenerInterface - - - - ersatz.resourceadapter.ActivationSpecImpl - - - just to test setFormat - Format - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/jonas-ra.xml deleted file mode 100644 index 6508a4ac07..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/jonas-ra.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - true - ersatz.resourceadapter - - 0 - 0 - -1 - 0 - 10 - - - 0 - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - eis/ErsatzLoTransaction - - - ersatz.resourceadapter.MsgListenerInterface - eis/ErsatzAS1 - - diff --git a/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/ra.xml b/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/ra.xml deleted file mode 100644 index d7b9165e17..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzLoTransaction/META-INF/ra.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - Ersatz Resource Adapter --ErsatzLoTransaction-- to Test JOnAS - ErsatzLoTransaction - - Bull HN - ErsatzLoTransaction - 1.2 - - false - - - - ersatz.resourceadapter.ResourceAdapterImpl - - - - URL for EIS instance - EIS_URL - java.lang.String - ErsatzLoTransaction - - - - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - - - - - Test ServerName Property 1 - ServerName - java.lang.String - 222.222.222.222 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak42 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - - javax.resource.cci.ConnectionFactory - - - ersatz.resourceadapter.ConnectionFactoryImpl - - javax.resource.cci.Connection - ersatz.resourceadapter.ConnectionImpl - - LocalTransaction - false - - - - - - - ersatz.resourceadapter.MsgListenerInterface - - - - ersatz.resourceadapter.ActivationSpecImpl - - - just to test setFormat - Format - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/jonas-ra.xml deleted file mode 100644 index acffa6f557..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/jonas-ra.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - false - ersatz.resourceadapter - - 0 - 0 - -1 - 0 - 10 - - - 0 - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - eis/ErsatzNolog - - - ersatz.resourceadapter.MsgListenerInterface - eis/ErsatzAS2 - - diff --git a/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/ra.xml b/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/ra.xml deleted file mode 100644 index 7c3dfbb6e3..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzNolog/META-INF/ra.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - Ersatz Resource Adapter --ErsatzNolog-- to Test JOnAS - ErsatzNolog - - Bull HN - ErsatzNolog - 1.3 - - false - - - - ersatz.resourceadapter.ResourceAdapterImpl - - - - URL for EIS instance - EIS_URL - java.lang.String - ErsatzNolog - - - - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - - - - - Test ServerName Property 1 - ServerName - java.lang.String - 333.333.333.333 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak43 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - - javax.resource.cci.ConnectionFactory - - - ersatz.resourceadapter.ConnectionFactoryImpl - - javax.resource.cci.Connection - ersatz.resourceadapter.ConnectionImpl - - NoTransaction - false - - - - - - - ersatz.resourceadapter.MsgListenerInterface - - - - ersatz.resourceadapter.ActivationSpecImpl - - - just to test setFormat - Format - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/jonas-ra.xml deleted file mode 100644 index 50f9062610..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/jonas-ra.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - true - ersatz.resourceadapter - - 0 - 0 - -1 - 0 - 10 - - - 0 - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - eis/ErsatzSecurity - - - ersatz.resourceadapter.MsgListenerInterface - eis/ErsatzAS3 - - diff --git a/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/ra.xml b/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/ra.xml deleted file mode 100644 index 3f26f66cf3..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzSecurity/META-INF/ra.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - Ersatz Resource Adapter --ErsatzSecurity-- to Test JOnAS - ErsatzSecurity - - Bull HN - ErsatzSecurity - 1.4 - - false - - - - ersatz.resourceadapter.ResourceAdapterImpl - - - - URL for EIS instance - EIS_URL - java.lang.String - ErsatzSecurity - - - - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - - - - - Test ServerName Property 1 - ServerName - java.lang.String - 444.444.444.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak44 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - - javax.resource.cci.ConnectionFactory - - - ersatz.resourceadapter.ConnectionFactoryImpl - - javax.resource.cci.Connection - ersatz.resourceadapter.ConnectionImpl - - NoTransaction - - false - - - - - - - ersatz.resourceadapter.MsgListenerInterface - - - - ersatz.resourceadapter.ActivationSpecImpl - - - just to test setFormat - Format - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/jonas-ra.xml deleted file mode 100644 index df9c261367..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/jonas-ra.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - true - ersatz.resourceadapter - - 0 - 0 - -1 - 0 - 10 - - - 0 - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - eis/ErsatzXATransaction - - - ersatz.resourceadapter.MsgListenerInterface - eis/ErsatzAS4 - - diff --git a/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/ra.xml b/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/ra.xml deleted file mode 100644 index 24ab3d99fe..0000000000 --- a/jonas_tests/j2eeca/rars/ErsatzXATransaction/META-INF/ra.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - Ersatz Resource Adapter --ErsatzXATransaction-- to Test JOnAS - ErsatzXATransaction - - Bull HN - ErsatzXATransaction - 1.5 - - false - - - - ersatz.resourceadapter.ResourceAdapterImpl - - - - URL for EIS instance - EIS_URL - java.lang.String - ErsatzXATransaction - - - - - - ersatz.resourceadapter.ManagedConnectionFactoryImpl - - - - - Test ServerName Property 1 - ServerName - java.lang.String - 555.555.555.555 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak45 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use - protocol - java.lang.String - XA - - - - javax.resource.cci.ConnectionFactory - - - ersatz.resourceadapter.ConnectionFactoryImpl - - javax.resource.cci.Connection - ersatz.resourceadapter.ConnectionImpl - - XATransaction - false - - - - - - - ersatz.resourceadapter.MsgListenerInterface - - - - ersatz.resourceadapter.ActivationSpecImpl - - - just to test setFormat - Format - - - - - - - - diff --git a/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/jonas-ra.xml deleted file mode 100644 index 224801330c..0000000000 --- a/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/jonas-ra.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - FictionalEIS - - - true - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/ra.xml b/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/ra.xml deleted file mode 100644 index 35cb2de1f8..0000000000 --- a/jonas_tests/j2eeca/rars/JtestResourceAdapter/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalEIS - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - NoTransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - false - - diff --git a/jonas_tests/j2eeca/rars/Nolog/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/Nolog/META-INF/jonas-ra.xml deleted file mode 100644 index 8f47dd7776..0000000000 --- a/jonas_tests/j2eeca/rars/Nolog/META-INF/jonas-ra.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - FictionalNolog - - - false - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/Nolog/META-INF/ra.xml b/jonas_tests/j2eeca/rars/Nolog/META-INF/ra.xml deleted file mode 100644 index 9355803730..0000000000 --- a/jonas_tests/j2eeca/rars/Nolog/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalNolog - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - NoTransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - false - - diff --git a/jonas_tests/j2eeca/rars/Reauth/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/Reauth/META-INF/jonas-ra.xml deleted file mode 100644 index 4e94d22f44..0000000000 --- a/jonas_tests/j2eeca/rars/Reauth/META-INF/jonas-ra.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - FictionalReauth - - - true - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/Reauth/META-INF/ra.xml b/jonas_tests/j2eeca/rars/Reauth/META-INF/ra.xml deleted file mode 100644 index 45382b86c5..0000000000 --- a/jonas_tests/j2eeca/rars/Reauth/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalReauth - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - NoTransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - true - - diff --git a/jonas_tests/j2eeca/rars/Security/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/Security/META-INF/jonas-ra.xml deleted file mode 100644 index 3b102aecb6..0000000000 --- a/jonas_tests/j2eeca/rars/Security/META-INF/jonas-ra.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - FictionalSecurity - - - true - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/Security/META-INF/ra.xml b/jonas_tests/j2eeca/rars/Security/META-INF/ra.xml deleted file mode 100644 index b3486e7dff..0000000000 --- a/jonas_tests/j2eeca/rars/Security/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalSecurity - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - NoTransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - false - - diff --git a/jonas_tests/j2eeca/rars/Transaction/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/Transaction/META-INF/jonas-ra.xml deleted file mode 100644 index 9d782a1757..0000000000 --- a/jonas_tests/j2eeca/rars/Transaction/META-INF/jonas-ra.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - FictionalLoTransaction - - - true - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/Transaction/META-INF/ra.xml b/jonas_tests/j2eeca/rars/Transaction/META-INF/ra.xml deleted file mode 100644 index 98c7639866..0000000000 --- a/jonas_tests/j2eeca/rars/Transaction/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalLoTransaction - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - LocalTransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - false - - diff --git a/jonas_tests/j2eeca/rars/XATransaction/META-INF/jonas-ra.xml b/jonas_tests/j2eeca/rars/XATransaction/META-INF/jonas-ra.xml deleted file mode 100644 index a2a4136c4d..0000000000 --- a/jonas_tests/j2eeca/rars/XATransaction/META-INF/jonas-ra.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - FictionalXATransaction - - - true - fictional.resourceadapter - - 0 - 0 - 5 - - - ServerName - 111.222.333.444 - - - PortNumber - ak41 - - - DUserName - defaultUserName - - - DPassword - defaultPassword - - - protocol - LINE - - diff --git a/jonas_tests/j2eeca/rars/XATransaction/META-INF/ra.xml b/jonas_tests/j2eeca/rars/XATransaction/META-INF/ra.xml deleted file mode 100644 index 1248685cd2..0000000000 --- a/jonas_tests/j2eeca/rars/XATransaction/META-INF/ra.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Fictional Resource Adapter to Test JOnAS - Bull - 1.0 - FictionalXATransaction - 2.1 - - fictional.resourceadapter.JtestResourceAdapter - javax.resource.cci.ConnectionFactory - fictional.resourceadapter.CommonClient - javax.resource.cci.Connection - fictional.resourceadapter.ConnectionImpl - XATransaction - - Test ServerName Property 1 - ServerName - java.lang.String - 111.222.333.444 - - - Test PortNumber Property 2 - PortNumber - java.lang.String - ak41 - - - Default User Name - DUserName - java.lang.String - defaultUserName - - - Default Password - DPassword - java.lang.String - defaultPassword - - - Protocol to use(CPIC, LINE, NONE) - protocol - java.lang.String - LINE - - - BasicPassword - javax.resource.security.PasswordCredential - - false - - diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ActivationSpecImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ActivationSpecImpl.java deleted file mode 100644 index b0ca2bd4b0..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ActivationSpecImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Created on January 12, 2004 - * - * ActivationSpecImpl.java is used to test JCA 1.5 - * as implemented by JOnAS. This class implements the ActivationSpec Interface - * - * An ActivationSpec JavaBean represents inbound connectivity information from - * an EIS instance - */ -package ersatz.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.spi.ResourceAdapter; -import javax.resource.spi.ActivationSpec; - - // ActivationSpec interface extends ResourceAdapterAssociation interface. - -public class ActivationSpecImpl implements ActivationSpec, - java.io.Serializable -{ - private transient ResourceAdapter ra = null; // loaded by Application Server - private boolean raLoaded; - private String messageObjectType; - String cName = "ActivationSpecImpl"; - ResourceAdapterImpl rai; - - public ActivationSpecImpl() - { - Utility.log(cName+".constructor"); - } - public void validate() - throws javax.resource.spi.InvalidPropertyException - { - Utility.log(cName+".validate. eis="+rai.EIS_URL); - } - public ResourceAdapter getResourceAdapter() - { - return ra; - } - /** Set the ResourceAdapter association. - * - * @param ra ResourceAdapter passed in by Application Server (JOnAS) - * @exception javax.resource.ResourceException - **/ - public void setResourceAdapter(ResourceAdapter ra) throws ResourceException - { - Utility.log(cName+".setResourceAdapter arg="+ra); - rai = (ResourceAdapterImpl)ra; - if (ra==null) { - String s = "Application Server cannot set ResourceAdapter to null"; - Utility.log(cName+".setResourceAdapter error: "+s); - throw new ResourceException(s); - } - if (this.ra==null) { - this.ra = ra; - } else if (this.ra != ra) { - String s = "ResourceAdapter already set to "+this.ra - +". Must not change association"; - Utility.log(cName+".setResourceAdapter error: "+s); - throw new ResourceException(s); - } - } - - // test "setter" methods in Message Driven Bean MessageTakerMD.java - // as specified in deployment descriptor - // - public void setFormat(String f) { - messageObjectType=f; // f="String" - } - public String getFormat() { - return messageObjectType; - } - // TODO ...other methods -} \ No newline at end of file diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionFactoryImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionFactoryImpl.java deleted file mode 100644 index d5c9f93c0a..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionFactoryImpl.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Created on December 12, 2003 - * - * ConnectionFactoryImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. - * - */ -package ersatz.resourceadapter; - -import javax.naming.Reference; -import javax.naming.NamingException; -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.spi.ConnectionManager; -// interfaces implemented in this class -import javax.resource.cci.ConnectionFactory; -import javax.resource.cci.Connection; -import javax.resource.cci.ConnectionSpec; // j2ee 1.5 -import javax.resource.cci.RecordFactory; -import javax.resource.cci.ResourceAdapterMetaData; -import java.io.Serializable; -import javax.resource.Referenceable; -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionFactoryImpl implements ConnectionFactory, - Referenceable, Serializable - -{ - Reference reference; - private ConnectionManager cm; - private ManagedConnectionFactoryImpl mcf; // used in cm.allocateConnection - private ConnectionSpecImpl cs; // ConnectionSpec - protected boolean managed = true; - private String userName = ""; - private String passWord = ""; - String cName = "ConnectionFactoryImpl"; - - // - // ConnectionFactory instance created during lookup() by Application Server - // - public ConnectionFactoryImpl() { - } - public ConnectionFactoryImpl(ManagedConnectionFactoryImpl mcf, ConnectionManager cm) { - this.mcf=mcf; - this.cm=cm; - - } - // - // Container Managed Sign-on calls getConnection() from the Application Component - // - // Container-managed sign-on when deployment file contains line below - // - // Container - // - public Connection getConnection() - throws ResourceException - { - Utility.log(cName+".getConnection"+" (Container Managed Sign-on)"); - ConnectionImpl conn = null; - try { - conn = (ConnectionImpl)getConnection(null); - return conn; - } catch (ResourceException ex) { - throw ex; - } - } - // - // Component Managed Sign-on calls getConnection(cs) directly from the Application Component - // - // Component-managed sign-on when file "connector.xml / secured.jar" contains line below - // - // Application - // - public Connection getConnection(ConnectionSpec connectionspec) - throws ResourceException - { - ConnectionImpl conn = null; - ConnectionSpecImpl cs = null; - ConnectionRequestInfoImpl jcri=null; // - - if (connectionspec==null) { - mcf.setRes_Auth("Container"); - Utility.log(cName+".getConnection detected res-auth='"+mcf.getRes_Auth()+"'"); - // TODO what now? anything? - // now pass null to cm.allocateConnection(mcf, null); - } else { - mcf.setRes_Auth("Application"); - Utility.log(cName+".getConnection detected res-auth='"+mcf.getRes_Auth()+"'"); - cs = (ConnectionSpecImpl)connectionspec; - // load user and password into ConnectionRequestInfo instance - jcri = new ConnectionRequestInfoImpl(); - jcri.setUserName(cs.getUserName()); - jcri.setPassword(cs.getPassword()); - - } - Utility.log(cName+".getConnection calling cm.allocateConnection"); - try { - conn = (ConnectionImpl)cm.allocateConnection(mcf, jcri); - if (conn==null) { - Utility.log(cName+". getConnection, cm.allocateConnection" - +" error: Null connection object returned"); - throw new ResourceException("Null connection object returned by allocateConnection"); - } - conn.crii=jcri; - return conn; - } catch (IllegalStateException is) { - Utility.log(cName+".getConnection IllegalStateException"+is); - throw is; - } catch (ResourceException re) { - Utility.log(cName+".getConnection ResourceException="+re); - throw re; - } - } - - public RecordFactory getRecordFactory() - throws ResourceException - { - NotSupportedException nse = new NotSupportedException( - "RecordFactory is not currently supported"); - Utility.log(cName+".getRecordFactory "+nse); - throw nse; - } - - public ResourceAdapterMetaData getMetaData() - throws ResourceException - { - Utility.log(cName+".getMetaData"); - ResourceAdapterMetaData rd = null; // TODO do something - return rd; - } - public ConnectionManager getCM() { - return cm; - } - public ManagedConnectionFactoryImpl getMcf() { - return mcf; - } - // - // ***************** - // Reference - // ***************** - // - /** Required by the referencable attribute - * @param ref Reference object - **/ - public void setReference(javax.naming.Reference ref) - { - this.reference = ref; - } - - /** Required by the referencable attribute - * @return Reference object - **/ - public Reference getReference() - throws NamingException - { - return reference; - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionImpl.java deleted file mode 100644 index 9f5a128939..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Created on Jul 10, 2003 - * - * ConnectionImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. - * - */ -package ersatz.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.cci.Connection; -import javax.resource.cci.Interaction; -import javax.resource.cci.ConnectionMetaData; -import javax.resource.cci.LocalTransaction; -import javax.resource.cci.ResultSetInfo; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ConnectionEvent; -import javax.resource.spi.ConnectionRequestInfo; - -/** - * @author Bob Kruse - * - * Ersatz Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionImpl - implements Connection -{ - public String product="Ersatz EIS"; // see J2eeConnectorTestBeanClient - String version="1.1"; - String UserName="Ersatz"; // - private ManagedConnectionImpl mc; - public ConnectionRequestInfoImpl crii = null; - public LocalTransactionImpl lt; - boolean closed = false; // connection is closed - String cName = "ConnectionImpl"; - private boolean autoCommitMode = false; - - public ConnectionImpl(ManagedConnectionImpl mc) { // constructor for Connection - Utility.log(cName+".constructor"); - this.mc=mc; - } - // - // close connection handle - // - public void close() throws ResourceException - { - Utility.log(cName - +".close with ConnectionEvent.CONNECTION_CLOSED=" - +ConnectionEvent.CONNECTION_CLOSED); - closed = true; - - if (mc != null) { - try { - mc.sendEvent(ConnectionEvent.CONNECTION_CLOSED, null, this); - mc=null; - Utility.log(cName - +".close sendevent 'CONNECTION_CLOSED'"); - } catch (ResourceException e) { - Utility.log(cName+".close error: unable to close"); - throw e; - } - } else { - Utility.log(cName+".close error: mc=null"); - } - return; - } - // - // close physical connection - // - // The connectionErrorOccurred method indicates that the associated - // ManagedConnection instance is now invalid and unusable. - // mc.sendEvent method makes the call to connectionErrorOccurred - // - public void close(int eType) throws ResourceException - { - Utility.log(cName+".close("+eType+")"); - closed = true; - - if (mc != null) { - try { - mc.sendEvent(eType, null, this); - mc=null; - Utility.log(cName - +".close(CONNECTION_ERROR_OCCURRED=" - +ConnectionEvent.CONNECTION_ERROR_OCCURRED+") to " - +"close physical connection"); - } catch (ResourceException e) { - Utility.log(cName - +".close error: unable to close physical connection" - +" with 'CONNECTION_ERROR_OCCURRED'"); - throw e; - } - } else { - Utility.log(cName+".close error: mc=null already"); - } - return; - } - public Interaction createInteraction() throws ResourceException - { - Utility.log(cName+".createInteraction"); - InteractionImpl gi=new InteractionImpl(this, mc); - // TODO Interaction gi = new Interaction(this, this.mc, lw); - return gi; - } - public ConnectionMetaData getMetaData() throws ResourceException - { - Utility.log(cName+".getMetaData"); - ConnectionMetaDataImpl eisInfo = new ConnectionMetaDataImpl(this, mc); - return eisInfo; - } - public LocalTransaction getLocalTransaction() - throws ResourceException - { - try { - lt = (LocalTransactionImpl)mc.getLocalTransaction(true); - Utility.log(cName+".getLocalTransaction lt="+lt); - } catch (Exception e) { - Utility.log(cName+".getLocalTransaction error: " - +e.getMessage()+" <<<<<<<<<<<<"); - } - return (lt); - } - public ResultSetInfo getResultSetInfo() throws ResourceException - { - Utility.log(cName+".getResultSetInfo"); - NotSupportedException nse = new NotSupportedException("getResultSetInfo is not supported"); - throw nse; - } - public void associateConnection(ManagedConnectionImpl mc) throws IllegalStateException - { - Utility.log(cName+".associateConnection"); - this.mc=mc; - } - public ManagedConnectionImpl getMC() throws ResourceException - { - if (mc==null) - Utility.log(cName+".getMC mc="+this.mc); - else - Utility.log(cName+".getMC mc="+this.mc+" mc.xar="+mc.xar+", mc.xari="+mc.xari); - return this.mc; - } - public void setAutoCommit(boolean a) { - autoCommitMode=a; - } - public boolean getAutoCommit() { - return autoCommitMode; - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionMetaDataImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionMetaDataImpl.java deleted file mode 100644 index 0885ada93a..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionMetaDataImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Created on December 11, 2003 - * - * ConnectionMetaDataImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. - * - */ -package ersatz.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.cci.ConnectionMetaData; - -/** - * @author Bob Kruse - * - * Ersatz Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionMetaDataImpl - implements ConnectionMetaData -{ - public String product="Ersatz EIS"; // see J2eeConnectorTestBeanClient - String version="1.1"; - String UserName="Ersatz_User_Name"; // - private ManagedConnectionImpl mc; - private ConnectionImpl conn; - String cName = "ConnectionImpl"; - - // - // The method getUserName returns the user name for an active connection as - // known to the underlying EIS instance. The name corresponds the resource - // principal under whose security context a connection to the EIS - // instance has been established. - // - public ConnectionMetaDataImpl(ConnectionImpl c, ManagedConnectionImpl mc) { // constructor - Utility.log(cName+".constructor"); - this.mc=mc; - this.conn=c; - } - public String getEISProductName() - throws ResourceException - { - return (product); - } - public String getEISProductVersion() - throws ResourceException - { - return (version); - } - public String getUserName() - throws ResourceException - { - return (UserName); - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionRequestInfoImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionRequestInfoImpl.java deleted file mode 100644 index 50fa16dba1..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionRequestInfoImpl.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Created on December 11, 2003 - * - * ConnectionRequestInfoImpl.java is used to test the J2EE Connector 1.5 - * as implemented by JOnAS. - */ -package ersatz.resourceadapter; - -import javax.naming.Reference; -import javax.resource.spi.ConnectionRequestInfo; - -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionRequestInfoImpl implements ConnectionRequestInfo -{ - Reference reference; - // Resource adapter name form EIS_URL - public String raName=""; - // Managed Connection Factory s - String serverName=""; - String portNumber=""; - String userName=""; - String password=""; - String protocol=""; - - String Id=""; // used in hashcode() for ConnectionRequestInfo - String cName = "ConnectionRequestInfoImpl"; - // - // constructor - public ConnectionRequestInfoImpl() - { - Id=""; - Utility.log(cName+"() "+this ); - } - public ConnectionRequestInfoImpl(ConnectionRequestInfoImpl crii) - { - raName=crii.raName; - serverName=crii.serverName; - portNumber=crii.portNumber; - userName =crii.userName ; - password =crii.password ; - protocol =crii.protocol ; - Id =""; - Utility.log(cName+"(crii) "+this); - - } - - // module to add additional connection properties than - // the ones configured for the ConnectionFactory. This - // class is passed to the App Server and will be used - // on matchManagedConnections or createConnection - // methods by the App Server. - // - // - public void setUserName(String u) { - userName=u; - Utility.log(cName+".setUserName="+u); - } - public void setPassword(String p) { - password=p; - Utility.log(cName+".setPassword="+p); - } - public String getUserName() { - Utility.log(cName+".getUserName="+userName); - return userName; - } - public String getPassword() { - Utility.log(cName+".getPassword="+password); - return password; - } - public void setRaName(String s) { - raName=s; - } - public void setServerName(String s) { - serverName=s; - } - public void setPortNumber(String s) { - portNumber=s; - } - public void setProtocol(String s) { - protocol=s; - } - public String getRaName() { - return raName; - } - public String getServerName() { - return serverName; - } - public String getPortNumber() { - return portNumber; - } - public String getProtocol() { - return protocol; - } - private void setId() - { - if (Id == null || Id.length() == 0) - Id=raName + serverName + portNumber + userName + password + protocol; - - } - public String getId() - { - setId(); - return Id; - - } - // - // hashCode and equals method used in ConnectionRequestInfo, - // ManagedConnectionFactory - public int hashCode() - { - setId(); - int hash = Id.hashCode(); - return hash; - } - public boolean equals(Object obj) - { - boolean ret = false; - if (obj!=null) { - if ( obj instanceof ConnectionRequestInfoImpl) { - ConnectionRequestInfoImpl other = (ConnectionRequestInfoImpl)obj; - try { - ret= raName.equalsIgnoreCase(other.raName) && - serverName.equalsIgnoreCase(other.serverName) && - portNumber.equalsIgnoreCase(other.portNumber) && - userName.equalsIgnoreCase(other.userName) && - password.equalsIgnoreCase(other.password) && - protocol.equalsIgnoreCase(other.protocol); - } catch (Exception e) { - ret=false; - } - } - } - Utility.log(cName+".equals "+ret); - return ret; - } - -} \ No newline at end of file diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionSpecImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionSpecImpl.java deleted file mode 100644 index e48539794d..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ConnectionSpecImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Created on December 12, 2003 - * - * ConnectionFactoryImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. - * - */ -package ersatz.resourceadapter; - -import javax.resource.cci.ConnectionSpec; // j2ee 1.5 -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionSpecImpl - implements ConnectionSpec - -{ - private String userName = ""; - private String passWord = ""; - String cName = "ConnectionSpecImpl"; - - public ConnectionSpecImpl() { - } - public void setUserName(String u) { - userName=u; - Utility.log(cName+".setUserName="+u); - } - public void setPassword(String p) { - passWord=p; - Utility.log(cName+".setPassword="+p); - } - public String getUserName() { - Utility.log(cName+".getUserName="+userName); - return userName; - } - public String getPassword() { - Utility.log(cName+".getPassword="+passWord); - return passWord; - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/DefaultConnectionManager.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/DefaultConnectionManager.java deleted file mode 100644 index 2efa2765e2..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/DefaultConnectionManager.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Created on March 3, 2004 - * - * DefaultConnectionManager.java is used to test the J2EE Connector - * as implemented by JOnAS. - * -*/ -package ersatz.resourceadapter; - -import java.io.Serializable; -import javax.resource.ResourceException; -import javax.resource.spi.ConnectionManager; -import javax.resource.cci.ConnectionFactory; -import javax.resource.spi.ConnectionRequestInfo; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ResourceAdapterInternalException; - -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class DefaultConnectionManager - implements ConnectionManager, Serializable -{ - - String cName = "DefaultConnectionManager"; - - /**

    This method gets called by the connection factory instance. - *

    - * - * @param ManagedConnectionFactory - * used by application server to delegate - * connection matching/creation - * @param ConnectionRequestInfo - * connection request Information - * - * @return connection handle to the appropriate GCOS system - * - * - * @throws ResourceException Generic exception - * @throws ResourceAllocationException - * Failed to allocate system resources for - * connection request - * @throws ResourceAdapterInternalException - * Resource adapter related error condition - **/ - public Object allocateConnection(ManagedConnectionFactory MCF, - ConnectionRequestInfo info) - throws ResourceException - { - Object obj; - - ManagedConnectionFactoryImpl mcf = (ManagedConnectionFactoryImpl) MCF; - try { - ManagedConnectionImpl mc = - (ManagedConnectionImpl) mcf.createManagedConnection(null, info); - obj = mc.getConnection(null, info); - Utility.log(cName+".allocateConnection mc.getConnection(null, info) obj="+obj); - return obj; - } - catch (ResourceAdapterInternalException raie) - { - throw raie; - } - catch (Exception ex) - { - ResourceException re = new ResourceException(ex.getMessage()); - throw re; - } - } - -} - \ No newline at end of file diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ExecutionContext.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ExecutionContext.java deleted file mode 100644 index 40ad9ce300..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ExecutionContext.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Created on January 27, 2004 - * - * ExecutionContext.java is used to test JCA 1.5 as implemented by - * JOnAS. This class implements the ExecutionContext Interface - * - */ -package ersatz.resourceadapter; - -import javax.transaction.xa.Xid; -import javax.resource.NotSupportedException; - -/** - * @author Bob Kruse - * - * JCA1.5 ExecutionContext class - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ExecutionContext -{ - private Xid xid; - private long seconds; - String cName = "ExecutionContext"; - - public void setXid(Xid xid) - { - this.xid=xid; - Utility.log(cName+".setXid of="+xid); - } - public Xid getXid() - { - return xid; - } - public long getTransactionTimeout() - { - return seconds; - } - public void setTransactionTimeout(long seconds) - throws NotSupportedException - { - Utility.log(cName+".setTransactionTimeout seconds="+seconds); - this.seconds=seconds; - } -} \ No newline at end of file diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionImpl.java deleted file mode 100644 index 7535806c90..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Created on December 10, 2003 - * - * InteractionImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. This class implements the Interaction - * (cci) classes. - * - */ -package ersatz.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.cci.Interaction; -import javax.resource.cci.InteractionSpec; -import javax.resource.cci.Connection; -import javax.resource.cci.Record; -import javax.resource.cci.ResourceWarning; -/** - * @author Bob Kruse - * - * Jtest Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class InteractionImpl - implements Interaction -{ - - private Record output; - private boolean closed = false; - private ConnectionImpl con; - private ManagedConnectionImpl mcon; - String cName = "InteractionImpl"; - - public InteractionImpl(ConnectionImpl c) { - Utility.log(cName+".constructor"); - con=c; - } - public InteractionImpl(ConnectionImpl c, ManagedConnectionImpl mc) { - Utility.log(cName+".constructor"); - con=c; - mcon=mc; - } - /* - If an Interaction implementation does not support a variant of the execute - method, the method must throw a javax.resource.NotSupportedException. - */ - public boolean execute(InteractionSpec ispec, - Record input, - Record output) throws ResourceException - { - NotSupportedException nse = new NotSupportedException( - "InteractionImpl.execute is not currently supported"); - Utility.log(cName+".execute "+nse.toString()); - throw nse; - } - public Record execute(InteractionSpec ispec, - Record input) throws ResourceException - { - NotSupportedException nse = new NotSupportedException( - "InteractionImpl.execute is not currently supported"); - Utility.log(cName+".execute "+nse.toString()); - throw nse; - } - public void close() - throws ResourceException - { - Utility.log(cName+".close"); - closed=true; - } - public Connection getConnection() - { - Utility.log(cName+".getConnection"); - return con; - } - public ResourceWarning getWarnings() - throws ResourceException - { - Utility.log(cName+".getWarnings"); - NotSupportedException nse = new NotSupportedException( - "InteractionImpl.getWarnings is not currently supported"); - throw nse; - } - public void clearWarnings() - throws ResourceException - { - Utility.log(cName+".clearWarnings"); - NotSupportedException nse = new NotSupportedException( - "InteractionImpl.clearWarnings is not currently supported"); - throw nse; - } - -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionSpecImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionSpecImpl.java deleted file mode 100644 index 8cf65e8321..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/InteractionSpecImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Created on December 10, 2003 - * - * JtestInteraction.java is used to test the J2EE Connector - * as implemented by JOnAS. - * - */ -package ersatz.resourceadapter; - -import javax.resource.cci.InteractionSpec; -import javax.resource.cci.Record; -import javax.resource.cci.ResultSet; - -/** - * @author Bob Kruse - * - * Jtest Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. This is an empty - * class used to avoid an error of missing "implements InteractionSpec". - * - */ -public class InteractionSpecImpl - implements InteractionSpec, java.io.Serializable -{ - - private boolean closed = false; - private ConnectionImpl con; - private ManagedConnectionImpl mcon; - String cName = "InteractionSpecImpl"; - - /**************************** - * InteractionSpec methods - ****************************/ - public InteractionSpecImpl() { - Utility.log(cName+".constructor"); - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/LocalTransactionImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/LocalTransactionImpl.java deleted file mode 100644 index 361e3e5a4c..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/LocalTransactionImpl.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Created on December 10, 2003 - * - * LocalTransactionImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. This class implements - * javax.resource.spi.LocalTransaction and - * javax.resource.cci.LocalTransaction - */ -package ersatz.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ConnectionEvent; - -/** - * @author Bob Kruse - * - * Jtest Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class LocalTransactionImpl - implements javax.resource.spi.LocalTransaction, - javax.resource.cci.LocalTransaction -{ - private ManagedConnection mc; - String cName = "LocalTransactionImpl"; - private boolean sendEvent; - // - // This LocalTransactionImpl instance STATE - final private int RESET = 0; - final private int BEGUN = 1; - final private int ENDED = 2; - final private int PREPARED = 3; - final private int FORGOT = 4; - final private int COMMITTED = 5; - final private int ROLLEDBACK = 6; - - int txState; - - public LocalTransactionImpl(ManagedConnection MC, boolean se) { - Utility.log(cName+".constructor"); - this.mc = MC; - txState = RESET; - sendEvent = se; - } - public void setSendEvent(boolean event) { - sendEvent=event; - } - public int getTxState() { - return txState; - } - public ManagedConnection getCurrentMc() { - return mc; - } - public void begin() throws ResourceException - { - Utility.log(cName+".begin (enter) txState="+txState); - int curState=txState; - ManagedConnectionImpl omc = (ManagedConnectionImpl) mc; - try { - if (txState==RESET) { - if (sendEvent) { - omc.sendEvent(ConnectionEvent.LOCAL_TRANSACTION_STARTED, null, omc.getCHandle()); - txState=BEGUN; - Utility.log(cName - +".begin (exit) (sendEvent(LOCAL_TRANSACTION_STARTED=" - +ConnectionEvent.LOCAL_TRANSACTION_STARTED+"))" - +" From State="+curState+" to State="+txState); - } else { - txState=BEGUN; - } - omc.inLocalTrans=true; - } - else { - IllegalStateException ex = new IllegalStateException("LocalTransaction Already active"); - Utility.log(cName+".begin (exit) error: State="+txState - +" should be="+RESET+". "+ex.getMessage()); - throw ex; - } - - } catch (Exception e) { - Utility.log(cName - +".begin (exit) error: unable to sendEvent" - +" with 'LOCAL_TRANSACTION_STARTED' "+e.toString()); - } - } - public void commit() throws ResourceException - { - Utility.log(cName+".commit (enter) txState="+txState); - int curState=txState; - ManagedConnectionImpl omc = (ManagedConnectionImpl) mc; - try { - if (txState==BEGUN) { - if (sendEvent) { - omc.sendEvent(ConnectionEvent.LOCAL_TRANSACTION_COMMITTED, null, omc.getCHandle()); - txState=COMMITTED; - Utility.log(cName - +".commit (exit) (sendEvent(LOCAL_TRANSACTION_COMMITTED=" - +ConnectionEvent.LOCAL_TRANSACTION_COMMITTED+"))" - +" From State="+curState+" to State="+txState); - } else { - txState=COMMITTED; - } - } - else { - IllegalStateException ex = new IllegalStateException( - "LocalTransaction Illegal State during commit"); - Utility.log(cName+".commit (exit) error: State="+txState - +" should be="+BEGUN+". "+ex.getMessage()); - omc.inLocalTrans=false; - throw ex; - } - } catch (Exception e) { - Utility.log(cName - +".commit (exit) error: unable to sendEvent" - +" with 'LOCAL_TRANSACTION_COMMITTED' "+e.toString()); - } - omc.inLocalTrans=false; - } - public void rollback() throws ResourceException - { - int curState=txState; - Utility.log(cName+".rollback (enter) txState="+txState); - ManagedConnectionImpl omc = (ManagedConnectionImpl) mc; - try { - if (txState == BEGUN) { - if (sendEvent) { - omc.sendEvent(ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK, null, omc.getCHandle()); - txState=ROLLEDBACK; - Utility.log(cName - +".rollback (exit) (sendEvent(LOCAL_TRANSACTION_ROLLEDBACK=" - +ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK+"))" - +" From State="+curState+" to State="+txState); - } else { - txState=ROLLEDBACK; - } - } - else { - IllegalStateException ex = new IllegalStateException( - "LocalTransaction Illegal State during rollback"); - Utility.log(cName+".rollback (exit) error: State="+txState - +" should be="+BEGUN+". "+ex.getMessage()); - omc.inLocalTrans=false; - throw ex; - } - } catch (Exception e) { - Utility.log(cName - +".rollback (exit) error: unable to sendEvent" - +" with 'LOCAL_TRANSACTION_ROLLEDBACK' "+e.toString()); - } - omc.inLocalTrans=false; - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionFactoryImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionFactoryImpl.java deleted file mode 100644 index 5c718e09d5..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionFactoryImpl.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Created on December 11, 2003 - * - * ManagedConnectionFactoryImpl.java is part of a Resource Adapter to test - * J2EE Connector 1.5 as implemented by JOnAS. - */ -package ersatz.resourceadapter; - -import javax.naming.Reference; -import java.io.PrintWriter; -import java.util.Set; -import java.util.Timer; -import java.util.Iterator; -import java.util.Date; -import javax.security.auth.Subject; -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.spi.ResourceAllocationException; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ResourceAdapterAssociation; -import javax.resource.spi.ConnectionManager; -import javax.resource.spi.ConnectionRequestInfo; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ResourceAdapter; -import javax.resource.spi.BootstrapContext; -import javax.resource.spi.security.PasswordCredential; -import java.io.Serializable; - -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ManagedConnectionFactoryImpl - implements ManagedConnectionFactory, ResourceAdapterAssociation, - Serializable -{ - Reference reference; - public String defaultUserName=""; // used in ManagedConnectionImpl, ConnectionRequestInfo - public String defaultPassword=""; // set by "getter" method - - // loaded by Application Server - ResourceAdapter ra=null; - String ServerName=""; - String PortNumber=""; - String userName=""; - String password=""; - String protocol=""; - - public ConnectionManager cm; // loaded by ManagedConnectionFactory - private ManagedConnectionFactoryImpl mcf; - private ConnectionRequestInfoImpl crii; - private ResourceAdapterImpl rai=null; // re-cast at the same time - private BootstrapContext bootstrapCtx; // used to test timer - private boolean raLoaded=false; - PrintWriter pw; // App Server sets to null by default - boolean forceMatchNull; // in matchManagedConnections() when debugging - public String res_auth; // set by ConnectionFactory.getConnection() - // then put into ManagedConnection when created - String mfId; - String cName="ManagedConnectionFactoryImpl"; - // - public ManagedConnectionFactoryImpl() - { - crii = new ConnectionRequestInfoImpl(); - pw = null; - } - - public Object createConnectionFactory(ConnectionManager connectionmanager) - throws ResourceException - { - cm = connectionmanager; - Utility.log(cName+".createConnectionFactory cm="+cm); - Object obj; - obj = new ConnectionFactoryImpl(this, cm); // creates ConnectionFactory - return obj; - } - /** - * - * When the createConnectionFactory method takes no arguments, the resource adapter - * provides a default ConnectionManager instance. This case is used in a non-managed - * application scenario. - */ - public Object createConnectionFactory() - throws ResourceException - { - Utility.log(cName+": error - non-managed detected"); - throw new NotSupportedException( - "A non-managed two-tier application environment is not supported in J2EE testing."); - } - public ManagedConnection createManagedConnection(Subject subject, - ConnectionRequestInfo CRI) - throws ResourceException - { - ConnectionRequestInfoImpl info = (ConnectionRequestInfoImpl)CRI; - Utility.log(cName+".createManagedConnection subject="+subject - +", cri="+info); - mcf = this; - ManagedConnectionImpl mc; - if (subject!=null) { - // - // The application server user's password to the EIS is carried in Subject - // - try { - PasswordCredential pc = Utility.getPasswordCredential(this, subject, info); - if (pc==null) { - Utility.log(cName - +".createManagedConnection PasswordCredential = null, Subject not null."); - } else { - if (pc.getUserName()==null || pc.getUserName().length()==0) { - Utility.log(cName+".createManagedConnection userName=empty"); - } else { - userName = new String(pc.getUserName()); - Utility.log(cName+".createManagedConnection" - +" PasswordCredential userName="+userName); - password = new String(pc.getPassword()); // pc.password is char[] - Utility.log(cName+".createManagedConnection" - +" PasswordCredential password="+password); - } - } - } catch (Exception e) { - Utility.log(cName+".createManagedConnection getPasswordCredential " - +"error: e="+e.toString()); - } - } - - if (info != null) { - // - // The client application component user's password is carried in info - // Use defaults if userName or password is empty - // - String s = info.getUserName(); - if (s.length()>0) userName = s; - else - Utility.log(cName+".createManagedConnection" - +" ConnectionRequestInfo userName="+s+". Use default="+userName); - Utility.log(cName+".createManagedConnection" - +" ConnectionRequestInfo userName="+userName); - s = info.getPassword(); - if (s.length()>0) password = s; - else - Utility.log(cName+".createManagedConnection" - +" ConnectionRequestInfo password="+s+". Use default="+password); - Utility.log(cName+".createManagedConnection" - +" ConnectionRequestInfo password="+password); - } - - if ((subject==null && info==null) || userName=="") { - // - // The default user's password is carried in the ManagedConnectionFactory instance - // - userName=defaultUserName; - password=defaultPassword; - Utility.log(cName+".createManagedConnection default userName="+userName); - Utility.log(cName+".createManagedConnection default password="+password); - } - ConnectionRequestInfoImpl mcCrii = new ConnectionRequestInfoImpl(crii); - mcCrii.setPassword(password); - mcCrii.setUserName(userName); - try { - // - // Create the ManagedConnectionImpl Instance - // - mc = new ManagedConnectionImpl(mcCrii); - mc.setMcf(mcf); - mc.setRes_Auth(res_auth); - mc.setLogWriter(pw); - Utility.log(cName+".createManagedConnection for eis="+rai.getEIS_URL() - +" mc="+mc); - return mc; - } catch (Exception ex) { - Utility.log(cName+".createManagedConnection : error - Exception ex=" - +ex.getMessage()); - throw new ResourceAllocationException(ex.getMessage()); - } - } - public void setMatchNull(boolean truefalse) { // nobody calls this - forceMatchNull=truefalse; - } - public ManagedConnection matchManagedConnections(Set connectionSet, - Subject subject, - ConnectionRequestInfo info) - throws ResourceException - { - String mName=".matchManagedConnections"; - Utility.log(cName+mName+" Set="+connectionSet+" Subject="+subject+" Crinfo="+info); - ManagedConnectionImpl mc = null; - if (forceMatchNull) { - Utility.log(cName+mName+" force new connection"); - return mc; // forces new connection - } - - ConnectionRequestInfoImpl mcCrii = null; - ConnectionRequestInfoImpl curCrii = new ConnectionRequestInfoImpl(crii); - ManagedConnectionImpl wmc = null; - Iterator it = connectionSet.iterator(); - int cnt=0; - while (it.hasNext()) { - Object obj = it.next(); - Utility.log(cName+mName - +" find next ManagedConnectionImpl in Set cnt="+ (++cnt)+" obj="+obj); - if (obj instanceof ManagedConnectionImpl) { - // see if ManagedConnectionImpl is available - // i.e., no connection handle exists for mc instance - // i.e., the connection is closed - // TODO choose one of the above - wmc = (ManagedConnectionImpl) obj; - mcCrii=wmc.getCrii(); - if (curCrii.equals(mcCrii)) { - if (wmc.getCHandle()==null || wmc.isClosed()) { - mc=wmc; - Utility.log(cName+mName - +" connection handle == null. Set cnt="+cnt+" matched mc="+wmc); - - } else { - // error: connection should not exist J2ee 1.0 pg. 32 - String s = "connection handle should not exist"; - Utility.log(cName+mName - +"error: "+s+". connectionSet cnt="+cnt); - } - } - - } - } - if (mc==null) - Utility.log(cName+mName+" mc=null No match found. Set cnt="+cnt); - else - Utility.log(cName+mName+" match found mc="+mc); - return mc; - } - // - // The setLogWriter and getLogWriter - // the Application Server calls ManagedConnectionImpl.setLogWriter(pw) - // - public void setLogWriter(PrintWriter printwriter) - throws ResourceException - { - Utility.log(cName+".setLogWriter mcfi.pw="+pw+" ApplicationServer's PrintWriter="+printwriter); - if (printwriter!=null) pw = printwriter; - } - - public PrintWriter getLogWriter() - throws ResourceException - { - return pw; - } - public ResourceAdapter getResourceAdapter() - { - return ra; - } - /** Set the ResourceAdapter association. - * - * @param ra ResourceAdapter passed in by Application Server (JOnAS) - * @exception javax.resource.ResourceException - **/ - public void setResourceAdapter(ResourceAdapter ra) throws ResourceException - { - Utility.log(cName+".setResourceAdapter arg="+ra); - if (ra==null) { - String s = "Application Server cannot set ResourceAdapter to null"; - Utility.log(cName+".setResourceAdapter error: "+s); - throw new ResourceException(s); - } - if (!raLoaded) { - this.ra = ra; - rai = (ResourceAdapterImpl)ra; - crii.setRaName(rai.getEIS_URL()); - raLoaded=true; // load exactly once - } else { - if (this.ra==ra) { - String s = "setResoruceAdapter called again by the Application " - +"Server with same ResourceAdapter value."; - Utility.log(cName+".setResourceAdapter error: "+s); - throw new ResourceException(s); - } else { - String s = "ResourceAdapter already set to "+this.ra - +". Must not change association"; - Utility.log(cName+".setResourceAdapter error: "+s); - throw new ResourceException(s); - } - } - } - // - // config-property processing "setter" properties - // - /** Set the JOnAS config-property.. Default value is "". - * - * @param c1 String of config-property. - * for testng RA. - **/ - public void setServerName(String c1) - { - ServerName = c1; - crii.setServerName(ServerName); - //Utility.log(cName+".setServerName="+ServerName); - } - public String getServerName() { - return ServerName; - } - public void setPortNumber(String s) - { - PortNumber=s; - crii.setPortNumber(PortNumber); - //Utility.log(cName+".setPortNumber="+PortNumber); - } - public String getPortNumber() - { - return PortNumber; - } - public void setDUserName(String s) - { - defaultUserName=s; - crii.setUserName(s); - //Utility.log(cName+".setDUserName="+defaultUserName); - } - public String getDUserName() - { - return defaultUserName; - } - public void setDPassword(String s) - { - defaultPassword=s; - crii.setPassword(s); - //Utility.log(cName+".setDPassword="+defaultPassword); - } - public String getDPassword() - { - return defaultPassword; - } - public void setProtocol(String s) - { - protocol=s; - crii.setProtocol(protocol); - //Utility.log(cName+".setProtocol="+protocol); - } - public String getProtocol() - { - return protocol; - } - public ConnectionManager getCM() - { - return cm; - } - public String getRes_Auth() { - return res_auth; - } - public void setRes_Auth(String r) { - res_auth=r; - } - // - // hashCode and equals method used in ConnectionRequestInfo, - // ManagedConnectionFactory - public int hashCode() - { - if (mfId == null || mfId.length() == 0) { - crii.hashCode(); - mfId = crii.getId(); - } - int hash = mfId.hashCode(); - return hash; - } - public boolean equals(Object other) - { - boolean match = false; - if (other==null) { - return match; - } - if (other instanceof ManagedConnectionFactoryImpl) { - ManagedConnectionFactoryImpl otherMcf = (ManagedConnectionFactoryImpl)other; - try { - if (hashCode() != otherMcf.hashCode()) { - Utility.log(cName+".equals("+otherMcf+") return="+match); - return false; - } - match = crii.equals(otherMcf.crii); - } catch (Exception e) { - Utility.log(cName+".equals("+otherMcf+") Exception="+e); - return false; - } - } - return match; - } - /* 10.3.7 - A resource adapter may not be able to directly create a Timer instance, if it does - not have adequate runtime permissions to create threads. This is because the Timer - instance starts a background thread. In such a case, the resource adapter can - instead use the BootstrapContext instance to obtain a Timer instance from the - application server. - */ - public boolean isTimerWorking() - { - ResourceAdapterImpl rai = (ResourceAdapterImpl)ra; - try { - if (rai.bootstrapCtx==null) { - throw new Exception("bootstrapCtx=null"); - } - Timer timer = rai.bootstrapCtx.createTimer(); // get a Timer instance - Utility.log(cName+".isTimerWorking Timer was created. "); - return true; - } catch (Exception e) { - Utility.log(cName+".isTimerWorking Error: "+e); - return false; - } - } -} diff --git a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionImpl.java b/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionImpl.java deleted file mode 100644 index 6023e018ba..0000000000 --- a/jonas_tests/j2eeca/src/ersatz/resourceadapter/ManagedConnectionImpl.java +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Created on December 11, 2003 - * - * ManagedConnectionImpl.java is a Resource Adapter class to test the J2EE Connector - * as implemented by JOnAS. - */ -package ersatz.resourceadapter; - -import java.io.PrintWriter; -import java.util.Date; -import java.util.Vector; // <========= -import javax.security.auth.Subject; -import javax.resource.ResourceException; -import javax.resource.spi.ConnectionEvent; -import javax.transaction.xa.XAResource; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ConnectionEventListener; -import javax.resource.spi.ConnectionManager; -import javax.resource.spi.ConnectionRequestInfo; -import javax.resource.spi.LocalTransaction; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ManagedConnectionMetaData; - -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ManagedConnectionImpl - implements ManagedConnection -{ - String Id = ""; - private String userName=""; - private String password=""; - private ManagedConnectionFactory mcf; // loaded by ManagedConnectionFactory - public ConnectionManager cm; // loaded by ManagedConnectionFactory - private ConnectionRequestInfoImpl crii; - public LocalTransactionImpl loTx=null; - PrintWriter pw; // App Server sets to null by default - private Vector listeners; - //Managed environment - public String res_auth; // set by ConnectionFactory.getConnection() - // then put into ManagedConnection when created - public String re_authentication_UserName; // set by ConnectionFactory.getConnection() - public String re_authentication_Password; - public XAResource xar; - public XAResourceImpl xari; - boolean closed; - public ConnectionImpl cHandle; // ManagedConnection mapped 1:1 to a physical connection - private boolean destroyed; //set when destroyed - public boolean inXATrans; - public boolean inLocalTrans; - public boolean sendEvent; - String cName = "ManagedConnectionImpl"; - - // - // constructor - public ManagedConnectionImpl(ConnectionRequestInfoImpl CRII) - { - crii = new ConnectionRequestInfoImpl(CRII); - userName=crii.userName; - password=crii.password; - closed = true; - listeners = new Vector(); - pw = null; - xar = null; - xari = null; - loTx = null; - } - public void setUserName(String u) { - userName=u; - Utility.log(cName+".setUserName="+u); - } - public void setPassword(String p) { - password=p; - Utility.log(cName+".setPassword="+p); - } - public void setRes_Auth(String r) { - res_auth=r; - Utility.log(cName+".setRes_Auth="+r); - } - // - // Referenced classes of package javax.resource.spi: - // ConnectionRequestInfo, ConnectionEventListener, LocalTransaction, - // ManagedConnectionMetaData - // - // NOTE: Subject is instantiated by Application Server - // - public int cntListeners() { - Vector lst = (Vector) listeners.clone(); - int len = lst.size(); - Utility.log(cName+".cntListeners counted="+len); - return len; - } - public ConnectionImpl getCHandle() { - return cHandle; - } - public boolean isClosed() { - return closed; - } - public ConnectionRequestInfoImpl getCrii() { - return crii; - } - - public Object getConnection(Subject subject, ConnectionRequestInfo connectionrequestinfo) - throws ResourceException - { - Utility.log(cName+".getConnection *******************"); - if (subject!=null) { - // - // for this code to execute, the following will be present in ra.xml - // true - // - Utility.log(cName+".getConnection via PasswordCredential"); - Utility.log("true"); - try { - // TODO Find out about org.ietf.jgss.GSSCredential interface in J2SE 1.4 - } catch (Exception e) { - Utility.log(cName+".getConnection getPasswordCredential error: e=" - +e.toString()); - } - } - // Code for reauthentication-support when Subject==null and ConnectionRequestInfo - // contains different password and username - // - if (connectionrequestinfo!=null) { - Utility.log(cName+".getConnection via ConnectionRequestInfo"); - Utility.log("true"); - ConnectionRequestInfoImpl cri = (ConnectionRequestInfoImpl)connectionrequestinfo; - String re_authentication_UserName = new String(cri.getUserName()); - String re_authentication_Password = new String(cri.getPassword()); - Utility.log( - " re-authentication userName="+re_authentication_UserName+ - " compare to existing userName="+userName); - Utility.log( - " re-authentication password="+re_authentication_Password+ - " compare to existing password="+password); - } - Object obj = new ConnectionImpl(this); - cHandle = (ConnectionImpl)obj; - closed=false; - destroyed=false; - return obj; - } - public void destroy() - throws ResourceException - { - Utility.log(cName+".destroy"); - // the physical connection is closed - destroyed = true; - closed = true; - cHandle=null; - } - - public void cleanup() - throws ResourceException - { - // the physical connection stays open - // but all connection handles invalidated - Utility.log(cName+".cleanup"); - cHandle=null; - closed=true; - - } - - public void associateConnection(Object obj) - throws ResourceException - { - Utility.log(cName+".associateConnection"); - if (obj instanceof ConnectionImpl) { - ConnectionImpl conn = (ConnectionImpl) obj; - conn.associateConnection(this); // TODO may need more arg to associate - } else { - Utility.log(cName+".associateConnection "+ - "error: obj not instanceof ConnectionImpl"); - } - } - - public void addConnectionEventListener(ConnectionEventListener listener) - { - listeners.addElement(listener); - Utility.log(cName+".addConnectionEventListener listener=" - +listener); - } - - public void removeConnectionEventListener(ConnectionEventListener listener) - { - Vector lst = (Vector) listeners.clone(); - int len = lst.size(); - Utility.log(cName+".removeConnectionEventListener " - +"Number of listeners="+len); - try { - listeners.removeElement(listener); - } catch (Exception e) { - Utility.log(cName+".removeConnectionEventListener error: " - +"unable to remove listener"); - } - lst = (Vector) listeners.clone(); - len = lst.size(); - Utility.log(cName+".removeConnectionEventListener listener=" - +listener+" was removed. Number listeners left="+len); - } - - public XAResource getXAResource() - throws ResourceException - { - // TODO determine if NoTransaction - // throw ResourceException - if (xar==null) - xar = (XAResource)new XAResourceImpl(this); - Utility.log(cName+".getXAResource xar="+xar); - return xar; - } - public void resetXar() { - // dissociate XAResource Xid from this ManagedConnection - Utility.log(cName+ - ".resetXar dissociate XAResource Xid from this ManagedConnection"); - xar=null; - xari=null; - } - public XAResourceImpl getCurrentXar() - throws ResourceException - { - xari=(XAResourceImpl)xar; - Utility.log(cName+".getCurrentXar xari="+xari); - return xari; - } - - public javax.resource.cci.LocalTransaction getLocalTransaction(boolean sendEvent) - throws ResourceException - { - LocalTransactionImpl lt = null; - Utility.log(cName+".getLocalTransaction(sendEvent)"); - this.sendEvent=sendEvent; - try { - lt = (LocalTransactionImpl) getLocalTransaction(); - Utility.log(cName+".getLocalTransaction(sendEvent) lt="+lt); - } catch (Exception e) { - Utility.log(cName+".getLocalTransaction(sendEvent) " - +"error: "+e.getMessage()); - } - return (lt); - } - - public LocalTransaction getLocalTransaction() - throws ResourceException - { - Utility.log(cName+".getLocalTransaction"); - if (loTx==null) { - loTx = new LocalTransactionImpl(this, sendEvent); - Utility.log(cName+".getLocalTransaction new loTx="+loTx); - return loTx; - } else { - Utility.log(cName+".getLocalTransaction old loTx="+loTx); - loTx.setSendEvent(sendEvent); - return loTx; - } - } - - public ManagedConnectionMetaData getMetaData() - throws ResourceException - { - Utility.log(cName+".getMetaData"); - return new ManagedConnectionMetaDataImpl(); - } - /** Send the specified event to all the EventListeners that have - * registered with this ManagedConnection instance. - * - * @param int Event type to send - * @param Exception if one is associated with this event - * @param ch Connection handle associated with this event - * @throws ResourceException generic exception if operation fails - * @throws IllegalArgumentException if an invalid event is specified - **/ - public void sendEvent(int eType, Exception ex, Object ch) throws ResourceException - { - Vector lst = (Vector) listeners.clone(); - ConnectionEvent ce = null; - if (ex==null) { - ce = new ConnectionEvent(this, eType); - } - else - ce = new ConnectionEvent(this, eType, ex); - - if (ch != null) - ce.setConnectionHandle(ch); - else - Utility.log(cName+".sendEvent ch==null"); - - int len = lst.size(); - for (int i=0; iRESET) { - xidState=COMMITTED; - Utility.log(cName+".commit From State="+curState+ - " to State="+xidState+" xid="+xid+" onePhase="+onePhase); - } - else { - Utility.log(cName+".commit error: State="+xidState - +" should be="+STARTED+"or more. xid="+xid+" onePhase="+onePhase); - } - } - public void end(Xid xid, int flags) throws XAException - { - int curState=xidState; - xidState=ENDED; - ManagedConnectionImpl jmc = (ManagedConnectionImpl) mc; - jmc.resetXar(); - Utility.log(cName+".end From State="+curState+ - " to State="+xidState+" for xid="+xid+" flags="+flags); - } - public void forget(Xid xid) throws XAException - { - Utility.log(cName+".forget State="+xidState); - xidState=FORGOT; - } - public int prepare(Xid xid) throws XAException - { - Utility.log(cName+".prepare State="+xidState); - xidState=PREPARED; - //return 1; - return XA_OK; - } - /** - * Obtain a list of prepared transaction branches from a resource manager. - */ - public Xid[] recover(int flag) throws XAException - { - recoverFlag=flag; - Utility.log(cName+".recover State="+xidState); - return xidArray; - } - public void rollback(Xid xid) throws XAException - { - int curState=xidState; - if (xidState >= STARTED) { - xidState=ROLLEDBACK; - Utility.log(cName+".rollback From State="+curState+ - " to State="+xidState+" xid="+xid); - } - else { - Utility.log(cName+".rollback error: State="+xidState - +" should be="+STARTED+"or more. xid="+xid); - } - } - public void start(Xid xid, int flags) throws XAException - { - Utility.log(cName+".start xid="+xid+" flags="+flags); - currentXid=xid; - xFlags=flags; - int curState=xidState; - if (xidState==RESET) { - xidState=STARTED; - Utility.log(cName+".start From State="+curState+ - " to State="+xidState+" xid="+xid+" flags="+flags); - } - else { - Utility.log(cName+".start error: State="+xidState - +" should be="+RESET+" xid="+xid+" flags="+flags); - } - } - public int getTransactionTimeout() throws XAException - { - Utility.log(cName+".getTransactionTimeout timeout="+timeout); - return timeout; - } - public boolean setTransactionTimeout(int seconds) throws XAException - { - timeout=seconds; - Utility.log(cName+".setTransactionTimeout seconds="+seconds); - return true; - } - /** - * Determine if the resource manager instance represented by the target object is the - * same as the resource manager instance represented by the parameter xares - */ - public boolean isSameRM(XAResource xares) throws XAException - { - boolean a = true; - Utility.log(cName+".isSameRM xares="+xares+" return="+a); - return a; - } -} diff --git a/jonas_tests/j2eeca/src/fictional/resourceadapter/CommonClient.java b/jonas_tests/j2eeca/src/fictional/resourceadapter/CommonClient.java deleted file mode 100644 index ba9d0f2e7f..0000000000 --- a/jonas_tests/j2eeca/src/fictional/resourceadapter/CommonClient.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Created on Jun 12, 2003 - * - * CommonClient.java is used to test the J2EE Connector - * as implemented by JOnAS. This class implements some the Common Client Interface - * (cci) classes. Each cci method simulates actual functionality and returns test - * results to the caller which is a JUnit test program. - * - */ -package fictional.resourceadapter; - -import javax.naming.Reference; -import javax.naming.NamingException; -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.spi.ConnectionManager; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ConnectionRequestInfo; -// interfaces implemented in this class -import javax.resource.cci.ConnectionFactory; -import javax.resource.cci.Connection; -import javax.resource.cci.ConnectionSpec; // j2ee 1.5 -import javax.resource.cci.RecordFactory; -import javax.resource.cci.ResourceAdapterMetaData; -import java.io.Serializable; -import javax.resource.Referenceable; -// logger imports -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class CommonClient - implements - ConnectionFactory, - ConnectionSpec, // j2ee 1.5 - ResourceAdapterMetaData, - Referenceable, - Serializable - -{ - Reference reference; - private ConnectionManager cm; - private ManagedConnectionFactory mcf; // used in cm.allocateConnection - private CommonClient cs; // ConnectionSpec - protected boolean managed = true; - private Logger logger = null; - private String userName = ""; - private String passWord = ""; - String cName = ""; - - public CommonClient() { - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - } - // - // ***************** - // ConnectionSpec methods - // ***************** - // - public void setUserName(String u) { - userName=u; - cName = "ConnectionSpec"; - logger.log(BasicLevel.DEBUG, cName+".setUserName="+u); - } - public void setPassword(String p) { - passWord=p; - cName = "ConnectionSpec"; - logger.log(BasicLevel.DEBUG, cName+".setPassword="+p); - } - public String getUserName() { - cName = "ConnectionSpec"; - logger.log(BasicLevel.DEBUG, cName+".getUserName="+userName); - return userName; - } - public String getPassword() { - cName = "ConnectionSpec"; - logger.log(BasicLevel.DEBUG, cName+".getPassword="+passWord); - return passWord; - } - // - // ***************** - // ConnectionFactory methods - // ***************** - // - // Referenced classes of package javax.resource.cci: - // Connection, ConnectionSpec, RecordFactory, ResourceAdapterMetaData - // (below is constructor for ConnectionFactory - // - // ConnectionFactory instance created during lookup() by Application Server - // - public CommonClient(ManagedConnectionFactory mcf, ConnectionManager cm) { - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - this.mcf=mcf; - this.cm=cm; - - } - private String impl(Object obj) { - if (obj instanceof ConnectionFactory) { - return "ConnectionFactory"; - } else if (obj instanceof ConnectionSpec) { - return "ConnectionSpec"; - } else if (obj instanceof ResourceAdapterMetaData) { - return "ResourceAdapterMetaData"; - } else - return "CommonClient. Is this an error"; - - } - // - // Container Managed Sign-on calls getConnection() from the Application Component - // - // Container-managed sign-on when file "connector.xml / secured.jar" contains line below - // - // Container - // - public Connection getConnection() - throws ResourceException - { - cName = "ConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".getConnection"+" (Container Managed Sign-on)"); - Connection conn = null; - try { - conn = (Connection)getConnection(null); - return conn; - } catch (ResourceException ex) { - throw ex; - } - } - // - // Component Managed Sign-on calls getConnection(cs) directly from the Application Component - // - // Component-managed sign-on when file "connector.xml / secured.jar" contains line below - // - // Application - // - public Connection getConnection(ConnectionSpec connectionspec) - throws ResourceException - { - cName = "ConnectionFactory"; - JtestResourceAdapter jmcf = (JtestResourceAdapter)mcf; // ManagedConnectionFactory - Connection conn = null; - CommonClient cs; // ConnectionSpec - JtestResourceAdapter jcri=null; // ConnectionRequestInfo - - if (connectionspec==null) { - jmcf.setRes_Auth("Container"); - logger.log(BasicLevel.DEBUG, cName+".getConnection detected res-auth='"+jmcf.getRes_Auth()+"'"); - // TODO what now? anything? - // now pass null to cm.allocateConnection(mcf, null); - } else { - jmcf.setRes_Auth("Application"); - logger.log(BasicLevel.DEBUG, cName+".getConnection detected res-auth='"+jmcf.getRes_Auth()+"'"); - cs = (CommonClient)connectionspec; - // load user and password into ConnectionRequestInfo instance - jcri = new JtestResourceAdapter(); // ConnectionRequestInfo - jcri.setUserName(cs.getUserName()); - jcri.setPassword(cs.getPassword()); - - } - logger.log(BasicLevel.DEBUG, cName+".getConnection calling cm.allocateConnection"); - try { - ConnectionRequestInfo cri = (ConnectionRequestInfo) jcri; - conn = (Connection)cm.allocateConnection(mcf, cri); - if (conn==null) { - logger.log(BasicLevel.DEBUG, cName+". getConnection, cm.allocateConnection" - +" error: Null connection object returned"); - throw new ResourceException("Null connection object returned by allocateConnection"); - } - return conn; - } catch (IllegalStateException is) { - logger.log(BasicLevel.DEBUG, cName+".getConnection IllegalStateException"+is); - throw is; - } catch (ResourceException re) { - logger.log(BasicLevel.DEBUG, cName+".getConnection ResourceException="+re); - throw re; - } - } - - public RecordFactory getRecordFactory() - throws ResourceException - { - cName = "ConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".getRecordFactory"); - NotSupportedException nse = new NotSupportedException( - "RecordFactory is not currently supported"); - throw nse; - } - - public ResourceAdapterMetaData getMetaData() - throws ResourceException - { - cName = "ConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".getMetaData"); - ResourceAdapterMetaData rd = null; // TODO do something - return rd; - } - public ManagedConnectionFactory getMcf() { - ManagedConnectionFactory MCF = (ManagedConnectionFactory)mcf; - return MCF; - } - // - // ***************** - // Reference - // ***************** - // - /** Required by the referencable attribute - * @param ref Reference object - **/ - public void setReference(javax.naming.Reference ref) - { - this.reference = ref; - } - - /** Required by the referencable attribute - * @return Reference object - **/ - public Reference getReference() - throws NamingException - { - return reference; - } - // - // *********************** - // ResourceAdapterMetaData methods - // *********************** - // - public String getAdapterVersion() { - return "1.0"; - } - public String getAdapterVendorName() { - return "Bull"; - } - public String getAdapterName() { - return "JOnAS Test Resource Adapter"; - } - public String getAdapterShortDescription() { - return "Test JOnAS Application Server compliance to J2EE Java Community Process (JSR112)"; - } - public String getSpecVersion() { - return "J2EE Java Community Process (JSR112)"; - } - public String[] getInteractionSpecsSupported() { - String[]s = {"JSR016","JSR112"}; - return s; - } - public boolean supportsExecuteWithInputAndOutputRecord() { - return true; - } - public boolean supportsExecuteWithInputRecordOnly() { - return true; - } - public boolean supportsLocalTransactionDemarcation() { - return false; - } -} diff --git a/jonas_tests/j2eeca/src/fictional/resourceadapter/ConnectionImpl.java b/jonas_tests/j2eeca/src/fictional/resourceadapter/ConnectionImpl.java deleted file mode 100644 index e08553b54b..0000000000 --- a/jonas_tests/j2eeca/src/fictional/resourceadapter/ConnectionImpl.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Created on Jul 10, 2003 - * - * ConnectionImpl.java is used to test the J2EE Connector - * as implemented by JOnAS. This class implements the Connection Interface - * and ConnectionMetaData Interface (cci) classes. - * - */ -package fictional.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.cci.*; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ConnectionEvent; -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * @author Bob Kruse - * - * Jtest Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class ConnectionImpl - implements Connection, - ConnectionMetaData, - java.io.Serializable -{ - public String product="Fictional EIS"; // see J2eeConnectorTestBeanClient - String version="1.1"; - String UserName="Fictional_User_Name"; // - private ManagedConnection mc; - public LocalTransactionImpl lt; - boolean closed = false; // connection is closed - private Logger logger = null; - String cName = ""; - private boolean autoCommitMode = false; - - // - // ***************** - // Connection methods - // ***************** - // - public ConnectionImpl(Object mc) { // constructor for Connection - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - logger.log(BasicLevel.DEBUG, impl(this)+".constructor"); - this.mc=(ManagedConnection)mc; - } - private String impl(Object obj) { - if (obj instanceof Connection) { - return "ConnectionImpl"; - } else if (obj instanceof ConnectionImpl) { - return "Connection"; - } else if (obj instanceof ConnectionMetaData) { - return "ConnectionMetaData"; - } else - return "ConnectionImpl. Is this an error"; - } - // - // close connection handle - // - public void close() throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this) - +".close with ConnectionEvent.CONNECTION_CLOSED=" - +ConnectionEvent.CONNECTION_CLOSED); - closed = true; - - if (mc != null) { - try { - JtestResourceAdapter omc = (JtestResourceAdapter) mc; - omc.sendEvent(ConnectionEvent.CONNECTION_CLOSED, null, this); - mc=null; - logger.log(BasicLevel.DEBUG, impl(this) - +".close sendevent 'CONNECTION_CLOSED'"); - } catch (ResourceException e) { - logger.log(BasicLevel.DEBUG, impl(this)+".close error: unable to close"); - throw e; - } - } else { - logger.log(BasicLevel.DEBUG, impl(this)+".close error: mc=null"); - } - return; - } - // - // close physical connection - // - // The connectionErrorOccurred method indicates that the associated - // ManagedConnection instance is now invalid and unusable. - // mc.sendEvent method makes the call to connectionErrorOccurred - // - public void close(int eType) throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this)+".close("+eType+")"); - closed = true; - - if (mc != null) { - try { - JtestResourceAdapter omc = (JtestResourceAdapter) mc; - omc.sendEvent(eType, null, this); - mc=null; - logger.log(BasicLevel.DEBUG, impl(this) - +".close(CONNECTION_ERROR_OCCURRED=" - +ConnectionEvent.CONNECTION_ERROR_OCCURRED+") to " - +"close physical connection"); - } catch (ResourceException e) { - logger.log(BasicLevel.DEBUG, impl(this) - +".close error: unable to close physical connection" - +" with 'CONNECTION_ERROR_OCCURRED'"); - throw e; - } - } else { - logger.log(BasicLevel.DEBUG, impl(this)+".close error: mc=null already"); - } - return; - } - public Interaction createInteraction() throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this)+".createInteraction"); - Interaction gi=new JtestInteraction(this, mc); - // TODO Interaction gi = new Interaction(this, this.mc, lw); - return gi; - } - public ConnectionMetaData getMetaData() throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this)+".getMetaData"); - ConnectionMetaData eisInfo = (ConnectionMetaData)new ConnectionImpl(mc); - return eisInfo; - } - public LocalTransaction getLocalTransaction() - throws ResourceException - { - try { - JtestResourceAdapter jmc = (JtestResourceAdapter)mc; - lt = (LocalTransactionImpl) jmc.getLocalTransaction(true); - logger.log(BasicLevel.DEBUG, impl(this)+".getLocalTransaction lt="+lt); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, impl(this)+".getLocalTransaction error: " - +e.getMessage()+" <<<<<<<<<<<<"); - } - return (lt); - } - public ResultSetInfo getResultSetInfo() throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this)+".getResultSetInfo"); - NotSupportedException nse = new NotSupportedException("getResultSetInfo is not supported"); - throw nse; - } - public void associateConnection(ManagedConnection mc) throws IllegalStateException - { - logger.log(BasicLevel.DEBUG, impl(this)+".associateConnection"); - this.mc=mc; - } - public ManagedConnection getMC() throws ResourceException - { - logger.log(BasicLevel.DEBUG, impl(this)+".getMC mc="+this.mc); - return this.mc; - } - public void setAutoCommit(boolean a) { - autoCommitMode=a; - } - public boolean getAutoCommit() { - return autoCommitMode; - } - // - // ********************** - // ConnectionMetaData methods - // ********************** - // - // The method getUserName returns the user name for an active connection as - // known to the underlying EIS instance. The name corresponds the resource - // principal under whose security context a connection to the EIS - // instance has been established. (page 109 CA 1.0) - // - public String getEISProductName() - throws ResourceException - { - return (product); - } - public String getEISProductVersion() - throws ResourceException - { - return (version); - } - public String getUserName() - throws ResourceException - { - return (UserName); - } -} diff --git a/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestInteraction.java b/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestInteraction.java deleted file mode 100644 index ff3205998a..0000000000 --- a/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestInteraction.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Created on Jul 10, 2003 - * - * JtestInteraction.java is used to test the J2EE Connector - * as implemented by JOnAS. This class implements the Interaction and InteractionSpec - * (cci) classes. - * - */ -package fictional.resourceadapter; - -import javax.resource.ResourceException; -import javax.resource.NotSupportedException; -import javax.resource.cci.*; -import javax.resource.spi.*; -// logger imports -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - -/** - * @author Bob Kruse - * - * Jtest Resource Adapter - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class JtestInteraction - implements Interaction, - InteractionSpec, - java.io.Serializable -{ - - private Record output; - private boolean closed = false; - private Connection con; - private ManagedConnection mcon; - private Logger logger = null; - String cName = ""; - - public JtestInteraction(Connection c) { - cName = "Interaction"; - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - logger.log(BasicLevel.DEBUG, cName+".constructor"); - con=c; - } - public JtestInteraction(Connection c, ManagedConnection mc) { - cName = "Interaction"; - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - logger.log(BasicLevel.DEBUG, cName+".constructor"); - con=c; - mcon=mc; - } - private String impl(Object obj) { - if (obj instanceof Interaction) { - return "Interaction"; - } else if (obj instanceof InteractionSpec) { - return "InteractionSpec"; - } else - return "InteractionSpec. Is this an error"; - } - /**************************** - * Interaction methods - ****************************/ - public boolean execute(InteractionSpec ispec, - Record input, - Record output) throws ResourceException - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".execute"); - this.output = input; - return(true); - } - public Record execute(InteractionSpec ispec, - Record input) throws ResourceException - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".execute"); - return (output); - } - public void close() - throws ResourceException - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".close"); - closed=true; - } - public Connection getConnection() - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".getConnection"); - return con; - } - public ResourceWarning getWarnings() - throws ResourceException - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".getWarnings"); - NotSupportedException nse = new NotSupportedException( - "Interaction.getWarnings is not currently supported"); - throw nse; - } - public void clearWarnings() - throws ResourceException - { - cName = "Interaction"; - logger.log(BasicLevel.DEBUG, cName+".clearWarnings"); - NotSupportedException nse = new NotSupportedException( - "Interaction.clearWarnings is not currently supported"); - throw nse; - } - - - /**************************** - * InteractionSpec methods - ****************************/ - // standard properties - private int interactionVerb; - // SYNC_SEND =0 These interactionVerb values are from - // SYNC_SEND_RECEIVE =1 Constant Field Values of J2EE API - // SYNC_RECEIVE =2 - - private String FunctionName; - private int ExecutionTimeout; - private int FetchSize; - private int FetchDirection; - private int MaxFieldSize; - private int ResultSetType; - private int ResultSetConcurrency; - - public JtestInteraction() { - cName = "InteractionSpec"; - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - logger.log(BasicLevel.DEBUG, cName+".constructor"); - interactionVerb = SYNC_SEND_RECEIVE; - FunctionName = ""; - FetchDirection = 0; - ExecutionTimeout = 2000; - FetchSize = 30; - MaxFieldSize = 444; - ResultSetType = 5; - ResultSetConcurrency = 6; - } - public void setFunctionName(String n) { - FunctionName = n; - } - public String getFunctionName() { - return (FunctionName); - } - public void setInteractionVerb(int verb) { - interactionVerb = verb; - } - public int getInteractionVerb() { - return (interactionVerb); - } - public void setExecutionTimeout(int verb) { - ExecutionTimeout = verb; - } - public int getExecutionTimeout() { - return (ExecutionTimeout); - } - - public void setFetchSize (int x) { - FetchSize = x;; - } - public int getFetchSize () { - return (FetchSize); - } - - public void setFetchDirection(int x) { - FetchDirection = x;; - } - public int getFetchDirection() { - return (FetchDirection); - } - - public void setMaxFieldSize(int x) { - MaxFieldSize = x;; - } - public int getMaxFieldSize() { - return (MaxFieldSize); - } - - public void setResultSetType(int x) { - ResultSetType = x; - } - public int getResultSetType() { - return (ResultSetType); - } - - public void setResultSetConcurrency(int x) { - ResultSetConcurrency = x;; - } - public int getResultSetConcurrency() { - return (ResultSetConcurrency); - } -} diff --git a/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestResourceAdapter.java b/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestResourceAdapter.java deleted file mode 100644 index 745ecabe18..0000000000 --- a/jonas_tests/j2eeca/src/fictional/resourceadapter/JtestResourceAdapter.java +++ /dev/null @@ -1,851 +0,0 @@ -/* - * Created on Jun 11, 2003 - * - * JtestResourceAdapter.java is a Resource Adapter to test the J2EE Connector - * as implemented by JOnAS. This class implements all the connector classes. Each - * connector method simulates actual functionality and returns test results to the - * caller which is a JUnit test program. - */ -package fictional.resourceadapter; - -import java.io.PrintWriter; -import java.io.Serializable; -import java.util.Date; -import java.util.Iterator; -import java.util.Set; -import java.util.Vector; - -import javax.naming.NamingException; -import javax.naming.Reference; -import javax.resource.NotSupportedException; -import javax.resource.Referenceable; -import javax.resource.ResourceException; -import javax.resource.spi.ConnectionEvent; -import javax.resource.spi.ConnectionEventListener; -import javax.resource.spi.ConnectionManager; -import javax.resource.spi.ConnectionRequestInfo; -import javax.resource.spi.LocalTransaction; -import javax.resource.spi.ManagedConnection; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ManagedConnectionMetaData; -import javax.resource.spi.ResourceAllocationException; -import javax.resource.spi.security.GenericCredential; -import javax.resource.spi.security.PasswordCredential; -import javax.security.auth.Subject; -import javax.transaction.xa.XAResource; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * @author Bob Kruse - * - * used to test the J2EE Connector as implemented by JOnAS. - * - */ -public class JtestResourceAdapter - implements ManagedConnectionFactory, - ConnectionRequestInfo, - //LocalTransaction, - ManagedConnection, - ManagedConnectionMetaData, - GenericCredential, - Serializable, Referenceable -{ - Reference reference; - String timeStamp = ""; - private String defaultUserName=""; // used in ManagedConnection, ConnectionRequestInfo - private String defaultPassword=""; // set by "getter" method - private String userName=""; - private String password=""; - private ManagedConnectionFactory mcf; // loaded by ManagedConnectionFactory - public ConnectionManager cm; // loaded by ManagedConnectionFactory - public LocalTransactionImpl loTx=null; - PrintWriter pw; // App Server sets to null by default - private Vector listeners; - private Logger logger = null; - //Managed environment - public boolean managed; // see ConnectionRequestInfo - public String res_auth; // set by ConnectionFactory.getConnection() - // then put into ManagedConnection when created - public String re_authentication_UserName; // see by ConnectionFactory.getConnection() - public String re_authentication_Password; - public XAResource xar = null; - public XAResourceImpl xari = null; - String cName = ""; - // - // constructor for all "implements" in this class - public JtestResourceAdapter() - { - if (logger == null) { - logger = Log.getLogger("fictional.resourceadapter"); - } - timeStamp = Long.toString(System.currentTimeMillis()); // unique for this obj - forceMatchNull=false; - managed = true; - closed = true; // Managed Connection - connDate = null; // Managed Connection - listeners = new Vector(); // used in ManagedConnection - pw = null; - xar = null; // used in ManagedConnection - xari = null; - loTx = null; // used in ManagedConnection - } - - private String impl(Object obj) { - if (obj instanceof ManagedConnectionFactory) { - return "ManagedConnectionFactory"; - } else if (obj instanceof ConnectionRequestInfo) { - return "ConnectionRequestInfo"; - } else if (obj instanceof ManagedConnection) { - return "ManagedConnection"; - } else if (obj instanceof ManagedConnectionMetaData) { - return "ManagedConnectionMetaData"; - } else if (obj instanceof GenericCredential) { - return "GenericCredential"; - } else - return "JtestResourceAdapter. Is this an error"; - - } - // ************************ - // ManagedConnectionFactory methods see 5.5.3 - // ************************ - // Referenced classes of package javax.resource.spi: - // ConnectionManager, ConnectionRequestInfo, ManagedConnection - public Object createConnectionFactory(ConnectionManager connectionmanager) - throws ResourceException - { - cm = connectionmanager; - cName="ManagedConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".createConnectionFactory cm="+cm); - Object obj; - obj = new CommonClient(this, connectionmanager); // creates ConnectionFactory - return obj; - } - /** - * - * When the createConnectionFactory method takes no arguments, the resource adapter - * provides a default ConnectionManager instance. This case is used in a non-managed - * application scenario. - * see 5.5.3 - */ - public Object createConnectionFactory() - throws ResourceException - { - cName="ManagedConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+": error - non-managed detected"); - throw new NotSupportedException( - "A non-managed two-tier application environment is not supported in J2EE testing."); - } - public ManagedConnection createManagedConnection(Subject subject, - ConnectionRequestInfo connectionrequestinfo) - throws ResourceException - { - cName="ManagedConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection subject="+subject - +", cri="+connectionrequestinfo); - mcf = (ManagedConnectionFactory) this; - if (subject!=null) { - // - // The application server user's password to the EIS is carried in Subject - // - try { - PasswordCredential pc = getPasswordCredential(mcf, subject, connectionrequestinfo); - if (pc==null) { - logger.log(BasicLevel.DEBUG, cName - +".createManagedConnection PasswordCredential = null, Subject not null."); - } else { - if (pc.getUserName()==null || pc.getUserName().length()==0) { - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection userName=empty"); - } else { - userName = new String(pc.getUserName()); - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" PasswordCredential userName="+userName); - password = new String(pc.getPassword()); // pc.password is char[] - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" PasswordCredential password="+password); - } - } - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection getPasswordCredential " - +"error: e="+e.toString()); - } - } - - if (connectionrequestinfo != null) { - // - // The client application component user's password is carried in ConnectionRequestInfo - // Use defaults if userName or password is empty - // - JtestResourceAdapter jinfo = (JtestResourceAdapter) connectionrequestinfo; - String s = jinfo.getUserName(); - if (s.length()>0) userName = s; - else - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" ConnectionRequestInfo userName="+s+". Use default="+userName); - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" ConnectionRequestInfo userName="+userName); - s = jinfo.getPassword(); - if (s.length()>0) password = s; - else - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" ConnectionRequestInfo password="+s+". Use default="+password); - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection" - +" ConnectionRequestInfo password="+password); - } - - if (subject==null && connectionrequestinfo==null) { - // - // The default user's password is carried in the ManagedConnectionFactory instance - // - userName=defaultUserName; - password=defaultPassword; - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection default userName="+userName); - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection default password="+password); - } - - Date cDate = new Date(); - try { - // - // Create the ManagedConnection Instance - // - ManagedConnection mc = (ManagedConnection) new JtestResourceAdapter(); - JtestResourceAdapter obj = (JtestResourceAdapter)mc; - obj.setConnDate(cDate); - obj.setMcf(mcf); - obj.setPassword(password); - obj.setUserName(userName); - obj.setRes_Auth(res_auth); - obj.setLogWriter(pw); - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection mc="+mc - +" with connDate="+cDate); - return mc; - } catch (Exception ex) { - logger.log(BasicLevel.DEBUG, cName+".createManagedConnection : error - Exception ex=" - +ex.getMessage()); - throw new ResourceAllocationException(ex.getMessage()); - } - } - boolean forceMatchNull; - public void setMatchNull(boolean truefalse) { - forceMatchNull=truefalse; - } - public ManagedConnection matchManagedConnections(Set connectionSet, - Subject subject, - ConnectionRequestInfo connectionrequestinfo) - throws ResourceException - { - cName="ManagedConnectionFactory"; - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections"); - ManagedConnection mc = null; - if (forceMatchNull) { - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections force new connection"); - return mc; // forces new connection - } - JtestResourceAdapter wmc = null; - Iterator it = connectionSet.iterator(); - int cnt=0; - while (it.hasNext()) { - Object obj = it.next(); - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections " - +"find next ManagedConnection in Set. connectionSet cnt="+ (++cnt)); - if (obj instanceof ManagedConnection) { - // see if ManagedConnection is available - // i.e., no connection handle exists for mc instance - // i.e., the connection is closed - // TODO choose one of the above - wmc = (JtestResourceAdapter) obj; - if (wmc.getCHandle()==null || wmc.isClosed()) { - mc=(ManagedConnection)wmc; - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections " - +"connection handle == null. connectionSet cnt="+cnt); - } else { - // error: connection should not exist J2ee 1.0 pg. 32 - String s = "connection handle should not exist"; - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections " - +"error: "+s+". connectionSet cnt="+cnt); - } - } - } - if (mc==null) - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections mc=null connectionSet cnt="+cnt); - else - logger.log(BasicLevel.DEBUG, cName+".matchManagedConnections with connDate=" - +wmc.getConnDate()); - return mc; - } - // - // The setLogWriter and getLogWriter are used in ManagedConnectionFactory - // and ManagedConnection - // the Application Server calls ManagedConnection.setLogWriter(pw) - // - public void setLogWriter(PrintWriter printwriter) - throws ResourceException - { - if (printwriter!=null) pw = printwriter; - } - - public PrintWriter getLogWriter() - throws ResourceException - { - return pw; - } - // - // config-property processing "setter" properties - // - String ServerName=""; - String PortNumber=""; - String protocol=""; - /** Set the JOnAS config-property.. Default value is "". - * - * @param c1 String of config-property. - * for testng RA. - **/ - public void setServerName(String c1) - { - ServerName = c1; - //logger.log(BasicLevel.DEBUG, cName+".setServerName="+ServerName); - } - public String getServerName() { - return ServerName; - } - public void setPortNumber(String s) - { - PortNumber=s; - //logger.log(BasicLevel.DEBUG, cName+".setPortNumber="+PortNumber); - } - public void setDUserName(String s) - { - defaultUserName=s; - //logger.log(BasicLevel.DEBUG, cName+".setDUserName="+defaultUserName); - } - public void setDPassword(String s) - { - defaultPassword=s; - //logger.log(BasicLevel.DEBUG, cName+".setDPassword="+defaultPassword); - } - public void setProtocol(String s) - { - protocol=s; - //logger.log(BasicLevel.DEBUG, cName+".setProtocol="+protocol); - } - public String getProtocol() - { - return protocol; - } - public ConnectionManager getCM() - { - return cm; - } - public String getRes_Auth() { - return res_auth; - } - public void setRes_Auth(String r) { - res_auth=r; - } - //************************ - // ConnectionRequestInfo - //************************ - // module to add additional connection properties than - // the ones configured for the ConnectionFactory. This - // class is passed to the App Server and will be used - // on matchManagedConnections or createConnection - // methods by the App Server. - // - String Id=""; // used in hashcode() for ConnectionRequestInfo - // - public void setUserName(String u) { - userName=u; - if (cName.length() == 0) cName=impl(this); - logger.log(BasicLevel.DEBUG, cName+".setUserName="+u); - } - public void setPassword(String p) { - password=p; - if (cName.length() == 0) cName=impl(this); - logger.log(BasicLevel.DEBUG, cName+".setPassword="+p); - } - public String getUserName() { - if (cName.length() == 0) cName=impl(this); - logger.log(BasicLevel.DEBUG, cName+".getUserName="+userName); - return userName; - } - public String getPassword() { - if (cName.length() == 0) cName=impl(this); - logger.log(BasicLevel.DEBUG, cName+".getPassword="+password); - return password; - } - private void setId() - { - if (Id == null || Id.length() == 0) - Id=timeStamp; - - } - // - // hashCode and equals method used in ConnectionRequestInfo, - // ManagedConnectionFactory - // and GenericCredential - public int hashCode() - { - int hash = 1; - setId(); - hash = Id.hashCode(); - return hash; - } - public boolean equals(Object obj) - { - boolean match = false; - if (obj==null) { - return match; - } - JtestResourceAdapter other = (JtestResourceAdapter)obj; - if (this.timeStamp.equals(other.getTimeStamp())) match = true; - return match; - } - - // ***************** - // GenericCredential methods - // ***************** - // - String gcID =""; // used in hashcode() for GenericCredential - public String getName() - { - cName="GenericCredential"; - logger.log(BasicLevel.DEBUG, cName+".getName"); - return ""; - } - - public String getMechType() - { - cName="GenericCredential"; - logger.log(BasicLevel.DEBUG, cName+".getMechType"); - return ""; - } - - public byte[] getCredentialData() - throws SecurityException - { - cName="GenericCredential"; - logger.log(BasicLevel.DEBUG, cName+".getCredentialData"); - byte[] x = {0,0}; - return x; - } - - // ***************** - // ManagedConnection methods - // ***************** - // - // Referenced classes of package javax.resource.spi: - // ConnectionRequestInfo, ConnectionEventListener, LocalTransaction, - // ManagedConnectionMetaData - // - // NOTE: Subject is instantiated by Application Server - // - boolean closed; - public ConnectionImpl cHandle; // ManagedConnection mapped 1:1 to a physical connection - private boolean destroyed; //set when destroyed - private Date connDate; //save connection date/time for a ManagedConnection - public boolean inXATrans; - public boolean inLocalTrans; - public boolean sendEvent; - - public int cntListeners() { - cName="ManagedConnection"; - Vector lst = (Vector) listeners.clone(); - int len = lst.size(); - logger.log(BasicLevel.DEBUG, cName+".cntListeners counted="+len); - return len; - } - public ConnectionImpl getCHandle() { - return cHandle; - } - public boolean isClosed() { - return closed; - } - - public Object getConnection(Subject subject, ConnectionRequestInfo connectionrequestinfo) - throws ResourceException - { - cName="ManagedConnection"; - logger.log(BasicLevel.DEBUG, cName+".getConnection *******************"); - if (subject!=null) { - // - // for this code to execute, the following will be present in ra.xml - // true - // - logger.log(BasicLevel.DEBUG, cName+".getConnection via PasswordCredential"); - logger.log(BasicLevel.DEBUG, "true"); - try { - PasswordCredential pc = getPasswordCredential(mcf, subject, connectionrequestinfo); - if (pc==null) { - logger.log(BasicLevel.DEBUG, cName+".getConnection PasswordCredential = null"); - } else { - if (pc.getUserName()==null || pc.getUserName().length()==0) { - logger.log(BasicLevel.DEBUG, cName+".getConnection userName=empty"); - } else { - String re_authentication_UserName = new String(pc.getUserName()); - String re_authentication_Password = new String(pc.getPassword()); - logger.log(BasicLevel.DEBUG, cName+".getConnection" - +" re-authentication userName="+re_authentication_UserName); - logger.log(BasicLevel.DEBUG, cName+".getConnection" - +" compare to existing userName="+userName); - logger.log(BasicLevel.DEBUG, cName+".getConnection" - +" re-authentication password="+re_authentication_Password); - logger.log(BasicLevel.DEBUG, cName+".getConnection" - +" compare to existing password="+password); - } - } - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, cName+".getConnection getPasswordCredential error: e=" - +e.toString()); - } - } - // Code for reauthentication-support when Subject==null and ConnectionRequestInfo - // contains different password and username - // - if (connectionrequestinfo!=null) { - logger.log(BasicLevel.DEBUG, impl(this)+".getConnection via ConnectionRequestInfo"); - logger.log(BasicLevel.DEBUG, "true"); - JtestResourceAdapter jcri = (JtestResourceAdapter) connectionrequestinfo; - String re_authentication_UserName = new String(jcri.getUserName()); - String re_authentication_Password = new String(jcri.getPassword()); - logger.log(BasicLevel.DEBUG, - " re-authentication userName="+re_authentication_UserName+ - " compare to existing userName="+userName); - logger.log(BasicLevel.DEBUG, - " re-authentication password="+re_authentication_Password+ - " compare to existing password="+password); - } - Object obj = new ConnectionImpl(this); - cHandle = (ConnectionImpl)obj; - closed=false; - destroyed=false; - return obj; - } - public void destroy() - throws ResourceException - { - cName="ManagedConnection"; - logger.log(BasicLevel.DEBUG, cName+".destroy"); - // the physical connection is closed - destroyed = true; - closed = true; - cHandle=null; - } - - public void cleanup() - throws ResourceException - { - cName="ManagedConnection"; - // the physical connection stays open - // but all connection handles invalidated - logger.log(BasicLevel.DEBUG, cName+".cleanup"); - cHandle=null; - closed=true; - - } - - public void associateConnection(Object obj) - throws ResourceException - { - cName="ManagedConnection"; - logger.log(BasicLevel.DEBUG, cName+".associateConnection"); - if (obj instanceof ConnectionImpl) { - ConnectionImpl conn = (ConnectionImpl) obj; - conn.associateConnection(this); // TODO may need more arg to associate - } else { - logger.log(BasicLevel.DEBUG, cName+".associateConnection "+ - "error: obj not instanceof ConnectionImpl"); - } - } - - public void addConnectionEventListener(ConnectionEventListener listener) - { - cName="ManagedConnection"; - listeners.addElement(listener); - logger.log(BasicLevel.DEBUG, cName+".addConnectionEventListener listener=" - +listener); - } - - public void removeConnectionEventListener(ConnectionEventListener listener) - { - cName="ManagedConnection"; - Vector lst = (Vector) listeners.clone(); - int len = lst.size(); - logger.log(BasicLevel.DEBUG, cName+".removeConnectionEventListener " - +"Number of listeners="+len); - try { - listeners.removeElement(listener); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, cName+".removeConnectionEventListener error: " - +"unable to remove listener"); - } - lst = (Vector) listeners.clone(); - len = lst.size(); - logger.log(BasicLevel.DEBUG, cName+".removeConnectionEventListener listener=" - +listener+" was removed. Number listeners left="+len); - } - - public XAResource getXAResource() - throws ResourceException - { - cName="ManagedConnection"; - if (xar==null) - xar = (XAResource)new XAResourceImpl(this); - logger.log(BasicLevel.DEBUG, cName+".getXAResource xar="+xar); - return xar; - } - public void resetXar() { - // dissociate XAResource Xid from this ManagedConnection - xar=null; - xari=null; - } - public XAResourceImpl getCurrentXar() - throws ResourceException - { - xari=(XAResourceImpl)xar; - return xari; - } - - public javax.resource.cci.LocalTransaction getLocalTransaction(boolean sendEvent) - throws ResourceException - { - cName="ManagedConnection"; - LocalTransactionImpl lt = null; - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction(sendEvent)"); - this.sendEvent=sendEvent; - try { - lt = (LocalTransactionImpl) getLocalTransaction(); - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction(sendEvent) lt="+lt); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction(sendEvent) " - +"error: "+e.getMessage()); - } - return (lt); - } - - public LocalTransaction getLocalTransaction() - throws ResourceException - { - cName="ManagedConnection"; - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction"); - if (loTx==null) { - loTx = new LocalTransactionImpl(this, sendEvent); - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction new loTx="+loTx); - return loTx; - } else { - logger.log(BasicLevel.DEBUG, cName+".getLocalTransaction old loTx="+loTx); - loTx.setSendEvent(sendEvent); - return loTx; - } - } - - public ManagedConnectionMetaData getMetaData() - throws ResourceException - { - cName="ManagedConnection"; - logger.log(BasicLevel.DEBUG, cName+".getMetaData"); - return (ManagedConnectionMetaData) new JtestResourceAdapter(); - } - /** Send the specified event to all the EventListeners that have - * registered with this ManagedConnection instance. - * - * @param int Event type to send - * @param Exception if one is associated with this event - * @param ch Connection handle associated with this event - * @throws ResourceException generic exception if operation fails - * @throws IllegalArgumentException if an invalid event is specified - **/ - public void sendEvent(int eType, Exception ex, Object ch) throws ResourceException - { - cName="ManagedConnection"; - Vector lst = (Vector) listeners.clone(); - ConnectionEvent ce = null; - if (ex==null) { - ce = new ConnectionEvent(this, eType); - } - else - ce = new ConnectionEvent(this, eType, ex); - - if (ch != null) - ce.setConnectionHandle(ch); - else - logger.log(BasicLevel.DEBUG, cName+".sendEvent ch==null"); - - int len = lst.size(); - for (int i=0; iRESET) { - xidState=COMMITTED; - logger.log(BasicLevel.DEBUG, impl(this)+".commit From State="+curState+ - " to State="+xidState+" xid="+xid+" onePhase="+onePhase); - } - else { - logger.log(BasicLevel.DEBUG, impl(this)+".commit error: State="+xidState - +" should be="+STARTED+"or more. xid="+xid+" onePhase="+onePhase); - } - } - public void end(Xid xid, int flags) throws XAException - { - int curState=xidState; - xidState=ENDED; - JtestResourceAdapter jmc = (JtestResourceAdapter) mc; - jmc.resetXar(); - logger.log(BasicLevel.DEBUG, impl(this)+".end From State="+curState+ - " to State="+xidState+" for xid="+xid+" flags="+flags); - } - public void forget(Xid xid) throws XAException - { - logger.log(BasicLevel.DEBUG, impl(this)+".forget State="+xidState); - xidState=FORGOT; - } - public int prepare(Xid xid) throws XAException - { - logger.log(BasicLevel.DEBUG, impl(this)+".prepare State="+xidState); - xidState=PREPARED; - //return 1; - return XA_OK; - } - /** - * Obtain a list of prepared transaction branches from a resource manager. - */ - public Xid[] recover(int flag) throws XAException - { - recoverFlag=flag; - logger.log(BasicLevel.DEBUG, impl(this)+".recover State="+xidState); - return xidArray; - } - public void rollback(Xid xid) throws XAException - { - int curState=xidState; - if (xidState >= STARTED) { - xidState=ROLLEDBACK; - logger.log(BasicLevel.DEBUG, impl(this)+".rollback From State="+curState+ - " to State="+xidState+" xid="+xid); - } - else { - logger.log(BasicLevel.DEBUG, impl(this)+".rollback error: State="+xidState - +" should be="+STARTED+"or more. xid="+xid); - } - } - public void start(Xid xid, int flags) throws XAException - { - currentXid=xid; - xFlags=flags; - int curState=xidState; - if (xidState==RESET) { - xidState=STARTED; - logger.log(BasicLevel.DEBUG, impl(this)+".start From State="+curState+ - " to State="+xidState+" xid="+xid+" flags="+flags); - } - else { - logger.log(BasicLevel.DEBUG, impl(this)+".start error: State="+xidState - +" should be="+RESET+" xid="+xid+" flags="+flags); - } - } - public int getTransactionTimeout() throws XAException - { - logger.log(BasicLevel.DEBUG, impl(this)+".getTransactionTimeout timeout="+timeout); - return timeout; - } - public boolean setTransactionTimeout(int seconds) throws XAException - { - timeout=seconds; - logger.log(BasicLevel.DEBUG, impl(this)+".setTransactionTimeout seconds="+seconds); - return true; - } - /** - * Determine if the resource manager instance represented by the target object is the - * same as the resource manager instance represented by the parameter xares - */ - public boolean isSameRM(XAResource xares) throws XAException - { - boolean a = true; - logger.log(BasicLevel.DEBUG, impl(this)+".isSameRM xares="+xares+" return="+a); - return a; - } -} diff --git a/jonas_tests/jaxws/jaxws-felix/pom.xml b/jonas_tests/jaxws/jaxws-felix/pom.xml deleted file mode 100644 index 4eeb9df599..0000000000 --- a/jonas_tests/jaxws/jaxws-felix/pom.xml +++ /dev/null @@ -1,521 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.1.0-RC3-SNAPSHOT - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests - felix - pom - JOnAS :: Tests :: JAXWS :: Felix - Tests of JOnAS JAXWS - - - - - 1.0.2 - - - 5.1.0-RC1 - 0.0.4 - 1.1.0-RC2-SNAPSHOT - 2.1.12 - 3.0.5 - 1.0.1 - 2.1.3 - 2.1.3 - 1.1.2 - 2.9.3-patch - 3.2.2 - 1.7.1 - 1.6.3 - 1.5.4 - 1.6.1 - 1.6 - 5.2.1 - 2.1.4 - - - 2.2.3-jonas-patch-20071018 - 1.3 - - - 1.0.15 - - - 1.0.16 - - - 6.1.5 - 6.0.18 - - - 1.2.0 - 1.2.0 - - 1.4.1 - 1.0.2 - 0.9.0-incubator-2007.12.14 - 1.2.1 - 1.0.10 - 1.1.0-2008.07.10 - - 1.2.0 - - 2.0.9 - - 1.3 - 1.3 - - - 2.0-alpha-1 - - - 1.2_08 - - - 2.0.9 - - - 1.0rc1 - 2.0rc5 - - - - - - org.ow2.easybeans.osgi - easybeans-osgi-itests-base - ${easybeans.version} - tests - test - - - - org.testng - testng - 5.8 - jdk15 - - - - org.ow2.easybeans.osgi - easybeans-client-fix - ${easybeans.version} - test - - - org.ow2.easybeans.osgi - easybeans-client-fix - ${easybeans.version} - test - - - org.ow2.jonas.ws.jaxws.itests - tests - ${project.version} - test - - - com.sun.xml.messaging.saaj - saaj-impl - 1.3.2 - - - - - - - ow2 - OW2 repository - http://maven.ow2.org/maven2 - - true - - - false - - - - ow2-snapshot - OW2 repository - http://maven.ow2.org/maven2-snapshot - - true - - - false - - - - - - - elca-services - http://el4.elca-services.ch/el4j/maven2repository - - true - - - false - - - - - - - - install - - - - - - maven-dependency-plugin - - - unpack-assembly - package - - unpack - - - - - - org.ow2.jonas.assemblies.profiles - jonas-full - ${project.version} - bin - zip - - - - ${project.build.directory} - - true - true - - - - - - - - maven-antrun-plugin - - - package - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - - - - - org.ow2.util.maven - maven-osgi-plugin-launcher-core - - felix - - - ${basedir}/src/main/config/config.properties - - - ${basedir}/src/main/config/jonas-autodeploy-bundles.properties - - - - jonas.base - ${basedir}/target/jonas_base - - - jonas.root - ${basedir}/target/jonas-full-${project.version} - - - java.security.auth.login.config - ${basedir}/target/jonas-full-${project.version}/conf/jaas.config - - - m2.repository - ${settings.localRepository} - - - java.naming.factory.initial - - org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory - - - - java.security.policy - ${basedir}/target/jonas-full-${project.version}/conf/java.policy - - - java.security.auth.login.config - ${basedir}/target/jonas-full-${project.version}/conf/jaas.config - - - - java.endorsed.dirs - ${basedir}/target/jonas-full-${project.version}/lib/endorsed/ - - - ConfigHome - ${basedir}/target/jonas_base/conf/ - - - - - - javax.security.jacc.PolicyConfigurationFactory.provider - - - org.ow2.jonas.lib.security.jacc.JPolicyConfigurationFactory - - - - monolog.wrappers - - mx4j.log.CommonsLogger,mx4j.log.Logger,java.util.logging.Logger,org.ow2.util.log.JDKLogger, - org.apache.juli.logging.DirectJDKLog,org.ow2.carol.util.configuration.TraceCarol - - - - java.awt.headless - true - - - ipojo.log.level - ERROR - - - - - bootstrap.kill.timeout - 420 - - - - - true - - - - ${itestsdebug} - 8000 - - - - 30 - - - 10 - - - - - - ${basedir}/target/jonas_base/conf/ - - - - - - - - start-framework - pre-integration-test - - start - - - - - stop-framework - post-integration-test - - stop - - - - - - org.ow2.util.maven - maven-osgi-plugin-launcher-framework-felix - ${ow2-util-plugin.version} - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${basedir}/target - - - ${basedir}/src/main/config/testng.xml - - - - - rmi.port - 19099 - - - jonas.root - ${basedir}/target/jonas-full-${project.version}/ - - - jonas.base - ${basedir}/target/jonas_base/ - - - - - ${basedir}/target/jonas-full-${project.version}/lib/client.jar - - - - - - testing-JOnAS-Full - integration-test - - test - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-felix/src/main/config/config.properties b/jonas_tests/jaxws/jaxws-felix/src/main/config/config.properties deleted file mode 100644 index 66ce492366..0000000000 --- a/jonas_tests/jaxws/jaxws-felix/src/main/config/config.properties +++ /dev/null @@ -1,183 +0,0 @@ -# =================================================================== # -# Felix Configuration file (for easybeans only) # -# =================================================================== # - -# -# Framework config properties. -# -org.osgi.framework.bootdelegation=com.sun.corba.*,\ - com.sun.org.apache.xalan.internal.*,\ - com.sun.org.apache.xerces.internal.*,\ - com.sun.org.apache.xml.internal.*,\ - com.sun.org.apache.xpath.internal.* - -# Packages exported by the underlying JVM (and System bundle) -org.osgi.framework.system.packages org.osgi.framework; version=1.4.0, \ - org.osgi.service.packageadmin; version=1.2.0, \ - org.osgi.service.startlevel; version=1.1.0, \ - org.osgi.service.url; version=1.0.0, \ - org.osgi.util.tracker; version=1.3.3, \ - javax.accessibility; \ - javax.activity; \ - javax.imageio; \ - javax.crypto;\ - javax.crypto.spec;\ - javax.crypto.interfaces;\ - javax.imageio.event; \ - javax.imageio.metadata; \ - javax.imageio.plugins.bmp; \ - javax.imageio.plugins.jpeg; \ - javax.imageio.spi; \ - javax.imageio.stream; \ - javax.management; \ - javax.management.loading; \ - javax.management.modelmbean; \ - javax.management.monitor; \ - javax.management.openmbean; \ - javax.management.relation; \ - javax.management.remote; \ - javax.management.remote.rmi; \ - javax.management.timer; \ - javax.naming; \ - javax.naming.directory; \ - javax.naming.event; \ - javax.naming.ldap; \ - javax.naming.spi; \ - javax.net; \ - javax.net.ssl; \ - javax.print; \ - javax.print.attribute; \ - javax.print.attribute.standard; \ - javax.print.event; \ - javax.rmi; \ - javax.rmi.CORBA; \ - javax.rmi.ssl; \ - javax.security.auth; \ - javax.security.auth.callback; \ - javax.security.auth.kerberos; \ - javax.security.auth.login; \ - javax.security.auth.spi; \ - javax.security.auth.x500; \ - javax.security.cert; \ - javax.security.sasl; \ - javax.sound.midi; \ - javax.sound.midi.spi; \ - javax.sound.sampled; \ - javax.sound.sampled.spi; \ - javax.sql; \ - javax.sql.rowset; \ - javax.sql.rowset.serial; \ - javax.sql.rowset.spi; \ - javax.swing; \ - javax.swing.border; \ - javax.swing.colorchooser; \ - javax.swing.event; \ - javax.swing.filechooser; \ - javax.swing.plaf; \ - javax.swing.plaf.basic; \ - javax.swing.plaf.metal; \ - javax.swing.plaf.multi; \ - javax.swing.plaf.synth; \ - javax.swing.table; \ - javax.swing.text; \ - javax.swing.text.html; \ - javax.swing.text.html.parser; \ - javax.swing.text.rtf; \ - javax.swing.tree; \ - javax.swing.undo; \ - javax.xml; \ - javax.xml.datatype; \ - javax.xml.namespace; \ - javax.xml.parsers; \ - javax.xml.transform; \ - javax.xml.transform.dom; \ - javax.xml.transform.sax; \ - javax.xml.transform.stream; \ - javax.xml.validation; \ - javax.xml.xpath; \ - org.ietf.jgss; \ - org.apache.xpath; \ - org.apache.xpath.compiler; \ - org.apache.xpath.functions; \ - org.apache.xpath.objects; \ - org.apache.xml.utils; \ - org.jacorb.orb.etf; \ - org.jacorb.orb.iiop; \ - org.jacorb.orb.portableInterceptor; \ - org.jacorb.orb.rmi; \ - org.jacorb.poa; \ - org.omg.CORBA; \ - org.omg.CORBA_2_3; \ - org.omg.CORBA_2_3.portable; \ - org.omg.CORBA.DynAnyPackage; \ - org.omg.CORBA.ORBPackage; \ - org.omg.CORBA.portable; \ - org.omg.CORBA.TypeCodePackage; \ - org.omg.CosNaming; \ - org.omg.CosNaming.NamingContextExtPackage; \ - org.omg.CosNaming.NamingContextPackage; \ - org.omg.CosTransactions; \ - org.omg.CSI; \ - org.omg.CSIIOP; \ - org.omg.Dynamic; \ - org.omg.DynamicAny; \ - org.omg.DynamicAny.DynAnyFactoryPackage; \ - org.omg.DynamicAny.DynAnyPackage; \ - org.omg.ETF; \ - org.omg.GSSUP; \ - org.omg.IOP; \ - org.omg.IOP.CodecFactoryPackage; \ - org.omg.IOP.CodecPackage; \ - org.omg.Messaging; \ - org.omg.PortableInterceptor; \ - org.omg.PortableInterceptor.ORBInitInfoPackage; \ - org.omg.PortableServer; \ - org.omg.PortableServer.CurrentPackage; \ - org.omg.PortableServer.POAManagerPackage; \ - org.omg.PortableServer.POAPackage; \ - org.omg.PortableServer.portable; \ - org.omg.PortableServer.ServantLocatorPackage; \ - org.omg.SendingContext; \ - org.omg.SSLIOP; \ - org.omg.stub.java.rmi; \ - org.omg.stub.javax.management.remote.rmi; \ - org.w3c.dom; \ - org.w3c.dom.bootstrap; \ - org.w3c.dom.css; \ - org.w3c.dom.events; \ - org.w3c.dom.html; \ - org.w3c.dom.ls; \ - org.w3c.dom.ranges; \ - org.w3c.dom.stylesheets; \ - org.w3c.dom.traversal; \ - org.w3c.dom.views; \ - org.w3c.dom.xpath; \ - org.xml.sax; \ - org.xml.sax.ext; \ - org.xml.sax.helpers; \ - sun.rmi.registry; \ - sun.rmi.server; \ - sun.rmi.transport; \ - sun.security.util; \ - sun.security.provider; \ - sun.util.calendar; \ - version="1.5.0" - -#felix.auto.start.1= \ -# file:bundle/org.apache.felix.shell-1.0.0.jar \ -# file:bundle/org.apache.felix.shell.tui-1.0.0.jar \ -# file:bundle/org.apache.felix.bundlerepository-1.0.0.jar - -org.osgi.framework.startlevel=1 -felix.startlevel.bundle=1 - -# Invalid fragment bundles throw an 'exception' by default, but -# uncomment the follow line to have them log a 'warning' instead. -felix.fragment.validation=warning - -# -# Bundle config properties. -# -#org.osgi.service.http.port=8080 -obr.shell.telnet=on - diff --git a/jonas_tests/jaxws/jaxws-felix/src/main/config/jonas-autodeploy-bundles.properties b/jonas_tests/jaxws/jaxws-felix/src/main/config/jonas-autodeploy-bundles.properties deleted file mode 100644 index 936ec545a3..0000000000 --- a/jonas_tests/jaxws/jaxws-felix/src/main/config/jonas-autodeploy-bundles.properties +++ /dev/null @@ -1,73 +0,0 @@ -# Generated Mon May 18 20:03:53 CST 2009 by JOnAS. - -install.level.1 org.apache.felix:org.apache.felix.shell.tui:1.0.2 - -start.level.1 org.apache.felix:org.apache.felix.shell:1.0.2, \ - org.apache.felix:org.apache.felix.bundlerepository:1.2.1, \ - org.apache.felix:org.apache.felix.ipojo:1.2.0, \ - org.apache.felix:org.apache.felix.ipojo.arch:1.2.0, \ - org.ow2.bundles:ow2-bundles-externals-commons-collections:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-bundles-externals-commons-logging:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-archive-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-archive-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-deploy-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-deploy-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-scan-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-scan-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-common-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-common-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-car-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-car-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-ws-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-ws-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-war-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-ee-metadata-war-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-event-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-file:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-i18n:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-jmx-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-log:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-pool-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-url:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-xml:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-schemas:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-fetcher-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-fetcher-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-fetcher-impl-url:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-fetcher-impl-maven2:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-fetcher-impl-obr:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-deploy-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-deploy-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-repository-api:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-repository-impl:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-monitor:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-reader:1.0.16-SNAPSHOT, \ - org.ow2.bundles:util-plan-deployer:1.0.16-SNAPSHOT, \ - org.ow2.jonas.osgi:javaee-api:5.1.0-RC3-SNAPSHOT, \ - org.ow2.bundles:ow2-bundles-externals-jaxb2:1.0.16-SNAPSHOT, \ - org.ow2.bundles:ow2-util-xmlconfig:1.0.16-SNAPSHOT, \ - org.ow2.jonas:jonas-extension-loader:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.easybeans.osgi:easybeans-api:1.1.0-RC2-SNAPSHOT, \ - org.ow2.jonas:jonas-services-api:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas.osgi:monolog:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-version:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-commons:5.1.0-RC3-SNAPSHOT, \ - org.apache.felix:org.apache.felix.configadmin:1.0.10, \ - org.ow2.jonas:bootstrap:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.carol:carol-interceptors:1.0.1, \ - org.ow2.jonas:jonas-naming:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.jonas:jonas-carol-registry:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.jonas:jonas-management-javaee:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-jmx:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.jonas:jonas-deployment:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-domain:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-management-reconfig:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-security-auth:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-security-jacc:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-security-jacc-handlers:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-timer:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-ejb-container-svc:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-ejb-container:5.1.0-RC3-SNAPSHOT, \ - org.ow2.jonas:jonas-service-manager:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.jonas:jonas-mbeans:5.1.0-RC3-SNAPSHOT:{ipojo}, \ - org.ow2.jonas:jndi-interceptors:5.1.0-RC3-SNAPSHOT:{ipojo} diff --git a/jonas_tests/jaxws/jaxws-felix/src/main/config/testng.xml b/jonas_tests/jaxws/jaxws-felix/src/main/config/testng.xml deleted file mode 100644 index 49ba8e8bf5..0000000000 --- a/jonas_tests/jaxws/jaxws-felix/src/main/config/testng.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/ejb3/pom.xml b/jonas_tests/jaxws/jaxws-test-base/ejb3/pom.xml deleted file mode 100644 index 3e9d55ee84..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/ejb3/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.ejb - ejb3 - jar - JOnAS :: Tests :: JAXWS :: Tests :: Base :: EJB3 - http://maven.apache.org - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - ejb3 - - diff --git a/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/Hello.java b/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/Hello.java deleted file mode 100644 index 56d95e567e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/Hello.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ejb3; - - -public interface Hello -{ - public abstract String sayHello(String s); -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/HelloBean.java b/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/HelloBean.java deleted file mode 100644 index 7aacc3ca47..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/ejb3/src/main/java/org/ow2/jonas/ejb3/HelloBean.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ejb3; - -import javax.ejb.Remote; -import javax.ejb.Stateless; - -// Referenced classes of package org.ow2.jonas.ws.axis2.test.ejb3: -// Hello - -@Remote(Hello.class) -@Stateless -public class HelloBean - implements Hello -{ - - public HelloBean() - { - } - - public String sayHello(String str) - { - System.out.println((new StringBuilder("HelloWorldEJB3: ")).append(str).toString()); - return "HelloWorld EJB3!"; - } -} \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/pom.xml deleted file mode 100644 index 6747e9e4de..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb-descriptor - jar - JOnAS :: Tests :: JAXWS :: Tests :: Base :: EJB :: Descriptor - http://maven.apache.org - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-ejb-descriptor - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBean_descriptor.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBean_descriptor.java deleted file mode 100644 index dd6c8a8262..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBean_descriptor.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: xiaoda - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.soap.SOAPFaultException; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * @author xiaoda - * - */ -@WebService(name="JAXWSBean_descriptor", - serviceName="JAXWSBean_descriptor", - wsdlLocation="META-INF/wsdl/JAXWSBean_descriptor.wsdl") - -@Stateless(mappedName="JAXWSBean_With_WebMethod") -@Remote(JAXWSGreeter.class) -@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, - use=SOAPBinding.Use.LITERAL, - parameterStyle=SOAPBinding.ParameterStyle.WRAPPED -) -public class JAXWSBean_descriptor implements JAXWSGreeter { - - @WebMethod(exclude=false) - public String greetMe(final String me) { - System.out.println("i'm a ejb ws: " + me); - if (!"foo bar".equals(me)) { - throw new RuntimeException("Wrong parameter"); - } - return "Hello " + me; - } - - - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - - throw new SOAPFaultException(fault); - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java deleted file mode 100644 index a77053df35..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: xiaoda - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - - -public interface JAXWSGreeter { - - public String greetMe(String me); - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/easybeans.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/easybeans.xml deleted file mode 100644 index b1118d6229..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/easybeans.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - JAXWSBean_descriptor - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/webservices.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/webservices.xml deleted file mode 100644 index 05c4da6a48..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/webservices.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - ejb-descriptor - META-INF/wsdl/JAXWSBean_descriptor.wsdl - - JAXWSBean_descriptor - ejb:JAXWSBean_descriptor - ejb:JAXWSBean_descriptorPort - false - org.ow2.jonas.ws.jaxws.test.ejb.JAXWSGreeter - - JAXWSBean_descriptor - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/wsdl/JAXWSBean_descriptor.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/wsdl/JAXWSBean_descriptor.wsdl deleted file mode 100644 index 7e6c62ef38..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-descriptor/src/main/resources/META-INF/wsdl/JAXWSBean_descriptor.wsdl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/pom.xml deleted file mode 100644 index 58617328da..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb-injection - jar - JOnAS :: Tests :: JAXWS :: Tests :: Base :: EJB :: Injection - http://maven.apache.org - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-ejb-injection - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java deleted file mode 100644 index 56d95e567e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ejb3; - - -public interface Hello -{ - public abstract String sayHello(String s); -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanInjection.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanInjection.java deleted file mode 100644 index e536e3f0be..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanInjection.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.annotation.Resource; -import javax.ejb.EJB; -import javax.ejb.Remote; -import javax.ejb.SessionContext; -import javax.ejb.Stateless; -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.soap.SOAPFaultException; - -import org.ow2.jonas.ejb3.Hello; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * - * @author xiaoda - * - */ -@WebService(name = "JAXWSBeanInjection", serviceName = "JAXWSBeanInjection", wsdlLocation = "META-INF/wsdl/JAXWSBeanInjection.wsdl") -@Stateless(mappedName = "JAXWSBeanInjection") -@Remote(JAXWSGreeter.class) -@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) -public class JAXWSBeanInjection implements JAXWSGreeter { - - @Resource - private SessionContext sessionContext; - - @Resource - WebServiceContext wsContext; - - @EJB(name = "Hello", beanInterface=Hello.class,beanName="org.ow2.jonas.ejb3.HelloBean") - Hello hello; - - @WebMethod(exclude = false) - public String greetMe(final String me) { - String res = new String(); - res = me; - - if (wsContext != null) { - System.out.println("wsContext is not null"); - res = res + "wsContext"; - } - if (hello != null) { - System.out.println("hello is not null"); - res = res + "hello"; - } - - if (sessionContext != null) { - System.out.println("sessionContext is not null"); - res = res + "sessionContext"; - } - return res; - } - - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - throw new SOAPFaultException(fault); - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java deleted file mode 100644 index 6f646d0ec3..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - - -public interface JAXWSGreeter { - - public String greetMe(String me); - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/resources/META-INF/wsdl/JAXWSBeanInjection.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/resources/META-INF/wsdl/JAXWSBeanInjection.wsdl deleted file mode 100644 index 7ca02a3b1e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-injection/src/main/resources/META-INF/wsdl/JAXWSBeanInjection.wsdl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/pom.xml deleted file mode 100644 index 7f1e75eeb7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb-interceptor - jar - JOnAS :: Tests :: JAXWS :: Tests :: Base :: EJB :: Interceptor - http://maven.apache.org - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-ejb-interceptor - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwihtInterceptors.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwihtInterceptors.java deleted file mode 100644 index 445b925060..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwihtInterceptors.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.interceptor.AroundInvoke; -import javax.interceptor.Interceptors; -import javax.interceptor.InvocationContext; -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.soap.SOAPFaultException; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * @author xiaoda - * - */ -@WebService(name="EJBWSwihtInterceptors", - serviceName="EJBWSwihtInterceptors", - wsdlLocation="META-INF/wsdl/EJBWSwihtInterceptors.wsdl", - endpointInterface="org.ow2.jonas.ws.jaxws.test.ejb.JAXWSGreeterForWithWM") - -@Stateless(mappedName="JAXWSBeanWithWebMethod") -@Remote(JAXWSGreeterForWithWM.class) -@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, - use=SOAPBinding.Use.LITERAL, - parameterStyle=SOAPBinding.ParameterStyle.WRAPPED -) -@Interceptors(GreeterInterceptor.class) -public class EJBWSwihtInterceptors implements JAXWSGreeter { - - private String response = "Hello"; - - @WebMethod - public String greetMe(final String me) { - System.out.println("i'm a ejb ws: " + me); - return response + me; - } - - @WebMethod - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - - throw new SOAPFaultException(fault); - } - - public String greetYou(final String you) { - System.out.println("i'm a ejb ws: " + you); - System.out.println("greet you"); - return "Hi " + you; - } - - public String sayHello(String name) { - return "Hello World! " + name; - } - - - @AroundInvoke - public Object trace(InvocationContext ic) throws Exception { - //ic.getParameters()[0] = "inceptor"; - response = response + " intercepted"; - System.out.println("Intercepted method : " + ic.getMethod().getName()); - return ic.proceed(); - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwithAroundInvoke.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwithAroundInvoke.java deleted file mode 100644 index 166aacb3ad..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/EJBWSwithAroundInvoke.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.interceptor.AroundInvoke; -import javax.interceptor.InvocationContext; -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.soap.SOAPFaultException; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * @author xiaoda - * - */ -@WebService(name="EJBWSwithAroundInvoke", - serviceName="EJBWSwithAroundInvoke", - wsdlLocation="META-INF/wsdl/EJBWSwithAroundInvoke.wsdl", - endpointInterface="org.ow2.jonas.ws.jaxws.test.ejb.JAXWSGreeterForWithWM") - -@Stateless(mappedName="JAXWSBeanWithWebMethod") -@Remote(JAXWSGreeterForWithWM.class) -@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, - use=SOAPBinding.Use.LITERAL, - parameterStyle=SOAPBinding.ParameterStyle.WRAPPED -) -public class EJBWSwithAroundInvoke implements JAXWSGreeter { - - private String response = "Hello"; - - @WebMethod - public String greetMe(final String me) { - System.out.println("i'm a ejb ws: " + me); - return response + me; - } - - @WebMethod - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - - throw new SOAPFaultException(fault); - } - - public String greetYou(final String you) { - System.out.println("i'm a ejb ws: " + you); - System.out.println("greet you"); - return "Hi " + you; - } - - public String sayHello(String name) { - return "Hello World! " + name; - } - - - @AroundInvoke - public Object trace(InvocationContext ic) throws Exception { - //ic.getParameters()[0] = "inceptor"; - response = response + " intercepted"; - System.out.println("Intercepted method : " + ic.getMethod().getName()); - return ic.proceed(); - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/GreeterInterceptor.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/GreeterInterceptor.java deleted file mode 100644 index 9056dc9a04..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/GreeterInterceptor.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.interceptor.AroundInvoke; -import javax.interceptor.InvocationContext;/** - * This class intercepts Business interfaces methods - */ -public class GreeterInterceptor { /** - * Invocation counter - */ - private int counter = 0; /** - * Count the invocations of a bean. - * @param ic InvocationContext - * @return proceeded method - * @throws Exception if something wrong occurs. - */ - @AroundInvoke - public Object count(InvocationContext ic) throws Exception { synchronized(this) { - counter++; - System.out.println("Method '" + ic.getMethod().getName() - + "' invoked " + counter + " times."); - return ic.proceed(); - } - } -} \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java deleted file mode 100644 index bec8bb79a5..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - - -public interface JAXWSGreeter { - - public String sayHello(String name); - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java deleted file mode 100644 index cff98020c5..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.jws.WebService; - -@WebService -public interface JAXWSGreeterForWithWM { - - public String greetMe(final String me); - public void greetMeFault(final String me); -} \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwihtInterceptors.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwihtInterceptors.wsdl deleted file mode 100644 index 2bebc39934..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwihtInterceptors.wsdl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwithAroundInvoke.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwithAroundInvoke.wsdl deleted file mode 100644 index d3d2bb6e40..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-interceptor/src/main/resources/META-INF/wsdl/EJBWSwithAroundInvoke.wsdl +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/pom.xml deleted file mode 100644 index ea622aee8f..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb - jar - JOnAS :: Tests :: JAXWS :: Tests :: Base :: EJB :: Webmethod - http://maven.apache.org - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-ejb-webmethod - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithWebMethod.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithWebMethod.java deleted file mode 100644 index 801fe966f2..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithWebMethod.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.annotation.Resource; -import javax.ejb.EJB; -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.jws.WebService; -import javax.jws.WebMethod; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.soap.SOAPFaultException; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * @author xiaoda - * - */ -@WebService(name="JAXWSBeanWithWebMethod", - serviceName="JAXWSBeanWithWebMethod", - wsdlLocation="META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl", - endpointInterface="org.ow2.jonas.ws.jaxws.test.ejb.JAXWSGreeterForWithWM") - -@Stateless(mappedName="JAXWSBeanWithWebMethod") -@Remote(JAXWSGreeterForWithWM.class) -@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, - use=SOAPBinding.Use.LITERAL, - parameterStyle=SOAPBinding.ParameterStyle.WRAPPED -) -public class JAXWSBeanWithWebMethod implements JAXWSGreeter { - - - @WebMethod - public String greetMe(final String me) { - System.out.println("i'm a ejb ws: " + me); - return "Hello " + me; - } - - @WebMethod - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - - throw new SOAPFaultException(fault); - } - - public String greetYou(final String you) { - System.out.println("i'm a ejb ws: " + you); - System.out.println("greet you"); - return "Hi " + you; - } - - public String sayHello(String name) { - return "Hello World! " + name; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithoutWebMethod.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithoutWebMethod.java deleted file mode 100644 index 14a4f01b75..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSBeanWithoutWebMethod.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.ejb.Remote; -import javax.ejb.Stateless; -import javax.jws.WebService; -import javax.jws.soap.SOAPBinding; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; -import javax.xml.ws.soap.SOAPFaultException; - -/** - * This is an EJB based JAXWS web service with @WebMethod annotation. - * @author xiaoda - * - */ - -// Here we do not specify the SEI, web service container will generate a default SEI -// this SEI will contain all @WebMethod annotated methods and public methods -// see specs Web Services for Java EE, Version 1.2 # chapter 3.3 -@WebService(name="JAXWSBeanWithoutWebMethod", - serviceName="JAXWSBeanWithoutWebMethod", - wsdlLocation="META-INF/wsdl/JAXWSBeanWithoutWebMethod.wsdl") - -@Stateless(mappedName="JAXWSBeanWithoutWebMethod") -@Remote(JAXWSGreeter.class) -@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, - use=SOAPBinding.Use.LITERAL, - parameterStyle=SOAPBinding.ParameterStyle.WRAPPED -) -public class JAXWSBeanWithoutWebMethod implements JAXWSGreeter { - - - public String greetMe(final String me) { - System.out.println("i'm a ejb ws : " + me); - System.out.println("greet me"); - return "Hello " + me; - } - - - public void greetMeFault(final String me) { - System.out.println("generate SOAP fault"); - SOAPFault fault = null; - try { - fault = SOAPFactory.newInstance().createFault(); - fault.setFaultCode(new QName("http://foo", "MyFaultCode")); - fault.setFaultString("my error"); - fault.setFaultActor("my actor"); - } catch (SOAPException ex) { - throw new RuntimeException(ex); - } - - throw new SOAPFaultException(fault); - } - - public String greetYou(final String you) { - System.out.println("i'm a ejb ws: " + you); - System.out.println("greet you"); - return "Hi " + you; - } - - public String sayHello(String name) { - return "Hello World!" + name; - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java deleted file mode 100644 index 20275f480a..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeter.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.ejb; - - -public interface JAXWSGreeter { - - public String sayHello(String name); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java deleted file mode 100644 index b10888a5ec..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/java/org/ow2/jonas/ws/jaxws/test/ejb/JAXWSGreeterForWithWM.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.ow2.jonas.ws.jaxws.test.ejb; - -import javax.jws.WebService; - -@WebService -public interface JAXWSGreeterForWithWM { - - public String greetMe(final String me); - public void greetMeFault(final String me); -} \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl deleted file mode 100644 index a7ffbe337f..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithWebMethod.wsdl +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithoutWebMethod.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithoutWebMethod.wsdl deleted file mode 100644 index decd5d3579..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-ejb-webmethod/src/main/resources/META-INF/wsdl/JAXWSBeanWithoutWebMethod.wsdl +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/pom.xml deleted file mode 100644 index 364777af11..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-complex - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Complex - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-complex - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/JAXWSBean3.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/JAXWSBean3.java deleted file mode 100644 index 8ba61102c0..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/JAXWSBean3.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: xiaoda - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import java.util.ArrayList; -import java.util.List; -import javax.xml.ws.WebServiceContext; -import javax.jws.WebService; -import javax.annotation.Resource; - -@WebService(name = "Person", - targetNamespace = "http://org.ow2.jonas.ws.jaxws.test.person",wsdlLocation="WEB-INF/wsdl/JAXWSBean3Service.wsdl") -public class JAXWSBean3 { - -@Resource WebServiceContext wsContext; - - private static List PERSONS = new ArrayList(); - - static { - PERSONS.add(new Person("eric", "cartman")); - PERSONS.add(new Person("homer", "simpson")); - } - - public Person[] getPersons1() { - System.out.println(wsContext); - return PERSONS.toArray(new Person [] {}); - } - - public List getPersons2() { - return PERSONS; - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/Person.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/Person.java deleted file mode 100644 index 2a238f0733..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/Person.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -public class Person { - - private String firstName; - private String lastName; - - public Person() { - } - - public Person(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1.java deleted file mode 100644 index 6956a14862..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1.java +++ /dev/null @@ -1,24 +0,0 @@ - -package org.ow2.jonas.ws.jaxws.test.pojo.jaxws; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * This class was generated by the CXF 2.0.9 - * Mon Jun 22 21:09:13 CST 2009 - * Generated source version: 2.0.9 - * - */ - -@XmlRootElement(name = "getPersons1", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "getPersons1", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") - -public class GetPersons1 { - - -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1Response.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1Response.java deleted file mode 100644 index 30e0a44da1..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons1Response.java +++ /dev/null @@ -1,35 +0,0 @@ - -package org.ow2.jonas.ws.jaxws.test.pojo.jaxws; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * This class was generated by the CXF 2.0.9 - * Mon Jun 22 21:09:13 CST 2009 - * Generated source version: 2.0.9 - * - */ - -@XmlRootElement(name = "getPersons1Response", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "getPersons1Response", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") - -public class GetPersons1Response { - - @XmlElement(name = "return") - private org.ow2.jonas.ws.jaxws.test.pojo.Person[] _return; - - public org.ow2.jonas.ws.jaxws.test.pojo.Person[] get_return() { - return this._return; - } - - public void set_return( org.ow2.jonas.ws.jaxws.test.pojo.Person[] new_return ) { - this._return = new_return; - } - -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2.java deleted file mode 100644 index b8b6eb17d8..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2.java +++ /dev/null @@ -1,24 +0,0 @@ - -package org.ow2.jonas.ws.jaxws.test.pojo.jaxws; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * This class was generated by the CXF 2.0.9 - * Mon Jun 22 21:09:13 CST 2009 - * Generated source version: 2.0.9 - * - */ - -@XmlRootElement(name = "getPersons2", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "getPersons2", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") - -public class GetPersons2 { - - -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2Response.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2Response.java deleted file mode 100644 index fd08ad7d69..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/jaxws/GetPersons2Response.java +++ /dev/null @@ -1,35 +0,0 @@ - -package org.ow2.jonas.ws.jaxws.test.pojo.jaxws; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * This class was generated by the CXF 2.0.9 - * Mon Jun 22 21:09:13 CST 2009 - * Generated source version: 2.0.9 - * - */ - -@XmlRootElement(name = "getPersons2Response", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "getPersons2Response", namespace = "http://org.ow2.jonas.ws.jaxws.test.person") - -public class GetPersons2Response { - - @XmlElement(name = "return") - private java.util.List _return; - - public java.util.List get_return() { - return this._return; - } - - public void set_return( java.util.List new_return ) { - this._return = new_return; - } - -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 0895761788..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.JAXWSBean3 - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/wsdl/JAXWSBean3Service.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/wsdl/JAXWSBean3Service.wsdl deleted file mode 100644 index 5b8988c86d..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-complex/src/main/webapp/WEB-INF/wsdl/JAXWSBean3Service.wsdl +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/pom.xml deleted file mode 100644 index 41ec8a9b66..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-descriptor - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Descriptor - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-descriptor - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/Hello.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/Hello.java deleted file mode 100644 index 384133d381..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/Hello.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.ow2.jonas.ejb3; - - -public interface Hello -{ - public abstract String sayHello(String s); -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/HelloBean.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/HelloBean.java deleted file mode 100644 index 3ffb9c9a3e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ejb3/HelloBean.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.ow2.jonas.ejb3; - -import javax.ejb.Remote; -import javax.ejb.Stateless; - -// Referenced classes of package org.ow2.jonas.ws.axis2.test.ejb3: -// Hello - -@Remote(Hello.class) -@Stateless -public class HelloBean - implements Hello -{ - - public HelloBean() - { - } - - public String sayHello(String str) - { - System.out.println((new StringBuilder("HelloWorldEJB3: ")).append(str).toString()); - return "HelloWorld EJB3!"; - } -} \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterLogicalHandler.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterLogicalHandler.java deleted file mode 100644 index 6b890ff209..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterLogicalHandler.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - - -import javax.ejb.EJB; -import javax.xml.ws.handler.LogicalMessageContext; -import javax.xml.ws.handler.MessageContext; -//import org.ow2.jonas.ws.axis2.ejb3.Hello; - -public class GreeterLogicalHandler implements javax.xml.ws.handler.LogicalHandler { - - //@Resource(name = "greeting") - //private String greeting; - - //@EJB(name="org.ow2.jonas.ws.axis2.ejb3.Hello") - //Hello hello; - - public void close(final MessageContext arg0) { - // TODO Auto-generated method stub - System.out.println("CLOSE in LogicalHandler"); - } - - public boolean handleFault(final LogicalMessageContext arg0) { - // TODO Auto-generated method stub - return true; - } - - public boolean handleMessage(final LogicalMessageContext context) { - - // TODO Auto-generated method stub - System.out.println("GREATERLogicalHandler HandleMessage"); - //System.out.println(greeting); - //hello.sayHello("hello world"); - - return true; - } -} - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterSOAPHandler.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterSOAPHandler.java deleted file mode 100644 index c593b55918..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/GreeterSOAPHandler.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - - -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.annotation.Resource; -import javax.xml.namespace.QName; -import javax.xml.soap.Node; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.handler.MessageContext; -import javax.xml.ws.handler.soap.SOAPHandler; -import javax.xml.ws.handler.soap.SOAPMessageContext; - -public class GreeterSOAPHandler implements SOAPHandler { - - @Resource - WebServiceContext WSContext = null; - - //@Resource(name = "greeting") - //private String greeting; - - @PostConstruct - public void init() { - System.out.println(this + " init: " + WSContext); - } - - @PreDestroy - public void destroy() { - System.out.println(this + " destroy"); - } - - public void init(final Map config) { - } - - public boolean handleFault(final SOAPMessageContext context) { - System.out.println(this + " handleFault"); - return true; - } - - public void close(final MessageContext context) { - System.out.println("CLOSE in SOAPHandler"); - } - - public boolean handleMessage(final SOAPMessageContext context) { - System.out.println("GREATERSOAPHandler HandleMessage"); - System.out.println(context == null); - System.out.println(WSContext == null); - System.out.println(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY)); - - try { - if("false".equalsIgnoreCase(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY).toString())) { - String content = context.getMessage().getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild().getFirstChild().getTextContent(); - context.getMessage().getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild().getFirstChild().setTextContent(content + "SOAPHandler"); - } - } catch (SOAPException e) { - e.printStackTrace(); - } - return true; - } - - public Set getHeaders() { - System.out.println(this + " getHeaders"); - return new TreeSet(); - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java deleted file mode 100644 index 5efc23f641..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.ow2.jonas.ws.jaxws.test.pojo; - -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: xiaoda - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -import javax.annotation.Resource; -import javax.jws.WebService; - -import org.ow2.jonas.ejb3.Hello; - -/** - * This is a basic JAXWS pojo web service. - * @author xiaoda - * - */ -@WebService(name="SimpleService",serviceName="SimpleService",wsdlLocation="WEB-INF/wsdl/SimpleService.wsdl") -public class SimpleService implements SimpleServiceInterface { - - private static final long serialVersionUID = 1L; - - public String greetMe(String str) { - return "hello" + str; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java deleted file mode 100644 index 073685bc6e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index b1fe7890ef..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - pojo - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 63b069a6de..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/webservices.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/webservices.xml deleted file mode 100644 index 5be46740a1..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/webservices.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - POJO WS (with wsdl) - WEB-INF/wsdl/SService.wsdl - - SimpleService - pojo:SimpleService - pojo:SimpleServicePort - false - org.ow2.jonas.ws.jaxws.test.pojo.SimpleServiceInterface - - SimpleService - - - - - GreeterHandlerA - org.ow2.jonas.ws.jaxws.test.pojo.GreeterSOAPHandler - - - GreeterHandlerB - org.ow2.jonas.ws.jaxws.test.pojo.GreeterSOAPHandler - - - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SService.wsdl deleted file mode 100644 index c17a2fe443..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SService.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-descriptor/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/pom.xml deleted file mode 100644 index 7e4dd85996..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-handler - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Handlers - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-handlers - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterLogicalHandler.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterLogicalHandler.java deleted file mode 100644 index d3a5c06cd8..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterLogicalHandler.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.handlers; - - -import javax.ejb.EJB; -import javax.xml.ws.handler.LogicalMessageContext; -import javax.xml.ws.handler.MessageContext; -//import org.ow2.jonas.ws.axis2.ejb3.Hello; - -public class GreeterLogicalHandler implements javax.xml.ws.handler.LogicalHandler { - - //@Resource(name = "greeting") - //private String greeting; - - //@EJB(name="org.ow2.jonas.ws.axis2.ejb3.Hello") - //Hello hello; - - public void close(final MessageContext arg0) { - // TODO Auto-generated method stub - System.out.println("CLOSE in LogicalHandler"); - } - - public boolean handleFault(final LogicalMessageContext arg0) { - // TODO Auto-generated method stub - return true; - } - - public boolean handleMessage(final LogicalMessageContext context) { - - // TODO Auto-generated method stub - System.out.println("GREATERLogicalHandler HandleMessage"); - //System.out.println(greeting); - //hello.sayHello("hello world"); - - return true; - } -} - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterSOAPHandler.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterSOAPHandler.java deleted file mode 100644 index c1ea7f3c5b..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/GreeterSOAPHandler.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.handlers; - - -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.annotation.Resource; -import javax.xml.namespace.QName; -import javax.xml.soap.Node; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.handler.MessageContext; -import javax.xml.ws.handler.soap.SOAPHandler; -import javax.xml.ws.handler.soap.SOAPMessageContext; - -public class GreeterSOAPHandler implements SOAPHandler { - - @Resource - WebServiceContext wsContext; - - //@Resource(name = "greeting") - //private String greeting; - - @PostConstruct - public void init() { - System.out.println(this + " init: " + wsContext); - } - - @PreDestroy - public void destroy() { - System.out.println(this + " destroy"); - } - - public void init(final Map config) { - } - - public boolean handleFault(final SOAPMessageContext context) { - System.out.println(this + " handleFault"); - return true; - } - - public void close(final MessageContext context) { - System.out.println("CLOSE in SOAPHandler"); - } - - public boolean handleMessage(final SOAPMessageContext context) { - System.out.println("GREATERSOAPHandler HandleMessage"); - System.out.println(context == null); - System.out.println(wsContext == null); - System.out.println(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY)); - - try { - if("false".equalsIgnoreCase(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY).toString())) { - String content = context.getMessage().getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild().getFirstChild().getTextContent(); - content = content + "SOAPHandler"; - if(wsContext!=null) { - content = content + "wsContext"; - } - context.getMessage().getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild().getFirstChild().setTextContent(content); - } - } catch (SOAPException e) { - e.printStackTrace(); - } - return true; - } - - public Set getHeaders() { - System.out.println(this + " getHeaders"); - return new TreeSet(); - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleService.java deleted file mode 100644 index d21fc9de31..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleService.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.handlers; - - -import javax.annotation.Resource; -import javax.jws.HandlerChain; -import javax.jws.WebService; -import javax.xml.ws.WebServiceContext; - - -/** - * This is a basic JAXWS pojo web service. - * @author xiaoda - * - */ -@WebService(name="SimpleService",serviceName="SimpleService",wsdlLocation="WEB-INF/wsdl/SimpleService.wsdl") -@HandlerChain(file="/WEB-INF/handlers.xml") -public class SimpleService implements SimpleServiceInterface { - - @Resource - WebServiceContext WSContext = null; - - private static final long serialVersionUID = 1L; - - public String greetMe(String str) { - return "hello" + str; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleServiceInterface.java deleted file mode 100644 index 0d0a4252e3..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/java/org/ow2/jonas/ws/jaxws/test/handlers/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.handlers; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/handlers.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/handlers.xml deleted file mode 100644 index f783cff4d2..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/handlers.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - GreeterSOAPHandler - org.ow2.jonas.ws.jaxws.test.handlers.GreeterSOAPHandler - - - - GreeterLogicalHandler - org.ow2.jonas.ws.jaxws.test.handlers.GreeterLogicalHandler - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 307ef9dbd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl deleted file mode 100644 index 0b4b1fbb52..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-handlers/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/pom.xml deleted file mode 100644 index 5d1f529c3d..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-injection - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Injection - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-injection - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java deleted file mode 100644 index 56d95e567e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ejb3/Hello.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ejb3; - - -public interface Hello -{ - public abstract String sayHello(String s); -} - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleService.java deleted file mode 100644 index af76102879..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleService.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.injection; - -import javax.annotation.Resource; -import javax.ejb.EJB; -import javax.jws.WebService; -import javax.xml.ws.WebServiceContext; -import org.ow2.jonas.ejb3.Hello; - -/** - * This is a basic JAXWS pojo web service. - * - * @author xiaoda - * - */ -@WebService(name = "SimpleService", serviceName = "SimpleService", wsdlLocation = "WEB-INF/wsdl/SimpleService.wsdl") -public class SimpleService implements SimpleServiceInterface { - - @Resource - WebServiceContext context = null; - - @EJB(name = "org.ow2.jonas.ejb3.Hello") - Hello hello; - - private static final long serialVersionUID = 1L; - - public String greetMe(String str) { - System.out.println(hello==null); - if (context != null) { - return "hello" + str; - } else { - return str; - } - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleServiceInterface.java deleted file mode 100644 index 0438629d05..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/java/org/ow2/jonas/ws/jaxws/test/injection/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.injection; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/handlers.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/handlers.xml deleted file mode 100644 index f783cff4d2..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/handlers.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - GreeterSOAPHandler - org.ow2.jonas.ws.jaxws.test.handlers.GreeterSOAPHandler - - - - GreeterLogicalHandler - org.ow2.jonas.ws.jaxws.test.handlers.GreeterLogicalHandler - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 307ef9dbd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl deleted file mode 100644 index 779d407a03..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-injection/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/pom.xml deleted file mode 100644 index 7b6b3e71ce..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-simple-with-wsdl - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Simple :: With :: WSDL - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-simple-with-wsdl - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java deleted file mode 100644 index 965df4918b..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; -import javax.jws.WebService; - -/** - * This is a basic JAXWS pojo web service. - * @author xiaoda - * - */ -@WebService(name="SimpleService",serviceName="SimpleService",wsdlLocation="WEB-INF/wsdl/SimpleService.wsdl") -public class SimpleService implements SimpleServiceInterface { - - private static final long serialVersionUID = 1L; - - @WebMethod(exclude=false) - public String greetMe(String str) { - return "hello" + str; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java deleted file mode 100644 index 073685bc6e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 307ef9dbd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl deleted file mode 100644 index c17a2fe443..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-with-wsdl/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/pom.xml deleted file mode 100644 index 4df798bc70..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-simple-without-wsdl - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: Simple :: Without :: WSDL - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-simple-without-wsdl - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java deleted file mode 100644 index 1c3d14e7f0..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; -import javax.jws.WebService; - -/** - * This is a basic JAXWS pojo web service. - * @author xiaoda - * - */ -@WebService(name="SimpleService",serviceName="SimpleService") -public class SimpleService implements SimpleServiceInterface { - - private static final long serialVersionUID = 1L; - - @WebMethod(exclude=false) - public String greetMe(String str) { - return "hello" + str; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java deleted file mode 100644 index 073685bc6e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 307ef9dbd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-simple-without-wsdl/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/pom.xml deleted file mode 100644 index 28a9d769bb..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-soapBinding - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: SOAPBinding - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-SOAPBinding - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java deleted file mode 100644 index ca4619fcb1..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleService.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; -import javax.jws.WebService; -import javax.jws.soap.SOAPBinding; - -/** - * This is a basic JAXWS pojo web service. - * @author xiaoda - * - */ -@WebService(name="SimpleService",serviceName="SimpleService",wsdlLocation="WEB-INF/wsdl/SimpleService.wsdl") -@SOAPBinding( - style = SOAPBinding.Style.RPC, - use = SOAPBinding.Use.LITERAL) -public class SimpleService implements SimpleServiceInterface { - - private static final long serialVersionUID = 1L; - - @WebMethod(exclude=false) - public String greetMe(String str) { - return "hello" + str; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java deleted file mode 100644 index 073685bc6e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/java/org/ow2/jonas/ws/jaxws/test/pojo/SimpleServiceInterface.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.pojo; - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 307ef9dbd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.pojo.SimpleService - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl deleted file mode 100644 index f299828cd7..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-soap-binding/src/main/webapp/WEB-INF/wsdl/SimpleService.wsdl +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/pom.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/pom.xml deleted file mode 100644 index 31749208d8..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - org.ow2.jonas - jonas-itests - 5.1.0-RC3-SNAPSHOT - ../pom.xml - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-wsProvider - war - JOnAS :: Tests :: JAXWS :: Tests :: Base :: POJO :: WSProvider - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - provided - - - - jaxws-pojo-wsProvider - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/java/org/ow2/jonas/ws/jaxws/test/CalculatorImpl.java b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/java/org/ow2/jonas/ws/jaxws/test/CalculatorImpl.java deleted file mode 100644 index b7bf40d3d1..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/java/org/ow2/jonas/ws/jaxws/test/CalculatorImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2009 Bull S.A.S - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: xiaoda - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.ws.jaxws.test; - -import java.io.ByteArrayInputStream; - -import javax.annotation.Resource; -import javax.servlet.ServletRequest; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.Source; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamSource; -import javax.xml.ws.BindingType; -import javax.xml.ws.Provider; -import javax.xml.ws.WebServiceContext; -import javax.xml.ws.WebServiceProvider; -import javax.xml.ws.handler.MessageContext; -import javax.xml.ws.http.HTTPBinding; -import javax.xml.ws.http.HTTPException; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; - -@WebServiceProvider -@BindingType(value=HTTPBinding.HTTP_BINDING) -public class CalculatorImpl implements Provider { - - @Resource - protected WebServiceContext wsContext; - - public Source invoke(Source source) { - try { - String num1 = null; - String num2 = null; - - if (source == null) { - System.out.println("Getting input from query string"); - MessageContext mc = wsContext.getMessageContext(); - String query = (String)mc.get(MessageContext.QUERY_STRING); - System.out.println("Query String = " + query); - ServletRequest req = (ServletRequest)mc.get(MessageContext.SERVLET_REQUEST); - num1 = req.getParameter("num1"); - num2 = req.getParameter("num2"); - } else { - System.out.println("Getting input from input message"); - Node n = null; - if (source instanceof DOMSource) { - n = ((DOMSource)source).getNode(); - } else if (source instanceof StreamSource) { - StreamSource streamSource = (StreamSource)source; - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - DocumentBuilder db = dbf.newDocumentBuilder(); - InputSource inputSource = null; - if (streamSource.getInputStream() != null) { - inputSource = new InputSource(streamSource.getInputStream()); - } else if (streamSource.getReader() != null) { - inputSource = new InputSource(streamSource.getReader()); - } - n = db.parse(inputSource); - } else { - throw new RuntimeException("Unsupported source: " + source); - } - NodeList children = n.getChildNodes(); - for (int i = 0; i < children.getLength(); i++) { - Node child = children.item(i); - if (child.getNodeName().equals("add")) { - num1 = child.getAttributes().getNamedItem("num1").getNodeValue(); - num2 = child.getAttributes().getNamedItem("num2").getNodeValue(); - break; - } - } - } - - int n1 = Integer.parseInt(num1); - int n2 = Integer.parseInt(num2); - return createResultSource(n1 + n2); - } catch(Exception e) { - e.printStackTrace(); - throw new HTTPException(500); - } - } - - private Source createResultSource(int sum) { - String body = - "" - + sum - + ""; - Source source = new StreamSource(new ByteArrayInputStream(body.getBytes())); - return source; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/jonas-web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/jonas-web.xml deleted file mode 100644 index 27eb0b90c9..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/jonas-web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - pojo - diff --git a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/web.xml b/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index da9338dd11..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/jaxws-pojo-wsProvider/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - JOnAS Package index - - Display the context which are preconfigured. - - - - SimpleService - org.ow2.jonas.ws.jaxws.test.CalculatorImpl - - - - SimpleService - /SimpleService - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-base/pom.xml b/jonas_tests/jaxws/jaxws-test-base/pom.xml deleted file mode 100644 index f4b2bcff15..0000000000 --- a/jonas_tests/jaxws/jaxws-test-base/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.1.0-RC3-SNAPSHOT - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests - base - pom - JOnAS :: Tests :: JAXWS :: Tests :: Base - Tests base for JAXWS - - - jaxws-pojo-simple-with-wsdl - jaxws-pojo-simple-without-wsdl - jaxws-pojo-complex - jaxws-pojo-handlers - jaxws-pojo-descriptor - jaxws-pojo-injection - jaxws-pojo-wsProvider - jaxws-pojo-soap-binding - ejb3 - jaxws-ejb-webmethod - jaxws-ejb-injection - jaxws-ejb-descriptor - jaxws-ejb-interceptor - - - - - diff --git a/jonas_tests/jaxws/jaxws-test-clients/pom.xml b/jonas_tests/jaxws/jaxws-test-clients/pom.xml deleted file mode 100644 index 11bcfeb405..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/pom.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.1.0-RC3-SNAPSHOT - - 4.0.0 - org.ow2.jonas.ws.jaxws.itests - tests - jar - JOnAS :: Tests :: JAXWS :: Tests :: Clients - http://maven.apache.org - - - - org.testng - testng - 5.8 - jdk15 - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-simple-without-wsdl - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-simple-with-wsdl - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-complex - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-injection - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-handler - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.pojo - jaxws-pojo-descriptor - ${project.version} - war - - - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb - ${project.version} - - - org.ow2.jonas.ws.jaxws.itests.base.ejb - jaxws-ejb-descriptor - ${project.version} - - - - httpunit - httpunit - 1.6 - - - org.ow2.jonas.osgi - javaee-api - ${project.version} - - - com.sun.xml.messaging.saaj - saaj-impl - 1.3.2 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - test-jar - - - - - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ejb3/Hello.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ejb3/Hello.java deleted file mode 100644 index 56d95e567e..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ejb3/Hello.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ejb3; - - -public interface Hello -{ - public abstract String sayHello(String s); -} - diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DispatchAPIWebserviceClientTestCase.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DispatchAPIWebserviceClientTestCase.java deleted file mode 100644 index 07e26e68b5..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DispatchAPIWebserviceClientTestCase.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test; - -import java.io.ByteArrayOutputStream; -import java.net.URL; -import javax.xml.namespace.QName; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPBody; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPEnvelope; -import javax.xml.soap.SOAPMessage; -import javax.xml.soap.SOAPPart; -import javax.xml.ws.Dispatch; -import javax.xml.ws.Service; -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.ow2.jonas.ws.jaxws.test.util.JWebServicesTestCase; - - -/** - * This is a client of SimpleService web service and it tests the - * JAXWS Dispatch API by using Dispatch API to invoke the web service. - * - * @author xiaoda - * - */ -public class DispatchAPIWebserviceClientTestCase extends JWebServicesTestCase { - - public DispatchAPIWebserviceClientTestCase(String s) throws Exception { - super(s); - } - private static final String PORT_URL = "/pojo/SimpleService"; - - - @BeforeClass - public void setUp() throws Exception { - useWar("jaxws-pojo-simple-with-wsdl"); - } - - @AfterClass - public void tearDown() throws Exception { - unUseWar("jaxws-pojo-simple-with-wsdl"); - } - - @Test(groups = { "DispatchAPI" }) - public void testInvokeWithDispatchAPI() { - - try{ - - String port = System.getProperty("http.port"); - - if(port == null) { - port = "9000"; - } - //String endpointUrl = "http://localhost" + port + PORT_URL; - - URL wsdlLocation = new URL("http://localhost:" + port + PORT_URL + "?wsdl"); - - QName serviceName = new QName("http://pojo.test.jaxws.ws.jonas.ow2.org/", - "SimpleService"); - - - QName portName = new QName("http://pojo.test.jaxws.ws.jonas.ow2.org/", - "SimpleServicePort"); - Service service = Service.create(wsdlLocation, serviceName); - - //service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointUrl); - Assert.assertNotNull(service); - - /** Create a Dispatch instance from a service.**/ - Dispatch dispatch = service.createDispatch(portName, - SOAPMessage.class, Service.Mode.MESSAGE); - - Assert.assertNotNull(dispatch); - - /** Create SOAPMessage request. **/ - // compose a request message - MessageFactory mf = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); - - // Create a message. This example works with the SOAPPART. - SOAPMessage request = mf.createMessage(); - SOAPPart part = request.getSOAPPart(); - - // Obtain the SOAPEnvelope and header and body elements. - SOAPEnvelope env = part.getEnvelope(); - SOAPBody body = env.getBody(); - - // Construct the message payload. - SOAPElement operation = body.addChildElement(env.createName("greetMe")); - SOAPElement value = operation.addChildElement("arg0"); - value.addTextNode("JOnAS"); - request.saveChanges(); - - /** Invoke the service endpoint. **/ - SOAPMessage response = dispatch.invoke(request); - - Assert.assertNotNull(response); - - ByteArrayOutputStream os = new ByteArrayOutputStream(); - response.writeTo(os); - String str = new String(os.toByteArray()); - System.out.println(str); - Assert.assertTrue(str.contains("helloJOnAS")); - } catch(Exception e) { - e.printStackTrace(); - } - } -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DynamicProxyWebserviceClientTestCase.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DynamicProxyWebserviceClientTestCase.java deleted file mode 100644 index d2fdc7576a..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/DynamicProxyWebserviceClientTestCase.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test; - - -import java.net.MalformedURLException; -import java.net.URL; -import javax.xml.namespace.QName; -import javax.xml.ws.Service; -import org.ow2.jonas.ws.jaxws.test.util.JWebServicesTestCase; -import org.ow2.jonas.ws.jaxws.test.util.SimpleServiceInterface; -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class DynamicProxyWebserviceClientTestCase extends JWebServicesTestCase { - - public DynamicProxyWebserviceClientTestCase(String s) throws Exception { - super(s); - } - private static final String PORT_URL = "/pojo/SimpleService"; - - - @BeforeClass - public void setUp() throws Exception { - useWar("jaxws-pojo-simple-with-wsdl"); - } - - @AfterClass - public void tearDown() throws Exception { - unUseWar("jaxws-pojo-simple-with-wsdl"); - } - - - @Test(groups = { "DynamicProxy" }) - public void testInvokeWithDispatchAPI() throws MalformedURLException { - - String port = System.getProperty("http.port"); - - if(port == null) { - port = "9000"; - } - String UrlString = "http://localhost:"+ port + PORT_URL +"?wsdl"; - - QName serviceName = new QName("http://pojo.test.jaxws.ws.jonas.ow2.org/","SimpleService"); - - QName portName = new QName("http://pojo.test.jaxws.ws.jonas.ow2.org/","SimpleServicePort"); - - System.out.println("UrlString = " + UrlString); - URL helloWsdlUrl = new URL(UrlString); - - //ServiceFactory serviceFactory = ServiceFactory.newInstance(); - - Service simpleService = Service.create(helloWsdlUrl, serviceName); - SimpleServiceInterface ssi =(SimpleServiceInterface)simpleService.getPort( portName, SimpleServiceInterface.class); - - //javax.xml.ws.BindingProvider bp = (javax.xml.ws.BindingProvider)ssi; - //Map context = bp.getRequestContext(); - //context.put("javax.xml.ws.session.maintain", Boolean.TRUE); - - Assert.assertEquals( ssi.greetMe("JOnAS"), "helloJOnAS"); - } -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/EJBClientTestCases.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/EJBClientTestCases.java deleted file mode 100644 index 9ef18cecae..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/EJBClientTestCases.java +++ /dev/null @@ -1,247 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test; - -import java.io.ByteArrayOutputStream; -import javax.wsdl.Definition; -import javax.wsdl.WSDLException; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.messaging.URLEndpoint; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPBody; -import javax.xml.soap.SOAPConnection; -import javax.xml.soap.SOAPConnectionFactory; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPEnvelope; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; -import javax.xml.soap.SOAPPart; -import org.ow2.jonas.ws.jaxws.test.util.JWebServicesTestCase; -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - - -public class EJBClientTestCases extends JWebServicesTestCase { - private static final String PORT_URL_WITH_WEBMETHOD = "/jaxws-ejb-webmethod/JAXWSBeanWithWebMethod"; - private static final String PORT_URL_WITHOUT_WEBMETHOD = "/jaxws-ejb-webmethod/JAXWSBeanWithoutWebMethod"; - private static final String PORT_URL_DESCRIPTOR = "/jaxws-ejb-descriptor/JAXWSBean_descriptor"; - private static final String PORT_URL_INJECTION = "/jaxws-ejb-injection/JAXWSBeanInjection"; - private static final String PORT_URL_INTERCEPTOR = "/jaxws-ejb-interceptor/EJBWSwihtInterceptors"; - public EJBClientTestCases(String s) throws Exception { - super(s); - } - - @BeforeClass - public void setUp() throws Exception { - } - - @AfterClass - public void tearDown() throws Exception { - } - - @Test(groups = { "EJB_with_webmethod" }) - public void testWithWebmethodWSDL() throws Exception { - useBeans("jaxws-ejb-webmethod"); - try { - Assert.assertNotNull(getWSDLForService(PORT_URL_WITH_WEBMETHOD),"Can not get wsdl for EJB_with_webmethod!"); - } finally { - unUseBeans("jaxws-ejb-webmethod"); - } - } - - @Test(groups = { "EJB_with_webmethod" }) - public void testWithWebmethodInvoke() throws Exception { - useBeans("jaxws-ejb-webmethod"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_WITH_WEBMETHOD,"greetMe","arg0"); - Assert.assertTrue(response.contains("Hello foo bar"),"greetMe() should be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITH_WEBMETHOD,"greetMeFault","arg0"); - Assert.assertTrue(response.contains("my error"),"greetMeFault() should be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITH_WEBMETHOD,"greetYou","arg0"); - Assert.assertTrue(!response.contains("Hi foo bar"),"greetYou() should not be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITH_WEBMETHOD,"sayHello","arg0"); - Assert.assertTrue(!response.contains("Hello World! foo bar"),"sayHello() should not be exposed as web method!"); - - } finally { - unUseBeans("jaxws-ejb-webmethod"); - } - } - - @Test(groups = { "EJB_without_webmethod" }) - public void testWithoutWebmethodWSDL() throws Exception { - useBeans("jaxws-ejb-webmethod"); - try { - Assert.assertNotNull(getWSDLForService(PORT_URL_WITHOUT_WEBMETHOD),"Can not get wsdl for EJB_without_webmethod!"); - } finally { - unUseBeans("jaxws-ejb-webmethod"); - } - } - - @Test(groups = { "EJB_without_webmethod" }) - public void testWithoutWebmethodInvoke() throws Exception { - useBeans("jaxws-ejb-webmethod"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_WITHOUT_WEBMETHOD,"greetMe","arg0"); - Assert.assertTrue(response.contains("Hello foo bar"),"greetMe() should be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITHOUT_WEBMETHOD,"greetYou","arg0"); - //System.out.println("******************greetYou : " + response); - Assert.assertTrue(response.contains("Hi foo bar"),"greetYou() should be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITHOUT_WEBMETHOD,"greetMeFault","arg0"); - Assert.assertTrue(response.contains("my error"),"greetMeFault() should be exposed as web method!"); - - response = invokeEJBWebService(PORT_URL_WITHOUT_WEBMETHOD,"sayHello","arg0"); - Assert.assertTrue(!response.contains("Hello World! foo bar"),"sayHello() should not be exposed as web method!"); - - } finally { - unUseBeans("jaxws-ejb-webmethod"); - } - } - - @Test(groups = { "EJB_descriptor" }) - public void testDescriptorWSDL() throws Exception { - useBeans("jaxws-ejb-descriptor"); - try { - Assert.assertNotNull(getWSDLForService(PORT_URL_DESCRIPTOR),"Can not get wsdl for EJB_descriptor!"); - } finally { - unUseBeans("jaxws-ejb-descriptor"); - } - } - - @Test(groups = { "EJB_descriptor" }) - public void testDescriptorInvoke() throws Exception { - useBeans("jaxws-ejb-descriptor"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_DESCRIPTOR,"greetMe","arg0"); - Assert.assertTrue(response.contains("Hello foo bar"),"Reply of greetMe() is not right!"); - } finally { - unUseBeans("jaxws-ejb-descriptor"); - } - } - - @Test(groups = { "EJB_injection" }) - public void testWSContextInjectionInvoke() throws Exception { - useBeans("jaxws-ejb-injection"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_INJECTION,"greetMe","arg0"); - Assert.assertTrue(response.contains("foo barwsContext"),"wsContext is not injected correctly!"); - } finally { - unUseBeans("jaxws-ejb-injection"); - } - } - - @Test(groups = { "EJB_injection" }) - public void testEJBResourceInjectionInvoke() throws Exception { - useBeans("jaxws-ejb-injection"); - useBeans("ejb3"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_INJECTION,"greetMe","arg0"); - Assert.assertTrue(response.contains("foo barwsContexthello"),"EJB resource is not injected correctly!"); - } finally { - unUseBeans("jaxws-ejb-injection"); - unUseBeans("ejb3"); - } - } - - @Test(groups = { "EJB_interceptor" }) - public void testEJBInterceptorInvoke() throws Exception { - useBeans("jaxws-ejb-interceptor"); - String response = null; - try { - response = invokeEJBWebService(PORT_URL_INTERCEPTOR,"greetMe","arg0"); - Assert.assertTrue(response.contains("intercepted"),"EJB resource is not injected correctly!"); - } finally { - unUseBeans("jaxws-ejb-interceptor"); - } - } - - private Definition getWSDLForService(String servicePort) throws WSDLException { - String port = System.getProperty("http.port"); - if(port == null) - port = "9000"; - - String url = "http://localhost:" + port + servicePort + "?WSDL"; - WSDLFactory factory = WSDLFactory.newInstance(); - WSDLReader reader = factory.newWSDLReader(); - reader.setFeature("javax.wsdl.importDocuments", true); - return reader.readWSDL(url); - } - - private String invokeEJBWebService(String servicePort, String opName, String paraName) throws UnsupportedOperationException, SOAPException { - - String port = System.getProperty("http.port"); - - if(port == null) { - port = "9000"; - } - SOAPConnectionFactory soapConnFactory = - SOAPConnectionFactory.newInstance(); - SOAPConnection connection = soapConnFactory.createConnection(); - - MessageFactory messageFactory = MessageFactory.newInstance(); - SOAPMessage message = messageFactory.createMessage(); - - SOAPPart soapPart = message.getSOAPPart(); - SOAPEnvelope envelope = (SOAPEnvelope) soapPart.getEnvelope(); - SOAPBody body = envelope.getBody(); - - SOAPElement bodyElement = body.addChildElement(envelope.createName(opName)); - SOAPElement strElement = bodyElement.addChildElement(paraName); - strElement.setValue("foo bar"); - - message.saveChanges(); - //message.writeTo(System.out); - //System.out.println(); - - URLEndpoint destination = new URLEndpoint("http://localhost:"+ port + servicePort); - SOAPMessage reply = connection.call(message, destination); - - Assert.assertNotNull(reply,"Reply of " + servicePort + " is Null!"); - String response = null; - try{ - ByteArrayOutputStream os = new ByteArrayOutputStream(); - reply.writeTo(os); - response = new String(os.toByteArray()); - } catch(Exception e) { - e.printStackTrace(); - } - connection.close(); - return response; - } - -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/PojoClientTestCases.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/PojoClientTestCases.java deleted file mode 100644 index 1558e59afe..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/PojoClientTestCases.java +++ /dev/null @@ -1,453 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test; - -import java.io.ByteArrayOutputStream; -import javax.wsdl.Definition; -import javax.wsdl.WSDLException; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.messaging.URLEndpoint; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPBody; -import javax.xml.soap.SOAPConnection; -import javax.xml.soap.SOAPConnectionFactory; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPEnvelope; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; -import javax.xml.soap.SOAPPart; -import java.net.HttpURLConnection; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import org.xml.sax.InputSource; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Text; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import java.io.InputStream; -import java.net.URL; -import java.io.StringReader; -import java.io.OutputStream; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import org.ow2.jonas.ws.jaxws.test.util.JWebServicesTestCase; -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class PojoClientTestCases extends JWebServicesTestCase { - - private static final String SIMPLE_PORT = "/pojo/SimpleService"; - private static final String COMPLEX_PORT = "/pojo/JAXWSBean3Service"; - - public PojoClientTestCases(String s) throws Exception { - super(s); - } - - @BeforeClass - public void setUp() throws Exception { - } - - @AfterClass - public void tearDown() throws Exception { - } - - @Test(groups = { "Pojo_WebserviceContext_Injection" }) - public void testWsContextInjectionWSDL() throws Exception { - useWar("jaxws-pojo-injection"); - try { - Assert.assertNotNull(getWSDLForService(SIMPLE_PORT),"Can not get wsdl for Pojo_WebserviceContext_Injection!"); - } finally { - unUseWar("jaxws-pojo-injection"); - } - } - - @Test(groups = { "Pojo_WebserviceContext_Injection" }) - public void testWsContextInjectionInvoke() throws Exception { - useWar("jaxws-pojo-injection"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnAS"),"Reply of greetMe() is not right!"); - } finally { - unUseWar("jaxws-pojo-injection"); - } - } - - @Test(groups = { "Pojo_Simple_with_WSDL" }) - public void testSimpleWithWSDLWSDL() throws Exception { - useWar("jaxws-pojo-simple-with-wsdl"); - try { - Assert.assertNotNull(getWSDLForService(SIMPLE_PORT),"Can not get wsdl for Pojo_Simple_with_WSDL!"); - } finally { - unUseWar("jaxws-pojo-simple-with-wsdl"); - } - } - - @Test(groups = { "Pojo_Simple_with_WSDL" }) - public void testSimpleWithWSDLInvoke() throws Exception { - useWar("jaxws-pojo-simple-with-wsdl"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnAS"),"Reply of greetMe() is not right!"); - } finally { - unUseWar("jaxws-pojo-simple-with-wsdl"); - } - } - - - @Test(groups = { "Pojo_Simple_without_WSDL" }) - public void testSimpleWithoutWSDLWSDL() throws Exception { - useWar("jaxws-pojo-simple-without-wsdl"); - try { - Assert.assertNotNull(getWSDLForService(SIMPLE_PORT),"Can not get wsdl for Pojo_Simple_without_WSDL!"); - } finally { - unUseWar("jaxws-pojo-simple-without-wsdl"); - } - } - - @Test(groups = { "Pojo_Simple_with_WSDL" }) - public void testSimpleWithoutWSDLInvoke() throws Exception { - useWar("jaxws-pojo-simple-without-wsdl"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnAS"),"Reply of SimpleService is not right!"); - } finally { - unUseWar("jaxws-pojo-simple-without-wsdl"); - } - } - - @Test(groups = { "Pojo_Descriptor" }) - public void testDescriptorWSDL() throws Exception { - useWar("jaxws-pojo-descriptor"); - try { - Assert.assertNotNull(getWSDLForService(SIMPLE_PORT),"Can not get wsdl for SimpleService!"); - } finally { - unUseWar("jaxws-pojo-descriptor"); - } - } - - @Test(groups = { "Pojo_Descriptor" }) - public void testDescriptorInvoke() throws Exception { - useWar("jaxws-pojo-descriptor"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnASSOAPHandlerSOAPHandler"),"Reply of SimpleService is not right!"); - } finally { - unUseWar("jaxws-pojo-descriptor"); - } - } - - @Test(groups = { "Pojo_Handler" }) - public void testHandlerWSDL() throws Exception { - useWar("jaxws-pojo-handlers"); - Assert.assertNotNull(getWSDLForService(SIMPLE_PORT),"Can not get wsdl for SimpleService!"); - unUseWar("jaxws-pojo-handlers"); - } - - @Test(groups = { "Pojo_Handler" }) - public void testHandlerInvoke() throws Exception { - useWar("jaxws-pojo-handlers"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnASSOAPHandler"),"Handler is not called correctly!"); - - } finally { - unUseWar("jaxws-pojo-handlers"); - } - } - - - @Test(groups = { "Pojo_Handler_Injection" }) - public void testHandlerInjectionInvoke() throws Exception { - useWar("jaxws-pojo-handlers"); - try { - Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnASSOAPHandlerwsContext"),"WS Context injection in Handler is not correct!"); - } finally { - unUseWar("jaxws-pojo-handlers"); - } - } - - - @Test(groups = { "Pojo_Complex" }) - public void testComplexWithWSDLWSDL() throws Exception { - useWar("jaxws-pojo-complex"); - try { - Assert.assertNotNull(getWSDLForService(COMPLEX_PORT),"Can not get wsdl for SimpleService!"); - } finally { - unUseWar("jaxws-pojo-complex"); - } - } - - @Test(groups = { "Pojo_Complex" }) - public void testComplexWithWSDLInvoke() throws Exception { - useWar("jaxws-pojo-complex"); - try { - String port = System.getProperty("http.port"); - if(port == null) - port = "9000"; - - SOAPConnectionFactory soapConnFactory = - SOAPConnectionFactory.newInstance(); - SOAPConnection connection = soapConnFactory.createConnection(); - - MessageFactory messageFactory = MessageFactory.newInstance(); - SOAPMessage message = messageFactory.createMessage(); - - SOAPPart soapPart = message.getSOAPPart(); - SOAPEnvelope envelope = (SOAPEnvelope) soapPart.getEnvelope(); - SOAPBody body = envelope.getBody(); - - - SOAPElement bodyElement = body.addChildElement(envelope.createName("getPersons1")); - - message.saveChanges(); - - URLEndpoint destination = new URLEndpoint("http://localhost:"+ port + "/pojo/JAXWSBean3Service"); - SOAPMessage reply = connection.call(message, destination); - String response = null; - try{ - ByteArrayOutputStream os = new ByteArrayOutputStream(); - reply.writeTo(os); - response = new String(os.toByteArray()); - } catch(Exception e) { - e.printStackTrace(); - } - - Assert.assertTrue(response.contains("ericcartmanhomersimpson"),"Reply of SimpleService is not right!"); - - - soapConnFactory = SOAPConnectionFactory.newInstance(); - - connection = soapConnFactory.createConnection(); - - messageFactory = MessageFactory.newInstance(); - message = messageFactory.createMessage(); - - soapPart = message.getSOAPPart(); - envelope = (SOAPEnvelope) soapPart.getEnvelope(); - body = envelope.getBody(); - - - bodyElement = body.addChildElement(envelope.createName("getPersons2")); - - message.saveChanges(); - - destination = new URLEndpoint("http://localhost:"+ port + "/pojo/JAXWSBean3Service"); - reply = connection.call(message, destination); - response = null; - try{ - ByteArrayOutputStream os = new ByteArrayOutputStream(); - reply.writeTo(os); - response = new String(os.toByteArray()); - } catch(Exception e) { - e.printStackTrace(); - } - - - Assert.assertTrue(response.contains("ericcartmanhomersimpson"),"Reply of SimpleService is not right!"); - - } finally { - unUseWar("jaxws-pojo-complex"); - } - } - @Test(groups = { "Pojo_SOAPBinding" }) - public void testSOAPBindingInvoke() throws Exception { - //useWar("jaxws-pojo-SOAPBinding"); - try { - //Assert.assertTrue(invokePojoService(SIMPLE_PORT).contains("helloJOnAS"),"Reply of greetMe() is not right!"); - } finally { - //unUseWar("jaxws-pojo-SOAPBinding"); - } - } - - @Test(groups = { "Pojo_wsProvider" }) - public void testWSProviderInvoke() throws Exception { - useWar("jaxws-pojo-wsProvider"); - try { - InputStream requestInput = this.getClass().getResourceAsStream("/request1.xml"); - - URL url = new URL("http://localhost:9000/pojo/SimpleService"); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - try { - String reply = call(requestInput, conn); - //System.out.println("********************************"+reply); - - InputSource is = new InputSource(new StringReader(reply)); - Document doc = parseMessage(is); - - Text replyMsg = findText(doc.getDocumentElement(), "120"); - Assert.assertEquals(replyMsg.getData(), "120"); - - - } finally { - conn.disconnect(); - } - } finally { - unUseWar("jaxws-pojo-wsProvider"); - } - } - - - - private Definition getWSDLForService(String servicePort) throws WSDLException { - String port = System.getProperty("http.port"); - if(port == null) - port = "9000"; - - String url = "http://localhost:" + port + servicePort + "?WSDL"; - WSDLFactory factory = WSDLFactory.newInstance(); - WSDLReader reader = factory.newWSDLReader(); - reader.setFeature("javax.wsdl.importDocuments", true); - return reader.readWSDL(url); - } - - private String invokePojoService(String servicePort) throws UnsupportedOperationException, SOAPException { - String port = System.getProperty("http.port"); - if(port == null) - port = "9000"; - - SOAPConnectionFactory soapConnFactory = - SOAPConnectionFactory.newInstance(); - SOAPConnection connection = soapConnFactory.createConnection(); - - MessageFactory messageFactory = MessageFactory.newInstance(); - SOAPMessage message = messageFactory.createMessage(); - - SOAPPart soapPart = message.getSOAPPart(); - SOAPEnvelope envelope = (SOAPEnvelope) soapPart.getEnvelope(); - SOAPBody body = envelope.getBody(); - - - SOAPElement bodyElement = body.addChildElement(envelope.createName("greetMe")); - SOAPElement strElement = bodyElement.addChildElement("arg0"); - strElement.setValue("JOnAS"); - - message.saveChanges(); - //message.writeTo(System.out); - //System.out.println(); - - URLEndpoint destination = new URLEndpoint("http://localhost:"+ port + servicePort); - SOAPMessage reply = connection.call(message, destination); - - Assert.assertNotNull(reply,"Reply of SimpleService is Null!"); - - String response = null; - try{ - ByteArrayOutputStream os = new ByteArrayOutputStream(); - reply.writeTo(os); - response = new String(os.toByteArray()); - } catch(Exception e) { - e.printStackTrace(); - } - connection.close(); - - return response; - } - - private static String call(InputStream requestInput, HttpURLConnection conn) throws IOException { - conn.setConnectTimeout(30 * 1000); - conn.setReadTimeout(30 * 1000); - conn.setDoInput(true); - conn.setUseCaches(false); - - if (requestInput == null) { - conn.setRequestMethod("GET"); - conn.setRequestProperty("Content-Type", "application/xml"); - - conn.connect(); - } else { - conn.setRequestMethod("POST"); - conn.setDoOutput(true); - conn.setRequestProperty("Content-Type", "application/xml"); - - conn.connect(); - - OutputStream out = conn.getOutputStream(); - - byte[] data = new byte[1024]; - int read = 0; - while ((read = requestInput.read(data, 0, data.length)) != -1) { - out.write(data, 0, read); - } - - requestInput.close(); - - out.flush(); - out.close(); - } - - InputStream is = null; - - try { - is = conn.getInputStream(); - } catch (IOException e) { - is = conn.getErrorStream(); - } - - StringBuffer buf = new StringBuffer(); - BufferedReader in = new BufferedReader(new InputStreamReader(is)); - String inputLine; - while ((inputLine = in.readLine()) != null) { - //System.out.println(inputLine); - buf.append(inputLine); - } - in.close(); - - return buf.toString(); - } - - - private static Document parseMessage(InputSource is) throws Exception { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setNamespaceAware(true); - DocumentBuilder db = dbf.newDocumentBuilder(); - - Document doc = db.parse(is); - return doc; - } - - private static Text findText(Element element, String value) { - NodeList list = element.getChildNodes(); - for (int i = 0; i < list.getLength(); i++) { - Node child = (Node)list.item(i); - if (child instanceof Text) { - Text text = (Text)child; - if (text.getData().indexOf(value) != -1) { - return text; - } - } else if (child instanceof Element) { - Element childEl = (Element)child; - Text text = findText(childEl, value); - if (text != null) { - return text; - } - } - } - return null; - } -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/JWebServicesTestCase.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/JWebServicesTestCase.java deleted file mode 100644 index 9930758deb..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/JWebServicesTestCase.java +++ /dev/null @@ -1,510 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999~2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.util; - -import java.io.IOException; -import java.util.Set; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import com.meterware.httpunit.WebConversation; - -/** - * Define a class to add useful methods for test the webservices - * - Deploy ear, war and beans - * - Retrieve initial context - * @author Florent Benoit - */ -public class JWebServicesTestCase { - - /** - * Name of the JOnAS server used for tests - */ - private static String jonasName = "jonas"; - - /** - * JONAS_BASE - */ - protected static String jb = null; - - /** - * Initial context used for lookup - */ - protected static Context ictx = null; - - /** - * Connection to the MBeanServer - */ - private static MBeanServerConnection cnx = null; - - /** - * Conversation used for HttpUnit - */ - protected WebConversation wc = null; - - /** - * URL used for the constructor - */ - protected String url = null; - - /** - * Prefix for build URLs - */ - private String prefixUrl = null; - - /** - * Add to the specified url the prefix - * @param url relative URL - * @return absolute path of URL - */ - protected String getAbsoluteUrl (String url) { - return (this.prefixUrl + url); - } - - - /** - * Make an absolute path with the filename. - */ - public String absPath(String name, String extension) { - - String ret = ""; - if ( extension.equals(".jar")) { - ret = jb + "/ejbjars/" + name + ".jar"; - } else if ( extension.equals(".war")) { - ret = jb + "/webapps/" + name + ".war"; - } else if (extension.equals(".ear")) { - ret = jb + "/apps/" + name + ".ear"; - } - return ret; - } - private static JMXServiceURL jmxServerUrl = null; - private static String urlSuffix = "service:jmx:"; - private static String registry = null; - private static String defaultRegistry = "rmi://localhost:19099"; - private static String protocol = null; - private static String defaultProtocol = "jrmp"; - - /* - * Get Connection to the MBean server - * Set the static cnx variable - */ - private void getJmxCnx() { - if (cnx == null) { - try { - if (registry == null) { - registry = defaultRegistry; - } - registry = registry + "/"; - int indx = registry.lastIndexOf(":"); - String st = registry.substring(0, indx); - String serverUrl = urlSuffix + st +"/jndi/"+registry; - - if (protocol == null) { - protocol = defaultProtocol; - } - - String connectorName = protocol.concat("connector_"); - - connectorName = connectorName.concat(jonasName); - serverUrl = serverUrl.concat(connectorName); - - jmxServerUrl = new JMXServiceURL(serverUrl); - JMXConnector cntor = JMXConnectorFactory.connect(jmxServerUrl, null); - cnx = cntor.getMBeanServerConnection(null); - System.out.println("server reached via: "+serverUrl); - } catch (IOException e) { - System.err.println("Can't reach server " + jonasName - + " as couldn't create JMXConnector (" + e.getMessage() - + ")"); - System.err.println("Check name, registry and protocol options."); - System.exit(2); - } - } - } - - /* - * ObjectName of y=the J2eeServerMBean - */ - private static ObjectName j2eeserver = null; - - /* - * Get the ObjectName of the J2eeServerMBean - * @return the ObjectName - */ - private ObjectName getJ2eeServer() { - if (j2eeserver == null) { - try { - ObjectName on = ObjectName.getInstance("*:j2eeType=J2EEServer,name=" + jonasName); - Set j2eeservers = cnx.queryNames(on, null); - if (j2eeservers.isEmpty()) { - System.err.println("Can't admin server " + jonasName + ": didn't found J2EEServer MBean"); - System.exit(2); - } - j2eeserver = (ObjectName) j2eeservers.iterator().next(); - } catch (Exception e) { - System.err.println("Can't invoke mbeanServer: " + e); - } - } - return j2eeserver; - } - - /** - * Initialize the port used by tests and the prefix - * @throws Exception - */ - private void init() throws Exception { - String port = System.getProperty("http.port"); - if (port == null) { - port = "9000"; - } - prefixUrl = "http://localhost:" + port; - setUpProperties(); - } - - /** - * Constructor with a specified name - * @param s the name - * @throws Exception - */ - public JWebServicesTestCase(String s) throws Exception { - init(); - } - /** - * Constructor with a specified name and url - * @param s the name - * @param url the url which can be used - * @throws Exception - */ - public JWebServicesTestCase(String s, String url) throws Exception { - wc = new WebConversation(); - init(); - this.url = getAbsoluteUrl(url); - } - - /** - * Get initialContext - * @return the initialContext - * @throws NamingException if the initial context can't be retrieved - */ - private Context getInitialContext() throws NamingException { - return new InitialContext(); - } - - /** - * Common setUp routine, used for every test. - * @throws Exception if an error occurs - */ - - protected void setUpProperties() throws Exception { - try { - // get InitialContext - if (ictx == null) { - ictx = getInitialContext(); - } - jb = System.getProperty("jonas.base"); - - registry = System.getProperty("registry"); - protocol = System.getProperty("protocol"); - getJmxCnx(); - - } catch (NamingException e) { - System.err.println("Cannot setup test: " + e); - e.printStackTrace(); - } - } - - - /** - * Load an ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void useEar(String fname) throws Exception { - String filename = absPath(fname, ".ear"); - try { - // Load ear in JOnAS if not already loaded. - if (!isEarLoaded(filename)) { - loadEar(filename); - } - - } catch (Exception e) { - throw new Exception("Cannot load Ear : " + e.getMessage()); - } - - } - - /** - * Unload an ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void unUseEar(String fname) throws Exception { - String filename = absPath(fname, ".ear"); - try { - - if (isEarLoaded(filename)) { - unloadEar(filename); - } - } catch (Exception e) { - throw new Exception("Cannot unload Ear : " + e.getMessage()); - } - } - - /** - * Load a war file in the jonas server - * @param filename war file, without ".war" extension - * @throws Exception if an error occurs - */ - - public void useWar(String fname) throws Exception { - String filename = absPath(fname, ".war"); - try { - // Load war in JOnAS if not already loaded. - if (!isWarLoaded(filename)) { - loadWar(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load War : " + e.getMessage()); - } - } - - /** - * Unload an ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void unUseWar(String fname) throws Exception { - String filename = absPath(fname, ".war"); - try { - - if (isWarLoaded(filename)) { - unloadEar(filename); - } - } catch (Exception e) { - throw new Exception("Cannot unload war : " + e.getMessage()); - } - } - - - /** - * Load a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void useBeans(String fname) throws Exception { - try { - String filename = absPath(fname, ".jar"); - // Load bean in EJBServer if not already loaded. - - if (!isJarLoaded(filename)) { - addBeans(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load Bean : " + e.getMessage()); - } - } - - - - /** - * Unload a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void unUseBeans(String filename) throws Exception { - String fname = absPath(filename, ".jar"); - - try { - - //if (isJarLoaded(fname)) { - unloadBeans(fname); - //} - } catch (Exception e) { - throw new Exception("Cannot unload Bean : " + e.getMessage()); - } - } - - - - /* - * isLoaded remote operation - */ - private boolean isLoaded(String filename) { - boolean ret = false; - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - Boolean r = (Boolean) cnx.invoke(getJ2eeServer(), "isDeployed", params, signature); - ret = r.booleanValue(); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - return ret; - } - - /** - * isJarLoaded remote operation - * @param filename jar file, with ".jar" extension - */ - private boolean isJarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - public void addBeans(String filename) { - - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * loadEar remote operation - * @param filename war file, with ".war" extension - */ - public void loadWar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * isWarLoaded remote operation - * @param filename war file, with ".war" extension - */ - private boolean isWarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - /** - * isEarLoaded remote operation - * @param filename ear file, with ".ear" extension - */ - private boolean isEarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - /** - * loadEar remote operation - * @param filename ear file, with ".ear" extension - */ - public void loadEar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * unloadBean remote operation - * @param filename ear file, with ".ear" extension - */ - public void unloadEar(String filename) { - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "undeploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot undeploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot unload ear: " + e); - } - } - - /** - * unloadBean remote operation - * @param filename jar file, with ".jar" extension - */ - public void unloadBeans(String filename) { - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "undeploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot undeploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot unload bean: " + e); - } - } -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/SimpleServiceInterface.java b/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/SimpleServiceInterface.java deleted file mode 100644 index 4b0d078fb5..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/java/org/ow2/jonas/ws/jaxws/test/util/SimpleServiceInterface.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2009 Bull S.A.S. - * Contact: jonas-team@ow2.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.ws.jaxws.test.util; - - -import javax.jws.WebMethod; - -public interface SimpleServiceInterface { - - @WebMethod(exclude=false) - public String greetMe(String str); -} diff --git a/jonas_tests/jaxws/jaxws-test-clients/src/main/resources/request1.xml b/jonas_tests/jaxws/jaxws-test-clients/src/main/resources/request1.xml deleted file mode 100644 index ea9019fe05..0000000000 --- a/jonas_tests/jaxws/jaxws-test-clients/src/main/resources/request1.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - \ No newline at end of file diff --git a/jonas_tests/jaxws/pom.xml b/jonas_tests/jaxws/pom.xml deleted file mode 100644 index 86b86ed43d..0000000000 --- a/jonas_tests/jaxws/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - org.ow2.jonas - jonas-modules - 5.1.0-RC3-SNAPSHOT - - 4.0.0 - org.ow2.jonas.ws.jaxws - itests - pom - JOnAS :: Tests :: JAXWS - Tests for JAXWS - - - jaxws-test-base - jaxws-test-clients - jaxws-felix - - - - - \ No newline at end of file diff --git a/jonas_tests/jonas5_tests.ipr b/jonas_tests/jonas5_tests.ipr deleted file mode 100644 index d6b6640553..0000000000 --- a/jonas_tests/jonas5_tests.ipr +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jonasadmin/.cvsignore b/jonas_tests/jonasadmin/.cvsignore deleted file mode 100644 index 141f2534a0..0000000000 --- a/jonas_tests/jonasadmin/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -classes -report \ No newline at end of file diff --git a/jonas_tests/jonasadmin/build.xml b/jonas_tests/jonasadmin/build.xml deleted file mode 100644 index 5e115b2262..0000000000 --- a/jonas_tests/jonasadmin/build.xml +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/jonasadmin/resources/jonasAdminTests.properties b/jonas_tests/jonasadmin/resources/jonasAdminTests.properties deleted file mode 100755 index 36ab1e81d3..0000000000 --- a/jonas_tests/jonasadmin/resources/jonasAdminTests.properties +++ /dev/null @@ -1,8 +0,0 @@ -# NAVIGATION TESTS -# to test, choose on else off -navigation.mbean=on -navigation.link=on -navigation.contentTitle=on -navigation.selectedItem=on -navigation.titleTomThumb=on -navigation.rarInEar=on \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/C_JonasAdminCatalina.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/C_JonasAdminCatalina.java deleted file mode 100755 index fb4b6c8246..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/C_JonasAdminCatalina.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.catalina; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test catalina in jonasAdmin - * Test : - connector - * - * @author Paul Kemler - */ -public class C_JonasAdminCatalina extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminCatalina(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminConnector.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/ConnectorUtils.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/ConnectorUtils.java deleted file mode 100755 index 85e05000ea..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/ConnectorUtils.java +++ /dev/null @@ -1,565 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.catalina; - -import java.io.IOException; -import java.net.ServerSocket; - -import org.xml.sax.SAXException; - -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Class for using connectors from jonasAdmin, for example create a new connector. - * @author Paul Kemler - * - */ -public class ConnectorUtils { - - /** - * NAME of FRAME content - */ - protected static final String FRAME_CONTENT = "content"; - - /** - * NAME of FRAME tree - */ - protected static final String FRAME_TREE = "tree"; - - /** - * URL of the Catalina connectors - */ - private static final String URL_JONASADMIN_CATALINA_CONNECTOR = "ListCatalinaConnectors.do"; - - /** - * URL for creating a catalina connector - */ - private static final String URL_JONASADMIN_CREATE_CATALINA_CONNECTOR = "CreateCatalinaConnector.do"; - - /** - * Create a new connector - * @param wc logged to jonasAdmin - * @return port of the new connector - * @throws Exception if an error occurs - */ - public static String createNewConnector(WebConversation wc) throws Exception { - // Call method createNewConnector(WebConversation wc, String protocol) - return createNewConnector(wc, "http"); - } - - /** - * Create a new connector - * @param wc logged to jonasAdmin - * @param protocol protocol to create ("http", "https" or "ajp") - * @return port of the new connector - * @throws Exception if an error occurs - */ - public static String createNewConnector(WebConversation wc, String protocol) throws Exception { - WebResponse wr = null; - WebLink link = null; - WebForm form = null; - String portText = null; - - // Go to connector page - wr = getConnectorPage(wc); - - // Go to CreateCatalinaConnector.do?type= - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_CATALINA_CONNECTOR + "?type=" - + protocol); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - portText = "" + findPort(); - - if (protocol.equals("http")) { - - form = wr.getForms()[0]; - String maxSpareThreadsText = form.getParameterValue("maxSpareThreadsText"); - String URIEncoding = form.getParameterValue("URIEncoding"); - String minSpareThreadsText = form.getParameterValue("minSpareThreadsText"); - String address = form.getParameterValue("address"); - String tcpNoDelay = form.getParameterValue("tcpNoDelay"); - String maxThreadsText = form.getParameterValue("maxThreadsText"); - String xpoweredBy = form.getParameterValue("xpoweredBy"); - String connectorType = form.getParameterValue("connectorType"); - String objectName = form.getParameterValue("objectName"); - String secure = form.getParameterValue("secure"); - String action = form.getParameterValue("action"); - String save = form.getParameterValue("save"); - String emptySessionPath = form.getParameterValue("emptySessionPath"); - String acceptCountText = form.getParameterValue("acceptCountText"); - String bufferSizeText = form.getParameterValue("bufferSizeText"); - String proxyName = form.getParameterValue("proxyName"); - String useBodyEncodingForURI = form.getParameterValue("useBodyEncodingForURI"); - String connTimeOutText = form.getParameterValue("connTimeOutText"); - String redirectPortText = form.getParameterValue("redirectPortText"); - String enableLookups = form.getParameterValue("enableLookups"); - String allowTrace = form.getParameterValue("allowTrace"); - String proxyPortText = form.getParameterValue("proxyPortText"); - String maxPostSizeText = form.getParameterValue("maxPostSizeText"); - - createNewHttpConnector(form, maxSpareThreadsText, URIEncoding, portText, minSpareThreadsText, address, - tcpNoDelay, maxThreadsText, xpoweredBy, connectorType, objectName, secure, action, save, - emptySessionPath, acceptCountText, bufferSizeText, proxyName, useBodyEncodingForURI, - connTimeOutText, redirectPortText, enableLookups, allowTrace, proxyPortText, maxPostSizeText); - } else if (protocol.equals("https")) { - form = wr.getForms()[0]; - String maxSpareThreadsText = form.getParameterValue("maxSpareThreadsText"); - String keystorePass = form.getParameterValue("keystorePass"); - String URIEncoding = form.getParameterValue("URIEncoding"); - String minSpareThreadsText = form.getParameterValue("minSpareThreadsText"); - String address = form.getParameterValue("address"); - String keystoreType = form.getParameterValue("keystoreType"); - String algorithm = form.getParameterValue("algorithm"); - String tcpNoDelay = form.getParameterValue("tcpNoDelay"); - String maxThreadsText = form.getParameterValue("maxThreadsText"); - String xpoweredBy = form.getParameterValue("xpoweredBy"); - String connectorType = form.getParameterValue("connectorType"); - String sslProtocol = form.getParameterValue("sslProtocol"); - String objectName = form.getParameterValue("objectName"); - String secure = form.getParameterValue("secure"); - String action = form.getParameterValue("action"); - String save = form.getParameterValue("save"); - String emptySessionPath = form.getParameterValue("emptySessionPath"); - String keystoreFile = form.getParameterValue("keystoreFile"); - String acceptCountText = form.getParameterValue("acceptCountText"); - String bufferSizeText = form.getParameterValue("bufferSizeText"); - String proxyName = form.getParameterValue("proxyName"); - String useBodyEncodingForURI = form.getParameterValue("useBodyEncodingForURI"); - String connTimeOutText = form.getParameterValue("connTimeOutText"); - String redirectPortText = form.getParameterValue("redirectPortText"); - String enableLookups = form.getParameterValue("enableLookups"); - String clientAuth = form.getParameterValue("clientAuth"); - String allowTrace = form.getParameterValue("allowTrace"); - String ciphers = form.getParameterValue("ciphers"); - String proxyPortText = form.getParameterValue("proxyPortText"); - String maxPostSizeText = form.getParameterValue("maxPostSizeText"); - - createNewHttpsConnector(form, maxSpareThreadsText, keystorePass, URIEncoding, portText, - minSpareThreadsText, address, keystoreType, algorithm, tcpNoDelay, maxThreadsText, xpoweredBy, - connectorType, sslProtocol, objectName, secure, action, save, emptySessionPath, keystoreFile, - acceptCountText, bufferSizeText, proxyName, useBodyEncodingForURI, connTimeOutText, - redirectPortText, enableLookups, clientAuth, allowTrace, - ciphers, proxyPortText, maxPostSizeText); - } else if (protocol.equals("ajp")) { - form = wr.getForms()[0]; - String maxSpareThreadsText = form.getParameterValue("maxSpareThreadsText"); - String URIEncoding = form.getParameterValue("URIEncoding"); - String minSpareThreadsText = form.getParameterValue("minSpareThreadsText"); - String address = form.getParameterValue("address"); - String tcpNoDelay = form.getParameterValue("tcpNoDelay"); - String maxThreadsText = form.getParameterValue("maxThreadsText"); - String xpoweredBy = form.getParameterValue("xpoweredBy"); - String connectorType = form.getParameterValue("connectorType"); - String objectName = form.getParameterValue("objectName"); - String secure = form.getParameterValue("secure"); - String action = form.getParameterValue("action"); - String save = form.getParameterValue("save"); - String emptySessionPath = form.getParameterValue("emptySessionPath"); - String acceptCountText = form.getParameterValue("acceptCountText"); - String bufferSizeText = form.getParameterValue("bufferSizeText"); - String useBodyEncodingForURI = form.getParameterValue("useBodyEncodingForURI"); - String connTimeOutText = form.getParameterValue("connTimeOutText"); - String redirectPortText = form.getParameterValue("redirectPortText"); - String enableLookups = form.getParameterValue("enableLookups"); - String allowTrace = form.getParameterValue("allowTrace"); - String maxPostSizeText = form.getParameterValue("maxPostSizeText"); - - createNewAjpConnector(form, maxSpareThreadsText, URIEncoding, portText, minSpareThreadsText, address, - tcpNoDelay, maxThreadsText, xpoweredBy, connectorType, objectName, secure, action, save, - emptySessionPath, acceptCountText, bufferSizeText, useBodyEncodingForURI, connTimeOutText, - redirectPortText, enableLookups, allowTrace, maxPostSizeText); - } - return portText; - } - - /** - * Get connector page when it is catalina - * @param wc logged to jonasAdmin with catalina - * @return WebResponse: content frame with list of connectors - * @throws SAXException if an error occurs when link is matched or clicked - * @throws IOException if an error occurs when link is clicked - */ - public static WebResponse getConnectorPage(WebConversation wc) throws SAXException, IOException { - // Go to connector page (ListCatalinaConnectors.do) - WebResponse wr; - WebLink link; - - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CATALINA_CONNECTOR); - if (link == null) { - throw new IllegalStateException("No link found for link : '" + URL_JONASADMIN_CATALINA_CONNECTOR + "'."); - } - link.click(); - - wr = wc.getFrameContents(FRAME_CONTENT); - return wr; - } - - /** - * Get a free port - * @return number of a free port - * @throws Exception if an error occurs to find a port - */ - private static int findPort() throws Exception { - int port = 0; - - ServerSocket ss; - ss = new ServerSocket(port); // free port if port == 0 - port = ss.getLocalPort(); - ss.close(); - return port; - } - - /** - * Create New Http Connector - * @param form Web Form to create http connector - * @param maxSpareThreadsText a string - * @param URIEncoding a string - * @param portText a string - * @param minSpareThreadsText a string - * @param address a string - * @param tcpNoDelay a string - * @param maxThreadsText a string - * @param xpoweredBy a string - * @param connectorType a string - * @param objectName a string - * @param secure a string - * @param action a string - * @param save a string - * @param emptySessionPath a string - * @param acceptCountText a string - * @param bufferSizeText a string - * @param proxyName a string - * @param useBodyEncodingForURI a string - * @param connTimeOutText a string - * @param redirectPortText a string - * @param enableLookups a string - * @param allowTrace a string - * @param proxyPortText a string - * @param maxPostSizeText a string - * @throws Exception if an error occurs when button is clicked. - */ - public static void createNewHttpConnector(WebForm form, String maxSpareThreadsText, String URIEncoding, - String portText, String minSpareThreadsText, String address, String tcpNoDelay, String maxThreadsText, - String xpoweredBy, String connectorType, String objectName, String secure, String action, String save, - String emptySessionPath, String acceptCountText, String bufferSizeText, String proxyName, - String useBodyEncodingForURI, String connTimeOutText, String redirectPortText, - String enableLookups, String allowTrace, - String proxyPortText, String maxPostSizeText) throws Exception { - - SubmitButton button = null; - - form.setParameter("maxSpareThreadsText", maxSpareThreadsText); - form.setParameter("URIEncoding", URIEncoding); - form.setParameter("portText", portText); - form.setParameter("minSpareThreadsText", minSpareThreadsText); - form.setParameter("address", address); - form.setParameter("tcpNoDelay", tcpNoDelay); - form.setParameter("maxThreadsText", maxThreadsText); - form.setParameter("xpoweredBy", xpoweredBy); - form.setParameter("connectorType", connectorType); - form.setParameter("objectName", objectName); - form.setParameter("secure", secure); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("emptySessionPath", emptySessionPath); - form.setParameter("acceptCountText", acceptCountText); - form.setParameter("bufferSizeText", bufferSizeText); - form.setParameter("proxyName", proxyName); - form.setParameter("useBodyEncodingForURI", useBodyEncodingForURI); - form.setParameter("connTimeOutText", connTimeOutText); - form.setParameter("redirectPortText", redirectPortText); - form.setParameter("enableLookups", enableLookups); - form.setParameter("allowTrace", allowTrace); - form.setParameter("proxyPortText", proxyPortText); - form.setParameter("maxPostSizeText", maxPostSizeText); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } - - /** - * Create New Https Connector - * @param form Web Form to create https connector - * @param maxSpareThreadsText a string - * @param keystorePass a string - * @param URIEncoding a string - * @param portText a string - * @param minSpareThreadsText a string - * @param address a string - * @param keystoreType a string - * @param algorithm a string - * @param tcpNoDelay a string - * @param maxThreadsText a string - * @param xpoweredBy a string - * @param connectorType a string - * @param sslProtocol a string - * @param objectName a string - * @param secure a string - * @param action a string - * @param save a string - * @param emptySessionPath a string - * @param keystoreFile a string - * @param acceptCountText a string - * @param bufferSizeText a string - * @param proxyName a string - * @param useBodyEncodingForURI a string - * @param connTimeOutText a string - * @param redirectPortText a string - * @param enableLookups a string - * @param clientAuth a string - * @param allowTrace a string - * @param ciphers a string - * @param proxyPortText a string - * @param maxPostSizeText a string - * @throws Exception if an error occurs when button is clicked. - */ - public static void createNewHttpsConnector(WebForm form, String maxSpareThreadsText, String keystorePass, - String URIEncoding, String portText, String minSpareThreadsText, String address, String keystoreType, - String algorithm, String tcpNoDelay, String maxThreadsText, String xpoweredBy, String connectorType, - String sslProtocol, String objectName, String secure, String action, String save, String emptySessionPath, - String keystoreFile, String acceptCountText, String bufferSizeText, String proxyName, - String useBodyEncodingForURI, String connTimeOutText, String redirectPortText, - String enableLookups, String clientAuth, String allowTrace, - String ciphers, String proxyPortText, String maxPostSizeText) throws Exception { - - SubmitButton button = null; - - form.setParameter("maxSpareThreadsText", maxSpareThreadsText); - form.setParameter("keystorePass", keystorePass); - form.setParameter("URIEncoding", URIEncoding); - form.setParameter("portText", portText); - form.setParameter("minSpareThreadsText", minSpareThreadsText); - form.setParameter("address", address); - form.setParameter("keystoreType", keystoreType); - form.setParameter("algorithm", algorithm); - form.setParameter("tcpNoDelay", tcpNoDelay); - form.setParameter("maxThreadsText", maxThreadsText); - form.setParameter("xpoweredBy", xpoweredBy); - form.setParameter("connectorType", connectorType); - form.setParameter("sslProtocol", sslProtocol); - form.setParameter("objectName", objectName); - form.setParameter("secure", secure); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("emptySessionPath", emptySessionPath); - form.setParameter("keystoreFile", keystoreFile); - form.setParameter("acceptCountText", acceptCountText); - form.setParameter("bufferSizeText", bufferSizeText); - form.setParameter("proxyName", proxyName); - form.setParameter("useBodyEncodingForURI", useBodyEncodingForURI); - form.setParameter("connTimeOutText", connTimeOutText); - form.setParameter("redirectPortText", redirectPortText); - form.setParameter("enableLookups", enableLookups); - form.setParameter("clientAuth", clientAuth); - form.setParameter("allowTrace", allowTrace); - form.setParameter("ciphers", ciphers); - form.setParameter("proxyPortText", proxyPortText); - form.setParameter("maxPostSizeText", maxPostSizeText); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } - - /** - * Create New Ajp Connector - * @param form Web Form to create ajp connector - * @param maxSpareThreadsText a string - * @param URIEncoding a string - * @param portText a string - * @param minSpareThreadsText a string - * @param address a string - * @param tcpNoDelay a string - * @param maxThreadsText a string - * @param xpoweredBy a string - * @param connectorType a string - * @param objectName a string - * @param secure a string - * @param action a string - * @param save a string - * @param emptySessionPath a string - * @param acceptCountText a string - * @param bufferSizeText a string - * @param useBodyEncodingForURI a string - * @param connTimeOutText a string - * @param redirectPortText a string - * @param enableLookups a string - * @param allowTrace a string - * @param maxPostSizeText a string - * @throws Exception if an error occurs when button is clicked. - */ - public static void createNewAjpConnector(WebForm form, String maxSpareThreadsText, String URIEncoding, - String portText, String minSpareThreadsText, String address, String tcpNoDelay, String maxThreadsText, - String xpoweredBy, String connectorType, String objectName, String secure, String action, String save, - String emptySessionPath, String acceptCountText, String bufferSizeText, String useBodyEncodingForURI, - String connTimeOutText, String redirectPortText, String enableLookups, String allowTrace, String maxPostSizeText) throws Exception { - - SubmitButton button = null; - - form.setParameter("maxSpareThreadsText", maxSpareThreadsText); - form.setParameter("URIEncoding", URIEncoding); - form.setParameter("portText", portText); - form.setParameter("minSpareThreadsText", minSpareThreadsText); - form.setParameter("address", address); - form.setParameter("tcpNoDelay", tcpNoDelay); - form.setParameter("maxThreadsText", maxThreadsText); - form.setParameter("xpoweredBy", xpoweredBy); - form.setParameter("connectorType", connectorType); - form.setParameter("objectName", objectName); - form.setParameter("secure", secure); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("emptySessionPath", emptySessionPath); - form.setParameter("acceptCountText", acceptCountText); - form.setParameter("bufferSizeText", bufferSizeText); - form.setParameter("useBodyEncodingForURI", useBodyEncodingForURI); - form.setParameter("connTimeOutText", connTimeOutText); - form.setParameter("redirectPortText", redirectPortText); - form.setParameter("enableLookups", enableLookups); - form.setParameter("allowTrace", allowTrace); - form.setParameter("maxPostSizeText", maxPostSizeText); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } - - /** - * Remove a connector - * @param wc logged to jonasAdmin - * @param port port number of the connector to remove - * @throws Exception if an error occurs when connector is deleted - */ - public static void deleteConnector(WebConversation wc, String port) throws Exception { - String[] tabPort = {port}; - deleteConnectors(wc, tabPort); - } - - /** - * Remove connectors - * @param wc logged to jonasAdmin - * @param port port number of the connector to remove - * @throws Exception if an error occurs - */ - public static void deleteConnectors(WebConversation wc, String[] tabPort) throws Exception { - WebResponse wr = null; - WebForm form = null; - WebLink link = null; - SubmitButton button = null; - - String action = ""; - - wr = getConnectorPage(wc); - - // Select connectors to remove - form = wr.getForms()[0]; - action = form.getParameterValue("action"); - for (int i = 0; i < tabPort.length; i++) { - form.setCheckbox("selectedItems", "jonas:type=Connector,port=" + tabPort[i], true); - } - - // Choose remove action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "remove"); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Confirm - form = wr.getForms()[0]; - button = form.getSubmitButton("btnSubmit"); - button.click(); - } - - /** - * Modify a connector - * @param wc logged to jonasAdmin - * @param port number of the port of the connector to modify - * @param acceptCountText a string - * @param maxPostSizeText a string - * @param connTimeOutText a string - * @param URIEncoding a string - * @param bufferSizeText a string - * @param address a string - * @param redirectPortText a string - * @param maxThreadsText a string - * @param minSpareThreadsText a string - * @param maxSpareThreadsText a string - * @param proxyName a string - * @param proxyPortText a string - * @throws Exception if an error occurs - */ - public static void modifyHttpConnector(WebForm form, String acceptCountText, String maxPostSizeText, - String connTimeOutText, String URIEncoding, String bufferSizeText, String address, String redirectPortText, - String maxThreadsText, String minSpareThreadsText, String maxSpareThreadsText, String proxyName, - String proxyPortText, String allowTrace, String emptySessionPath, String enableLookups, - String useBodyEncodingForURI, String xpoweredBy, String tcpNoDelay) throws Exception { - - SubmitButton button = null; - - String objectName = null; - String action = null; - String save = null; - String connectorType = null; - String portText = null; - - // get hidden params - objectName = form.getParameterValue("objectName"); - action = form.getParameterValue("action"); - save = form.getParameterValue("save"); - connectorType = form.getParameterValue("connectorType"); - portText = form.getParameterValue("portText"); - - form.setParameter("objectName", objectName); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("connectorType", connectorType); - form.setParameter("portText", portText); - form.setParameter("acceptCountText", acceptCountText); - form.setParameter("maxPostSizeText", maxPostSizeText); - form.setParameter("connTimeOutText", connTimeOutText); - form.setParameter("URIEncoding", URIEncoding); - form.setParameter("bufferSizeText", bufferSizeText); - form.setParameter("address", address); - form.setParameter("redirectPortText", redirectPortText); - form.setParameter("maxThreadsText", maxThreadsText); - form.setParameter("minSpareThreadsText", minSpareThreadsText); - form.setParameter("maxSpareThreadsText", maxSpareThreadsText); - form.setParameter("proxyName", proxyName); - form.setParameter("proxyPortText", proxyPortText); - form.setParameter("allowTrace", allowTrace); - form.setParameter("emptySessionPath", emptySessionPath); - form.setParameter("enableLookups", enableLookups); - form.setParameter("useBodyEncodingForURI", useBodyEncodingForURI); - form.setParameter("xpoweredBy", xpoweredBy); - form.setParameter("tcpNoDelay", tcpNoDelay); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/F_JonasAdminConnector.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/F_JonasAdminConnector.java deleted file mode 100755 index bd97a25227..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/catalina/F_JonasAdminConnector.java +++ /dev/null @@ -1,572 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.catalina; - -import java.util.Iterator; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HTMLElement; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to test the JOnAS Admin console Test connectors - * @author Paul Kemler - */ -public class F_JonasAdminConnector extends JonasAdminTestCase { - - /** - * URL of Jonas Logger - */ - private static final String URL_JONASADMIN_JONAS_LOGGER = "/EditLoggingJonas.do"; - - /** - * URL to modify a connector - */ - private static final String URL_JONASADMIN_MODIFY_CONNECTOR = "EditCatalinaConnector.do?select=jonas%3Atype%3DConnector%2Cport%3D"; - - /** - * URL of connectors - */ - private static final String URL_JONASADMIN_CONNECTORS = "ListCatalinaConnectors.do"; - - /** - * INPUT Checkbox - */ - private static final String INPUT_CHECKBOX = "input type=\"checkbox\""; - - /** - * Title port - */ - private static final String TITLE_PORT = "Port"; - - /** - * Title address - */ - private static final String TITLE_ADDRESS = "Address"; - - /** - * Title type - */ - private static final String TITLE_TYPE = "Type"; - - /** - * Button 'Save' - */ - private static final String BUTTON_SAVE = "/EditServletServer.do?forward=ActionListCatalinaConnectors"; - - /** - * SUCCESS CODE - */ - private static final int HTTP_SUCCESS_CODE = 200; - - /** - * A 2nd connection to jonasAdmin - */ - private static WebConversation wc2 = new WebConversation(); - - - /** - * Port of the http connector - */ - String portHttp; - - /** - * Port of the https connector - */ - String portHttps; - - /** - * Port of the ajp connector - */ - String portAjp; - - /** - * Accept Count - */ - private static final String acceptCount = "128"; - /** - * Allow Trace - */ - private static final String allowTrace = "true"; - /** - * Empty Session Path - */ - private static final String emptySessionPath = "true"; - /** - * Enable DNS Lookups - */ - private static final String enableLookups = "true"; - /** - * Max Bytes in a Post - */ - private static final String maxPostSize = "1048576"; - /** - * Connection Timeout - */ - private static final String connTimeOut = "10000"; - /** - * URI Encoding - */ - private static final String URIEncoding = ""; - /** - * Use Body Encoding for URI - */ - private static final String useBodyEncodingForURI = "true"; - /** - * X-Powered-By Generation Enabled - */ - private static final String xpoweredBy = "true"; - /** - * Should we use TCP no delay - */ - private static final String tcpNoDelay = "false"; - /** - * Default Buffer Size - */ - private static final String bufferSize = "2048"; - /** - * IP Address - */ - private static final String address = ""; - /** - * Redirect Port Number - */ - private static final String redirectPort = "9043"; - /** - * Maximum Threads - */ - private static final String maxThreads = "50"; - /** - * Minimum Spare Threads - */ - private static final String minSpareThreads = "10"; - /** - * Maximum Spare Threads - */ - private static final String maxSpareThreads = "25"; - /** - * Proxy Name - */ - private static final String proxyName = ""; - /** - * Proxy Port Number - */ - private static final String proxyPort = "0"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminConnector(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminConnector(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminConnector.class); - } - - /** - * Setup need for these tests jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - undeployAllEar(); - undeployAllJar(); - - useEar("autoload/mejb"); - } - - /** - * Test connectors - * @throws Exception if error occurs - */ - public void testConnectors() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebForm form; - - int row; - int portColumn; - int addressColumn; - int typeColumn; - int rowHttp; - int rowHttps; - int rowAjp; - String testUrl; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // OPEN A SECOND CONNECTION - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc2, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - - if (jProp.isCatalina()) { - wr = ConnectorUtils.getConnectorPage(wc); - table = utils.getTable(wr, 3); - portColumn = utils.getColumn(TITLE_PORT, table).intValue(); - if (portColumn == -1) { - throw new IllegalThreadStateException("There is no column, which contains '" + TITLE_PORT + "'. "); - } - addressColumn = utils.getColumn(TITLE_ADDRESS, table).intValue(); - if (portColumn == -1) { - throw new IllegalThreadStateException("There is no column, which contains '" + TITLE_ADDRESS + "'. "); - } - typeColumn = utils.getColumn(TITLE_TYPE, table).intValue(); - if (portColumn == -1) { - throw new IllegalThreadStateException("There is no column, which contains '" + TITLE_TYPE + "'. "); - } - - // Verify 'remove' button - if (table.getRowCount() == 2) { - assertFalse("There is a checkbox. ", wr.getText().indexOf(INPUT_CHECKBOX) != -1); - - // Choose remove action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "remove"); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - // ERROR: "No connector found !" - assertTrue("There is no error message. ", wr.getText().indexOf("") != -1); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CONNECTORS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - assertTrue("There is no remove button but there is no one and only one connector. ", wr.getText() - .indexOf("'remove'") != -1); - assertTrue("There is no checkbox but there is no one and only one connector. ", wr.getText().indexOf( - INPUT_CHECKBOX) != -1); - } - - // Open connectors branch in the tree to verify if a connector is - // well added. - wr = wc.getFrameContents(FRAME_TREE); - table = wr.getTables()[0]; - int rowConnectors = utils.getFirstRow("Connectors", table, 6).intValue(); - if (rowConnectors == -1) { - throw new IllegalThreadStateException("Connectors was not found in the tree. "); - } - TableCell cell = table.getTableCell(rowConnectors, 4); - HTMLElement[] elements = cell.getElementsWithAttribute("src", "images/tree/node_close_last.gif"); - if (elements.length == 1) { - if (elements[0].getAttribute("src").indexOf("node_close") != -1) { - link = cell.getLinks()[0]; - link.click(); - } - } - - // 1-Create new connectors - portHttp = ConnectorUtils.createNewConnector(wc, "http"); - // Verify - wr = wc.getFrameContents(FRAME_TREE); - assertTrue("The port " + portHttp + " is not found in the tree. ", wr.getText().indexOf(portHttp) != -1); - wr = wc.getFrameContents(FRAME_CONTENT); - assertTrue("It is not the connectors.jsp page. ", wr.getText().indexOf("catalina/connectors.jsp") != -1); - - wr = ConnectorUtils.getConnectorPage(wc); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - row = utils.getFirstRow(port, table, portColumn).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + port - + "' in the 'Port' column. "); - } - rowHttp = utils.getFirstRow(portHttp, table, portColumn).intValue(); - if (rowHttp == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + portHttp - + "' in the 'Port' column. "); - } - assertEquals("There is no the correct number of connectors. ", 3, table.getRowCount()); - assertTrue("There is no remove button. ", wr.getText().indexOf("'remove'") != -1); - assertEquals("There is no the correct number of parameters in the form. ", 2, - form.getParameterNames().length); - assertTrue("There is a checkbox for " + port + "port. ", table.getTableCell(row, 0).getElementsWithName( - "selectedItems").length == 0); - assertEquals("There is no checkbox for " + portHttp + "port. ", 1, table.getTableCell(rowHttp, 0) - .getElementsWithName("selectedItems").length); - assertEquals("The connector address is not null. ", "", table.getTableCell(rowHttp, addressColumn) - .getText()); - assertEquals("The connector type is not 'HTTP'. ", "HTTP", table.getTableCell(rowHttp, typeColumn) - .getText()); - testUrl = "http://localhost:" + portHttp + "/jonasAdmin/"; - wr = wc2.getResponse(testUrl); - assertEquals("A code of 200 (success) should be returned. ", HTTP_SUCCESS_CODE, wr.getResponseCode()); - - portHttps = ConnectorUtils.createNewConnector(wc, "https"); - // Verify - wr = ConnectorUtils.getConnectorPage(wc); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - row = utils.getFirstRow(port, table, portColumn).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + port - + "' in the 'Port' column. "); - } - rowHttps = utils.getFirstRow(portHttps, table, portColumn).intValue(); - if (rowHttps == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + portHttps - + "' in the 'Port' column. "); - } - assertEquals("There is no the correct number of connectors. ", 4, table.getRowCount()); - assertTrue("There is no remove button. ", wr.getText().indexOf("'remove'") != -1); - assertEquals("There is no the correct number of parameters in the form. ", 2, - form.getParameterNames().length); - assertEquals("There is no checkbox for " + portHttps + "port. ", 1, table.getTableCell(rowHttps, 0) - .getElementsWithName("selectedItems").length); - assertEquals("The connector address is not null. ", "", table.getTableCell(rowHttps, addressColumn) - .getText()); - assertEquals("The connector type is not 'HTTPS'. ", "HTTPS", table.getTableCell(rowHttps, typeColumn) - .getText()); - - portAjp = ConnectorUtils.createNewConnector(wc, "ajp"); - // Verify - wr = ConnectorUtils.getConnectorPage(wc); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - row = utils.getFirstRow(port, table, portColumn).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + port - + "' in the 'Port' column. "); - } - rowAjp = utils.getFirstRow(portAjp, table, portColumn).intValue(); - if (rowAjp == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + portAjp - + "' in the 'Port' column. "); - } - assertEquals("There is no the correct number of connectors. ", 5, table.getRowCount()); - assertTrue("There is no remove button. ", wr.getText().indexOf("'remove'") != -1); - assertEquals("There is no the correct number of parameters in the form. ", 2, - form.getParameterNames().length); - assertEquals("There is no checkbox for " + portAjp + "port. ", 1, table.getTableCell(rowAjp, 0) - .getElementsWithName("selectedItems").length); - assertEquals("The connector address is not null. ", "", table.getTableCell(rowAjp, addressColumn).getText()); - assertEquals("The connector type is not 'AJP'. ", "AJP", table.getTableCell(rowAjp, typeColumn).getText()); - - // 2-Modify connectors - // Get form - wr = ConnectorUtils.getConnectorPage(wc); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MODIFY_CONNECTOR + portHttp); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_MODIFY_CONNECTOR + portHttp - + " is not found. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - - table = utils.getTable(wr, 1); - // Verify - assertTrue("The value of 'Type' row is not 'HTTP'", table.getTableCell(0, 2).getText().indexOf("HTTP") != -1); - assertTrue("The value of 'Scheme' row is not 'http'", table.getTableCell(1, 2).getText().indexOf("http") != -1); - assertTrue("The value of 'Coyote Protocol Handler' row is not 'HTTP/1.1'", table.getTableCell(2, 2).getText().indexOf("HTTP/1.1") != -1); - assertTrue("The value of 'Secure (SSL) Connector' row is not 'false'", table.getTableCell(3, 2).getText().indexOf("false") != -1); - - table = utils.getTable(wr, 4); - // Verify - assertTrue("The value of 'Port Number' row is not '"+ portHttp +"'", table.getTableCell(0, 2).getText().indexOf(portHttp) != -1); - - table = utils.getTable(wr, 10); - - form = wr.getForms()[0]; - ConnectorUtils.modifyHttpConnector(form, acceptCount, maxPostSize, connTimeOut, URIEncoding, bufferSize, address, redirectPort, maxThreads, - minSpareThreads, maxSpareThreads, proxyName, proxyPort, allowTrace, emptySessionPath, enableLookups, useBodyEncodingForURI, xpoweredBy, tcpNoDelay); - - // Verify - // Add Go back to the Editor page - // ------------------------------- - wr = ConnectorUtils.getConnectorPage(wc); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MODIFY_CONNECTOR + portHttp); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_MODIFY_CONNECTOR + portHttp - + " is not found. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - verifyConnector(wr, acceptCount, maxPostSize, connTimeOut, URIEncoding, bufferSize, address, redirectPort, maxThreads, - minSpareThreads, maxSpareThreads, proxyName, proxyPort, allowTrace, emptySessionPath, enableLookups, useBodyEncodingForURI, xpoweredBy, tcpNoDelay); - - // 3-Remove connectors - String[] tabPort = {portHttp, portHttps, portAjp}; - ConnectorUtils.deleteConnectors(wc, tabPort); - // Verify - wr = ConnectorUtils.getConnectorPage(wc); - table = utils.getTable(wr, 3); - assertEquals("The number of connectors is not 1. ", 2, table.getRowCount()); - - // 4-Button 'Save' - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_SAVE); - if (link == null) { - throw new IllegalStateException("No link found for button : '" + BUTTON_SAVE + "'."); - } - wr = link.click(); - assertTrue("It is not the servletServer.jsp page. ", - wr.getText().indexOf("jonasserver/servletServer.jsp") != -1); - } - } - - /** - * Verify value of parameters in connector form - * @param wr the content frame - * @param acceptCountText value of the acceptCountText param - * @param maxPostSizeText value of the maxPostSizeText param - * @param connTimeOutText value of the connTimeOutText param - * @param URIEncoding value of the URIEncoding param - * @param bufferSizeText value of the bufferSizeText param - * @param address value of the address param - * @param redirectPortText value of the redirectPortText param - * @param maxThreadsText value of the maxThreadsText param - * @param minSpareThreadsText value of the minSpareThreadsText param - * @param maxSpareThreadsText value of the maxSpareThreadsText param - * @param proxyName value of the proxyName param - * @param proxyPortText value of the proxyPortText param - * @param allowTrace value of the allowTrace param - * @param emptySessionPath value of the emptySessionPath param - * @param enableLookups value of the enableLookups param - * @param useBodyEncodingForURI value of the useBodyEncodingForURI param - * @param xpoweredBy value of the xpoweredBy param - * @param tcpNoDelay value of the tcpNoDelay param - * @throws SAXException if there is not a form. - */ - private void verifyConnector(WebResponse wr, String acceptCountText, - String maxPostSizeText, String connTimeOutText, String URIEncoding, String bufferSizeText, String address, - String redirectPortText, String maxThreadsText, String minSpareThreadsText, String maxSpareThreadsText, - String proxyName, String proxyPortText, String allowTrace, String emptySessionPath, String enableLookups, - String useBodyEncodingForURI, String xpoweredBy, String tcpNoDelay) throws SAXException { - WebForm form = wr.getForms()[0]; - assertEquals("Accept count value is not " + acceptCountText + ". ", acceptCountText, form.getParameterValue("acceptCountText")); - assertEquals("Max Bytes in a Post value is not " + maxPostSizeText + ". ", maxPostSizeText, form.getParameterValue("maxPostSizeText")); - assertEquals("Connection Timeout value is not " + connTimeOutText + ". ", connTimeOutText, form.getParameterValue("connTimeOutText")); - assertEquals("URI Encoding value is not " + URIEncoding + ". ", URIEncoding, form.getParameterValue("URIEncoding")); - assertEquals("Default Buffer Size value is not " + bufferSizeText + ". ", bufferSizeText, form.getParameterValue("bufferSizeText")); - assertEquals("IP Address value is not " + address + ". ", address, form.getParameterValue("address")); - assertEquals("Redirect Port Number value is not " + redirectPortText + ". ", redirectPortText, form.getParameterValue("redirectPortText")); - assertEquals("Maximum Threads value is not " + maxThreadsText + ". ", maxThreadsText, form.getParameterValue("maxThreadsText")); - assertEquals("Minimum Spare Threads value is not " + minSpareThreadsText + ". ", minSpareThreadsText, form.getParameterValue("minSpareThreadsText")); - assertEquals("Maximum Spare Threads value is not " + maxSpareThreadsText + ". ", maxSpareThreadsText, form.getParameterValue("maxSpareThreadsText")); - assertEquals("Proxy Name value is not " + proxyName + ". ", proxyName, form.getParameterValue("proxyName")); - assertEquals("Proxy Port Number value is not " + proxyPortText + ". ", proxyPortText, form.getParameterValue("proxyPortText")); - assertEquals("Allow Trace value is not " + allowTrace + ". ", allowTrace, form.getParameterValue("allowTrace")); - assertEquals("Empty Session Path value is not " + emptySessionPath + ". ", emptySessionPath, form.getParameterValue("emptySessionPath")); - assertEquals("Enable DNS Lookups value is not " + enableLookups + ". ", enableLookups, form.getParameterValue("enableLookups")); - assertEquals("Use Body Encoding for URI value is not " + useBodyEncodingForURI + ". ", useBodyEncodingForURI, form.getParameterValue("useBodyEncodingForURI")); - assertEquals("X-Powered-By Generation Enabled value is not " + xpoweredBy + ". ", xpoweredBy, form.getParameterValue("xpoweredBy")); - assertEquals("Should we use TCP no delay value is not " + tcpNoDelay + ". ", tcpNoDelay, form.getParameterValue("tcpNoDelay")); - } - - /** - * Tear Down - * cleanUp action: remove all connectors except default port connector - */ - public void tearDown() throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=Connector,*"); - - Iterator connectorList = server.queryNames(on, null).iterator(); - - while (connectorList.hasNext()) { - ObjectName connectorON = (ObjectName) connectorList.next(); - String connectorPort = connectorON.getKeyProperty("port"); - if (!connectorPort.equals(port)) { - server.invoke(connectorON, "destroy", new Object[] {}, new String[] {}); - } - } - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/C_JonasAdminDeploy.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/C_JonasAdminDeploy.java deleted file mode 100755 index abd0121ebf..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/C_JonasAdminDeploy.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.deploy; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -/** - * Define a class to test deploy in jonasAdmin - * Test : - deploy - * - * @author Paul Kemler - */ -public class C_JonasAdminDeploy extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminDeploy(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminDeploy.suite()); - suite.addTest(F_JonasAdminDeployWar.suite()); - suite.addTest(F_JonasAdminDeployRar.suite()); - suite.addTest(F_JonasAdminDeployJar.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} - diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeploy.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeploy.java deleted file mode 100644 index c826e1c6a4..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeploy.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.deploy; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to test the JOnAS Admin console - * Test authentication and deploy/undeploy ears - * @author Florent Benoit - */ -public class F_JonasAdminDeploy extends JonasAdminTestCase { - - /** - * number of tabs when you are in the deployment tabs - */ - private static final int NUMBER_OF_TABS_FOR_DEPLOY = 3; - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDeploy(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDeploy.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - } - } - } - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDeploy(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Try to authenticate with a bad login/password - * @throws Exception if an error occurs - */ - public void testTryBadAuth() throws Exception { - // login to jonas admin - WebResponse wRes = JonasAdminAuth.doAuth(wc, url, "bad", "bad"); - String txt = wRes.getText(); - - if (txt.indexOf("Invalid username or password") == -1) { - fail("The login/password bad/bad can't be a valid l/p."); - } - } - - /** - * Try to authenticate with a right login/password - * @throws Exception if an error occurs - */ - public void testTryWithGoodAuth() throws Exception { - WebResponse wRes = JonasAdminAuth.doValidAuth(wc, url); - String txt = wRes.getText(); - - if (txt.indexOf("Invalid username or password") != -1) { - fail("The login/password jadmin/jonas must be valid."); - } - } - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - //Extract right table - WebTable bigTable = wr.getTables()[0]; - WebTable firstTable = bigTable.getTableCell(1, 0).getTables()[0]; - WebTable cellTable = firstTable.getTableCell(0, 0).getTables()[0]; - WebTable subTable = cellTable.getTableCell(0, 0).getTables()[0]; - - TableCell deployableCell = subTable.getTableCell(1, 0); - TableCell deployedCell = subTable.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - - - /** - * Deploy the ear with the testcase method and then, try to undeploy the ear with jonaAdmin - * If it was undeployed, deploy it again with jonasAdmin - * @param name of the ear (without extension) to test - * @throws Exception if an error occurs - */ - private void unDeployAndDeployEar(String name) throws Exception { - String fileName = name + ".ear"; - String url = URL_JONASADMIN_DEPLOYEAR; - - //First load Ear - useEar(name); - - WebResponse wr = wc.getResponse(getAbsoluteUrl(url)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file" + fileName + " was not found as deployed."); - } - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("undeploy", params); - - WebResponse submitUndeploy = webForm.submit(); - - // ear is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - WebResponse endResp = webForm.submit(); - - - wr = wc.getResponse(getAbsoluteUrl(url)); - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) != -1) { - fail("The jonasAdmin webApp has not removed. " + fileName); - } - - //now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("deploy", params); - - submitUndeploy = webForm.submit(); - - // ear is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - endResp = webForm.submit(); - - wr = wc.getResponse(getAbsoluteUrl(url)); - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file " + fileName + " was not found as deployed."); - } - } - - /** - * Deploy the ear with the testcase method and then, try to undeploy the ear with jonaAdmin - * If it was undeployed, deploy it again with jonasAdmin - * Test with ears alarm cmp2 and earsample - * @throws Exception if an error occurs - */ - public void testTryDeployUndeployEars() throws Exception { - // login to jonas admin - if (wc.getCurrentPage().getURL() == null) { - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - - unDeployAndDeployEar("alarm"); - unDeployAndDeployEar("cmp2"); - if (jProp.isResource()) { - unDeployAndDeployEar("earsample"); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployJar.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployJar.java deleted file mode 100755 index df34fb2ddc..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployJar.java +++ /dev/null @@ -1,338 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.deploy; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing deploy/undeploy Jars - * @author Paul Kemler - */ -public class F_JonasAdminDeployJar extends JonasAdminTestCase { - - /** - * URL of the deployment of Jars - */ - protected static final String URL_JONASADMIN_DEPLOYJAR = "EditDeploy.do?type=jar"; - - /** - * URL of the deployment - */ - protected static final String URL_JONASADMIN_DEPLOY = "EditDeploy.do"; - - /** - * URL of UPLOAD - */ - protected static final String URL_JONASADMIN_UPLOAD = "EditUpload.do"; - - /** - * URL of REMOVE - */ - protected static final String URL_JONASADMIN_REMOVE = "EditRemove.do"; - - /** - * number of tabs when you are in the deployment tabs - */ - private static final int NUMBER_OF_TABS_FOR_DEPLOYMENT = 3; - - /** - * number of tabs when you are in the CONFIRM tabs - */ - private static final int NUMBER_OF_TABS_FOR_CONFIRM = 4; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDeployJar(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDeployJar(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDeployJar.class); - } - - /** - * Setup need for these tests jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of - * deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - // Extract right table - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(wr, 0); - - TableCell deployableCell = table.getTableCell(1, 0); - TableCell deployedCell = table.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - - /** - * Deploy the war with the testcase method and then, try to undeploy the jar - * with jonaAdmin If it was undeployed, deploy it again with jonasAdmin Test - * with jar newsamplemdb.jar - * @throws Exception if an error occurs - */ - public void testTryDeployUndeployJars() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // First load War - String name = "samplemdb"; - String fileName = name + ".jar"; - useBeans(name); - - // Go to Deployment/WebModules - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOYJAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file" + fileName + " was not found as deployed."); - } - - // Undeploy - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - script.setParameterValue("undeploy", params); - - SubmitButton button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - WebResponse submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(submitUndeploy); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Confirm' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Result' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - // Go back to Deployment - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) != -1) { - fail("The jonasAdmin webApp has not removed. " + fileName); - } - - // now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("deploy", params); - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - // war is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Go back to Deployment - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file " + fileName + " was not found as deployed."); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployRar.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployRar.java deleted file mode 100755 index e7ee46a121..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployRar.java +++ /dev/null @@ -1,342 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.deploy; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing deploy/undeploy rars - * @author Paul Kemler - */ -public class F_JonasAdminDeployRar extends JonasAdminTestCase { - - /** - * URL of the deployment of RARs - */ - protected static final String URL_JONASADMIN_DEPLOYRAR = "EditDeploy.do?type=rar"; - - /** - * URL of the deployment - */ - protected static final String URL_JONASADMIN_DEPLOY = "EditDeploy.do"; - - /** - * URL of UPLOAD - */ - protected static final String URL_JONASADMIN_UPLOAD = "EditUpload.do"; - - /** - * URL of REMOVE - */ - protected static final String URL_JONASADMIN_REMOVE = "EditRemove.do"; - - /** - * number of tabs when you are in the deployment tabs - */ - private static final int NUMBER_OF_TABS_FOR_DEPLOYMENT = 4; - - /** - * number of tabs when you are in the CONFIRM tabs - */ - private static final int NUMBER_OF_TABS_FOR_CONFIRM = 5; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDeployRar(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDeployRar(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDeployRar.class); - } - - /** - * Setup need for these tests jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of - * deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - // Extract right table - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(wr, 0); - - TableCell deployableCell = table.getTableCell(1, 0); - TableCell deployedCell = table.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - - /** - * Deploy the war with the testcase method and then, try to undeploy the rar - * with jonaAdmin If it was undeployed, deploy it again with jonasAdmin Test - * with rar ErsatzEIS.rar - * @throws Exception if an error occurs - */ - public void testTryDeployUndeployRars() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isResource()) { - // First load Rar - String name = "autoload" + File.separator + "ErsatzEIS"; - String fileName = name + ".rar"; - useRar(name); - - // Go to Deployment/RarModules - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOYRAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file" + fileName + " was not found as deployed."); - } - - // Undeploy - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - script.setParameterValue("undeploy", params); - - SubmitButton button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - WebResponse submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(submitUndeploy); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Confirm' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Result' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - // Go back to Deployment - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) != -1) { - fail("The jonasAdmin webApp has not removed. " + fileName); - } - - // now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("deploy", params); - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - // war is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Go back to Deployment - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file " + fileName + " was not found as deployed."); - } - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployWar.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployWar.java deleted file mode 100755 index 1c54a1f41a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/deploy/F_JonasAdminDeployWar.java +++ /dev/null @@ -1,340 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.deploy; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing deploy/undeploy wars - * @author Paul Kemler - */ -public class F_JonasAdminDeployWar extends JonasAdminTestCase { - - /** - * URL of the deployment of WARs - */ - protected static final String URL_JONASADMIN_DEPLOYWAR = "EditDeploy.do?type=war"; - - /** - * URL of the deployment - */ - protected static final String URL_JONASADMIN_DEPLOY = "EditDeploy.do"; - - /** - * URL of UPLOAD - */ - protected static final String URL_JONASADMIN_UPLOAD = "EditUpload.do"; - - /** - * URL of REMOVE - */ - protected static final String URL_JONASADMIN_REMOVE = "EditRemove.do"; - - /** - * number of tabs when you are in the deployment tabs - */ - private static final int NUMBER_OF_TABS_FOR_DEPLOYMENT = 3; - - /** - * number of tabs when you are in the CONFIRM tabs - */ - private static final int NUMBER_OF_TABS_FOR_CONFIRM = 4; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDeployWar(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDeployWar(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDeployWar.class); - } - - /** - * Setup need for these tests jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of - * deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - // Extract right table - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(wr, 0); - - TableCell deployableCell = table.getTableCell(1, 0); - TableCell deployedCell = table.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - - /** - * Deploy the war with the testcase method and then, try to undeploy the war - * with jonaAdmin If it was undeployed, deploy it again with jonasAdmin Test - * with war autoload/ctxroot.war - * @throws Exception if an error occurs - */ - public void testTryDeployUndeployWars() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // First load War - String name = "autoload" + File.separator + "ctxroot"; - String fileName = name + ".war"; - useWar(name); - - // Go to Deployment/WebModules - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOYWAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file" + fileName + " was not found as deployed."); - } - - // Undeploy - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - script.setParameterValue("undeploy", params); - - SubmitButton button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - WebResponse submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(submitUndeploy); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Confirm' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Result' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell(0, - 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the fourth tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - // Go back to Deployment - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DEPLOYMENT, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_UPLOAD + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_UPLOAD)); - assertTrue("The link " + URL_JONASADMIN_REMOVE + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_REMOVE)); - - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) != -1) { - fail("The jonasAdmin webApp has not removed. " + fileName); - } - - // now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("deploy", params); - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - // war is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Go back to Deployment - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(fileName) == -1) { - fail("The file " + fileName + " was not found as deployed."); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/C_JonasAdminDomain.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/C_JonasAdminDomain.java deleted file mode 100755 index a66d428029..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/C_JonasAdminDomain.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.domain; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test domain in jonasAdmin - * Test : - domain - * - * @author Paul Kemler - */ -public class C_JonasAdminDomain extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminDomain(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminDomain.suite()); - suite.addTest(F_JonasAdminDomainAddServer.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomain.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomain.java deleted file mode 100644 index 71ae4d4cb5..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomain.java +++ /dev/null @@ -1,451 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.domain; - - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.HttpUnitUtils; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to add useful methods for test the examples - * - Execute the EditDomainAction - * @author Paul Kemler - */ -public class F_JonasAdminDomain extends JonasAdminTestCase { - /** - * default domain name - */ - private static final String DOMAIN_NAME = "jonas"; - /** - * default server name - */ - private static final String SERVER_NAME = "jonas"; - /** - * default jonas domain description in domain.xml - */ - private static final String DESCRIPTION = "A domain named jonas"; - /** - * - */ - private static final String TITLE_OTHERSERVERS = "Servers in domain"; - /** - * Domain type set to domainForm by EditDomainAction - */ - private static final String TITLE_DOMAIN = "Domain"; - /** - * label.domain.properties - */ - private static final String TITLE_PROPERTIES = "properties"; - /** - * label.domain.servers - */ - private static final String TITLE_SERVERS = "Servers in domain"; - /** - * message.domain.servers.none - */ - private static final String MESSAGE_NO_SERVERS = "No other server in this domain!"; - /** - * label.domain.clusters - */ - private static final String TITLE_CLUSTERS = "Clusters"; - /** - * message.domain.clusters.none - */ - private static final String MESSAGE_NO_CLUSTERS = "No clusters in this domain!"; - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDomain(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDomain.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDomain(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Verify if it is the good link of the tree which is selected - * @param wr The WebResponse of the 'tree' frame - * @param name A string with the name of the link - * @return a boolean. True if the name is found in the link, else false. - */ - private boolean treeControlSelected (WebResponse wr, String name) { - boolean isSelected = false; // the result - int nbSelectedLink = 0; // number of selected link - String attribut; // value of class attribut - - // Get all links - WebLink[] links; - try { - links = wr.getLinks(); - - // Search links with the 'tree-control-selected' class attribut - // and increase nbSelectedLink - for (int i = 0; i < links.length; i++) { - attribut = links[i].getAttribute("class"); - if (attribut.indexOf("tree-control-selected") != -1) { - nbSelectedLink++; - } - } - - if (nbSelectedLink == 1) { - WebLink link = wr.getLinkWith(name); - String content = link.getAttribute("class"); - if (content.indexOf("tree-control-selected") != -1) { - isSelected = true; - } - } - } catch (SAXException e) { - fail("No link was found. " + e); - } - - return isSelected; - } - - - /** - * Test Succesful Select - * @throws Exception if it fails - * - */ - public void testSuccessfulSelect() throws Exception { - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - // Get the frame "tree" - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - - // Create a request - WebLink link = treeFrame.getLinkWith("Domain"); - link.click(); - - // Get the frame "tree" - treeFrame = wc.getFrameContents(FRAME_TREE); - - // Verify if the attribut class that values "tree-control-selected" - // it is in a link with "Domain" - if (!treeControlSelected(treeFrame, "Domain")) { - fail("Domain is not selected in the tree."); - } - - // Create a new request for going to another page - link = treeFrame.getLinkWith("Services"); - link.click(); - - // Get the frame "tree" - treeFrame = wc.getFrameContents(FRAME_TREE); - - // Verify if the attribut class that values "tree-control-selected" - // it is NOT in a link with "Domain" - if (treeControlSelected(treeFrame, "Domain")) { - fail("Domain is selected in the tree."); - } - - - // Create a new request for going to another page - link = treeFrame.getLinkWith("Domain"); - link.click(); - - // Get the frame "tree" - treeFrame = wc.getFrameContents(FRAME_TREE); - - // Verify if the attribut class that values "tree-control-selected" - // it is in a link with "Domain" - if (!treeControlSelected(treeFrame, "Domain")) { - fail("Domain is not selected in the tree."); - } - - } - - /** - * Test Succesful Master Server Link - * @throws Exception if it fails - * - */ - public void testSuccesfulServerLink() throws Exception { - - // The expected link - String expectedLink = URL_JONASADMIN + "EditJonasServer.do?select=jonas:j2eeType=J2EEServer,name=jonas"; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - // Get the frame "tree" - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - - // Create a request - WebLink link = treeFrame.getLinkWith("Domain"); - link.click(); - - // Get the response - WebResponse wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify the link to the JonasAdmin's server (the master) - link = wr.getLinks()[0]; - String actualLink = link.getAttribute("href"); - actualLink = HttpUnitUtils.decode(actualLink); - assertEquals("The link of the JonasAdmin's server is wrong.", expectedLink, actualLink); - } - - /** - * Test if Domain presentation is correct - * @throws Exception if it fails - * - */ - public void testDomainProperties() throws Exception { - JonasAdminUtils utils = new JonasAdminUtils(); - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - // Get the frame "tree" - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - - // Create a request - WebLink link = treeFrame.getLinkWith("Domain"); - link.click(); - - // Get the response - WebResponse wr = wc.getFrameContents(FRAME_CONTENT); - - // Properties table - // - Title table - - // We are expecting "Domain properties" - WebTable table = utils.getTable(wr, 0); - TableCell cell = table.getTableCell(0, 0); - String text = cell.getText(); - boolean found; - if (text.indexOf(TITLE_DOMAIN) == 0 && text.indexOf(TITLE_PROPERTIES) > 0) { - found = true; - } else { - found = false; - } - assertTrue("Can't find title " + TITLE_DOMAIN + " " + TITLE_PROPERTIES, found); - // - Table content - - table = utils.getTable(wr, 1); - // First row Name jonas - cell = table.getTableCell(0, 0); - String propText = cell.getText(); - // step over 2nd cell conataining   - cell = table.getTableCell(0, 2); - String valuText = cell.getText(); - if (propText.indexOf("Name") >= 0 && valuText.indexOf(DOMAIN_NAME) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("The Name property is not " + DOMAIN_NAME, found); - // Next row - cell = table.getTableCell(1, 0); - propText = cell.getText(); - // step over 2nd cell conataining   - cell = table.getTableCell(1, 2); - valuText = cell.getText(); - if (propText.indexOf("Description") >= 0 && valuText.indexOf(DESCRIPTION) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("The Description property is not " + DESCRIPTION, found); - // Next row - cell = table.getTableCell(2, 0); - propText = cell.getText(); - // step over 2nd cell conataining   - cell = table.getTableCell(2, 2); - valuText = cell.getText(); - if (propText.indexOf("Master server") >= 0 && valuText.indexOf(SERVER_NAME) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("The Master server property is not " + SERVER_NAME, found); - - // Servers table - // - Title table - - // We are expecting "Servers in domain" - table = utils.getTable(wr, 3); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf(TITLE_SERVERS) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Can't find title " + TITLE_SERVERS, found); - // - Action zone - table = utils.getTable(wr, 4); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf("Action") >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Can't find Action zone", found); - // Button zone - table = utils.getTable(wr, 5); - cell = table.getTableCell(0, 0); - WebLink[] links = cell.getLinks(); - if (links.length >= 1) { - found = true; - } else { - found = false; - } - assertTrue("Can't find link in Action zone", found); - // Servers list - table = utils.getTable(wr, 7); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf(MESSAGE_NO_SERVERS) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Expecting " + MESSAGE_NO_SERVERS + ", found " + text, found); - - // Clusters table - // - Title table - - // We are expecting "Clusters" - table = utils.getTable(wr, 9); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf(TITLE_CLUSTERS) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Can't find title " + TITLE_CLUSTERS, found); - // - Action zone - table = utils.getTable(wr, 10); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf("Action") >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Can't find Action zone", found); - // Button zone - table = utils.getTable(wr, 11); - cell = table.getTableCell(0, 0); - links = cell.getLinks(); - if (links.length >= 1) { - found = true; - } else { - found = false; - } - assertTrue("Can't find link in Action zone", found); - // Clusters list - table = utils.getTable(wr, 13); - cell = table.getTableCell(0, 0); - text = cell.getText(); - if (text.indexOf(MESSAGE_NO_CLUSTERS) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Expecting " + MESSAGE_NO_CLUSTERS + ", found " + text, found); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomainAddServer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomainAddServer.java deleted file mode 100644 index 6ca19ac10f..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/domain/F_JonasAdminDomainAddServer.java +++ /dev/null @@ -1,223 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.domain; - - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Test adding a server to the domain. - * @author Adriana Danes - */ -public class F_JonasAdminDomainAddServer extends JonasAdminTestCase { - /** - * message.domain.servers.none - */ - private static final String MESSAGE_NO_SERVERS = "No other server in this domain!"; - /** - * URL of "Create Jms Destination" - */ - private static final String URL_DOMAIN_ADD_SERVER = "CreateJonasServer.do"; - /** - * - */ - private static final String APPLY_SERVERS_CONFIRM = "ApplyJonasServersConfirm.do"; - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDomainAddServer(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDomainAddServer.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDomainAddServer(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Test Add server action - * @throws Exception if it fails - * - */ - public void testAddServer() throws Exception { - JonasAdminUtils utils = new JonasAdminUtils(); - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - // Get the frame "tree" - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - - // Create a request and go to the Domain page - WebLink domainLink = treeFrame.getLinkWith("Domain"); - domainLink.click(); - - // Get the response - WebResponse wr = wc.getFrameContents(FRAME_CONTENT); - - // Click to the Add server - WebLink link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_DOMAIN_ADD_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - WebForm form = wr.getForms()[0]; - String createdServerName = "j1"; - form.setParameter("serverName", createdServerName); - form.setParameter("serverURL", "url"); - - SubmitButton button = form.getSubmitButtons()[0]; - button.click(); - - // Go back to the Domain page - domainLink.click(); - - // Get the response - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Servers list - WebTable table = utils.getTable(wr, 7); - // Go to the 2nd column to find the created server name - TableCell cell = table.getTableCell(0, 1); - String actualServerName = cell.getText(); - - assertEquals("The " + createdServerName + " was not found in the Servers list", createdServerName, actualServerName); - - // Remove the added server - WebForm itemsServersForm = wr.getForms()[0]; - SubmitButton[] buttons = itemsServersForm.getSubmitButtons(); - //System.out.println("Nb submit buttons = " + buttons.length); - itemsServersForm.setCheckbox("selectedItems", "jonas:j2eeType=J2EEServer,name=j1", true); - /* - String[] paramNames = itemsServersForm.getParameterNames(); - for (int i = 0; i < paramNames.length; i++) { - System.out.println("- " + paramNames[i]); - }*/ - //itemsServersForm.setParameter("action", "remove"); - buttons[0].click(); - - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 0); - /* - cell = table.getTableCell(0, 0); - text = cell.getText(); - System.out.println("---- " + text);*/ - // Confirm - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, APPLY_SERVERS_CONFIRM); - link.click(); - - // Go to domain page - domainLink.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Servers list - table = utils.getTable(wr, 7); - cell = table.getTableCell(0, 0); - String text = cell.getText(); - boolean found; - if (text.indexOf(MESSAGE_NO_SERVERS) >= 0) { - found = true; - } else { - found = false; - } - assertTrue("Expecting " + MESSAGE_NO_SERVERS + ", found " + text, found); - } - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/C_JonasAdminJonasserver.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/C_JonasAdminJonasserver.java deleted file mode 100755 index 9085bb99d0..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/C_JonasAdminJonasserver.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.jonasserver; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test jonasserver in jonasAdmin - * Test : - jonasserver - * - * @author Paul Kemler - */ -public class C_JonasAdminJonasserver extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminJonasserver(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminInfoServer.suite()); - suite.addTest(F_JonasAdminSaveAll.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminInfoServer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminInfoServer.java deleted file mode 100755 index 8ca4bc5a59..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminInfoServer.java +++ /dev/null @@ -1,483 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.jonasserver; - -import java.io.IOException; -import java.net.MalformedURLException; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.ow2.jonas.Version; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing server infos in jonasAdmin - * @author kemlerp - * - */ -public class F_JonasAdminInfoServer extends JonasAdminTestCase { - - /** - * URL of the Server Management - */ - private static final String URL_JONASADMIN_SERVER = "EditJonasServer.do"; - - /** - * URL of the JMX SERVER - */ - private static final String URL_JONASADMIN_JMX_SERVER = "EditJmxServer.do"; - - /** - * URL of the server registry - */ - private static final String URL_JONASADMIN_SERVER_REGISTRY = "ListRegistry.do"; - - /** - * URL of the SERVLET SERVER - */ - private static final String URL_JONASADMIN_SERVLET_SERVER = "EditServletServer.do"; - - /** - * URL of the JVM - */ - private static final String URL_JONASADMIN_JVM = "EditJvm.do"; - - /** - * URL of owner mbeans - */ - private static final String URL_JONASADMIN_OWNER = "/jonasAdmin/ListOwnerMBeans.do"; - - /** - * RMI PROTOCOL - */ - private static final String RMI_PROTOCOL = "rmi/"; - - /** - * Value of select parameter for JVM - */ - private static final String SELECT_JVM_MBEAN = "jonas%3Aj2eeType%3DJVM%2Cname%3Djonas%2CJ2EEServer%3Djonas"; - - /** - * Value of select parameter for MBEAN Server - */ - private static final String SELECT_MBEAN_SERVER_MBEAN = "JMImplementation%3Atype%3DMBeanServerDelegate"; - - /** - * Value of select parameter for Servlet Server - */ - private static final String SELECT_SERVLET_SERVER_MBEAN = "jonas%3Atype%3Dservice%2Cname%3DwebContainers"; - - /** - * Value of select parameter for Catalina Server - */ - private static final String SELECT_CATALINA_SERVER = "Catalina%3Atype%3DServer"; - - /** - * URL of the MBean attributs - */ - private static final String URL_MBEAN_ATTRIBUTS = "/jonasAdmin/ListMBeanAttributes.do?select="; - - /** - * Balise HTML - */ - private static final String END_OF_COLUMN = ""; - - /** - * A 2nd connection to jonasAdmin - */ - private static WebConversation wc2 = new WebConversation(); - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminInfoServer(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminInfoServer(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminInfoServer.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - unUseEar("earsample"); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test JOnAS server infos - * @throws Exception if error occurs - * - */ - public void testInfos() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - String jonasName = null; - String jonasVersion = Version.getNumber(); - String jonasProtocol = RMI_PROTOCOL + jProp.getRegistryProtocol(); - - String mbeanId = null; - String mbeanSpecification = null; - String mbeanSpecVersion = null; - String mbeanSpecVendor = null; - String mbeanImplementation = null; - String mbeanImplVersion = null; - String mbeanImplVendor = null; - - String registryProtocol = jProp.getRegistryProtocol(); - String registryUrl = jProp.getRegistryUrl(); - int jndiNb = 0; - - String servletName = null; - String servletVersion = null; - String servletService = null; - String servletEngine = null; - String servletHost = null; - - String jvmVersion = jProp.getJvmVersion(); - String jvmVendor = jProp.getJvmVendor(); - String jvmNode = null; - - - // OPEN A SECOND CONNECTION - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc2, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - - // TEST JONAS SERVER - // Go to jonas server management - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Get jonas server name - String text; - text = wr.getText(); - int beginIndex = text.indexOf("Server JOnAS ( "); - int endIndex = text.indexOf(" )", beginIndex); - jonasName = text.substring(beginIndex + "Server JOnAS ( ".length(), endIndex); - - try { - // Get table - table = utils.getTable(wr, 0); - - // Verify - assertEquals("It is not the jonas name. ", jonasName, table.getTableCell(0, 2).getText()); - assertEquals("It is not the jonas version. ", jonasVersion, table.getTableCell(1, 2).getText()); - assertEquals("It is not the jonas protocol. ", jonasProtocol, table.getTableCell(2, 2).getText()); - } catch (SAXException e) { - fail("The jonas table is incorrect."); - } - - - // TEST JMX SERVER - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JMX_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - mbeanId = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "MBeanServerId"); - mbeanSpecification = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "SpecificationName"); - mbeanSpecVersion = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "SpecificationVersion"); - mbeanSpecVendor = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "SpecificationVendor"); - mbeanImplementation = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "ImplementationName"); - mbeanImplVersion = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "ImplementationVersion"); - mbeanImplVendor = getMBeanAttribut(SELECT_MBEAN_SERVER_MBEAN, "ImplementationVendor"); - - try { - // Get table - table = utils.getTable(wr, 0); - - // Verify - assertEquals("It is not the mbean server id. ", mbeanId, table.getTableCell(0, 2).getText()); - assertEquals("It is not the mbean server specification name. ", mbeanSpecification, table.getTableCell(1, 2).getText()); - assertEquals("It is not the mbean server specification version. ", mbeanSpecVersion, table.getTableCell(2, 2).getText()); - assertEquals("It is not the mbean server specification vendor. ", mbeanSpecVendor, table.getTableCell(3, 2).getText()); - assertEquals("It is not the mbean server implementation name. ", mbeanImplementation, table.getTableCell(4, 2).getText()); - assertEquals("It is not the mbean server implementation version. ", mbeanImplVersion, table.getTableCell(5, 2).getText()); - assertEquals("It is not the mbean server implementation vendor. ", mbeanImplVendor, table.getTableCell(6, 2).getText()); - } catch (SAXException e) { - fail("The jmx server table is incorrect."); - } - - - // TEST REGISTRY INFOS - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVER_REGISTRY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - try { - // Get table - table = utils.getTable(wr, 0); - - // Verify - assertEquals("It is not the registry protocol. ", registryProtocol, table.getTableCell(1, 0).getText()); - assertEquals("It is not the registry url. ", registryUrl, table.getTableCell(1, 1).getText()); - } catch (SAXException e) { - fail("The registry table is incorrect."); - } - - try { - //Get table - table = utils.getTable(wr, 3); - int rowNb = table.getRowCount(); - jndiNb = getJndiNb(wr); - text = table.getText(); - - // Verify - if (jndiNb > 0) { - assertEquals("The number of jndi names is not " + jndiNb, rowNb, jndiNb); - } - assertFalse("'EarOpHome' is found. ", text.indexOf("EarOpHome") > -1); - assertFalse("'EarOpHome_L' is found. ", text.indexOf("EarOpHome_L") > -1); - assertFalse("'eisName' is found. ", text.indexOf("eisName") > -1); - } catch (SAXException e) { - fail("The jndi name table is incorrect."); - } - - // Deploy earsample.ear - useEar("earsample"); - - // Refresh - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JVM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVER_REGISTRY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - try { - //Get table - table = utils.getTable(wr, 3); - int jndiNb2 = getJndiNb(wr); - text = table.getText(); - - // Verify - if (jProp.isResource()) { - // 3 JNDI NAMES are added: EarOpHome, EarOpHome_L, eisName - assertEquals("The number of JNDI names has not been updated: ", jndiNb + 3, jndiNb2); - assertTrue("'eisName' is not found. ", text.indexOf("eisName") > -1); - } else { - // 2 JNDI NAMES are added: EarOpHome, EarOpHome_L - assertEquals("The number of JNDI names has not been updated: ", jndiNb + 2, jndiNb2); - } - assertTrue("'EarOpHome' is not found. ", text.indexOf("EarOpHome") > -1); - assertTrue("'EarOpHome_L' is not found. ", text.indexOf("EarOpHome_L") > -1); - } catch (SAXException e) { - fail("The jndi name table is incorrect."); - } - - - // TEST SERVLET SERVER - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVLET_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - servletName = getMBeanAttribut(SELECT_SERVLET_SERVER_MBEAN, "ServerName"); - servletVersion = getMBeanAttribut(SELECT_SERVLET_SERVER_MBEAN, "ServerVersion"); - // if CATALINA - if (jProp.isCatalina()) { - String selectService = getMBeanAttribut(SELECT_CATALINA_SERVER, "serviceNames"); - if (selectService.indexOf("[ ") == 0) { - if (selectService.indexOf(" ]") == selectService.length()-2) { - selectService = selectService.substring(2, selectService.length()-2); - } else { - selectService = selectService.substring(2); - } - } - servletService = getMBeanAttribut(selectService, "name"); - String selectContainer = getMBeanAttribut(selectService, "containerName"); - servletEngine = getMBeanAttribut(selectContainer, "name"); - servletHost = getMBeanAttribut(selectContainer, "defaultHost"); - } - - try { - // Get table - table = utils.getTable(wr, 0); - - // Verify - assertEquals("It is not the servlet server name. ", servletName, table.getTableCell(0, 2).getText()); - assertEquals("It is not the servlet server version. ", servletVersion, table.getTableCell(1, 2).getText()); - if (jProp.isCatalina()) { - assertEquals("It is not the servlet server service. ", servletService, table.getTableCell(2, 2).getText()); - assertEquals("It is not the servlet server engine. ", servletEngine, table.getTableCell(3, 2).getText()); - assertEquals("It is not the servlet server host. ", servletHost, table.getTableCell(4, 2).getText()); - } - } catch (SAXException e) { - fail("The jmx server table is incorrect."); - } - - - // TEST JVM INFOS - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JVM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - jvmNode = getMBeanAttribut(SELECT_JVM_MBEAN, "node"); - try { - // Get table - table = utils.getTable(wr, 0); - - // Verify - assertEquals("It is not the jvm version. ", jvmVersion, table.getTableCell(0, 2).getText()); - assertEquals("It is not the jvm vendor. ", jvmVendor, table.getTableCell(1, 2).getText()); - assertEquals("It is not the jvm node. ", jvmNode, table.getTableCell(2, 2).getText()); - } catch (SAXException e) { - fail("The jvm table is incorrect."); - } - - } - - /** - * Get the number of JNDI object - * @param contentFrame the content frame - * @return number of JNDI objects - * @throws SAXException if a table or cell doesn't match. - */ - private int getJndiNb(WebResponse contentFrame) throws SAXException { - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(contentFrame, 2); - - String text = table.getTableCell(0, 0).getText(); - int beginIndex = text.indexOf("("); - int endIndex = text.indexOf(")", beginIndex); - String nb = text.substring(beginIndex + "(".length(), endIndex); - - return Integer.parseInt(nb); - } - - /** - * Get MBean attribut - * @param select value of select param to indicate the chosen MBean - * @param attribut name of attribut - * @return value of the attribut - * @throws MalformedURLException if url is invalid - * @throws IOException if url is not correct - * @throws SAXException if an error is found - */ - private String getMBeanAttribut(String select, String attribut) { - WebResponse wr; - String urlAttributs = prefixUrl + URL_MBEAN_ATTRIBUTS + select; - - try { - wr = wc2.getResponse(urlAttributs); - String attributs = wr.getText(); - int position = attributs.indexOf("" + attribut + ""); - int beginIndex = attributs.indexOf("== ", position); - int endIndex = attributs.indexOf(END_OF_COLUMN, beginIndex); - return attributs.substring(beginIndex + "== ".length(), endIndex); - } catch (MalformedURLException e) { - throw new IllegalStateException("Invalid URL: " + url + ". " + e); - } catch (IOException e) { - throw new IllegalStateException("No response from: " + url + ". " + e); - } catch (SAXException e) { - throw new IllegalStateException("No text found. " + e); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminSaveAll.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminSaveAll.java deleted file mode 100755 index 68466afe0d..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/F_JonasAdminSaveAll.java +++ /dev/null @@ -1,215 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.jonasserver; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.catalina.ConnectorUtils; -import org.objectweb.jonas.jonasadmin.test.logging.LoggerUtils; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - - -/** - * Class for testing Save All in jonasAdmin - * @author Paul Kemler - * - */ -public class F_JonasAdminSaveAll extends JonasAdminTestCase { - - /** - * URL of the Server Management - */ - private static final String URL_JONASADMIN_SERVER = "EditJonasServer.do"; - - /** - * URL of the SERVLET SERVER - */ - private static final String URL_JONASADMIN_SERVLET_SERVER = "EditServletServer.do"; - - /** - * URL of the SAVE ALL button - */ - private static final String URL_JONASADMIN_SAVE_ALL = "SaveCatalina.do"; - - /** - * URL of welcome - */ - private static final String URL_WELCOME = "/jonasAdmin/Welcome.do"; - - /** - * Time of beginning testAllLinks - */ - private String beginTime; - - /** - * Time of ending testAllLinks - */ - private String endTime; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminSaveAll(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminSaveAll(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminSaveAll.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - // Get time - beginTime = getTime(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test Servlet server 'Save all' - * @throws Exception if error occurs - * - */ - public void testSaveAll() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isCatalina()) { - // Go to jonas server management - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - // Go to servlet server - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVLET_SERVER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Create new connector - String port = ConnectorUtils.createNewConnector(wc, "http"); - // Create new logger - LoggerUtils.createNewEngineLogger(wc); - - // Save all - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SAVE_ALL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Remove created connector - ConnectorUtils.deleteConnector(wc, port); - // Remove logger - LoggerUtils.deleteLogger(wc, null); - - // Get server.xml and test file. - XMLTest xmlTest = new XMLTest(""); - File serverXml = JonasAdminFiles.getServerXmlFile(); - xmlTest.testServerXml(serverXml, port); - - } - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - super.tearDown(); - // Get time - endTime = getTime(); - - // Recover last server.xml configuration - JonasAdminFiles.recoverServerConf(beginTime, endTime); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/XMLTest.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/XMLTest.java deleted file mode 100755 index 1c4368f879..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/jonasserver/XMLTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.jonasserver; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; - -import org.custommonkey.xmlunit.Diff; -import org.custommonkey.xmlunit.DifferenceListener; -import org.custommonkey.xmlunit.IgnoreTextAndAttributeValuesDifferenceListener; -import org.custommonkey.xmlunit.XMLTestCase; -import org.custommonkey.xmlunit.XMLUnit; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; - - -/** - * Class for testing XML format - * @author Paul Kemler - * - */ -public class XMLTest extends XMLTestCase { - - /** - * Constructor - * @param name name of the test - */ - public XMLTest(String name) { - super(name); - } - - /** - * Test server.xml - * @param file $JONAS_BASE/conf/server.xml - * @param port port of the added connector - * @throws Exception if an error occurs - */ - public void testServerXml(File file, String port) throws Exception { - String controlConnector = "" + - ""; - String controlAddedConnector = "" + - ""; - String controlEngine = "" + - "" + - "" + - "" + - "" + - ""; - String controlXml = "" + - "" + - "" + - "" + - "" + - "" + - "" + - controlConnector + - controlAddedConnector + - controlEngine + - "" + - ""; - Document testDocument = XMLUnit.buildTestDocument(new InputSource(new FileReader(file))); - String testText = ""; - - // Transform file into string - BufferedReader read = new BufferedReader(new FileReader(file)); - String temp = read.readLine(); - while (temp != null) { - testText += temp + "\n"; - temp = read.readLine(); - } - read.close(); - - // Verify if the new Connector exists - assertXpathEvaluatesTo("1", "count(//Connector[@port='" + port + "'])", testDocument); - - // Verify the server.xml 'structure' - XMLUnit.setIgnoreWhitespace(true); - DifferenceListener diffListener = new IgnoreTextAndAttributeValuesDifferenceListener(); - Diff diff = new Diff(controlXml, testText); - diff.overrideDifferenceListener(diffListener); - - assertTrue("The control structure:\n" + controlXml + "\nand the server.xml struture:\n" + testText + "\nare not similar: " + diff.toString(), diff.similar()); - - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/C_JonasAdminJoram.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/C_JonasAdminJoram.java deleted file mode 100755 index 68e835a527..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/C_JonasAdminJoram.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.joram; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test joram in jonasAdmin - * Test : - joram - * - * @author Paul Kemler - */ -public class C_JonasAdminJoram extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminJoram(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @param wc WebConversation - * @return a new TestSuite for this class - */ -/* public static Test suite(WebConversation wc) { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminJoramProperties.suite(wc)); - suite.addTest(F_JonasAdminJoramDestination.suite(wc)); - suite.addTest(F_JonasAdminJoramUser.suite(wc)); - return suite; - }*/ - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminJoramProperties.suite()); - suite.addTest(F_JonasAdminJoramDestination.suite()); - suite.addTest(F_JonasAdminJoramUser.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - //junit.textui.TestRunner.run(suite(wc)); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramDestination.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramDestination.java deleted file mode 100755 index 24834eaa90..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramDestination.java +++ /dev/null @@ -1,679 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.joram; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.service.container.F_JonasAdminEjbContainer; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing JORAM destinations - * @author Paul Kemler - * - */ -public class F_JonasAdminJoramDestination extends JonasAdminTestCase { - - /** - * URL of the Joram Platform - */ - private static final String URL_JONASADMIN_JORAM = "EditJoramPlatform.do"; - - /** - * URL of the Joram Servers - */ - private static final String URL_JONASADMIN_JORAM_SERVERS = "joramplatform/joramservers.jsp"; - - /** - * URL of "Create Jms Destination" - */ - private static final String URL_JONASADMIN_JORAM_CREATE_DESTINATION = "CreateJoramDestination.do"; - - /** - * URL of the Remove Button - */ - private static final String URL_JONASADMIN_JORAM_REMOVE = "RemoveConfirmDestinations.do"; - - /** - * URL of the 'Used By' tab for a topic - */ - private static final String URL_JONASADMIN_TOPIC_USED_BY = "joramplatform/topicUsedBy.jsp"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminJoramDestination(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminJoramDestination(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminJoramDestination.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test the creation of a new topic - * @throws Exception if error occurs - * - */ - public void testCreateNewTopic() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - String createDestinationPage; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isResource()) { - // Joram platform is in jonas - //if (isRarLoaded("joram_for_jonas_ra")) { - if (isJoramRar()) { - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Create JMS Destination - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_CREATE_DESTINATION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - createDestinationPage = wr.getText(); // For comparing with the forwarded page after the creation - // Find a name - String topicName = "new_topic_"; - int topicId = 0; - boolean found = false; - while (!found) { - if (!isTopic(topicName + topicId)) { - topicName = topicName + topicId; - found = true; - } - topicId++; - } - - // Create a new topic - createTopic(wr, topicName); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify topic is created - assertTrue("The '" + topicName + "' topic was not created. ", isTopic(topicName)); - - // Verify the forwarded page - //assertEquals("The 'New Destination' page has changed. ", createDestinationPage, wr.getText()); - // This asserion can't be verified for the moment as the 'New destination' page has th following - // - } - } - - } - - /** - * Test the creation of a new queue - * @throws Exception if error occurs - * - */ - public void testCreateNewQueue() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - String createDestinationPage; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - if (jProp.isResource()) { - // Joram platform is in jonas - //if (isRarLoaded("joram_for_jonas_ra")) { - if (isJoramRar()) { - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Create JMS Destination - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_CREATE_DESTINATION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - createDestinationPage = wr.getText(); // For comparing with the forwarded page after the creation - // Find a name - String queueName = "new_queue_"; - int queueId = 0; - boolean found = false; - while (!found) { - if (!isQueue(queueName + queueId)) { - queueName = queueName + queueId; - found = true; - } - queueId++; - } - - // Create a new queue - createQueue(wr, queueName); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify queue is created - assertTrue("The '" + queueName + "' queue was not created. ", isQueue(queueName)); - - // Verify the forwarded page - // assertEquals("The 'New Destination' page has changed. ", createDestinationPage, wr.getText()); - // This asserion can't be verified for the moment as the 'New destination' page has th following - // - } else { - - System.out.println("------joram jar not loaded"); - } - } - - } - - /** - * Test to delete a topic - * @throws Exception if error occurs - * - */ - public void testDeleteTopic() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isResource()) { - // Joram platform is in jonas - //if (isRarLoaded("joram_for_jonas_ra")) { - if (isJoramRar()) { - // Find a name - String topicName = "new_topic_"; - int topicId = 0; - boolean found = false; - while (!found) { - if (!isQueue(topicName + topicId)) { - topicName = topicName + topicId; - found = true; - } - topicId++; - } - - // Create a topic - createTopic(topicName, getLocalServerId()); - - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Delete the created JMS Destination - WebForm removeDestinationForm = wr.getForms()[0]; - SubmitButton button = removeDestinationForm.getSubmitButtons()[0]; - removeDestinationForm.setCheckbox("selectedItems", topicName, true); - button.click(); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Confirm - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_REMOVE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify topic is deleted - assertTrue("The '" + topicName + "' topic always exists. ", isTopic(topicName)); - - // Verify console is updated - assertTrue("The '" + topicName + "' topic was found in jonasAdmin after deleting. ", wr.getText().indexOf(topicName) == -1); - } - } - - } - - /** - * Test to delete a queue - * @throws Exception if error occurs - * - */ - public void testDeleteQueue() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isResource()) { - // Joram platform is in jonas - //if (isRarLoaded("joram_for_jonas_ra")) { - if (isJoramRar()) { - // Find a name - String queueName = "new_queue_"; - int queueId = 0; - boolean found = false; - while (!found) { - if (!isQueue(queueName + queueId)) { - queueName = queueName + queueId; - found = true; - } - queueId++; - } - - // Create a queue - createQueue(queueName, getLocalServerId()); - - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Delete the created JMS Destination - WebForm removeDestinationForm = wr.getForms()[0]; - SubmitButton button = removeDestinationForm.getSubmitButtons()[0]; - removeDestinationForm.setCheckbox("selectedItems", queueName, true); - button.click(); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Confirm - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_REMOVE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify queue is deleted - assertTrue("The '" + queueName + "' queue always exists. ", isQueue(queueName)); - - // Verify console is updated - assertTrue("The '" + queueName + "' queue was found in jonasAdmin after deleting. ", wr.getText().indexOf(queueName) == -1); - } - } - - } - - /** - * Test a used topic - * @throws Exception if error occurs - * - */ - public void testUsedTopic() throws Exception { - - - WebResponse wr; - WebLink link; - WebTable table; - String topicName = "mdbTopic"; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - if (jProp.isResource()) { - // Joram platform is in jonas - //if (isRarLoaded("joram_for_jonas_ra")) { - if (isJoramRar()) { - // Create a topic - createTopic(topicName, getLocalServerId()); - - // Use samplemdb.jar - useBeans("samplemdb"); - - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify there is no checkbox for mdbTopic - table = utils.getTable(wr, 3); - int topicRow = utils.getRow(topicName, table, 1).intValue(); - if (topicRow == -1) { - fail("'" + topicName + "' was not found in the destination list. "); - } - TableCell cell = table.getTableCell(topicRow, 0); - assertEquals("There is an element for the '" + topicName + "'. ", 0, cell.getElementNames().length); // if there is a checkbox, the number of element is 1 - - // Go to topic - link = table.getTableCell(topicRow, 1).getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to 'Used By' tab - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_TOPIC_USED_BY); - if (link == null) { - fail("There is no 'Used By' tab. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify there is the Mdb MessageDrivenBean - table = utils.getTable(wr, 0); - int mdbRow = utils.getRow("Mdb", table).intValue(); - if (mdbRow == -1) { - fail("The 'Mdb' EJB was not found in the list of '" + topicName + "' users. "); - } - // Verify the type - assertEquals("In list of '" + topicName + "' users, the type of 'Mdb' is not a MessageDrivenBean", "MessageDrivenBean", table.getTableCell(mdbRow, 1).getText()); - - // Click to go to the Mdb page - link = table.getTableCell(mdbRow, 0).getLinks()[0]; - if (link == null) { - fail("There is no link for 'Mdb' in 'Used By' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify the link goes to "Domain ( jonas ) > Server JOnAS ( jonas ) > Services > EJB Container > samplemdb.jar" - /* This link is not present as the samplemdb.jar was not deployed with jonasAdmin sa the management - * tree is not refreshed - TableCell contentTitleTomThumbCell = wr.getTables()[0].getTableCell(0, 0); - assertTrue("The link of 'Mdb' in 'Used By' page is maybe wrong. ", contentTitleTomThumbCell.getText().endsWith("> Services > EJB Container > samplemdb.jar")); - */ - - // Verify the Tabs - WebTable tabTable = utils.getTabTable(wr); - /* - for (int i = 0; i < tabTable.getColumnCount(); i++) { - System.out.println("* " + i + " -- " + tabTable.getTableCell(0, i).getText()); - }*/ - int mdbIndex = F_JonasAdminEjbContainer.getMdbTabIndex(); - testTabs(tabTable, - F_JonasAdminEjbContainer.getNumberOfTabsForMdb(), - mdbIndex, - "Problem in 'Mdb' tab."); - int mdbTabIndex = (mdbIndex -1) * 2; - assertEquals("The selected tab is not Mdb", - F_JonasAdminEjbContainer.getMdbTabText(), - tabTable.getTableCell(0, mdbTabIndex).getText()); - } else { - - System.out.println("------joram jar not loaded"); - } - } - } - - /** - * Topic exists - * @param name the name of the topic - * @return true if the topic exists, false else - * @throws Exception if an error occurs - */ - private boolean isTopic(String name) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=topic,name=" + name); - - return server.isRegistered(on); - } - - /** - * Queue exists - * @param name the name of the queue - * @return true if the queue exists, false else - * @throws Exception if an errors occurs - */ - private boolean isQueue(String name) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=queue,name=" + name); - - return server.isRegistered(on); - } - - /** - * Create a topic - * @param wr the content frame in the 'New Destination' page - * @param name the name of the topic - * @throws Exception if an error occurs - */ - private void createTopic(WebResponse wr, String name) throws Exception { - createDestination(wr, name, "topic"); - } - - /** - * Create a queue - * @param wr the content frame in the 'New Destination' page - * @param name the name of the queue - * @throws Exception if an error occurs - */ - private void createQueue(WebResponse wr, String name) throws Exception { - createDestination(wr, name, "queue"); - } - - /** - * Create a jms destination - * @param wr the content frame in the 'New Destination' page - * @param name the name of the destination - * @param type the type of the destination ("topic" or "queue"). - * @throws Exception if an error occurs - */ - private void createDestination(WebResponse wr, String name, String type) throws Exception { - SubmitButton button; - WebForm form = wr.getForms()[0]; - form.setParameter("type", type); - form.setParameter("name", name); - - // Submit - button = form.getSubmitButtons()[0]; - button.click(); - } - - /** - * Get the local server id - * @return id of the local server - * @throws Exception if an errors occurs - */ - private int getLocalServerId() throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=JoramAdapter,*"); - ObjectName joramAdapterON = (ObjectName) server.queryNames(on, null).iterator().next(); - - return ((Short) server.getAttribute(joramAdapterON, "ServerId")).intValue(); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramProperties.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramProperties.java deleted file mode 100755 index 0c2d3263bd..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramProperties.java +++ /dev/null @@ -1,286 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.joram; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - - -/** - * Define a class to test the JOnAS Admin console - * Test properties of joram platform - * @author kemlerp - * - */ -public class F_JonasAdminJoramProperties extends JonasAdminTestCase { - - /** - * URL of the Joram Platform - */ - private static final String URL_JONASADMIN_JORAM = "EditJoramPlatform.do"; - - /** - * Name of the file of jonasAdmin test properties - */ - private static final String JONASADMINTEST_PROPERTY_NAME = "jonasAdminTests"; - - /** - * Name of the property joram.version - */ - private static final String JORAM_VERSION = "joram.version"; - - /** - * Name of the property joram.serverId - */ - private static final String JORAM_SERVER_ID = "joram.serverId"; - - /** - * Name of the property joram.serverName - */ - private static final String JORAM_SERVER_NAME = "joram.serverName"; - - /** - * Name of the property joram.collocated - */ - private static final String JORAM_COLLOCATED = "joram.collocated"; - - /** - * Name of the property joram.persistent - */ - private static final String JORAM_PERSISTENT = "joram.persistent"; - - /** - * Name of the property joram.connectingTimer - */ - private static final String JORAM_CONNECTING_TIMER = "joram.connectingTimer"; - - /** - * Name of the property joram.connectionPendingTimer - */ - private static final String JORAM_CONNECTION_PENDING_TIMER = "joram.connectionPendingTimer"; - - /** - * Name of the property joram.transactedSessionMaximumIdleness - */ - private static final String JORAM_TRANSACTED_SESSION_MAXIMUM_IDLENESS = "joram.transactedSessionMaximumIdleness"; - - /** - * Name of the property joram.timeoutToAbortRequest - */ - private static final String JORAM_TIMEOUT_TO_ABORT_REQUEST = "joram.timeoutToAbortRequest"; - - /** - * Name of the property joram.defaultThresholdForDMQ - */ - private static final String JORAM_DEFAULT_THRESHOLD = "joram.defaultThresholdForDMQ"; - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminJoramProperties(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminJoramProperties(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminJoramProperties.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test properties of joram - * @throws Exception if error occurs - */ - public void testJoramProperties() throws Exception { - - JonasAdminUtils utils = new JonasAdminUtils(); - MBeanServerConnection server = getMBeanServer(); - - if (jProp.isResource()) { - // Joram platform is in jonas - if (isRarLoaded("joram_for_jonas_ra")) { - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // READ joram properties from MBeans - ObjectName on = ObjectName.getInstance("joramClient:type=JoramAdapter,*"); - ObjectName joramAdapterON = (ObjectName) server.queryNames(on, null).iterator().next(); - - String version = joramAdapterON.getKeyProperty("version"); - String serverId = ((Short) server.getAttribute(joramAdapterON, "ServerId")).toString(); - String serverName = (String) server.getAttribute(joramAdapterON, "ServerName"); - String collocatedServer = "" + jProp.isJMSCollocated(); - String persistentServer = ((Boolean) server.getAttribute(joramAdapterON, "PersistentPlatform")).toString(); - String connectingTimer = ((Integer) server.getAttribute(joramAdapterON, "ConnectingTimer")).toString(); - String connectionPendingTimer = ((Integer) server.getAttribute(joramAdapterON, "CnxPendingTimer")).toString(); - String transactedSessionMaximumIdleness = ((Integer) server.getAttribute(joramAdapterON, "TxPendingTimer")).toString(); - String timeoutToAbortRequest = "" + ((Long) server.getAttribute(joramAdapterON, "TimeOutToAbortRequest")).longValue(); - String hostName =(String) server.getAttribute(joramAdapterON, "HostName"); - String portNumber = ((Integer) server.getAttribute(joramAdapterON, "ServerPort")).toString(); - String fileName =(String) server.getAttribute(joramAdapterON, "AdminFileXML"); - - String defaultThreshold = "Not set"; - Object defaultDMQinstance = server.getAttribute(joramAdapterON, "DefaultDMQ"); - if (defaultDMQinstance != null) { - defaultThreshold = defaultDMQinstance.toString(); - } - // Go to Joram Platform - WebResponse wr = wc.getFrameContents(FRAME_TREE); - WebLink link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Get table - try { - WebTable versionTable = utils.getTable(wr, 0); - WebTable currentJoramTable = utils.getTable(wr, 3); - WebTable timerTable = utils.getTable(wr, 6); - WebTable dmqTable = utils.getTable(wr, 9); - - // Get name of administration task file - //String fileName = currentJoramTable.getTableCell(6, 2).getText(); - - // Get server port from administration task file - //String serverPort = JonasAdminFiles.getJoramServerPort(fileName); - - // Get host name from administration task file - //String hostName = JonasAdminFiles.getJoramHostName(fileName); - - // Verify - assertEquals("It is not the expected joram version. ", version, versionTable.getTableCell(0, 2) - .getText()); - assertEquals("It is not the expected joram local server id. ", serverId, currentJoramTable - .getTableCell(0, 2).getText()); - assertEquals("It is not the expected joram local server name. ", serverName, currentJoramTable - .getTableCell(1, 2).getText()); - assertEquals("It is not the expected joram local host name. ", hostName, currentJoramTable - .getTableCell(2, 2).getText()); - assertEquals("It is not the expected joram local server port. ", portNumber, currentJoramTable - .getTableCell(3, 2).getText()); - assertEquals("It is not the expected value of the collocated server attribut. ", collocatedServer, - currentJoramTable.getTableCell(4, 2).getText()); - assertEquals("It is not the expected value of the persistent server attribut. ", persistentServer, - currentJoramTable.getTableCell(5, 2).getText()); - assertEquals("It is not the expected joram configuration file name. ", fileName, currentJoramTable - .getTableCell(6, 2).getText()); - assertEquals("It is not the expected connecting timer. ", connectingTimer, timerTable - .getTableCell(0, 2).getText()); - assertEquals("It is not the expected connection pending timer. ", connectionPendingTimer, timerTable - .getTableCell(1, 2).getText()); - assertEquals("It is not the expected transacted session maximum idleness. ", - transactedSessionMaximumIdleness, timerTable.getTableCell(2, 2).getText()); - assertEquals("It is not the expected timeout to abort request. ", timeoutToAbortRequest, timerTable - .getTableCell(3, 2).getText()); - assertEquals("It is not the expected default threshold for DMQ. ", defaultThreshold, dmqTable - .getTableCell(1, 2).getText()); - } catch (SAXException e) { - fail("Tables are not correct."); - } - } - } - - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramUser.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramUser.java deleted file mode 100755 index ea02f7b4fa..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/joram/F_JonasAdminJoramUser.java +++ /dev/null @@ -1,445 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.joram; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.Query; -import javax.management.QueryExp; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing Joram User - * @author Paul Kemler - * - */ -public class F_JonasAdminJoramUser extends JonasAdminTestCase { - - /** - * URL of the Joram Platform - */ - private static final String URL_JONASADMIN_JORAM = "EditJoramPlatform.do"; - - /** - * URL of the Joram Servers - */ - private static final String URL_JONASADMIN_JORAM_SERVERS = "joramplatform/joramservers.jsp"; - - /** - * URL of the Joram Users - */ - private static final String URL_JONASADMIN_JORAM_USERS = "joramplatform/joramusers.jsp"; - - /** - * URL of "Create Jms User" - */ - private static final String URL_JONASADMIN_JORAM_CREATE_USER = "CreateJoramUser.do"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminJoramUser(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminJoramUser(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminJoramUser.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test to create a local user - * @throws Exception if error occurs - * - */ - public void testSuccessfulCreateLocalUser() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - String createUserPage; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - if (jProp.isResource()) { - // Joram platform is in jonas - if (isRarLoaded("joram_for_jonas_ra")) { - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Users - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_USERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Create JMS User - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_CREATE_USER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - createUserPage = wr.getText(); // For comparing with the forwarded page after the creation - // Find a name - String userName = "new_user_"; - int userId = 0; - boolean found = false; - while (!found) { - if (!isUser(userName + userId)) { - userName = userName + userId; - found = true; - } - userId++; - } - - // Create a new user - createUser(wr, userName, userName); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify user is created - assertTrue("The '" + userName + "' topic was not created. ", isUser(userName)); - - // Verify the forwarded page - assertEquals("The 'New User' page has changed. ", createUserPage, wr.getText()); - - } - } - - } - - /** - * Test to create a local user that already exists - * @throws Exception if error occurs - * - */ - public void testCreateUserAlreadyExists() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - if (jProp.isResource()) { - // Joram platform is in jonas - if (isRarLoaded("joram_for_jonas_ra")) { - - // Find a name - String userName = "new_user_"; - int userId = 0; - boolean found = false; - while (!found) { - if (!isUser(userName + userId)) { - userName = userName + userId; - found = true; - } - userId++; - } - - // Create Jms User - createLocalJmsUser(userName, userName); - - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Users - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_USERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Create JMS User - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_CREATE_USER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Create a new user - createUser(wr, userName, "password"); - - wr = wc.getFrameContents(FRAME_CONTENT); - String errorPage = wr.getText(); - // Verify error because user already exists - assertTrue("The value of the body class is not 'errors'. ", errorPage.indexOf("") != -1); - assertTrue("There is no the message: 'User [" + userName + "] already exists but with a different password' in the error page. ", errorPage.indexOf("User [" + userName + "] already exists but with a different password.") != -1); - - } - } - - } - - /** - * Test the user list : - * Create a local user and verify if the user is added to the local user list - * and verify the id of the user. - * @throws Exception if error occurs - * - */ - public void testUserList() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - if (jProp.isResource()) { - // Joram platform is in jonas - if (isRarLoaded("joram_for_jonas_ra")) { - - // Find a name - String userName = "new_user_"; - int userId = 0; - boolean found = false; - while (!found) { - if (!isUser(userName + userId)) { - userName = userName + userId; - found = true; - } - userId++; - } - - // Create Jms User - createLocalJmsUser(userName, userName); - - // Go to Joram Platform - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Servers - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_SERVERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Local Server - WebTable localTable = utils.getTable(wr, 1); - link = localTable.getTableCell(0, 0).getLinks()[0]; - if (link == null) { - throw new IllegalStateException("No link was found to a local server in the 'Joram servers' page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Joram Users - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JORAM_USERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify user is in the list - table = utils.getTable(wr, 3); - int userRow = utils.getRow(userName, table).intValue(); - if (userRow == -1) { - fail("'" + userName + "' was not found in the local user list. "); - } - String jmsUserId = getJmsUserId(userName); - assertEquals("", jmsUserId, table.getTableCell(userRow, 1).getText()); - } - } - - } - - /** - * User exists - * @param name the name of the user - * @return true if the user exists, false else - * @throws Exception if an error occurs - */ - private boolean isUser(String name) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=User,*"); - QueryExp exp = Query.match(Query.attr("Name"), Query.value(name)); - - return !server.queryNames(on, exp).isEmpty(); - } - - /** - * Get the id of the Jms User - * @param name the name of the user - * @return the id - * @throws Exception if an error occurs - */ - private String getJmsUserId(String name) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=User,*"); - QueryExp exp = Query.match(Query.attr("Name"), Query.value(name)); - - ObjectName joramUserON = (ObjectName) (server.queryNames(on, exp).iterator().next()); - return (String) server.getAttribute(joramUserON, "ProxyId"); - } - - /** - * Create a jms user - * @param wr the content frame in the 'New User' page - * @param name the name of the user - * @param password the password of the user - * @throws Exception if an error occurs - */ - private void createUser(WebResponse wr, String name, String password) throws Exception { - SubmitButton button; - WebForm form = wr.getForms()[0]; - form.setParameter("password", password); - form.setParameter("name", name); - - // Submit - button = form.getSubmitButtons()[0]; - button.click(); - } - - /** - * Tear Down cleanUp action - * @throws Exception - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/C_JonasAdminLogging.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/C_JonasAdminLogging.java deleted file mode 100755 index 9a85ac3b58..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/C_JonasAdminLogging.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.logging; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test logging in jonasAdmin - * Test : - logging - * - * @author Paul Kemler - */ -public class C_JonasAdminLogging extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminLogging(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminLogger.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/F_JonasAdminLogger.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/F_JonasAdminLogger.java deleted file mode 100755 index 08dedd6bdf..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/F_JonasAdminLogger.java +++ /dev/null @@ -1,363 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.logging; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - - -/** - * Define a class to test the JOnAS Admin console - * Test logging - * @author Paul Kemler - * - */ -public class F_JonasAdminLogger extends JonasAdminTestCase { - - /** - * URL of Jonas Logger - */ - private static final String URL_JONASADMIN_JONAS_LOGGER = "/EditLoggingJonas.do"; - - /** - * INPUT Checkbox - */ - private static final String INPUT_CHECKBOX = "input type=\"checkbox\""; - - /** - * Title logger type - */ - private static final String TITLE_LOGGER_TYPE = "Logger type"; - - /** - * Title container type - */ - private static final String TITLE_CONTAINER_TYPE = "Container type"; - - /** - * Title container name - */ - private static final String TITLE_CONTAINER_NAME = "Container name (or path)"; - - /** - * A 2nd connection to jonasAdmin - */ - private static WebConversation wc2 = new WebConversation(); - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminLogger(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminLogger(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminLogger.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test creation, modification et removal acces log valves - * @throws Exception if error occurs - * - */ - public void testLoggers() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebForm form; - String host = "localhost"; - int row; - int columnLoggerType; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - // OPEN A SECOND CONNECTION - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc2, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - - if (jProp.isCatalina()) { - wr = LoggerUtils.getLoggerPage(wc); - table = utils.getTable(wr, 3); - - if (table.getRowCount() == 2) { - assertFalse("There is a remove button. ", wr.getText().indexOf("'remove'") != -1); - } else { - assertTrue("There is no remove button but there is no one and only one logger. ", wr.getText().indexOf("'remove'") != -1); - } - - // 1-Create new loggers - LoggerUtils.createNewEngineLogger(wc); - // Verify - wr = LoggerUtils.getLoggerPage(wc); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - columnLoggerType = utils.getColumn(TITLE_LOGGER_TYPE, table).intValue(); - row = utils.getFirstRow("Access log valve engine", table, columnLoggerType).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains 'Access log valve engine'. "); - } - assertEquals("There is no the correct number of loggers. ", 3, table.getRowCount()); - assertTrue("There is no remove button. ", wr.getText().indexOf("'remove'") != -1); - assertEquals("There is no the correct number of parameters in the form. ", 2, form.getParameterNames().length); - assertTrue("There is no checkbox", wr.getText().indexOf(INPUT_CHECKBOX) != -1); - assertEquals("The container type is not 'Engine'. ", "Engine", table.getTableCell(row, utils.getColumn(TITLE_CONTAINER_TYPE, table).intValue()).getText()); - assertEquals("The container name is not 'engine'. ", "engine", table.getTableCell(row, utils.getColumn(TITLE_CONTAINER_NAME, table).intValue()).getText()); - - LoggerUtils.createNewHostLogger(wc); - // Verify - wr = LoggerUtils.getLoggerPage(wc); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - row = utils.getFirstRow("Access log valve " + host, table, columnLoggerType).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains 'Access log valve " + host + "'. "); - } - assertEquals("There is no the correct number of loggers. ", 4, table.getRowCount()); - assertTrue("There is no remove button. ", wr.getText().indexOf("'remove'") != -1); - assertEquals("There is no the correct number of parameters in the form. ", 2, form.getParameterNames().length); - assertEquals("The container type is not 'Host'. ", "Host", table.getTableCell(row, utils.getColumn(TITLE_CONTAINER_TYPE, table).intValue()).getText()); - assertEquals("The container name is not '" + host + "'. ", host, table.getTableCell(row, utils.getColumn(TITLE_CONTAINER_NAME, table).intValue()).getText()); - - // 2-Modify loggers - LoggerUtils.modifyLogger(wc, null, "dir", "true", "false", ".suffix", "prefix_", "%v"); - // Verify - wr = wc.getFrameContents(FRAME_CONTENT); - verifyAccessLogValve(wr, "dir", "true", "false", ".suffix", "prefix_", "%v"); - - LoggerUtils.modifyLogger(wc, host, "dir", "true", "false", ".suffix", "prefix_", "%v"); - // Verify - wr = wc.getFrameContents(FRAME_CONTENT); - verifyAccessLogValve(wr, "dir", "true", "false", ".suffix", "prefix_", "%v"); - - - // 3-Remove loggers - LoggerUtils.deleteLogger(wc, null); - // Verify - wr = LoggerUtils.getLoggerPage(wc); - table = utils.getTable(wr, 3); - assertEquals("The number of loggers is not 2. ", 3, table.getRowCount()); - - LoggerUtils.deleteLogger(wc, host); - // Verify - wr = LoggerUtils.getLoggerPage(wc); - table = utils.getTable(wr, 3); - assertEquals("The number of loggers is not 1. ", 2, table.getRowCount()); - } - } - - /** - * Test JOnAS logger - * @throws Exception if error occurs - */ - public void testJonasLogger() throws Exception { - - if (jProp.isCatalina()) { - WebResponse wr; - WebLink link; - WebTable table; - WebForm form; - SubmitButton button = null; - int row; - int columnLevels; - int columnTopics; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - wr = LoggerUtils.getLoggerPage(wc); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JONAS_LOGGER); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_JONAS_LOGGER + " is not found. "); - } - - // Verify topics - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 3); - form = wr.getForms()[0]; - String[] topics = form.getOptions("topic"); - columnTopics = utils.getColumn("Topics", table).intValue(); - if (columnTopics == -1) { - throw new IllegalThreadStateException("There is no column, which contains 'Topics'. "); - } - assertEquals("Number of topics is not the same in the select menu and in the table.", topics.length, table.getRowCount() - 1); - for (int i = 0; i < topics.length; i++) { - assertEquals("Topic " + topics[i] + " is not found in the table. ", topics[i], table.getTableCell(i+1, columnTopics).getText()); - } - - // Modify level of a topic - columnLevels = utils.getColumn("Levels", table).intValue(); - if (columnLevels == -1) { - throw new IllegalThreadStateException("There is no column, which contains 'Levels'. "); - } - String level = table.getTableCell(topics.length, columnLevels).getText(); - String topic = "org.objectweb.jonas.web"; - if (level.equals("WARN")) { - level = "INFO"; - } else if (level.equals("INFO")) { - level = "ERROR"; - } else if (level.equals("FATAL")) { - level = "INHERIT"; - } else if (level.equals("INHERIT")) { - level = "DEBUG"; - } else if (level.equals("DEBUG")) { - level = "WARN"; - } - - form.setParameter("topic", topic); - form.setParameter("level", level); - - button = form.getSubmitButtons()[0]; - button.click(); - - // Verify topics - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 3); - if (level.equals("ERROR")) { - level = "FATAL"; - } - row = utils.getFirstRow(topic, table, columnTopics).intValue(); - if (row == -1) { - throw new IllegalThreadStateException("There is no row, which contains '" + topic + "' in the topic column. "); - } - assertEquals("The level of " + topic + " is not " + level + ". ", level, table.getTableCell(row, columnLevels).getText()); - } - } - - /** - * Verify access log valve properties - * @param wr Content frame - * @param directory value of the directory parameter - * @param resolveHosts value of the resolveHosts parameter - * @param rotatable value of the rotatable parameter - * @param suffix value of the suffix parameter - * @param prefix value of the prefix parameter - * @param pattern value of the pattern parameter - * @throws SAXException if an error occurs while form is got - */ - private void verifyAccessLogValve(WebResponse wr, String directory, String resolveHosts, - String rotatable, String suffix, String prefix, String pattern) throws SAXException { - WebForm form = wr.getForms()[0]; - assertEquals("Directory value is not" + directory + ". ", directory, form.getParameterValue("directory")); - assertEquals("Resolve hosts value is not" + resolveHosts + ". ", resolveHosts, form.getParameterValue("resolveHosts")); - assertEquals("Rotatable value is not" + rotatable + ". ", rotatable, form.getParameterValue("rotatable")); - assertEquals("Suffix value is not" + suffix + ". ", suffix, form.getParameterValue("suffix")); - assertEquals("Prefix value is not" + prefix + ". ", prefix, form.getParameterValue("prefix")); - assertEquals("Pattern value is not" + pattern + ". ", pattern, form.getParameterValue("pattern")); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/LoggerUtils.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/LoggerUtils.java deleted file mode 100755 index fd3e751b7a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/logging/LoggerUtils.java +++ /dev/null @@ -1,326 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.logging; - -import java.io.IOException; - -import org.xml.sax.SAXException; - -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Class to use logging pages - * @author Paul Kemler - * - */ -public class LoggerUtils { - - /** - * NAME of FRAME content - */ - protected static final String FRAME_CONTENT = "content"; - - /** - * NAME of FRAME tree - */ - protected static final String FRAME_TREE = "tree"; - - /** - * URL of the logger list - */ - private static final String URL_JONASADMIN_LOGGING = "ListLoggers.do"; - - /** - * URL for creating a logger - */ - private static final String URL_JONASADMIN_CREATE_LOGGER = "EditCatalinaAccessLogger.do?action=create"; - - /** - * URL for modifying an engine logger - */ - private static final String URL_JONASADMIN_MODIFY_ENGINE_LOGGER = "EditCatalinaAccessLogger.do?select=jonas%3Atype%3DValve%2Cname%3DAccessLogValve"; - - /** - * URL for modifying a host logger - */ - private static final String URL_JONASADMIN_MODIFY_HOST_LOGGER = "EditCatalinaAccessLogger.do?select=jonas%3Atype%3DValve%2Cname%3DAccessLogValve%2Chost"; - - /** - * Get logger page - * @param wc logged to jonasAdmin - * @return content frame of logger page - * @throws SAXException if an error occurs when link is matched or clicked - * @throws IOException if an error occurs when link is clicked - */ - public static WebResponse getLoggerPage(WebConversation wc) throws SAXException, IOException { - // Go to logger page (ListLoggers.do) - WebResponse wr; - WebLink link; - - wr = wc.getFrameContents(FRAME_TREE); - - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LOGGING); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_LOGGING + " is not found. "); - } - - wr = wc.getFrameContents(FRAME_CONTENT); - return wr; - } - - /** - * Create a new engine logger - * @param wc logged to jonasAdmin - * @throws Exception if an error occurs - */ - public static void createNewEngineLogger(WebConversation wc) throws Exception { - createNewLogger(wc, null, null); - } - - /** - * Create a new host logger: container type = Host and container name = localhost - * @param wc logged to jonasAdmin - * @throws Exception if an error occurs - */ - public static void createNewHostLogger(WebConversation wc) throws Exception { - createNewLogger(wc, "Host", "localhost"); - } - - /** - * Create a new logger - * @param wc logged to jonasAdmin - * @throws Exception if an error occurs - */ - public static void createNewLogger(WebConversation wc, String containerType, String containerName) throws Exception { - - WebResponse wr = null; - WebLink link = null; - WebForm form = null; - - String objectName; - String directory; - String action; - String save; - String resolveHosts; - String rotatable; - String suffix; - String prefix; - String pattern; - - wr = getLoggerPage(wc); - - // Verify if 'Access log valve engine' has yet been created - if (wr.getText().indexOf("AccessLogValve,seq") == -1) { - // Go to EditCatalinaAccessLogger.do?action=create - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_LOGGER); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_CREATE_LOGGER + " is not found. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - - form = wr.getForms()[0]; - - objectName = form.getParameterValue("objectName"); - directory = form.getParameterValue("directory"); - action = form.getParameterValue("action"); - save = form.getParameterValue("save"); - resolveHosts = form.getParameterValue("resolveHosts"); - rotatable = form.getParameterValue("rotatable"); - suffix = form.getParameterValue("suffix"); - prefix = form.getParameterValue("prefix"); - pattern = form.getParameterValue("pattern"); - if (containerType == null) { - containerName = form.getParameterValue("containerName"); - containerType = form.getParameterValue("containerType"); - } - - createNewLogger(form, objectName, directory, action, save, resolveHosts, rotatable, suffix, prefix, - pattern, containerName, containerType); - - } - } - - /** - * Create a new logger - * @param form Web Form to create logger - * @param objectName a string - * @param directory a string - * @param action a string - * @param save a string - * @param resolveHosts a string - * @param rotatable a string - * @param suffix a string - * @param prefix a string - * @param pattern a string - * @param containerName a string - * @param containerType "Engine" or "Host" - * @throws Exception if an error occurs when the button is clicked - */ - public static void createNewLogger(WebForm form, String objectName, String directory, String action, String save, - String resolveHosts, String rotatable, String suffix, String prefix, String pattern, String containerName, - String containerType) throws Exception { - - SubmitButton button = null; - - form.setParameter("objectName", objectName); - form.setParameter("directory", directory); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("resolveHosts", resolveHosts); - form.setParameter("rotatable", rotatable); - form.setParameter("suffix", suffix); - form.setParameter("prefix", prefix); - form.setParameter("pattern", pattern); - form.setParameter("containerName", containerName); - form.setParameter("containerType", containerType); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } - - /** - * Delete logger - * @param wc logged to jonasAdmin - * @param host - * @throws Exception if an error occurs - */ - public static void deleteLogger(WebConversation wc, String host) throws Exception { - WebResponse wr = null; - WebForm form = null; - WebLink link = null; - SubmitButton button = null; - - String action = ""; - - wr = getLoggerPage(wc); - - // Select logger to remove - form = wr.getForms()[0]; - action = form.getParameterValue("action"); - if (host == null) { - form.setCheckbox("selectedItemsArray", "jonas:type=Valve,name=AccessLogValve", true); - } else { - form.setCheckbox("selectedItemsArray", "jonas:type=Valve,name=AccessLogValve,host=" + host, true); - } - - // Choose remove action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "remove"); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + "remove" + " is not found. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - - // Confirm - form = wr.getForms()[0]; - button = form.getSubmitButton("btnSubmit"); - button.click(); - - } - - /** - * Modify a logger - * @param wc logged to jonasAdmin - * @param host null if container type is "engine" else container name - * @param directory a string - * @param resolveHosts "true" or "false" - * @param rotatable "true" or "false" - * @param suffix a string - * @param prefix a string - * @param pattern a string - * @throws Exception if an error occurs - */ - public static void modifyLogger(WebConversation wc, String host, String directory, String resolveHosts, - String rotatable, String suffix, String prefix, String pattern) throws Exception { - - WebResponse wr = null; - WebForm form = null; - WebLink link = null; - SubmitButton button = null; - - String objectName = null; - String action = null; - String save = null; - - wr = getLoggerPage(wc); - - // Get form - if (host == null) { - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MODIFY_ENGINE_LOGGER); - if (link.getURLString().endsWith(URL_JONASADMIN_MODIFY_ENGINE_LOGGER) - || link.getURLString().indexOf("%2Cseq%3D") != -1) { - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_MODIFY_ENGINE_LOGGER - + " is not found. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - throw new IllegalThreadStateException("There is not " + URL_JONASADMIN_MODIFY_ENGINE_LOGGER + " link. "); - } - } else { - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MODIFY_HOST_LOGGER); - if (link != null) { - link.click(); - } else { - throw new IllegalThreadStateException("The link " + URL_JONASADMIN_MODIFY_HOST_LOGGER - + " is not found. "); - } - - wr = wc.getFrameContents(FRAME_CONTENT); - } - form = wr.getForms()[0]; - - // get hidden params - objectName = form.getParameterValue("objectName"); - action = form.getParameterValue("action"); - save = form.getParameterValue("save"); - - form.setParameter("objectName", objectName); - form.setParameter("action", action); - form.setParameter("save", save); - form.setParameter("directory", directory); - form.setParameter("resolveHosts", resolveHosts); - form.setParameter("rotatable", rotatable); - form.setParameter("suffix", suffix); - form.setParameter("prefix", prefix); - form.setParameter("pattern", pattern); - - button = form.getSubmitButton("btn_apply"); - button.click(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/C_JonasAdminMonitoring.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/C_JonasAdminMonitoring.java deleted file mode 100755 index 8e0b475af1..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/C_JonasAdminMonitoring.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.monitoring; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test monitoring in jonasAdmin - * Test : - monitoring - * - * @author Paul Kemler - */ -public class C_JonasAdminMonitoring extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminMonitoring(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminActivatedMonitoring.suite()); - suite.addTest(F_JonasAdminNumberOfMeasures.suite()); - suite.addTest(F_JonasAdminRange.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminActivatedMonitoring.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminActivatedMonitoring.java deleted file mode 100644 index d8a84c1a7a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminActivatedMonitoring.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.monitoring; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - - -/** - * Define a class to test the JOnAS Admin console - * Test monitoring activation - * @author kemlerp - * - */ -public class F_JonasAdminActivatedMonitoring extends JonasAdminTestCase { - - /** - * URL of the deployment of EARs - */ - private static final String URL_JONASADMIN_MONITORING = "/jonasAdmin/EditMonitoring.do"; - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminActivatedMonitoring(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminActivatedMonitoring(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminActivatedMonitoring.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test activation monitoring - * @throws Exception if error occurs - */ - public void testMonitoringActivation() throws Exception { - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Go to Monitoring - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MONITORING)); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - // deactivate monitoring - webForm.setCheckbox("activated", "on", false); - - wr = webForm.submit(); - assertEquals("there is more one tab. ", -1, wr.getText().indexOf("class=\"tab\"")); - - // Go to another page - wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN)); - wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MONITORING)); - assertEquals("there is more one tab. ", -1, wr.getText().indexOf("class=\"tab\"")); - - - // reactivate monitoring - webForms = wr.getForms(); - webForm = webForms[0]; - webForm.setCheckbox("activated", "on", true); - - wr = webForm.submit(); - assertFalse("there is not at least two tabs. ", wr.getText().indexOf("class=\"tab\"") == -1); - - // verify link tab - TableCell cell = wr.getTables()[0].getTableCell(0, 0).getTables()[0].getTableCell(0, 2); - String attribut; - WebLink[] links; - - attribut = cell.getAttribute("class"); - assertEquals("the tab is not in the wanted cell. ", "tab", attribut); - links = cell.getLinks(); - assertNotNull("there is no link", links); - assertEquals("link is not \"/jonasAdmin/EditMemory.do\"", "/jonasAdmin/EditMemory.do", links[0].getAttribute("href")); - - // Go to another page - wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN)); - wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MONITORING)); - assertFalse("there is not at least two tabs. ", wr.getText().indexOf("class=\"tab\"") == -1); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminNumberOfMeasures.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminNumberOfMeasures.java deleted file mode 100644 index a9ba5ad917..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminNumberOfMeasures.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.monitoring; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebImage; -import com.meterware.httpunit.WebResponse; - - -/** - * Test the modification of the number of measures - * @author kemlerp - * - */ -public class F_JonasAdminNumberOfMeasures extends JonasAdminTestCase { - - /** - * URL of the deployment of EARs - */ - private static final String URL_JONASADMIN_MEMORY = "/jonasAdmin/EditMemory.do"; - - /** - * CONSTANT which is used to calculate the width of the Memory image - */ - private static final int CONSTANT = 190; - - /** - * - */ - private static final String INITIAL_NB_MEASURES = "120"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminNumberOfMeasures(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminNumberOfMeasures(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminNumberOfMeasures.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - public void tearDown() throws Exception { - - super.tearDown(); - - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MEMORY)); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - webForm.setParameter("numberOfMeasures", INITIAL_NB_MEASURES); - wr = webForm.submit(); - } - - /** - * Test image width with a good value - * @throws Exception if error occurs - */ - public void testValidNbMeasures() throws Exception { - - String nbMeasures = "300"; - WebResponse wr; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - - // Verify image width - WebImage imageMemory = wr.getImageWithName("memory"); - assertEquals("the width of the Memory image is wrong. ", "" + calculateWidth(nbMeasures), imageMemory.getAttribute("width")); - - } - - /** - * Test image width with a number of measures is not an integer - * @throws Exception if error occurs - */ - public void testNotIntegerNbMeasures() throws Exception { - - String nbMeasures = "100.2"; - WebResponse wr; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - - // Verify no image - assertNull("there is the Memory image. ", wr.getImageWithName("memory")); - - // Verify error message - assertTrue("there is not error message. ", wr.getText().indexOf("
  • ") != -1); - } - - /** - * Test image width with a number of measures is 1 - * @throws Exception if error occurs - */ - public void testNbMeasuresLessThanOne() throws Exception { - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - - String nbMeasures = "1"; - WebResponse wr; - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - // Verify no image - assertNull("there is the Memory image. ", wr.getImageWithName("memory")); - // Verify error message - assertTrue("there is not error message. ", wr.getText().indexOf("
  • ") != -1); - - - nbMeasures = "0"; - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - // Verify no image - assertNull("there is the Memory image. ", wr.getImageWithName("memory")); - // Verify error message - assertTrue("there is not error message. ", wr.getText().indexOf("
  • ") != -1); - - - nbMeasures = "-1"; - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - // Verify no image - assertNull("there is the Memory image. ", wr.getImageWithName("memory")); - // Verify error message - assertTrue("there is not error message. ", wr.getText().indexOf("
  • ") != -1); - - - nbMeasures = "-99999"; - - // Modify number of measures - wr = modifyNbMeasures(nbMeasures); - // Verify no image - assertNull("there is the Memory image. ", wr.getImageWithName("memory")); - // Verify error message - assertTrue("there is not error message. ", wr.getText().indexOf("
  • ") != -1); - } - - /** - * Calculate the width of Memory image - * @param nbMeasures number of measures - * @return width - */ - public int calculateWidth(String nbMeasures) { - return Integer.parseInt(nbMeasures) * 2 + CONSTANT; - } - - /** - * Modify number of measures - * @param nbMeasures number of measures - * @return response - * @throws Exception if error occurs - */ - public WebResponse modifyNbMeasures(String nbMeasures) throws Exception { - - // Go to Monitoring Memory - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MEMORY)); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - webForm.setParameter("numberOfMeasures", nbMeasures); - return wr = webForm.submit(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminRange.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminRange.java deleted file mode 100755 index 0befd8a498..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/monitoring/F_JonasAdminRange.java +++ /dev/null @@ -1,263 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.monitoring; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - - -public class F_JonasAdminRange extends JonasAdminTestCase { - - /** - * URL of the Monitoring - */ - private static final String URL_JONASADMIN_MONITORING = "EditMonitoring.do"; - - /** - * URL of the Memory - */ - private static final String URL_JONASADMIN_MEMORY = "/jonasAdmin/EditMemory.do"; - - /** - * CONSTANT which is used to calculate the timer Graphic - */ - private static final int CONSTANT = 2; - - /** - * INITIAL RANGE VALUE - */ - private static final String INITIAL_RANGE = "10"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminRange(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminRange(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminRange.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test monitoring range with a correct value - * @throws Exception if error occurs - * - */ - public void testSuccessful() throws Exception { - - String range = "22"; - WebResponse wr; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Modify number of measures - wr = modifyNbMeasures(range); - - // Verify range - String text = wr.getText(); - int start = text.indexOf("function refresh()"); - int end = text.indexOf("}", start); - // Get script - String refreshScript = text.substring(start, end); - - // Get value - start = refreshScript.indexOf("setTimeout(\"refresh()\", ") + "setTimeout(\"refresh()\", ".length(); - end = refreshScript.indexOf(");", start); - String value = refreshScript.substring(start, end); - - // Verify refresh value in javascript function - assertEquals("the range of the Memory image is wrong. ", "" + calculateTimerGraphic(range), value); - - // Verify error message - assertFalse("there is an error message. ", wr.getElementsWithAttribute("class", "errors").length > 0); - } - - /** - * Test monitoring range with too small value - * @throws Exception if error occurs - * - */ - public void testTooSmallValue() throws Exception { - - String range = "9"; - WebResponse wr; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Modify number of measures - wr = modifyNbMeasures(range); - - // Verify error message - assertTrue("there is not error message. ", wr.getElementsWithAttribute("class", "errors").length > 0); - } - - /** - * Test the memory servlet - * @throws Exception if error occurs - * - */ - public void testMemoryServlet() throws Exception { - WebResponse wr; - WebLink link; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Go to Monitoring - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MONITORING); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Memory - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MEMORY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Refresh the image - String servletUrl = prefixUrl + "/jonasAdmin/MemoryGraphServlet?1"; - WebResponse imgResponse = wc.getResponse(servletUrl); - - // Verify image - assertEquals("'" + servletUrl + "' doesn't send a png image. ", "image/png", imgResponse.getHeaderField("CONTENT-TYPE")); - - } - - /** - * Calculate the timer graphic - * @param range range - * @return timer graphic - */ - public int calculateTimerGraphic(String range) { - return (Integer.parseInt(range) + CONSTANT) * 1000; - } - - /** - * Modify range - * @param range range - * @return response - * @throws Exception if error occurs - */ - public WebResponse modifyNbMeasures(String range) throws Exception { - - // Go to Monitoring Memory - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MEMORY)); - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - webForm.setParameter("range", range); - return wr = webForm.submit(); - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - super.tearDown(); - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_MEMORY)); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - webForm.setParameter("range", INITIAL_RANGE); - wr = webForm.submit(); - } -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/C_JonasAdminNavigation.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/C_JonasAdminNavigation.java deleted file mode 100755 index 8e31ca084e..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/C_JonasAdminNavigation.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.navigation; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test navigation in jonasAdmin - * Test : - navigation - * - * @author Paul Kemler - */ -public class C_JonasAdminNavigation extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminNavigation(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminNavigation.suite()); - suite.addTest(F_JonasAdminLogout.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminLogout.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminLogout.java deleted file mode 100755 index 1a49d2641b..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminLogout.java +++ /dev/null @@ -1,173 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.navigation; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Class to test jonasAdmin log out - * @author kemlerp - * - */ -public class F_JonasAdminLogout extends JonasAdminTestCase { - - /** - * URL of log out - */ - private static final String URL_JONASADMIN_LOGOUT = "logOut.do"; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminLogout(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminLogout(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminLogout.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * - * @throws Exception if error occurs - * - */ - public void testLogout() throws Exception { - - WebResponse wr; - WebResponse topFrame; - WebLink link; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Get the frame "top" - topFrame = wc.getFrameContents(FRAME_TOP); - - link = topFrame.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LOGOUT); - wr = link.click(); - - assertTrue("It is not the login page. ", wr.getText().indexOf("login.jsp") != -1); - try { - wc.getFrameContents(FRAME_TREE); - fail("There is tree frame. "); - } catch (Exception e){ - // It is OK - } - - - // Go to Welcome.do - wc.getResponse(getAbsoluteUrl(URL_JONASADMIN + "/Welcome.do")); - - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - - try { - assertNotNull("There is not tree frame. ", wc.getFrameContents(FRAME_TREE)); - } catch (Exception e) { - fail("There is not tree frame. "); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminNavigation.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminNavigation.java deleted file mode 100755 index 1718de84f5..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/navigation/F_JonasAdminNavigation.java +++ /dev/null @@ -1,759 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.navigation; - -import java.io.IOException; -import java.util.Vector; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTree; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; -import org.xml.sax.SAXException; - -import com.meterware.httpunit.HttpException; -import com.meterware.httpunit.HttpNotFoundException; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to test the JOnAS Admin console - * Test all links, content title, selected tree item - * @author kemlerp - * - */ -public class F_JonasAdminNavigation extends JonasAdminTestCase { - - /** - * SUCCESS CODE - */ - private static final int HTTP_SUCCESS_CODE = 200; - - /** - * NAME OF THE EAR LINK - */ - private static final String EAR_LINK_NAME = "Applications (EAR)"; - - /** - * URL of the bean alarm record - */ - private static final String URL_JONASADMIN_ALARM_RECORD = "/jonasAdmin/EditEjbEnt.do?select=jonas:j2eeType=EntityBean,name=AlarmRecord,EJBModule=alarm,J2EEApplication=alarm,J2EEServer=jonas"; - - /** - * URL of the synchronize button - */ - private static final String URL_JONASADMIN_SYNCHRONIZE = "/jonasAdmin/ExecuteEjb.do?action=synchronize"; - - /** - * URL of the reduce instance button - */ - private static final String URL_JONASADMIN_REDUCE = "/jonasAdmin/ExecuteEjb.do?action=reduceCache"; - - /** - * URL of the reduce pool instance button - */ - private static final String URL_JONASADMIN_REDUCE_POOL = "/jonasAdmin/ExecuteEjb.do?action=reducePool"; - - /** - * URL of the new group instance button - */ - private static final String URL_JONASADMIN_NEW_GROUP = "/jonasAdmin/EditNewGroupMemoryRealm.do?action=create"; - - /** - * URL of the new user instance button - */ - private static final String URL_JONASADMIN_NEW_USER = "/jonasAdmin/EditNewUserMemoryRealm.do?action=create"; - - /** - * Class value of the selected tree control - */ - private static final String CLASS_TREE_CONTROL_SELECTED = "tree-control-selected"; - - /** - * Name of the property navigation.mbean - */ - private static final String NAVIGATION_MBEAN = "navigation.mbean"; - - /** - * Name of the property navigation.link - */ - private static final String NAVIGATION_LINK = "navigation.link"; - - /** - * Name of the property navigation.contentTitle - */ - private static final String NAVIGATION_CONTENT_TITLE = "navigation.contentTitle"; - - /** - * Name of the property navigation.selectedItem - */ - private static final String NAVIGATION_SELECTED_ITEM = "navigation.selectedItem"; - - /** - * Name of the property navigation.titleTomThumb - */ - private static final String NAVIGATION_TITLE_TOM_THUMB = "navigation.titleTomThumb"; - - /** - * Name of the property navigation.rarInEar - */ - private static final String NAVIGATION_RAR_IN_EAR = "navigation.rarInEar"; - - /** - * Time of beginning testAllLinks - */ - private String beginTime; - - /** - * Time of ending testAllLinks - */ - private String endTime; - - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminNavigation(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminNavigation(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminNavigation.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - // Get time - beginTime = getTime(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - undeployAllEar(); - undeployAllJar(); - - useEar("autoload/mejb"); - } - - /** - * Test all about the navigation - * @throws Exception if error occurs - * - */ - public void testAll() throws Exception { - - Vector viewedURLs = new Vector(); - WebResponse wr; - - viewedURLs.add(URL_JONASADMIN); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // add links - // deploy ear - if (jProp.isEar()) { - useEar("alarm"); - if (jProp.isResource()) { - if (configFile != null) { - if (configFile.get(NAVIGATION_RAR_IN_EAR).equals("on")) { - useEar("earsample"); - } - } else { - useEar("earsample"); - } - } - // Reload the page - wc.getResponse(getAbsoluteUrl(URL_JONASADMIN)); - } - - // Get the frame "tree" - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - - // Open tree - try { - treeFrame = JonasAdminTree.openTree(treeFrame, wc); - } catch (IOException e) { - fail("failed to open tree. " + e); - } - - // When EJB service is actived - if (jProp.isEjb()) { - // Particular cases because of values of the session do not correspond at the page - // 1-"/jonasAdmin/ExecuteEjb.do?action=synchronize" - testParticularCase("name=AlarmRecord", "synchronize", URL_JONASADMIN_SYNCHRONIZE, viewedURLs); - - // 2-"/jonasAdmin/ExecuteEjb.do?action=reduceCache" - testParticularCase("name=AlarmRecord", "reduceCache", URL_JONASADMIN_REDUCE, viewedURLs); - - // 3-"/jonasAdmin/ExecuteEjb.do?action=reducePool" - testParticularCase("EditEjbSbl.do?select=jonas:j2eeType=StatelessSessionBean,name=MEJB,EJBModule=mejb,J2EEApplication=mejb,J2EEServer=jonas", "reducePool", URL_JONASADMIN_REDUCE_POOL, viewedURLs); - } - - // 4-"/jonasAdmin/EditNewGroupMemoryRealm.do?action=create" - testParticularCase("memrlm_1", "Groups.do", "action=create", URL_JONASADMIN_NEW_GROUP, viewedURLs); - - // 5-"/jonasAdmin/EditNewUserMemoryRealm.do?action=create" - testParticularCase("memrlm_1", "Users.do", "action=create", URL_JONASADMIN_NEW_USER, viewedURLs); - - // Verify all links are not viewTree.do - try { - verifyLinks(treeFrame, viewedURLs); - } catch (IOException e) { - throw new IllegalStateException("Problem to verify all links. " + e); - } catch (Exception e) { - throw new IllegalStateException("Problem to verify all links. " + e); - } - - // Test MBean - if (configFile.get(NAVIGATION_MBEAN).equals("on")) { - testMBean(viewedURLs); - } - } - - /** - * Verify all links in frame - * @param frame The frame - * @param viewedURLs All URLs have just been viewed - * @throws IOException if error occurs to get response - * @throws Exception if error occurs to get response - */ - public void verifyLinks(WebResponse frame, Vector viewedURLs) throws Exception, IOException { - - WebLink[] links = null; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Get links - links = frame.getLinks(); - WebResponse wr; - - for (int i = 0; i < links.length; i++) { - // Verify all links are not viewTree.do and don't contain "://" - if (links[i].getURLString().indexOf("viewTree.do") == -1 && links[i].getURLString().indexOf("ListMBeanDetails.do") == -1 && links[i].getURLString().indexOf("://") == -1) { - if (!viewedURLs.contains(links[i].getURLString())) { - executeTests(frame, links[i], viewedURLs); - - // Verify content frame links - WebResponse contentFrame = wc.getFrameContents(FRAME_CONTENT); - verifyLinks(contentFrame, viewedURLs); - } - } - } - } - - /** - * Test links and content titles for a particular case - * @param treeLink the link of the tree frame to click - * @param contentLink the link of the content frame to click - * @param url the url to test - * @param viewedURLs All URLs have just been viewed - * @throws Exception if an error occurs - */ - private void testParticularCase(String treeLink, String contentLink, String url, Vector viewedURLs) throws Exception { - WebLink link; - WebResponse wr; - WebResponse frame; - - frame = wc.getFrameContents(FRAME_TREE); - link = frame.getFirstMatchingLink( WebLink.MATCH_URL_STRING, treeLink); - if (link == null) { - throw new IllegalStateException("No link found for treelink : '" + treeLink + "'."); - } - wr = link.click(); - - frame = wc.getFrameContents(FRAME_CONTENT); - link = frame.getFirstMatchingLink( WebLink.MATCH_URL_STRING, contentLink); - - if (link == null) { - throw new IllegalStateException("No link found for treelink : '" + treeLink + "'."); - } - executeTests(frame, link, viewedURLs); - } - - /** - * Test links and content titles for a particular case - * @param treeLink the link of the tree frame to click - * @param contentLink the link of the content frame to click - * @param contentLink2 the second link of the content frame to click - * @param url the url to test - * @param viewedURLs All URLs have just been viewed - * @throws Exception if an error occurs - */ - private void testParticularCase(String treeLink, String contentLink, String contentLink2, String url, Vector viewedURLs) throws Exception { - - WebLink link; - WebResponse wr; - WebResponse frame; - - frame = wc.getFrameContents(FRAME_TREE); - link = frame.getFirstMatchingLink(WebLink.MATCH_URL_STRING, treeLink); - if (link == null) { - throw new IllegalStateException("No link found for treelink : '" + treeLink + "'."); - } - wr = link.click(); - - frame = wc.getFrameContents(FRAME_CONTENT); - link = frame.getFirstMatchingLink(WebLink.MATCH_URL_STRING, contentLink); - if (link == null) { - throw new IllegalStateException("No link found for contentLink : '" + contentLink + "'."); - } - wr = link.click(); - - frame = wc.getFrameContents(FRAME_CONTENT); - link = frame.getFirstMatchingLink(WebLink.MATCH_URL_STRING, contentLink2); - if (link == null) { - throw new IllegalStateException("No link found for contentLink2 : '" + contentLink2 + "'."); - } - - executeTests(frame, link, viewedURLs); - } - - /** - * call the tests - * @param frame The frame where the link is - * @param link A no null link - * @param viewedURLs All URLs have just been viewed - * @throws SAXException If an error occurs - */ - private void executeTests(WebResponse frame, WebLink link, Vector viewedURLs) throws SAXException { - - WebResponse wr; - try { - wr = link.click(); - // To check if the link is correct - if (configFile.get(NAVIGATION_LINK).equals("on")) { - testLinks(wr); - } - } catch (HttpNotFoundException e) { - if (configFile.get(NAVIGATION_LINK).equals("on")) { - fail("failed to click : link = " + link.getText() + ", URL = " + link.getURLString() + ", page = " + viewedURLs.lastElement() + ". " + e); - } - } catch (HttpException e) { - if (configFile.get(NAVIGATION_LINK).equals("on")) { - fail("failed to click : link = " + link.getText() + ", URL = " + link.getURLString() + ", page = " + viewedURLs.lastElement() + ". " + e); - } - } catch (IOException e) { - if (configFile.get(NAVIGATION_LINK).equals("on")) { - fail("failed to click : link = " + link.getText() + ", URL = " + link.getURLString() + ", page = " + viewedURLs.lastElement() + ". " + e); - } - } - - // To check if the content title is correct - if (configFile.get(NAVIGATION_CONTENT_TITLE).equals("on")) { - testContentTitle(link.getURLString()); - } - - // To check if the selected item is correct for links of the tree frame - if (frame.getFrameName().equalsIgnoreCase(FRAME_TREE)) { - if (configFile.get(NAVIGATION_SELECTED_ITEM).equals("on")) { - testTreeSelected(link.getURLString()); - } - } - - // To check if the title tom thumb is correct - if (configFile.get(NAVIGATION_TITLE_TOM_THUMB).equals("on")) { - testTitleTomThumb(link.getURLString()); - } - - // Add URL to viewed URLs - viewedURLs.add(link.getURLString()); - } - - /** - * Test if the response is a success - * @param wr - */ - private void testLinks(WebResponse wr) { - assertEquals("a code of 200 (success) should be returned. ", HTTP_SUCCESS_CODE, wr.getResponseCode()); - } - - /** - * Test jonasAdmin content titles - * @param url The url of the link that was clicked - * @throws SAXException if an error occurs when getElementsWithAttribute is called - */ - private void testContentTitle(String url) throws SAXException { - - WebResponse tree = null; - WebResponse content = null; - String treeTitle = null; - String contentTitle = null; - - // Verify content title of the content frame - content = wc.getFrameContents(FRAME_CONTENT); - tree = wc.getFrameContents(FRAME_TREE); - - // Get title from the tree frame - if (tree.getElementsWithAttribute("class", CLASS_TREE_CONTROL_SELECTED).length == 1) { - treeTitle = new String(tree.getElementsWithAttribute("class", CLASS_TREE_CONTROL_SELECTED)[0].getText()); - } - - // Get title from the content frame - if (content.getElementsWithAttribute("class", "contentTitle").length == 1) { - contentTitle = new String(content.getElementsWithAttribute("class", "contentTitle")[0].getText()); - } - if (treeTitle != null && contentTitle != null) { - assertEquals("The content title (" + contentTitle + ") is different of the link name (" + treeTitle + "). Clicked link was " + url, treeTitle, contentTitle); - } else { - if (!url.equals(URL_JONASADMIN)) { - if (treeTitle != null) { - try { - fail("Content title is null. Name of the selected link was " + treeTitle + ". Link URL: " + url + " Content frame: " + content.getText()); - } catch (IOException e) { - fail("Content title is null. Name of the selected link was " + treeTitle + ". Link URL: " + url + " Error to get content frame text"); - } - } else { - if (contentTitle != null) { - fail("No link is selected. Content title was " + contentTitle); - } else { - try { - fail("No link and no content title are found. Tree frame: " + tree.getText() + ". Content frame: " + content.getText()); - } catch (IOException e) { - fail("No link and no content title are found because there is a problem in tree frame or content frame. "); - } - } - } - } - } - - // To free memory - content = null; - tree = null; - } - - /** - * Test jonasAdmin selection of tree items - * @param selectedLink The url of the link that was clicked - */ - private void testTreeSelected(String selectedLink) { - - WebResponse tree = null; - - // Verify tree frame - tree = wc.getFrameContents(FRAME_TREE); - - try { - if (!JonasAdminTree.treeControlSelected(tree, selectedLink)) { - fail("The name of the link " + selectedLink + " is not selected in the tree."); - } - } catch (SAXException sax) { - fail("" + sax); - } - - tree = null; - } - - /** - * Test the jonasAdmin title tom thumb - * @param url The url of the link that was clicked - */ - private void testTitleTomThumb(String url) { - WebResponse contentFrame = wc.getFrameContents(FRAME_CONTENT); - WebResponse treeFrame = wc.getFrameContents(FRAME_TREE); - WebTable thumbTable = null; - WebTable treeTable = null; - TableCell thumbCell = null; - TableCell treeCell = null; - String text = null; - String[] thumbs = null; - String[] treeThumbs = null; - JonasAdminUtils utils = new JonasAdminUtils(); - int row; - int column; - - try { - thumbTable = contentFrame.getTables()[0]; - } catch (SAXException e) { - fail("There is no table in content frame: " + e); - } - - thumbCell = thumbTable.getTableCell(0, 0); - text = thumbCell.getText(); - thumbs = text.split(" > "); - - - try { - treeTable = treeFrame.getTables()[0]; - } catch (SAXException e) { - fail("There is no table in tree frame: " + e); - } - JonasAdminUtils.CoordCell coord = utils.getSelectedItemRow(treeTable); - - if (!url.equals(URL_JONASADMIN)) { - row = coord.getRow().intValue(); - column = coord.getColumn().intValue(); - // get parents of the selected item - treeThumbs = new String[thumbs.length]; - int i = thumbs.length; - while (row > 0 && column > 3 && i > 0) { - boolean found = false; - column--; - i--; - // get the row parent - int nextRow = row; - while (nextRow > 0 && !found) { - nextRow--; - treeCell = treeTable.getTableCell(nextRow, column-2); - if (treeCell.getElementsWithAttribute("src", "images/tree/node_open_middle.gif").length == 1) { - treeCell = treeTable.getTableCell(nextRow, column); - treeThumbs[i] = treeCell.getText(); - found = true; - assertEquals("For the link " + url, treeThumbs[i], thumbs[i]); - } else if (treeCell.getElementsWithAttribute("src", "images/tree/node_open_last.gif").length == 1) { - treeCell = treeTable.getTableCell(nextRow, column); - treeThumbs[i] = treeCell.getText(); - found = true; - assertEquals("For the link " + url, treeThumbs[i], thumbs[i]); - } else if (treeCell.getElementsWithAttribute("src", "images/tree/node_open_first.gif").length == 1) { - treeCell = treeTable.getTableCell(nextRow, column); - treeThumbs[i] = treeCell.getText(); - found = true; - assertEquals("For the link " + url, treeThumbs[i], thumbs[i]); - } else if (treeCell.getElementsWithAttribute("src", "images/tree/node_open.gif").length == 1) { - treeCell = treeTable.getTableCell(nextRow, column); - treeThumbs[i] = treeCell.getText(); - found = true; - assertEquals("For the link " + url, treeThumbs[i], thumbs[i]); - } - } - row = nextRow; - } - } - } - - /** - * Test links, content titles, selected tree of mbeans - * @throws Exception if an error occurs - */ - private void testMBean(Vector viewedURLs) throws Exception { - WebResponse wr = wc.getFrameContents(FRAME_TREE); - WebLink link; - - // Open MBean branch - if (wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*j2ee") == null) { - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans is not found in tree. "); - } - wr = link.click(); - } - // J2EE MBeans - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*j2ee"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*j2ee is not found in tree. "); - } - wr = link.click(); - - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*j2ee*"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*j2ee* is not found in tree. "); - } - wr = link.click(); - - link = wr.getMatchingLinks(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*j2ee*")[1]; - if (link == null) { - throw new IllegalStateException("The 2nd link viewTree.do?domain*mbeans*j2ee* is not found in tree. "); - } - wr = link.click(); - // OWNER MBeans - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*owner"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*owner is not found in tree. "); - } - wr = link.click(); - - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*owner*"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*owner* is not found in tree. "); - } - wr = link.click(); - - link = wr.getMatchingLinks(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*owner*")[1]; - if (link == null) { - throw new IllegalStateException("The 2nd link viewTree.do?domain*mbeans*owner* is not found in tree. "); - } - wr = link.click(); - - // OTHER MBeans - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*unknown"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*unknow is not found in tree. "); - } - wr = link.click(); - - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*unknown*"); - if (link == null) { - throw new IllegalStateException("The link viewTree.do?domain*mbeans*unknow* is not found in tree. "); - } - wr = link.click(); - - link = wr.getMatchingLinks(WebLink.MATCH_URL_STRING, "viewTree.do?tree=domain*mbeans*unknown*")[1]; - if (link == null) { - throw new IllegalStateException("The 2nd link viewTree.do?domain*mbeans*unknow* is not found in tree. "); - } - wr = link.click(); - - // Tests - ListMBeans.do - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListMBeans.do"); - if (link == null) { - throw new IllegalStateException("ListMBeans.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListJ2eeMBeans.do - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListJ2eeMBeans.do"); - if (link == null) { - throw new IllegalStateException("ListJ2eeMBeans.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListOwnerMBeans.do - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListOwnerMBeans.do"); - if (link == null) { - throw new IllegalStateException("ListOwnerMBeans.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListUnknownMBeans.do - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListUnknownMBeans.do"); - if (link == null) { - throw new IllegalStateException("ListUnknownMBeans.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListMBeanDetails.do - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListMBeanDetails.do"); - if (link == null) { - throw new IllegalStateException("ListMBeanDetails.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListMBeanAttributes.do - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListMBeanAttributes.do"); - if (link == null) { - throw new IllegalStateException("ListMBeansAttributes.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListMBeanOperations.do - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListMBeanOperations.do"); - if (link == null) { - throw new IllegalStateException("ListMBeansOperations.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - - // Tests - ListMBeanProperties.do - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, "ListMBeanProperties.do"); - if (link == null) { - throw new IllegalStateException("ListMBeansProperties.do was not found in tree. "); - } - executeTests(wr, link, viewedURLs); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs for close JMX connection - */ - public void tearDown() throws Exception { - super.tearDown(); - // Get time - endTime = getTime(); - - // Delete created files: server.xml - JonasAdminFiles.recoverServerConf(beginTime, endTime); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/C_JonasAdminResource.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/C_JonasAdminResource.java deleted file mode 100755 index c703190edb..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/C_JonasAdminResource.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.resource; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test Resource in jonasAdmin - * Test : - Resource - * - * @author Paul Kemler - */ -public class C_JonasAdminResource extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminResource(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminResourceDatasource.suite()); - suite.addTest(F_JonasAdminResourceMail.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceDatasource.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceDatasource.java deleted file mode 100755 index c5cc4c3753..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceDatasource.java +++ /dev/null @@ -1,592 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.resource; - -import java.util.Properties; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing datasource Resource - * @author Paul Kemler - */ -public class F_JonasAdminResourceDatasource extends JonasAdminTestCase { - - /** - * URL of datasource resource - */ - private static final String URL_JONASADMIN_DATASOURCE = "EditDeploy.do?type=datasource"; - - /** - * URL of datasource resource - */ - private static final String URL_JONASADMIN_LIST_DATASOURCES = "ListDatasources.do"; - - /** - * URL of deploy - */ - private static final String URL_JONASADMIN_DEPLOY = "EditDeploy.do"; - - /** - * URL of create datasource - */ - private static final String URL_JONASADMIN_CREATE_DATASOURCE = "EditDatasourceProperties.do?action=create"; - - /** - * URL of Datasource resource viewTree - */ - private static final String URL_JONASADMIN_VIEW_DATASOURCE = "viewTree.do?tree=domain*jonas*resources"; - - /** - * number of tabs when you are in the datasource tabs - */ - private static final int NUMBER_OF_TABS_FOR_DATASOURCE = 2; - - /** - * number of tabs when you are in the CONFIRM tabs - */ - private static final int NUMBER_OF_TABS_FOR_CONFIRM = 3; - - /** - * number of tabs when you are in the 'new datasource' tabs - */ - private static final int NUMBER_OF_TABS_FOR_NEW_DATASOURCE = 3; - - /** - * name of the datasource - */ - private String name = ""; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminResourceDatasource(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminResourceDatasource(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminResourceDatasource.class); - } - - /** - * Setup need for these tests jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test to deploy and undeploy a datasource - * @throws Exception if error occurs - */ - public void testUndeployDeployDatasource() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isDbm()) { - // Add datasource - name = "new_datasource"; - Properties properties = new Properties(); - properties.put("datasource.name", name); - properties.put("datasource.url", "jdbc:hsqldb:hsql://localhost:9001/db_jonas"); - properties.put("datasource.classname", "org.hsqldb.jdbcDriver"); - properties.put("datasource.username", "jonas"); - properties.put("datasource.password", "jonas"); - properties.put("datasource.mapper", "rdb.hsql"); - properties.put("jdbc.connchecklevel", "0"); - properties.put("jdbc.connmaxage", "1440"); - properties.put("jdbc.maxopentime", "60"); - properties.put("jdbc.connteststmt", "select 1"); - properties.put("jdbc.minconpool", "10"); - properties.put("jdbc.maxconpool", "30"); - properties.put("jdbc.samplingperiod", "30"); - properties.put("jdbc.maxwaittime", "5"); - properties.put("jdbc.maxwaiters", "100"); - - useDatasource(name, properties); - - // Go to database - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DATASOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_LIST_DATASOURCES + " is not found in the second tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_DATASOURCES)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(name) == -1) { - fail("The file" + name + " was not found as deployed."); - } - - // Undeploy datasource - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - if (params.length() == 0) { - params += name; - } else { - params += "," + name; - } - script.setParameterValue("undeploy", params); - - SubmitButton button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - WebResponse submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(submitUndeploy); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Confirm' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_LIST_DATASOURCES + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_DATASOURCES)); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Result' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_LIST_DATASOURCES + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_DATASOURCES)); - - // Go back to Deployment - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_LIST_DATASOURCES + " is not found in the second tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_DATASOURCES)); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(name) != -1) { - fail("The jonasAdmin webApp has not removed. " + name); - } - - // now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += name; - } else { - params += "," + name; - } - - script.setParameterValue("deploy", params); - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - // war is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Go back to Deployment - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(name) == -1) { - fail("The file " + name + " was not found as deployed."); - } - } - } - - /** - * Test to create a new datasource - * @throws Exception if error occurs - */ - public void testCreateNewDatasource() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - // Name of the datasource - name = "new_datasource_"; - // JNDI name The JNDI name to use the datasource - String jndiName = ""; - // Description Description of the datasource - String descr = ""; - // URL URL to access to the database - String urlDatasource = "jdbc:hsqldb:hsql://localhost:9001/db_jonas"; - // JDBC Driver JDBC driver class name to access to the database - String driver = "org.hsqldb.jdbcDriver"; - // User name User name or login to log in the database - String user = "jonas"; - // User password User password to log in the database - String password = "jonas"; - // Mapper Mapper used for the datasource - String mapper = "rdb.hsql"; - - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isDbm()) { - // Go to database - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DATASOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to datasources - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LIST_DATASOURCES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE, selectedTab, "Problem in 'Datasources' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - - // Find a new name - boolean found = false; - int i = 0; - while (!found) { - if ((wr.getText().indexOf(name + i) == -1)) { - name = name + i; - jndiName = name; - found = true; - } - i++; - } - - // Create a new datasource - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_DATASOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_NEW_DATASOURCE, selectedTab, "Problem in 'New Datasource' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_LIST_DATASOURCES + " is not found in the third tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_DATASOURCES)); - - WebForm form = wr.getForms()[0]; - createNewDatasource(form, name, jndiName, descr, urlDatasource, driver, user, password, mapper); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify if the datasource is deployed - assertTrue("The created datasource ('" + name + "') is not deployed. ", isLoadedDatasource(name)); - table = utils.getTable(wr, 3); - int datasourceRow = utils.getRow(name, table, 1).intValue(); - if (datasourceRow == -1) { - fail("The datasource '" + name + "' is not found in datasource table. Restart jonas and try again. "); - } else { - // Verify if there is an image to indicate that the datasource is deployed - TableCell cell = table.getTableCell(datasourceRow, 0); - assertEquals("There is no a image to indicate that '" + name + "' datasource is deployed. ", 1, cell.getImages().length); - } - } - - } - - /** - * Test to view empty value error message - * @throws Exception if error occurs - */ - public void testCreateDatasourceWithEmptyValue() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - // Name Name of the datasource - name = ""; - // JNDI name The JNDI name to use the datasource - String jndiName = ""; - // Description Description of the datasource - String descr = ""; - // URL URL to access to the database - String urlDatasource = ""; - // JDBC Driver JDBC driver class name to access to the database - String driver = ""; - // User name User name or login to log in the database - String user = ""; - // User password User password to log in the database - String password = ""; - // Mapper Mapper used for the datasource - String mapper = ""; - - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isDbm()) { - // Go to database - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DATASOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to datasources - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LIST_DATASOURCES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Create a new datasource - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_DATASOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - WebForm form = wr.getForms()[0]; - createNewDatasource(form, name, jndiName, descr, urlDatasource, driver, user, password, mapper); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify error messages - table = utils.getTable(wr, 0); - TableCell cell = table.getTableCell(0, 0); - - // class errors - assertEquals("The value of the class attribut of the cell is not 'errors'. ", "errors", cell.getAttribute("class")); - // Name cannot be empty - String emptyName = "Name cannot be empty"; - assertTrue("The message '" + emptyName + "' is not found. ", cell.getText().indexOf(emptyName) != -1); - // JNDI name cannot be empty - String emptyJndiName = "JNDI name cannot be empty"; - assertTrue("The message '" + emptyJndiName + "' is not found. ", cell.getText().indexOf(emptyJndiName) != -1); - // JDBC Driver cannot be empty - String emptyJdbcDriver = "JDBC Driver cannot be empty"; - assertTrue("The message '" + emptyJdbcDriver + "' is not found. ", cell.getText().indexOf(emptyJdbcDriver) != -1); - } - - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - - if (jProp.isDbm()) { - // remove created datasource file - if (!name.equals("")) { - // Undeploy datasource - unUseDatasource(name); - // Delete file - JonasAdminFiles.deleteConfigFile(name + ".properties"); - name = ""; - } - } - - super.tearDown(); - } - - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of - * deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - // Extract right table - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(wr, 0); - - TableCell deployableCell = table.getTableCell(1, 0); - TableCell deployedCell = table.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - - /** - * Create a new datasource in jonasAdmin - * @param form datasource form - * @param name the name of the datasource - * @param datasourceName JNDI name - * @param datasourceDescription the description of the datasource - * @param datasourceUrl url to access to the databse - * @param datasourceClassname JDBC driver class name to access to the - * database - * @param datasourceUsername User name or login to log in the database - * @param datasourcePassword User password to log in the database - * @param datasourceMapper Mapper used for the datasource - * @throws Exception if an error occurs when button is clicked. - */ - private void createNewDatasource(WebForm form, String name, String datasourceName, String datasourceDescription, - String datasourceUrl, String datasourceClassname, String datasourceUsername, String datasourcePassword, - String datasourceMapper) throws Exception { - SubmitButton button = form.getSubmitButtons()[0]; - - form.setParameter("name", name); - form.setParameter("datasourceName", datasourceName); - form.setParameter("datasourceDescription", datasourceDescription); - form.setParameter("datasourceUrl", datasourceUrl); - form.setParameter("datasourceClassname", datasourceClassname); - form.setParameter("datasourceUsername", datasourceUsername); - form.setParameter("datasourcePassword", datasourcePassword); - form.setParameter("datasourceMapper", datasourceMapper); - - button.click(); - } -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceMail.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceMail.java deleted file mode 100755 index 41abde74ef..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/resource/F_JonasAdminResourceMail.java +++ /dev/null @@ -1,731 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.resource; - -import java.util.Properties; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.SubmitButton; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing Resource - * @author Paul Kemler - * - */ -public class F_JonasAdminResourceMail extends JonasAdminTestCase { - - /** - * URL of mail service - */ - private static final String URL_JONASADMIN_MAIL_SERVICE = "EditMailService.do"; - - /** - * URL of Mail resource - */ - private static final String URL_JONASADMIN_MAIL = "EditDeploy.do?type=mail"; - - /** - * URL of list mail factories - */ - private static final String URL_JONASADMIN_LIST_MAIL_FACTORIES = "ListMailFactories.do"; - - /** - * URL of deploy - */ - private static final String URL_JONASADMIN_DEPLOY = "EditDeploy.do"; - - /** - * URL of create mail factory - */ - private static final String URL_JONASADMIN_CREATE_MAIL_FACTORY = "EditMailFactoryProperties.do?action=create"; - - /** - * URL of Mail resource viewTree - */ - private static final String URL_JONASADMIN_VIEW_MAIL = "viewTree.do?tree=domain*jonas*resources"; - - /** - * number of tabs when you are in the mail tabs - */ - private static final int NUMBER_OF_TABS_FOR_MAIL = 2; - - /** - * number of tabs when you are in the CONFIRM tabs - */ - private static final int NUMBER_OF_TABS_FOR_CONFIRM = 2; - - /** - * number of tabs when you are in the 'new mail factory' tabs - */ - private static final int NUMBER_OF_TABS_FOR_NEW_MAIL_FACTORY = 3; - - /** - * name of the mail factory - */ - private String name = ""; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminResourceMail(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminResourceMail(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminResourceMail.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test to deploy and undeploy a mail factory - * @throws Exception if error occurs - */ - public void testUndeployDeployMailFactory() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - // Add mail factory - name = "new_mailFactory"; - Properties properties = new Properties(); - // mail.authentication.password= - properties.put("mail.authentication.password", ""); - // mail.factory.type=javax.mail.Session - properties.put("mail.factory.type", "javax.mail.Session"); - // mail.authentication.username= - properties.put("mail.authentication.username", ""); - // mail.host= - properties.put("mail.host", ""); - // mail.factory.name= name - properties.put("mail.factory.name", name); - - // Add a mail factory - if (isInMailFactoryList(name)) { - - // remove mail factory - unBindMailFactory(name); - } - createMailFactory(name, properties); - - // Go to Mail - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_LIST_MAIL_FACTORIES + " is not found in the second tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_MAIL_FACTORIES)); - - String txt = getDeployTable(wr, true); - - if (txt.indexOf(name) == -1) { - fail("The file" + name + " was not found as deployed."); - } - - // Undeploy mail factory - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - if (params.length() == 0) { - params += name; - } else { - params += "," + name; - } - script.setParameterValue("undeploy", params); - - SubmitButton button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - WebResponse submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(submitUndeploy); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Confirm' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_CONFIRM, selectedTab, "Problem in 'Result' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - - // Go back to Deployment - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Deployment' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_LIST_MAIL_FACTORIES + " is not found in the second tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_MAIL_FACTORIES)); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(name) != -1) { - fail("The jonasAdmin webApp has not removed " + name); - } - - // now deploy - webForms = wr.getForms(); - webForm = webForms[0]; - - params = webForm.getParameterValue("deploy"); - script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += name; - } else { - params += "," + name; - } - - script.setParameterValue("deploy", params); - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Confirm - submitUndeploy = wc.getFrameContents(FRAME_CONTENT); - // war is in the table - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - button = webForm.getSubmitButtons()[0]; - button.click(); - - // Go back to Deployment - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPLOY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - txt = getDeployTable(wr, true); - - if (txt.indexOf(name) == -1) { - fail("The file " + name + " was not found as deployed."); - } - } - } - - /** - * Test to create a new mail factory - * @throws Exception if error occurs - */ - public void testCreateNewSessionMailFactory() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - // Name of the mail factory - name = "new_mailFactory_"; - String username = ""; - String password = ""; - String sessionProps = ""; - String to = ""; - String subject = ""; - String cc = ""; - String bcc = ""; - - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - - // Go to mail - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to mail factories - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LIST_MAIL_FACTORIES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - - // Find a new name - boolean found = false; - int i = 0; - while (!found) { - if ((wr.getText().indexOf(name + i) == -1)) { - name = name + i; - found = true; - } - i++; - } - - // Create a new Session Mail Factory - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_MAIL_FACTORY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_NEW_MAIL_FACTORY, selectedTab, "Problem in 'New mail factory' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_LIST_MAIL_FACTORIES + " is not found in the third tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_MAIL_FACTORIES)); - - WebForm form = wr.getForms()[0]; - - createSessionFactory(form, name, name, username, password, sessionProps, to, subject, cc, bcc); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify if the mail factory is deployed - assertTrue("The created mail factory ('" + name + "') is not deployed. Restart jonas and try again. ", isInMailFactoryList(name)); - table = utils.getTable(wr, 3); - int mailFactoryRow = utils.getRow(name, table, 1).intValue(); - if (mailFactoryRow == -1) { - fail("The mail factory '" + name + "' is not found in mail factory table. Restart jonas and try again. "); - } else { - // Verify if there is an image to indicate that the mail factory is deployed - TableCell cell = table.getTableCell(mailFactoryRow, 0); - assertEquals("There is no a image to indicate that '" + name + "' mail factory is deployed. ", 1, cell.getImages().length); - } - } - } - - /** - * Test to create a new MimePartDatasource mail factory - * @throws Exception if error occurs - */ - public void testCreateNewMimePartDSMailFactory() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - // Name of the mail factory - name = "new_mimePartDS_mailFactory_"; - String username = ""; - String password = ""; - String sessionProps = ""; - String to = ""; - String subject = ""; - String cc = ""; - String bcc = ""; - - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - - // Go to mail - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to mail factories - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LIST_MAIL_FACTORIES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - - // Find a new name - boolean found = false; - int i = 0; - while (!found) { - if ((wr.getText().indexOf(name + i) == -1)) { - name = name + i; - found = true; - } - i++; - } - - // Create a new MimePartDataSource Mail Factory - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_MAIL_FACTORY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_NEW_MAIL_FACTORY, selectedTab, "Problem in 'New mail factory' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_DEPLOY + " is not found in the first tab. ", tabTable.getTableCell( - 0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPLOY)); - assertTrue("The link " + URL_JONASADMIN_LIST_MAIL_FACTORIES + " is not found in the third tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_LIST_MAIL_FACTORIES)); - - WebForm form = wr.getForms()[0]; - - createMimePartDataSourceFactory(form, name, name, username, password, sessionProps, to, subject, cc, bcc); - - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify if the mail factory is deployed - assertTrue("The created mail factory ('" + name + "') is not deployed. Restart jonas and try again. ", isInMailFactoryList(name)); - table = utils.getTable(wr, 3); - int mailFactoryRow = utils.getRow(name, table, 1).intValue(); - if (mailFactoryRow == -1) { - fail("The mail factory '" + name + "' is not found in mail factory table. Restart jonas and try again. "); - } else { - // Verify if there is an image to indicate that the mail factory is deployed - TableCell cell = table.getTableCell(mailFactoryRow, 0); - assertEquals("There is no a image to indicate that '" + name + "' mail factory is deployed. ", 1, cell.getImages().length); - } - } - } - - /** - * Test to view empty value error message - * @throws Exception if error occurs - */ - public void testCreateMailFactoryWithEmptyValue() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - // Go to mail - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to mail factories - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_LIST_MAIL_FACTORIES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Create a new mail factory - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_CREATE_MAIL_FACTORY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - WebForm form = wr.getForms()[0]; - createNewEmptyMailFactory(form); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify error messages - table = utils.getTable(wr, 0); - TableCell cell = table.getTableCell(0, 0); - - // class errors - assertEquals("The value of the class attribut of the cell is not 'errors'. ", "errors", cell.getAttribute("class")); - // Can't accept empty Jndi name - String emptyJndiName = "Can't accept empty Jndi name"; - assertTrue("The message '" + emptyJndiName + "' is not found. ", cell.getText().indexOf(emptyJndiName) != -1); - // Can't accept empty factory name - String emptyFactoryName = "Can't accept empty factory name"; - assertTrue("The message '" + emptyFactoryName + "' is not found. ", cell.getText().indexOf(emptyFactoryName) != -1); - // Please check in the type - String emptyType = "Can't accept empty factory name"; - assertTrue("The message '" + emptyType + "' is not found. ", cell.getText().indexOf(emptyType) != -1); - } - - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - if (jProp.isMail()) {// remove created mail factory file - if (!name.equals("")) { - if (isInMailFactoryList(name)) { - // remove mail factory - unBindMailFactory(name); - // Delete file - JonasAdminFiles.deleteConfigFile(name + ".properties"); - name = ""; - } - } - } - super.tearDown(); - } - - /** - * Create a new session Mail Factory - * @param form the form - * @param mailFactoryName the name - * @param type "Session" or "MimePartDataSource" - * @param jndiName the Jndi name - * @param username username - * @param password password - * @param sessionProps Mail session configuration - * @param to MimePartDataSource configuration - * @param subject MimePartDataSource configuration - * @param cc MimePartDataSource configuration - * @param bcc MimePartDataSource configuration - * @throws Exception if an error occurs - */ - private void createSessionFactory(WebForm form, String mailFactoryName, String jndiName, - String username, String password, String sessionProps, String to, String subject, String cc, String bcc) - throws Exception { - - form.setParameter("mailFactoryName", mailFactoryName); - form.setParameter("type", "javax.mail.Session"); - form.setParameter("jndiName", jndiName); - form.setParameter("username", username); - form.setParameter("password", password); - form.setParameter("sessionProps", sessionProps); - form.setParameter("to", to); - form.setParameter("subject", subject); - form.setParameter("cc", cc); - form.setParameter("bcc", bcc); - - SubmitButton button = form.getSubmitButtons()[0]; - button.click(); - } - - /** - * Create a new session Mail Factory - * @param form the form - * @param mailFactoryName the name - * @param type "Session" or "MimePartDataSource" - * @param jndiName the Jndi name - * @param username username - * @param password password - * @param sessionProps Mail session configuration - * @param to MimePartDataSource configuration - * @param subject MimePartDataSource configuration - * @param cc MimePartDataSource configuration - * @param bcc MimePartDataSource configuration - * @throws Exception if an error occurs - */ - private void createMimePartDataSourceFactory(WebForm form, String mailFactoryName, String jndiName, - String username, String password, String sessionProps, String to, String subject, String cc, String bcc) - throws Exception { - - form.setParameter("mailFactoryName", mailFactoryName); - form.setParameter("type", "javax.mail.internet.MimePartDataSource"); - form.setParameter("jndiName", jndiName); - form.setParameter("username", username); - form.setParameter("password", password); - form.setParameter("sessionProps", sessionProps); - form.setParameter("to", to); - form.setParameter("subject", subject); - form.setParameter("cc", cc); - form.setParameter("bcc", bcc); - - SubmitButton button = form.getSubmitButtons()[0]; - button.click(); - } - - /** - * Create an empty Mail Factory - * @param form the form - * @throws Exception if an error occurs - */ - private void createNewEmptyMailFactory(WebForm form) - throws Exception { - - form.setParameter("mailFactoryName", ""); - form.setParameter("jndiName", ""); - form.setParameter("username", ""); - form.setParameter("password", ""); - form.setParameter("sessionProps", ""); - form.setParameter("to", ""); - form.setParameter("subject", ""); - form.setParameter("cc", ""); - form.setParameter("bcc", ""); - - SubmitButton button = form.getSubmitButtons()[0]; - button.click(); - } - - - /** - * Return the text of the deployed table or the deployable table - * @param wr the WebResponse to use - * @param deployed if true return the text deployed table, if false text of - * deployable - * @return the text of the deployed table or the deployable table - * @throws Exception if an error occurs - */ - private String getDeployTable(WebResponse wr, boolean deployed) throws Exception { - - // Extract right table - JonasAdminUtils utils = new JonasAdminUtils(); - WebTable table = utils.getTable(wr, 0); - - TableCell deployableCell = table.getTableCell(1, 0); - TableCell deployedCell = table.getTableCell(1, 2); - - if (deployed) { - return deployedCell.getText(); - } else { - return deployableCell.getText(); - } - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/C_JonasAdminContainer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/C_JonasAdminContainer.java deleted file mode 100755 index f36d0b4cc0..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/C_JonasAdminContainer.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.container; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test containers - * Test : - application container - * - ejb container - * - web container - * - * @author Paul Kemler - */ -public class C_JonasAdminContainer extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminContainer(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminEjbContainer.suite()); - suite.addTest(F_JonasAdminWebContainer.suite()); - suite.addTest(F_JonasAdminApplicationContainer.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminApplicationContainer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminApplicationContainer.java deleted file mode 100755 index 1d1d2e9b9a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminApplicationContainer.java +++ /dev/null @@ -1,461 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.container; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing application container in jonasAdmin - * @author Paul Kemler - * - */ -public class F_JonasAdminApplicationContainer extends JonasAdminTestCase { - - /** - * URL of Application container - */ - private static final String URL_JONASADMIN_APP_CONTAINER = "ListAppContainers.do"; - - /** - * URL of the ear tab - */ - private static final String URL_JONASADMIN_EAR = "/jonasAdmin/EditEar.do"; - - /** - * URL of the web tab - */ - private static final String URL_JONASADMIN_WEB = "/jonasAdmin/service/earWars.jsp"; - - /** - * URL of the ejb tab - */ - private static final String URL_JONASADMIN_JAR = "/jonasAdmin/service/earJars.jsp"; - - /** - * URL of the resource adapter tab - */ - private static final String URL_JONASADMIN_RAR = "/jonasAdmin/service/earRars.jsp"; - - /** - * URL of the deployment descriptor tab - */ - private static final String URL_JONASADMIN_XML = "/jonasAdmin/service/earXmlDeployment.jsp"; - - /** - * number of tabs with war, jar and rar in the ear - */ - private static final int NUMBER_OF_TABS_WITH_WAR_JAR_RAR = 6; - - /** - * number of tabs without rar in the ear - */ - private static final int NUMBER_OF_TABS_WITHOUT_RAR = 5; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminApplicationContainer(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminApplicationContainer(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminApplicationContainer.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test application container when an ear with a war, a jar and a rar is deployed - * @throws Exception if error occurs - * - */ - public void testAddEarWithWarJarAndRar() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "earsample"; - int selectedTab; - int code; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if there are services ear, ejb and resource - if (jProp.isEar() && jProp.isEjb() && jProp.isResource()) { - // Add earsample.ear - useEar(ear); - - // Go to application container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_APP_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to earsample page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify infos - try { - table = utils.getTable(wr, 0); - cell = table.getTableCell(0,2); - // File - assertEquals("It is not the name of the ear file. ", ear + ".ear", cell.getText()); - // Path - String path = System.getProperty("jonas.base") + File.separator + "apps" + File.separator + ear + ".ear"; - assertEquals("It is not the path of the ear file. ", path, table.getTableCell(1,2).getText()); - } catch (ArrayIndexOutOfBoundsException e) { - throw new IllegalStateException("Cannot find a table in the content frame. "); - } - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_WITH_WAR_JAR_RAR, selectedTab, "Problem in 'earsample.ear' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_APP_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_APP_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_WEB + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB)); - assertTrue("The link " + URL_JONASADMIN_JAR + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JAR)); - assertTrue("The link " + URL_JONASADMIN_RAR + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RAR)); - assertTrue("The link " + URL_JONASADMIN_XML + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_XML)); - - - // Go to the Web tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify infos - table = utils.getTable(wr, 0); - - // File - cell = table.getTableCell(1, 0); - if (cell.getText().equals("")) { - if (jProp.isCatalina()) { - fail("It is not the name of the war file of 'earsample'. "); - } else { - throw new IllegalStateException("Not implemented: JETTY. "); - } - } else { - assertEquals("It is not the name of the war file. ", "earsample", cell.getText()); - // Link - link = cell.getLinks()[0]; - code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertTrue("The file link does not contain 'EditWebApp.do?on='. ", link.getURLString().indexOf("EditWebApp.do?on=") != -1); - assertEquals("The link " + link.getURLString() + " is not found. ", 200, code); - } - - // Path - cell = table.getTableCell(1, 1); - assertTrue("It is not the path of the war file. ", cell.getText().endsWith("earsample.war")); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_WITH_WAR_JAR_RAR, selectedTab, "Problem in 'Web' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_APP_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_APP_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_EAR + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EAR)); - assertTrue("The link " + URL_JONASADMIN_JAR + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JAR)); - assertTrue("The link " + URL_JONASADMIN_RAR + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RAR)); - assertTrue("The link " + URL_JONASADMIN_XML + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_XML)); - - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_JAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify infos - table = utils.getTable(wr, 0); - cell = table.getTableCell(1, 0); - // File - assertEquals("It is not the name of the war file. ", "secusb", cell.getText()); - // Link - link = cell.getLinks()[0]; - code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertTrue("The file link does not contain 'EditContainer.do?select='. ", cell.getLinks()[0].getURLString().indexOf("EditContainer.do?select=") != -1); - assertEquals("The link " + link.getURLString() + " is not found. ", 200, code); - - // Path - cell = table.getTableCell(1, 1); - assertTrue("It is not the path of the war file. ", cell.getText().endsWith("secusb.jar")); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_WITH_WAR_JAR_RAR, selectedTab, "Problem in 'Ejb' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_APP_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_APP_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_EAR + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EAR)); - assertTrue("The link " + URL_JONASADMIN_WEB + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB)); - assertTrue("The link " + URL_JONASADMIN_RAR + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RAR)); - assertTrue("The link " + URL_JONASADMIN_XML + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_XML)); - - - // Go to the RA tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_RAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - - // Verify infos - table = utils.getTable(wr, 0); - cell = table.getTableCell(1, 0); - // File - assertEquals("It is not the name of the rar file. ", "earsample.ra-sample", cell.getText()); - // Link - link = cell.getLinks()[0]; - code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertTrue("The file link does not contain 'EditResourceAdapter.do?select='. ", cell.getLinks()[0].getURLString().indexOf("EditResourceAdapter.do?select=") != -1); - assertEquals("The link " + link.getURLString() + " is not found. ", 200, code); - - // Path - cell = table.getTableCell(1, 1); - assertTrue("It is not the path of the rar file. ", cell.getText().endsWith("ra-sample.rar")); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_WITH_WAR_JAR_RAR, selectedTab, "Problem in 'Resource Adapter' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_APP_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_APP_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_EAR + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EAR)); - assertTrue("The link " + URL_JONASADMIN_WEB + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB)); - assertTrue("The link " + URL_JONASADMIN_JAR + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JAR)); - assertTrue("The link " + URL_JONASADMIN_XML + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_XML)); - - - // Go to the deployement descriptor tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_XML); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 6; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_WITH_WAR_JAR_RAR, selectedTab, "Problem in 'Deployment descriptor' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_APP_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_APP_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_EAR + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EAR)); - assertTrue("The link " + URL_JONASADMIN_WEB + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB)); - assertTrue("The link " + URL_JONASADMIN_JAR + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JAR)); - assertTrue("The link " + URL_JONASADMIN_RAR + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RAR)); - } - } - - /** - * Test application container without a deployed rar - * @throws Exception if error occurs - * - */ - public void testAddEarWithoutRar() throws Exception { - - WebResponse wr; - WebLink link; - WebTable tabTable; - String ear = "alarm"; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if there are services ear and ejb - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to application container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_APP_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - try { - tabTable = utils.getTabTable(wr); - }catch (ArrayIndexOutOfBoundsException e) { - throw new IllegalStateException("annot find the tab table. "); - } - // - number of tabs - assertEquals("There are not " + NUMBER_OF_TABS_WITHOUT_RAR + " tabs. ", - NUMBER_OF_TABS_WITHOUT_RAR, (tabTable.getColumnCount() + 1) / 2); - - - // Go to the Web tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - - // - number of tabs - assertEquals("There are not " + NUMBER_OF_TABS_WITHOUT_RAR + " tabs. ", - NUMBER_OF_TABS_WITHOUT_RAR, (tabTable.getColumnCount() + 1) / 2); - - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_JAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - // - number of tabs - assertEquals("There are not " + NUMBER_OF_TABS_WITHOUT_RAR + " tabs. ", - NUMBER_OF_TABS_WITHOUT_RAR, (tabTable.getColumnCount() + 1) / 2); - - - // Go to the deployement descriptor tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_XML); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tabs - tabTable = utils.getTabTable(wr); - // - number of tabs - assertEquals("There are not " + NUMBER_OF_TABS_WITHOUT_RAR + " tabs. ", - NUMBER_OF_TABS_WITHOUT_RAR, (tabTable.getColumnCount() + 1) / 2); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminEjbContainer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminEjbContainer.java deleted file mode 100755 index dcdd3c915a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminEjbContainer.java +++ /dev/null @@ -1,1304 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.container; - -import java.io.File; -import java.util.Iterator; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing ejb container in jonasAdmin - * @author Paul Kemler - * - */ -public class F_JonasAdminEjbContainer extends JonasAdminTestCase { - - /** - * URL of Ejb container - */ - private static final String URL_JONASADMIN_EJB_CONTAINER = "ListContainers.do"; - - /** - * URL of the container tab - */ - private static final String URL_JONASADMIN_CONTAINER = "/ViewContainer.do"; - - /** - * URL of the container jsp - */ - private static final String URL_JONASADMIN_CONTAINER_JSP = "/jonasAdmin/service/container.jsp"; - - /** - * URL of the statistic tab - */ - private static final String URL_JONASADMIN_STATISTICS = "/EditContainerStatistic.do"; - - /** - * URL of the ejb container's' statistics tab - */ - private static final String URL_JONASADMIN_CONTAINERS_STATISTICS = "EditEjbContainersStatistic.do"; - - /** - * URL of the view ejb container tab - */ - private static final String URL_JONASADMIN_VIEW_EJB = "/ViewContainerEjbs.do"; - - /** - * URL of the mdb tab - */ - private static final String URL_JONASADMIN_MDB = "/jonasAdmin/service/ejbMessage.jsp"; - - /** - * URL of the entity bean tab - */ - private static final String URL_JONASADMIN_EB = "/jonasAdmin/service/ejbEntity.jsp"; - - /** - * URL of the view ejb container jsp - */ - private static final String URL_JONASADMIN_VIEW_EJB_JSP = "/jonasAdmin/service/containerEjbs.jsp"; - - /** - * URL of the ejb dependency jsp - */ - private static final String URL_JONASADMIN_DEPENDENCIES = "/jonasAdmin/service/ejbDependency.jsp"; - - /** - * URL of the synchronize button - */ - private static final String URL_JONASADMIN_SYNCHRONIZE = "ExecuteEjb.do?action=synchronize"; - - /** - * URL of the reduce button - */ - private static final String URL_JONASADMIN_REDUCE = "ExecuteEjb.do?action=reduceCache"; - - /** - * number of tabs when you are in the jar page - */ - private static final int NUMBER_OF_TABS_FOR_JAR = 4; - - /** - * number of tabs when you are in the MDB page - */ - private static final int NUMBER_OF_TABS_FOR_MDB = 6; - - /** - * number of tabs when you are in the EntityBean page when using dbm - */ - private static final int NUMBER_OF_TABS_FOR_ENTITY_DBM = 6; - /** - * number of tabs when you are in the EntityBean page when using the RAR - * (there is no Dependency tab in this case) - */ - private static final int NUMBER_OF_TABS_FOR_ENTITY_RAR = 5; - - /** - * index of the Mdb tab - */ - private static final int MDB_TAB_INDEX = 5; - - /** - * Name of Mdb tab - */ - private static final String TDB_TAB_TEXT = "Mdb"; - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminEjbContainer(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminEjbContainer(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminEjbContainer.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test ejb container with alarm.ear - * @throws Exception if error occurs - * - */ - public void testEjbContainer() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify infos - table = utils.getTable(wr, 0); - cell = table.getTableCell(0,2); - // Name - assertEquals("It is not the name of the jar. ", ear, cell.getText()); - // Path - cell = table.getTableCell(1, 2); - assertTrue("It is not the path of the jar file. ", cell.getText().endsWith(File.separator + "alarm.jar")); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JAR, selectedTab, "Problem in 'alarm.jar' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB)); - - - // Go to the statistic tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify stats - table = utils.getTable(wr, 1); - - int alarmBMP = Integer.parseInt(table.getTableCell(1, 2).getText()); - int alarmCMP = Integer.parseInt(table.getTableCell(2, 2).getText()); - int alarmStateful = Integer.parseInt(table.getTableCell(3, 2).getText()); - int alarmStateless = Integer.parseInt(table.getTableCell(4, 2).getText()); - int alarmMDB = Integer.parseInt(table.getTableCell(5, 2).getText()); - int alarmTotal = Integer.parseInt(table.getTableCell(0, 2).getText()); - - assertEquals("It is not the number of Entity with Bean-Managed Persistence in alarm.jar. ", 0, alarmBMP); - assertEquals("It is not the number of Entity with Container-Managed Persistence in alarm.jar. ", 1, alarmCMP); - assertEquals("It is not the number of Stateful Session Bean in alarm.jar. ", 1, alarmStateful); - assertEquals("It is not the number of Stateless Session Bean in alarm.jar. ", 0, alarmStateless); - assertEquals("It is not the number of Message Driven Bean in alarm.jar. ", 1, alarmMDB); - assertEquals("It is not the number of EJBs in alarm.jar. ", 3, alarmTotal); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JAR, selectedTab, "Problem in 'statistic' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER_JSP + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER_JSP)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB_JSP + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB_JSP)); - - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB_JSP); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify infos - table = utils.getTable(wr, 0); - // Name - cell = table.getTableCell(1, 0); - assertEquals("It is not the name of the EJB. ", "AlarmListener", cell.getText()); - cell = table.getTableCell(2, 0); - assertEquals("It is not the name of the EJB. ", "AlarmRecord", cell.getText()); - cell = table.getTableCell(3, 0); - assertEquals("It is not the name of the EJB. ", "View", cell.getText()); - // Type - cell = table.getTableCell(1, 2); - assertEquals("It is not the type of the AlarmListener EJB. ", "MessageDrivenBean", cell.getText()); - cell = table.getTableCell(2, 2); - assertEquals("It is not the type of the AlarmRecord EJB. ", "EntityBean", cell.getText()); - cell = table.getTableCell(3, 2); - assertEquals("It is not the type of the View EJB. ", "StatefulSessionBean", cell.getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JAR, selectedTab, "Problem in 'EJBs' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - } - - - } - - /** - * Test the message driven bean management - * @throws Exception if error occurs - */ - public void testMessageDrivenBean() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - table = utils.getTable(wr, 0); - - // Get links - int nbLink = table.getRowCount() -1; - WebLink[] links = new WebLink[nbLink]; - WebResponse[] responses = new WebResponse[nbLink]; - for (int i = 0; i < nbLink; i++) { - links[i] = table.getTableCell(i + 1, 0).getLinks()[0]; - } - - /* - * Verify the MessageDrivenBean: AlarmListener - */ - links[0].click(); - responses[0] = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - table = utils.getTable(responses[0], 1); - // Name AlarmListener - assertEquals("It is not the name of the MessageDrivenBean. ", "AlarmListener", table.getTableCell(0, 2).getText()); - // File .../alarm.jar - assertTrue("It is not the file of the MessageDrivenBean. ", table.getTableCell(1, 2).getText().endsWith("alarm.jar")); - - // Naming and Classes - table = utils.getTable(responses[0], 4); - // EJB class org.objectweb.alarm.beans.AlarmListenerBean - assertEquals("It is not the EJB class of the MessageDrivenBean. ", "org.objectweb.alarm.beans.AlarmListenerBean", table.getTableCell(0, 2).getText()); - // EJB JNDI Name AlarmListenerHome - assertEquals("It is not the EJB JNDI Name of the MessageDrivenBean. ", "AlarmListenerHome", table.getTableCell(1, 2).getText()); - // EJB HomeClass - assertEquals("It is not the EJB HomeClass of the MessageDrivenBean. ", "", table.getTableCell(2, 2).getText()); - // EJB RemoteClass - assertEquals("It is not the EJB RemoteClass of the MessageDrivenBean. ", "", table.getTableCell(3, 2).getText()); - // EJB LocalHomeClass - assertEquals("It is not the EJB LocalHomeClass of the MessageDrivenBean. ", "", table.getTableCell(4, 2).getText()); - // EJB LocalClass - assertEquals("It is not the EJB LocalClass of the MessageDrivenBean. ", "", table.getTableCell(5, 2).getText()); - - // Mdb Configuration - table = utils.getTable(responses[0], 7); - // JMS Destination name AlarmTopic - assertEquals("It is not the JMS Destination name of the MessageDrivenBean. ", "AlarmTopic", table.getTableCell(0, 2).getText()); - - // Verify tabs - tabTable = utils.getTabTable(responses[0]); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MDB, selectedTab, "Problem in 'AlarmListener' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB)); - assertTrue("The link " + URL_JONASADMIN_DEPENDENCIES + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPENDENCIES)); - - // Go to Dependency - link = responses[0].getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPENDENCIES); - link.click(); - responses[0] = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 6; - - // JMS Destination - table = utils.getTable(responses[0], 0); - assertEquals("The title of table is not 'JMS Destinastion'. ", "JMS Destination", table.getTableCell(0, 0).getText()); - // Topic AlarmTopic - table = utils.getTable(responses[0], 1); - assertEquals("The JMS destination is not 'AlarmTopic'. ", "AlarmTopic", table.getTableCell(0, 0).getText()); - - - // Verify tabs - tabTable = utils.getTabTable(responses[0]); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MDB, selectedTab, "Problem in 'Dependency' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB)); - assertTrue("The link " + URL_JONASADMIN_MDB + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MDB)); - } - } - - - /** - * Test the entity bean management - * @throws Exception if error occurs - */ - public void testEntityBean() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - table = utils.getTable(wr, 0); - - // Get links - int nbLink = table.getRowCount() -1; - WebLink[] links = new WebLink[nbLink]; - WebResponse[] responses = new WebResponse[nbLink]; - for (int i = 0; i < nbLink; i++) { - links[i] = table.getTableCell(i + 1, 0).getLinks()[0]; - } - - /* - * Verify the EntityBean: AlarmRecord - */ - links[1].click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - // EntityBean - table = utils.getTable(responses[1], 3); - assertEquals("The title of table is not 'EntityBean'. ", "EntityBean", table.getTableCell(0, 0).getText()); - - table = utils.getTable(responses[1], 4); - // Name AlarmRecord - assertEquals("It is not the name of the EntityBean. ", "AlarmRecord", table.getTableCell(0, 2).getText()); - // File .../alarm.jar - assertTrue("It is not the file of the EntityBean. ", table.getTableCell(1, 2).getText().endsWith("alarm.jar")); - - // Naming and Classes - table = utils.getTable(responses[1], 7); - // EJB class org.objectweb.alarm.beans.AlarmRecordBean - assertEquals("It is not the EJB class of the EntityBean. ", "org.objectweb.alarm.beans.AlarmRecordBean", table.getTableCell(0, 2).getText()); - // EJB JNDI Name alarmrecord - assertEquals("It is not the EJB JNDI Name of the EntityBean. ", "alarmrecord", table.getTableCell(1, 2).getText()); - // EJB HomeClass org.objectweb.alarm.beans.AlarmRecordHome - assertEquals("It is not the EJB HomeClass of the EntityBean. ", "org.objectweb.alarm.beans.AlarmRecordHome", table.getTableCell(2, 2).getText()); - // EJB RemoteClass org.objectweb.alarm.beans.AlarmRecord - assertEquals("It is not the EJB RemoteClass of the EntityBean. ", "org.objectweb.alarm.beans.AlarmRecord", table.getTableCell(3, 2).getText()); - // EJB LocalHomeClass - assertEquals("It is not the EJB LocalHomeClass of the EntityBean. ", "", table.getTableCell(4, 2).getText()); - // EJB LocalClass - assertEquals("It is not the EJB LocalClass of the EntityBean. ", "", table.getTableCell(5, 2).getText()); - - // Entity Configuration - table = utils.getTable(responses[1], 10); - // Persistency Container-Managed Type of Persistency (CMP/BMP) - assertEquals("It is not the persistency of the EntityBean. ", "Container-Managed", table.getTableCell(0, 2).getText()); - // Passivation Timeout 0 Value in seconds - assertEquals("It is not the passivation timeout of the EntityBean. ", "0", table.getTableCell(1, 2).getText()); - // Inactivity Timeout 0 Maximum time of inactivity (in sec.) before freeing objects - assertEquals("It is not the inactivity timeout of the EntityBean. ", "0", table.getTableCell(2, 2).getText()); - // Lock Policy container-serialized one among CS/CRC/CRU/DB - assertEquals("It is not the lock policy of the EntityBean. ", "container-serialized", table.getTableCell(3, 2).getText()); - // Shared false True if bean accessed outside this ejb server. - assertEquals("It is not the shared value of the EntityBean. ", "false", table.getTableCell(4, 2).getText()); - // Prefetch false True if prefetch optimization wanted. - assertEquals("It is not the prefetch value of the EntityBean. ", "false", table.getTableCell(5, 2).getText()); - // HardLimit false True if hard limit optimization wanted. - assertEquals("It is not the hard limit value of the EntityBean. ", "false", table.getTableCell(6, 2).getText()); - // Initial Pool size 0 Nb of instances preallocated - assertEquals("It is not the initial pool size of the EntityBean. ", "0", table.getTableCell(7, 2).getText()); - // Max number of instances 20 Max nb of instances in memory - assertEquals("It is not the max number of instances of the EntityBean. ", "20", table.getTableCell(8, 2).getText()); - - // Memory Management - int currentPoolSize; - int usedInTX; - int usedOutsideTX; - int unusedButReady; - int markedRemoved; - int currentNbInstances; - int pkNumber; - int passivated; - int total; - // Create instances - createInstances(); - // Synchronize - link = responses[1].getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SYNCHRONIZE); - link.click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(responses[1], 13); - currentPoolSize = Integer.parseInt(table.getTableCell(0, 2).getText()); - usedInTX = Integer.parseInt(table.getTableCell(1, 2).getText()); - usedOutsideTX = Integer.parseInt(table.getTableCell(2, 2).getText()); - unusedButReady = Integer.parseInt(table.getTableCell(3, 2).getText()); - markedRemoved = Integer.parseInt(table.getTableCell(4, 2).getText()); - currentNbInstances = Integer.parseInt(table.getTableCell(5, 2).getText()); - pkNumber = Integer.parseInt(table.getTableCell(6, 2).getText()); - passivated = Integer.parseInt(table.getTableCell(7, 2).getText()); - total = currentPoolSize + usedInTX + usedOutsideTX + unusedButReady + markedRemoved; - // Current number of instances - assertEquals("The current number of instances doesn't correspond to the sum of instances. ", total, currentNbInstances); - assertEquals("It is not the current number of instances. ", getAlarmRecordCurrentNbInstances(), currentNbInstances); - assertEquals("The number of passivated instances is not '" + getAlarmRecordPassivatedInstances() + "' . ", getAlarmRecordPassivatedInstances(), passivated); - assertEquals("The number of PK is not '" + getAlarmRecordPkNumber() + "' . ", getAlarmRecordPkNumber(), pkNumber); - // Reduce - link = responses[1].getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_REDUCE); - link.click(); - // Here we should verify that Reduce instances worked. - // This test is done currently in testEntityBeanReduceInstances method. - - // Verify tabs - tabTable = utils.getTabTable(responses[1]); - if(isDatabaseService()) { - testTabs(tabTable, NUMBER_OF_TABS_FOR_ENTITY_DBM, selectedTab, "Problem in 'AlarmRecord' tab."); - assertTrue("The link " + URL_JONASADMIN_DEPENDENCIES + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_DEPENDENCIES)); - } else { - testTabs(tabTable, NUMBER_OF_TABS_FOR_ENTITY_RAR, selectedTab, "Problem in 'AlarmRecord' tab."); - } - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB)); - - if(isDatabaseService()) { - // dbm started, check for dependency - link = responses[1].getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_DEPENDENCIES); - link.click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 6; - - // Datasource - table = utils.getTable(responses[1], 0); - assertEquals("The title of table is not 'Datasource'. ", "Datasource", table.getTableCell(0, 0).getText()); - // jdbc_1 postgres - table = utils.getTable(responses[1], 1); - assertEquals("It is not 'jdbc_1'. ", "jdbc_1", table.getTableCell(0, 0).getText()); - // Here check getDataSourceName() maybe no datasource deployed ... - String datasourceName = getDataSourceName(); - if (datasourceName != null) { - assertEquals("The datasource is not '" + getDataSourceName() + "'. ", getDataSourceName(), table.getTableCell(0, 2).getText()); - link = table.getTableCell(0, 2).getLinks()[0]; - assertTrue("It is not the correct URL. ", link.getURLString().endsWith("EditDatasource.do?name=" + datasourceName)); - assertEquals("The link is not correct. ", 200, wc.sendRequest(link.getRequest()).getResponseCode()); - // Verify tabs - tabTable = utils.getTabTable(responses[1]); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MDB, selectedTab, "Problem in 'Dependency' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_EJB_CONTAINER + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EJB_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_CONTAINER + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONTAINER)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_VIEW_EJB + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_VIEW_EJB)); - assertTrue("The link " + URL_JONASADMIN_EB + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EB)); - } - } - } - } - - /** - * Test the entity bean management - reduce instances function - * @throws Exception if error occurs - */ - public void testEntityBeanReduceInstances() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - table = utils.getTable(wr, 0); - - // Get links - int nbLink = table.getRowCount() -1; - WebLink[] links = new WebLink[nbLink]; - WebResponse[] responses = new WebResponse[nbLink]; - for (int i = 0; i < nbLink; i++) { - links[i] = table.getTableCell(i + 1, 0).getLinks()[0]; - } - - // Verify the EntityBean: AlarmRecord - links[1].click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - - selectedTab = 5; - // EntityBean - table = utils.getTable(responses[1], 3); - assertEquals("The title of table is not 'EntityBean'. ", "EntityBean", table.getTableCell(0, 0).getText()); - - table = utils.getTable(responses[1], 4); - // Name AlarmRecord - assertEquals("It is not the name of the EntityBean. ", "AlarmRecord", table.getTableCell(0, 2).getText()); - // File .../alarm.jar - assertTrue("It is not the file of the EntityBean. ", table.getTableCell(1, 2).getText().endsWith("alarm.jar")); - - // Memory Management - int unusedButReady; - int currentNbInstances; - int passivated; - // Create instances - createInstances(); - // Synchronize - link = responses[1].getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SYNCHRONIZE); - link.click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(responses[1], 13); - unusedButReady = Integer.parseInt(table.getTableCell(3, 2).getText()); - currentNbInstances = Integer.parseInt(table.getTableCell(5, 2).getText()); - passivated = Integer.parseInt(table.getTableCell(7, 2).getText()); - if (unusedButReady == 0) { - // there is nothing to reduce - return; - } - // Reduce - link = responses[1].getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_REDUCE); - link.click(); - responses[1] = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(responses[1], 13); - // Current number of instances is less big than previous number of instances - int previousNbInstances = currentNbInstances; - assertTrue("The number of instances doesn't decrease when reduce button is clicked. ", previousNbInstances > currentNbInstances); - currentNbInstances = Integer.parseInt(table.getTableCell(5, 2).getText()); - passivated = Integer.parseInt(table.getTableCell(7, 2).getText()); - assertTrue("The number of passivated instances is not positif. ", passivated > 0); - } - } - - /** - * Test the stateful session bean management - * @throws Exception if error occurs - */ - public void testStatefulSessionBean() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to alarm.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - table = utils.getTable(wr, 0); - - // Get links - int nbLink = table.getRowCount() -1; - WebLink[] links = new WebLink[nbLink]; - WebResponse[] responses = new WebResponse[nbLink]; - for (int i = 0; i < nbLink; i++) { - links[i] = table.getTableCell(i + 1, 0).getLinks()[0]; - } - - /* - * Verify the StatefulSessionBean: View - */ - links[2].click(); - responses[2] = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - // StatefulSessionBean - table = utils.getTable(responses[2], 0); - assertEquals("The title of table is not 'StatefulSessionBean'. ", "StatefulSessionBean", table.getTableCell(0, 0).getText()); - - table = utils.getTable(responses[2], 1); - // Name AlarmListener - assertEquals("It is not the name of the StatefulSessionBean. ", "View", table.getTableCell(0, 2).getText()); - // File .../alarm.jar - assertTrue("It is not the file of the StatefulSessionBean. ", table.getTableCell(1, 2).getText().endsWith("alarm.jar")); - - // Naming and Classes - table = utils.getTable(responses[2], 4); - // EJB class org.objectweb.alarm.beans.ViewBean - assertEquals("It is not the EJB class of the StatefulSessionBean. ", "org.objectweb.alarm.beans.ViewBean", table.getTableCell(0, 2).getText()); - // EJB JNDI Name viewhome - assertEquals("It is not the EJB JNDI Name of the StatefulSessionBean. ", "viewhome", table.getTableCell(1, 2).getText()); - // EJB HomeClass org.objectweb.alarm.beans.ViewHome - assertEquals("It is not the EJB HomeClass of the StatefulSessionBean. ", "org.objectweb.alarm.beans.ViewHome", table.getTableCell(2, 2).getText()); - // EJB RemoteClass org.objectweb.alarm.beans.View - assertEquals("It is not the EJB RemoteClass of the StatefulSessionBean. ", "org.objectweb.alarm.beans.View", table.getTableCell(3, 2).getText()); - // EJB LocalHomeClass - assertEquals("It is not the EJB LocalHomeClass of the StatefulSessionBean. ", "", table.getTableCell(4, 2).getText()); - // EJB LocalClass - assertEquals("It is not the EJB LocalClass of the StatefulSessionBean. ", "", table.getTableCell(5, 2).getText()); - - // Session Configuration - WebForm form = responses[2].getForms()[0]; - // sessionTimeOut = 0 - form.setParameter("sessionTimeOut", "0"); - responses[2] = form.submit(); - form = responses[2].getForms()[0]; - assertTrue("The value of sessionTimeOut is not 'no limit'/'pas de limite'. ", form.getParameterValue("sessionTimeOut").indexOf("limit") != -1); - // sessionTimeOut = 10 - form.setParameter("sessionTimeOut", "10"); - responses[2] = form.submit(); - form = responses[2].getForms()[0]; - assertEquals("The value of sessionTimeOut is not '10'. ", "10", form.getParameterValue("sessionTimeOut")); - // empty - form.setParameter("sessionTimeOut", ""); - responses[2] = form.submit(); - form = responses[2].getForms()[0]; - table = utils.getTable(responses[2], 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertEquals("The message is not 'Session timeout cannot be empty'. ", "Session timeout cannot be empty", cell.getText()); - // not a valid integer - form.setParameter("sessionTimeOut", "10.5"); - responses[2] = form.submit(); - form = responses[2].getForms()[0]; - table = utils.getTable(responses[2], 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertEquals("The message is not 'Session timeout not a valid integer !'. ", "Session timeout not a valid integer !", cell.getText()); - // negative value - form.setParameter("sessionTimeOut", "-1"); - responses[2] = form.submit(); - table = utils.getTable(responses[2], 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertFalse("An error was found but there is no text for a negative value for 'Current session TimeOut'. ", cell.getText().equals("")); - } - } - - - /** - * Test the stateless session bean management - * @throws Exception if error occurs - */ - public void testStatelessSessionBean() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "olstore"; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add olstore.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to olstoreejb.jar page - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, ear); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Go to the Ejb tab - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_EJB); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - table = utils.getTable(wr, 0); - - // Get a link to a StatelessSessionBean - int rowLastStatelessSB = utils.getRow("StatelessSessionBean", table, 2).intValue(); - if (rowLastStatelessSB == -1) { - fail("No Stateless Session Bean found for the ear '" + ear + "'. "); - } - String sbName = table.getTableCell(rowLastStatelessSB, 0).getText(); - link = table.getTableCell(rowLastStatelessSB, 0).getLinks()[0]; - if (link == null) { - fail("No link found for the StatelessSessionBean '" + sbName + "'. "); - } - - /* - * verify the StatelessSessionBean - */ - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - // StatelessSessionBean - table = utils.getTable(wr, 0); - assertEquals("The title of table is not 'StatelessSessionBean'. ", "StatelessSessionBean", table.getTableCell(0, 0).getText()); - - table = utils.getTable(wr, 1); - // Name UserHelper - assertEquals("It is not the name of the StatelessSessionBean. ", sbName, table.getTableCell(0, 2).getText()); - // File .../olstoreejb.jar - assertTrue("It is not the file of the StatelessSessionBean. ", table.getTableCell(1, 2).getText().endsWith("olstoreejb.jar")); - - // Naming and Classes - String ejbClass = getStatelessSBClassName(sbName, "ejbClass"); - if (ejbClass == null) { - ejbClass = ""; - } - String jndiName = getStatelessSBClassName(sbName, "jndiName"); - if (jndiName == null) { - jndiName = ""; - } - String homeClass = getStatelessSBClassName(sbName, "homeClass"); - if (homeClass == null) { - homeClass = ""; - } - String remoteClass = getStatelessSBClassName(sbName, "remoteClass"); - if (remoteClass == null) { - remoteClass = ""; - } - String localHomeClass = getStatelessSBClassName(sbName, "localHomeClass"); - if (localHomeClass == null) { - localHomeClass = ""; - } - String localClass = getStatelessSBClassName(sbName, "localClass"); - if (localClass == null) { - localClass = ""; - } - table = utils.getTable(wr, 4); - // EJB class olstore.session.helper.UserHelperSession - assertEquals("It is not the EJB class of the StatelessSessionBean. ", ejbClass, table.getTableCell(0, 2).getText()); - // EJB JNDI Name UserHelperLocal - assertEquals("It is not the EJB JNDI Name of the StatelessSessionBean. ", jndiName, table.getTableCell(1, 2).getText()); - // EJB HomeClass - assertEquals("It is not the EJB HomeClass of the StatelessSessionBean. ", homeClass, table.getTableCell(2, 2).getText()); - // EJB RemoteClass - assertEquals("It is not the EJB RemoteClass of the StatelessSessionBean. ", remoteClass, table.getTableCell(3, 2).getText()); - // EJB LocalHomeClass olstore.session.helper.UserHelperLocalHome - assertEquals("It is not the EJB LocalHomeClass of the StatelessSessionBean. ", localHomeClass, table.getTableCell(4, 2).getText()); - // EJB LocalClass olstore.session.helper.UserHelperLocal - assertEquals("It is not the EJB LocalClass of the StatelessSessionBean. ", localClass, table.getTableCell(5, 2).getText()); - - // Instances - int poolSize = getStatelessSBInstance(sbName, "poolSize"); - int cacheSize = getStatelessSBInstance(sbName, "cacheSize"); - table = utils.getTable(wr, 7); - // - assertEquals("It is not the correct Pool size of the StatelessSessionBean. ", "" + poolSize, table.getTableCell(0, 2).getText()); - assertEquals("It is not the correct Cache size of the StatelessSessionBean. ", "" + cacheSize, table.getTableCell(1, 2).getText()); - - // Session Configuration - int minPoolSize = getStatelessSBInstance(sbName, "minPoolSize"); - int maxCacheSize = getStatelessSBInstance(sbName, "maxCacheSize"); - table = utils.getTable(wr, 10); - assertEquals("It is not the correct Min Pool size of the StatelessSessionBean. ", "" + minPoolSize, table.getTableCell(0, 2).getText()); - assertEquals("It is not the correct Max Cache size of the StatelessSessionBean. ", "" + maxCacheSize, table.getTableCell(1, 2).getText()); - - WebForm form = wr.getForms()[0]; - // sessionTimeOut = 0 - form.setParameter("sessionTimeOut", "0"); - wr = form.submit(); - form = wr.getForms()[0]; - assertTrue("The value of sessionTimeOut is not 'no limit'/'pas de limite'. ", form.getParameterValue("sessionTimeOut").indexOf("limit") != -1); - // sessionTimeOut = 10 - form.setParameter("sessionTimeOut", "10"); - wr = form.submit(); - form = wr.getForms()[0]; - assertEquals("The value of sessionTimeOut is not '10'. ", "10", form.getParameterValue("sessionTimeOut")); - // empty - form.setParameter("sessionTimeOut", ""); - wr = form.submit(); - form = wr.getForms()[0]; - table = utils.getTable(wr, 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertEquals("The message is not 'Session timeout cannot be empty'. ", "Session timeout cannot be empty", cell.getText()); - // not a valid integer - form.setParameter("sessionTimeOut", "10.5"); - wr = form.submit(); - form = wr.getForms()[0]; - table = utils.getTable(wr, 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertEquals("The message is not 'Session timeout not a valid integer !'. ", "Session timeout not a valid integer !", cell.getText()); - // negative value - form.setParameter("sessionTimeOut", "-1"); - wr = form.submit(); - table = utils.getTable(wr, 0); - cell = table.getTableCell(0, 0); - assertEquals("There is not an error. ", "errors", cell.getAttribute("class")); - assertFalse("An error was found but there is no text for a negative value for 'Current session TimeOut'. ", cell.getText().equals("")); - } - - - } - - /** - * Test statistic - * @throws Exception if error occurs - * - */ - public void testStatistics() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell selectedCell; - TableCell cell; - String ear = "alarm"; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isEar() && jProp.isEjb()) { - // Add alarm.ear - useEar(ear); - - // Go to ejb container - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_EJB_CONTAINER); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Get jar Links - table = utils.getTable(wr, 0); - int nbLink = table.getRowCount() -1; - WebLink[] links = new WebLink[nbLink]; - WebResponse[] responses = new WebResponse[nbLink]; - WebTable tableStat; - int[] jarBMP = new int[nbLink]; - int[] jarCMP = new int[nbLink]; - int[] jarStateful = new int[nbLink]; - int[] jarStateless = new int[nbLink]; - int[] jarMDB = new int[nbLink]; - int[] jarTotal = new int[nbLink]; - - int totalBMP = 0; - int totalCMP = 0; - int totalStateful = 0; - int totalStateless = 0; - int totalMDB = 0; - int totalTotal = 0; - - int allBMP; - int allCMP; - int allStateful; - int allStateless; - int allMDB; - int allTotal; - - // Go to statistics - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_CONTAINERS_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - tableStat = utils.getTable(wr, 1); - allBMP = Integer.parseInt(tableStat.getTableCell(1, 2).getText()); - allCMP = Integer.parseInt(tableStat.getTableCell(2, 2).getText()); - allStateful = Integer.parseInt(tableStat.getTableCell(3, 2).getText()); - allStateless = Integer.parseInt(tableStat.getTableCell(4, 2).getText()); - allMDB = Integer.parseInt(tableStat.getTableCell(5, 2).getText()); - allTotal = Integer.parseInt(tableStat.getTableCell(0, 2).getText()); - int total = allBMP + allCMP + allStateful + allStateless + allMDB; - assertEquals("It is not the number of EJBs in all EJB containers. ", total, allTotal); - - for (int i = 0; i < nbLink; i++) { - links[i] = table.getTableCell(i + 1, 0).getLinks()[0]; - links[i].click(); - responses[i] = wc.getFrameContents(FRAME_CONTENT); - - // Go to the statistic tab - link = responses[i].getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - // Verify stats - tableStat = utils.getTable(wr, 1); - - jarBMP[i] = Integer.parseInt(tableStat.getTableCell(1, 2).getText()); - jarCMP[i] = Integer.parseInt(tableStat.getTableCell(2, 2).getText()); - jarStateful[i] = Integer.parseInt(tableStat.getTableCell(3, 2).getText()); - jarStateless[i] = Integer.parseInt(tableStat.getTableCell(4, 2).getText()); - jarMDB[i] = Integer.parseInt(tableStat.getTableCell(5, 2).getText()); - jarTotal[i] = Integer.parseInt(tableStat.getTableCell(0, 2).getText()); - total = jarBMP[i] + jarCMP[i] + jarStateful[i] +jarStateless[i] + jarMDB[i]; - assertEquals("It is not the number of EJBs in " + links[i].getText(), total, jarTotal[i]); - - tableStat = utils.getTable(wr, 4); - int allTmpBMP = Integer.parseInt(tableStat.getTableCell(1, 2).getText()); - int allTmpCMP = Integer.parseInt(tableStat.getTableCell(2, 2).getText()); - int allTmpStateful = Integer.parseInt(tableStat.getTableCell(3, 2).getText()); - int allTmpStateless = Integer.parseInt(tableStat.getTableCell(4, 2).getText()); - int allTmpMDB = Integer.parseInt(tableStat.getTableCell(5, 2).getText()); - int allTmpTotal = Integer.parseInt(tableStat.getTableCell(0, 2).getText()); - - assertEquals("It is not the number of BMP in all EJB containers for the jar " + links[i].getText() + ". ", allBMP, allTmpBMP); - assertEquals("It is not the number of CMP in all EJB containers for the jar " + links[i].getText() + ". ", allCMP, allTmpCMP); - assertEquals("It is not the number of Stateful SB in all EJB containers for the jar " + links[i].getText() + ". ", allStateful, allTmpStateful); - assertEquals("It is not the number of Stateless SB in all EJB containers for the jar " + links[i].getText() + ". ", allStateless, allTmpStateless); - assertEquals("It is not the number of MDB in all EJB containers for the jar " + links[i].getText() + ". ", allMDB, allTmpMDB); - assertEquals("It is not the number of all EJBs in all EJB containers for the jar " + links[i].getText() + ". ", allTotal, allTmpTotal); - - totalBMP += jarBMP[i]; - totalCMP += jarCMP[i]; - totalStateful += jarStateful[i]; - totalStateless += jarStateless[i]; - totalMDB += jarMDB[i]; - totalTotal += jarTotal[i]; - } - - assertEquals("It is not the number of all BMPs. ", totalBMP, allBMP); - assertEquals("It is not the number of all CMPs. ", totalCMP, allCMP); - assertEquals("It is not the number of all stateful SBs. ", totalStateful, allStateful); - assertEquals("It is not the number of all stateless SBs. ", totalStateless, allStateless); - assertEquals("It is not the number of all MDBs. ", totalMDB, allMDB); - assertEquals("It is not the number of all EJBs. ", totalTotal, allTotal); - } - } - - /** - * Use Alarm Demo for creating instances - * @throws Exception if an error occurs - */ - private void createInstances() throws Exception { - WebConversation wc2 = new WebConversation(); - String urlAlarm = prefixUrl + "/alarm/secured/list.jsp"; - // Start the alarm demo - wc2.setAuthorization("jonas", "jonas"); - WebResponse wr = wc2.getResponse(urlAlarm); - } - - /** - * Get the current number of instances of Alarm Record - * @return the current number of instances - * @throws Exception if an error occurs - */ - private int getAlarmRecordCurrentNbInstances() throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=EntityBean,name=AlarmRecord,EJBModule=alarm,J2EEApplication=alarm,J2EEServer=jonas"); - - return ((Integer) server.getAttribute(on, "cacheSize")).intValue(); - } - - /** - * Get the current number of instances of Alarm Record - * @return the current number of instances - * @throws Exception if an error occurs - */ - private int getAlarmRecordPassivatedInstances() throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=EntityBean,name=AlarmRecord,EJBModule=alarm,J2EEApplication=alarm,J2EEServer=jonas"); - - Integer[] nbInstanceList = (Integer[]) server.getAttribute(on, "entityCounters"); - return ((Integer) nbInstanceList[3]).intValue(); - } - - /** - * Get the pk number for Alarm Record - * @return the nmber of pk in memory - * @throws Exception if an error occurs - */ - private int getAlarmRecordPkNumber() throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=EntityBean,name=AlarmRecord,EJBModule=alarm,J2EEApplication=alarm,J2EEServer=jonas"); - - Integer[] nbInstanceList = (Integer[]) server.getAttribute(on, "entityCounters"); - return ((Integer) nbInstanceList[5]).intValue(); - } - - /** - * Get the name of the datasource - * @return name of the datasource - * @throws Exception if an error occurs - */ - private String getDataSourceName() throws Exception { - String name = null; - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=JDBCDataSource,*"); - Iterator it = server.queryNames(on, null).iterator(); - if (it.hasNext()) { - ObjectName jdbcDataSourceON = (ObjectName) it.next(); - name = (String) server.getAttribute(jdbcDataSourceON, "name"); - } - return name; - } - - /** - * Get the class name of a StatelessSessionBean - * @param sbName name of the StatelessSessionBean - * @param attributName {"ejbClass", "jndiName", "homeClass", "remoteClass", "localHomeClass", "localClass"} - * @return name of the class - * @throws Exception if an error occurs - */ - private String getStatelessSBClassName(String sbName, String attributName) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=StatelessSessionBean,name=" + sbName + ",EJBModule=olstoreejb,J2EEApplication=olstore,J2EEServer=jonas"); - String name = (String) server.getAttribute(on, attributName); - return name; - } - - /** - * Get number of instances of a StatelessSessionBean - * @param sbName name of the StatelessSessionBean - * @param attributName {"nbInstances", "minPoolSize", "maxPoolSize"} - * @return name of the class - * @throws Exception if an error occurs - */ - private int getStatelessSBInstance(String sbName, String attributName) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:j2eeType=StatelessSessionBean,name=" + sbName + ",EJBModule=olstoreejb,J2EEApplication=olstore,J2EEServer=jonas"); - Integer nb = (Integer) server.getAttribute(on, attributName); - return nb.intValue(); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - - public static int getNumberOfTabsForMdb() { - return NUMBER_OF_TABS_FOR_MDB; - } - - public static int getMdbTabIndex() { - return MDB_TAB_INDEX; - } - - public static String getMdbTabText() { - return TDB_TAB_TEXT; - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminWebContainer.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminWebContainer.java deleted file mode 100755 index 6857c42773..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/container/F_JonasAdminWebContainer.java +++ /dev/null @@ -1,733 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.container; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.Button; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing web container in jonasAdmin - * @author Paul Kemler - * - */ -public class F_JonasAdminWebContainer extends JonasAdminTestCase { - - /** - * URL of Web containers - */ - private static final String URL_JONASADMIN_WEB_CONTAINERS = "ListWebContainers.do"; - - /** - * URL of Web Container - */ - private static final String URL_JONASADMIN_WEBAPP = "EditWebApp.do"; - - /** - * URL of edit war - */ - private static final String URL_JONASADMIN_EDIT_WAR = "EditWar.do"; - - /** - * URL of servlets - */ - private static final String URL_JONASADMIN_SERVLETS = "warServlets.jsp"; - - /** - * URL of web.xml - */ - private static final String URL_JONASADMIN_WEB_XML = "warWebXml.jsp"; - - /** - * URL of web.xml - */ - private static final String URL_JONASADMIN_JONAS_XML = "warJonasXml.jsp"; - - /** - * URL of web container: ALARM - */ - private static final String URL_JONASADMIN_WEBAPP_ALARM = "alarm"; - - /** - * URL of the cancel button - */ - private static final String BUTTON_SERVLET_CANCEL = "EditWebAppCatalina.do"; - - /** - * URL of the save all button - */ - private static final String BUTTON_SERVLET_SAVE_ALL = "SaveCatalina.do"; - - /** - * URL of the stop button - */ - private static final String BUTTON_WEBAPP_STOP = "javascript:submitHidden('webAppCatalinaForm','action','stop')"; - - /** - * URL of the start button - */ - private static final String BUTTON_WEBAPP_START = "javascript:submitHidden('webAppCatalinaForm','action','start')"; - - /** - * URL of the reload button - */ - private static final String BUTTON_WEBAPP_RELOAD = "javascript:submitHidden('webAppCatalinaForm','action','reload')"; - - /** - * number of tabs when you are in web containers - */ - private static final int NUMBER_OF_TABS_FOR_WEB_CONTAINERS = 1; - - /** - * number of tabs when you are in ROOT container - */ - private static final int NUMBER_OF_TABS_FOR_ROOT = 6; - - /** - * number of tabs when you are in stopped ROOT container - */ - private static final int NUMBER_OF_TABS_FOR_STOPPED_ROOT = 4; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminWebContainer(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminWebContainer(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminWebContainer.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test a Web Container that it is not in an ear - * @throws Exception if error occurs - * - */ - public void testWebContainerNoInEar() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - TableCell cell; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Go to web containers - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB_CONTAINERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify there is a link for each context - table = utils.getTable(wr, 0); - for (int i = 1; i < table.getRowCount(); i++) { - cell = table.getTableCell(i, 0); - assertEquals("There is no one link for the context : " + cell.getText(), 1, cell.getLinks().length); - } - - // Verify there is 1 tab - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_WEB_CONTAINERS, selectedTab, "Problem in 'Web Containers' tab."); - - // Go to ROOT - int rowRoot = utils.getFirstRow("ROOT", table, 0).intValue(); - if (rowRoot == -1) { - fail("'ROOT' is not found in the table of Web Containers page. "); - } - link = table.getTableCell(rowRoot, 0).getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify CONTEXT - if (jProp.isCatalina()) { - table = utils.getTable(wr, 4); - testContextTableCatalina(table, "/", "localhost"); - } else { - table = utils.getTable(wr, 1); - testContextTableJetty(table, "/", "JOnAS Package index", "true"); - } - - // Verify tabs - tabTable = utils.getTabTable(wr); - if (!jProp.isCatalina()) { - if (NUMBER_OF_TABS_FOR_ROOT != (tabTable.getColumnCount() + 1) / 2) { - // There is not Servlet tab. - throw new IllegalStateException("Not implemented: JETTY. "); - } - } - testTabs(tabTable, NUMBER_OF_TABS_FOR_ROOT, selectedTab, "Problem in 'ROOT' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_EDIT_WAR + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT_WAR)); - assertTrue("The link " + URL_JONASADMIN_SERVLETS + " is not found in the fourth tab. ", tabTable.getTableCell( - 0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVLETS)); - assertTrue("The link " + URL_JONASADMIN_WEB_XML + " is not found in the fifth tab. ", tabTable.getTableCell(0, - 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_XML)); - assertTrue("The link " + URL_JONASADMIN_JONAS_XML + " is not found in the sixth tab. ", tabTable.getTableCell( - 0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JONAS_XML)); - - if (jProp.isCatalina()) { - // Verify Save button - wr = testSaveButton(wr); - - // Verify settings - wr = testModifySettings(wr); - - // Verify actions - wr = testActions(wr, utils); - } - - // Go to EditWar - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_EDIT_WAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify Web container - table = utils.getTable(wr, 1); - testWebContainerTable(table, "", "localhost", "ctxroot.war", "true"); - - // Verify it is not 'In application container' - try { - table = utils.getTable(wr, 3); - fail("There is the 'In application container' table. "); - } catch (Exception e) { - // It is ok - } - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_ROOT, selectedTab, "Problem in 'autoload/ctxroot.war' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_WEBAPP + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEBAPP)); - assertTrue("The link " + URL_JONASADMIN_SERVLETS + " is not found in the fourth tab. ", tabTable.getTableCell( - 0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVLETS)); - assertTrue("The link " + URL_JONASADMIN_WEB_XML + " is not found in the fifth tab. ", tabTable.getTableCell(0, - 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_XML)); - assertTrue("The link " + URL_JONASADMIN_JONAS_XML + " is not found in the sixth tab. ", tabTable.getTableCell( - 0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JONAS_XML)); - - // Go to Servlet tab - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVLETS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify servlets - wr = testServlet(wr, utils); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_ROOT, selectedTab, "Problem in 'Servlets' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_WEBAPP + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEBAPP)); - assertTrue("The link " + URL_JONASADMIN_EDIT_WAR + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT_WAR)); - assertTrue("The link " + URL_JONASADMIN_WEB_XML + " is not found in the fifth tab. ", tabTable.getTableCell(0, - 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_XML)); - assertTrue("The link " + URL_JONASADMIN_JONAS_XML + " is not found in the sixth tab. ", tabTable.getTableCell( - 0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JONAS_XML)); - - // Go to Web.xml tab - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB_XML); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - - // Verify Web Xml - // TODO - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_ROOT, selectedTab, "Problem in 'Web xml' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_WEBAPP + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEBAPP)); - assertTrue("The link " + URL_JONASADMIN_EDIT_WAR + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT_WAR)); - assertTrue("The link " + URL_JONASADMIN_SERVLETS + " is not found in the fourth tab. ", tabTable.getTableCell( - 0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVLETS)); - assertTrue("The link " + URL_JONASADMIN_JONAS_XML + " is not found in the sixth tab. ", tabTable.getTableCell( - 0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JONAS_XML)); - - // Go to Jonas Xml tab - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_JONAS_XML); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 6; - - // Verify jonas.xml - // TODO - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_ROOT, selectedTab, "Problem in 'JOnAS xml' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_WEBAPP + " is not found in the second tab. ", tabTable.getTableCell(0, - 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEBAPP)); - assertTrue("The link " + URL_JONASADMIN_EDIT_WAR + " is not found in the third tab. ", tabTable.getTableCell(0, - 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT_WAR)); - assertTrue("The link " + URL_JONASADMIN_SERVLETS + " is not found in the fourth tab. ", tabTable.getTableCell( - 0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVLETS)); - assertTrue("The link " + URL_JONASADMIN_WEB_XML + " is not found in the fifth tab. ", tabTable.getTableCell(0, - 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_XML)); - - } - - /** - * Test a Web Container that it is in an ear - * @throws Exception if error occurs - * - */ - public void testWebContainerInEar() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - TableCell cell; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Add alarm.ear - useEar("alarm"); - - // Go to web containers - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB_CONTAINERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to ALARM - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEBAPP_ALARM); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to EditWar - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_EDIT_WAR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify 'In application container' - table = utils.getTable(wr, 1); - try { - table = utils.getTable(wr, 4); - } catch (Exception e) { - fail("There is not the 'In application container' table. "); - } - testInApplicationContainer(table); - - } - - /** - * Test path and host in the context table - * @param table the context table - * @param path the expected value of the path - * @param host the expected value of the host - * @throws Exception if an error occurs for going to the url - */ - private void testContextTableCatalina(WebTable table, String path, String host) throws Exception { - WebConversation wc2 = new WebConversation(); - // Path / - assertEquals("It is not the expected path. ", path, table.getTableCell(0, 2).getText()); - String urlRoot = prefixUrl + path; - int code = wc2.getResponse(urlRoot).getResponseCode(); - assertEquals("The page " + urlRoot + " is not found. ", 200, code); - // Host localhost - assertEquals("It is not the expected host. ", host, table.getTableCell(1, 2).getText()); - } - - /** - * Test path and host in the context table - * @param table the context table - * @param path the expected value of the path - * @param name the expected value of the context name - * @param started the expected value of 'Started' - * @throws Exception if an error occurs for going to the url - */ - private void testContextTableJetty(WebTable table, String path, String name, String started) throws Exception { - WebConversation wc2 = new WebConversation(); - // Path / - assertEquals("It is not the expected path. ", path, table.getTableCell(0, 2).getText()); - String urlRoot = prefixUrl + path; - int code = wc2.getResponse(urlRoot).getResponseCode(); - assertEquals("The page " + urlRoot + " is not found. ", 200, code); - // Name JOnAS Package index - assertEquals("It is not the expected name of the context. ", name, table.getTableCell(1, 2).getText()); - // Started true - assertEquals("It is not the expected value of 'Started'. ", started, table.getTableCell(2, 2).getText()); - } - - /** - * Test context root, host name, path and Java 2 delegation model in the web container table - * @param table the web container table - * @param contextRoot the expected value of the context root - * @param hostName the expected value of the host name - * @param path the end of the path value - * @param model the expected value of the Java 2 delegation model - */ - private void testWebContainerTable(WebTable table, String contextRoot, String hostName, String path, String model) { - // Context root - assertEquals("It is not the context root. ", contextRoot, table.getTableCell(0, 2).getText()); - // Host name localhost - assertEquals("It is not the host name. ", hostName, table.getTableCell(1, 2).getText()); - // Path /home/kemlerp/base/jonas/webapps/autoload/ctxroot.war - assertTrue("It is not the end of the path. ", table.getTableCell(2, 2).getText().endsWith(path)); - // Java 2 delegation model true - assertEquals("It is not the Java 2 delegation model value. ", model, table.getTableCell(3, 2).getText()); - } - - /** - * Test if the save button goes to the servlet server page and if save all and cancel buttons return to the previous page - * @param wr the content frame in the WebApp tab and catalina is used. - * @return wr the content frame in the WebApp tab. - * @throws Exception if an error occurs. - */ - private WebResponse testSaveButton(WebResponse wr) throws Exception { - String beginTime; - String endTime; - WebLink link; - WebForm form = wr.getForms()[0]; - String previousPage = wr.getElementsWithAttribute("class", "contentTitle")[0].getText(); - // Get the 3rd button : 'btnSave' - Button button = form.getButtons()[2]; - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - assertTrue("The save button doesn't go to 'jonasserver/servletServer.jsp'. ", wr.getText().indexOf( - "jonasserver/servletServer.jsp") != -1); - // Get time - beginTime = getTime(); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_SERVLET_SAVE_ALL); - WebResponse wrSaveAll = wc.sendRequest(link.getRequest()); - // Get time - endTime = getTime(); - // Delete created files: server.xml - JonasAdminFiles.recoverServerConf(beginTime, endTime); - assertEquals("The cancel button of the servlet server page doesn't go back to '" + previousPage + "' page. !", - previousPage, wrSaveAll.getElementsWithAttribute("class", "contentTitle")[0].getText()); - - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_SERVLET_CANCEL); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - assertEquals("The cancel button of the servlet server page doesn't go back to '" + previousPage + "' page. !", - previousPage, wr.getElementsWithAttribute("class", "contentTitle")[0].getText()); - - return wr; - } - - /** - * Test modification of settings - * @param wr the content frame in the WebApp tab. - * @return wr the content frame in the WebApp tab. - * @throws Exception if an error occurs. - */ - private WebResponse testModifySettings(WebResponse wr) throws Exception { - WebForm form = wr.getForms()[0]; - form.setParameter("cookies", "false"); - form.setParameter("reloadable", "true"); - form.setParameter("swallowOutput", "true"); - Button button = form.getSubmitButton("btn_apply"); - button.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - form = wr.getForms()[0]; - String cookies = form.getParameterValue("cookies"); - String reloadable = form.getParameterValue("reloadable"); - String swallowOutput = form.getParameterValue("swallowOutput"); - - assertEquals("The value of the cookie parameter is not 'false'. ", "false", cookies); - assertEquals("The value of the reloadable parameter is not 'true'. ", "true", reloadable); - assertEquals("The value of the swallowOutput parameter is not 'true'. ", "true", swallowOutput); - - return wr; - } - - /** - * Test actions Start, Stop and Reload - * @param wr the content frame in the WebApp tab. - * @param selectedTab the selected Tab. - * @return the content frame in the WebApp tab. - * @throws Exception if an error occurs. - */ - private WebResponse testActions(WebResponse wr, JonasAdminUtils utils) throws Exception { - WebLink link; - TableCell reloadCell; - TableCell startCell; - TableCell stopCell; - WebTable tabTable; - WebConversation wc2 = new WebConversation(); - int selectedTab = 2; - WebTable table = utils.getTable(wr, 1).getTableCell(0, 0).getTables()[0]; - startCell = table.getTableCell(0, 1); - // No link for start button - assertEquals("There is a link for the 'Start' button. ", 0, startCell.getLinks().length); - // Disabled button - assertEquals("The 'Start' button is not grey. ", 1, - startCell.getElementsWithAttribute("class", "btnDisabled").length); - - // Stop action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_WEBAPP_STOP); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 1).getTableCell(0, 0).getTables()[0]; - reloadCell = table.getTableCell(0, 0); - startCell = table.getTableCell(0, 1); - stopCell = table.getTableCell(0, 2); - // No link for stop button and reload button - assertEquals("There is a link for the 'Reload' button. ", 0, reloadCell.getLinks().length); - assertEquals("There is a link for the 'Stop' button. ", 0, stopCell.getLinks().length); - // Disabled button - assertEquals("The 'Reload' button is not grey. ", 1, reloadCell - .getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Start' button is grey. ", 0, - startCell.getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Stop' button is not grey. ", 1, - stopCell.getElementsWithAttribute("class", "btnDisabled").length); - // Verify URL - String urlRoot = prefixUrl + "/"; - int code = wc2.getResponse(urlRoot).getResponseCode(); - assertTrue("The page " + urlRoot + " is found. ", code != 200); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_STOPPED_ROOT, selectedTab, "Problem in 'ROOT' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_WEB_CONTAINERS + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_WEB_CONTAINERS)); - assertTrue("The link " + URL_JONASADMIN_EDIT_WAR + " is not found in the second tab. ", tabTable.getTableCell( - 0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT_WAR)); - assertTrue("The link " + URL_JONASADMIN_JONAS_XML + " is not found in the sixth tab. ", tabTable.getTableCell( - 0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_JONAS_XML)); - - // Start action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_WEBAPP_START); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 1).getTableCell(0, 0).getTables()[0]; - reloadCell = table.getTableCell(0, 0); - startCell = table.getTableCell(0, 1); - stopCell = table.getTableCell(0, 2); - // No link for start button - assertEquals("There is a link for the 'Start' button. ", 0, startCell.getLinks().length); - // Disabled button - assertEquals("The 'Reload' button is grey. ", 0, - reloadCell.getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Start' button is not grey. ", 1, - startCell.getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Stop' button is grey. ", 0, stopCell.getElementsWithAttribute("class", "btnDisabled").length); - // Verify URL - code = wc2.getResponse(urlRoot).getResponseCode(); - assertEquals("The page " + urlRoot + " is not found. ", 200, code); - - // Reload action - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, BUTTON_WEBAPP_RELOAD); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 1).getTableCell(0, 0).getTables()[0]; - reloadCell = table.getTableCell(0, 0); - startCell = table.getTableCell(0, 1); - stopCell = table.getTableCell(0, 2); - // No link for start button - assertEquals("There is a link for the 'Start' button. ", 0, startCell.getLinks().length); - // Disabled button - assertEquals("The 'Reload' button is grey. ", 0, - reloadCell.getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Start' button is not grey. ", 1, - startCell.getElementsWithAttribute("class", "btnDisabled").length); - assertEquals("The 'Stop' button is grey. ", 0, stopCell.getElementsWithAttribute("class", "btnDisabled").length); - // Verify URL - code = wc2.getResponse(urlRoot).getResponseCode(); - assertEquals("The page " + urlRoot + " is not found. ", 200, code); - - return wr; - } - - /** - * Test servlet infos - * @param wr the content frame in the Servlet tab. - * @param utils jonasAdmin utils - * @return WebResponse the content frame - * @throws Exception if an error occurs - */ - private WebResponse testServlet(WebResponse wr, JonasAdminUtils utils) throws Exception { - WebLink link; - WebTable table; - table = utils.getTable(wr, 0); - int nbServlets = Integer.parseInt(table.getTableCell(0, 2).getText()); - - table = utils.getTable(wr, 2); - // Number of rows = number of servlets - assertEquals("There are not '" + nbServlets + "' rows in the 'Name' table. ", nbServlets, table.getRowCount()); - - // Verify Servlets with a MBean link - for (int i = 0; i < nbServlets; i++) { - String name = table.getTableCell(i, 0).getText(); - int code = wc.getResponse(prefixUrl + "/jonasAdmin/ListMBeanDetails.do?select=" + name).getResponseCode(); - assertEquals("The MBean details for '" + name + "' are not found. ", 200, code); - } - - wc.getResponse(urlWelcome); - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_WEB_CONTAINERS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 0); - int rowRoot = utils.getFirstRow("ROOT", table, 0).intValue(); - if (rowRoot != -1) { - link = table.getTableCell(rowRoot, 0).getLinks()[0]; - link.click(); - } else { - fail("The WebContainer 'ROOT' was not found in the web container list. "); - } - wr = wc.getFrameContents(FRAME_CONTENT); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVLETS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - return wr; - } - - private void testInApplicationContainer(WebTable table) throws Exception { - // Verify path - String path = table.getTableCell(0, 2).getText(); - assertTrue("The path doesn't end with 'apps" + File.separator + "alarm.ear'. ", path.endsWith("apps" - + File.separator + "alarm.ear")); - - // Verify link - String name = table.getTableCell(0, 0).getText(); - assertEquals("The name of the application container is not 'alarm.ear'. ", "alarm.ear", name); - WebLink link = table.getTableCell(0, 0).getLinks()[0]; - try { - int code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertEquals("The page 'alarm.ear' is not found (link = '" + link.getURLString() + "'). ", 200, code); - } catch (Exception e) { - fail("The link '" + link.getURLString() + "' creates an error. "); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/C_JonasAdminServiceDatabase.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/C_JonasAdminServiceDatabase.java deleted file mode 100755 index a1940d1172..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/C_JonasAdminServiceDatabase.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.database; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test database service - * Test : - database service - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceDatabase extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceDatabase(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminDatabase.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/F_JonasAdminDatabase.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/F_JonasAdminDatabase.java deleted file mode 100755 index a9972894f1..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/database/F_JonasAdminDatabase.java +++ /dev/null @@ -1,500 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.database; - -import java.util.Properties; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.Query; -import javax.management.QueryExp; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminFiles; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing database service - * @author Paul Kemler - * - */ -public class F_JonasAdminDatabase extends JonasAdminTestCase { - - /** - * URL of database service - */ - private static final String URL_JONASADMIN_SERVICE_DATABASE = "ListDatabases.do"; - - /** - * URL of datasource statistics - */ - private static final String URL_JONASADMIN_EDIT = "EditDatasource.do"; - - /** - * URL of datasource statistics - */ - private static final String URL_JONASADMIN_STATISTICS = "EditDatasourceStat.do"; - - /** - * URL of database service - */ - private static final String URL_JONASADMIN_USED_BY = "datasourceUsedBy.jsp"; - - /** - * number of tabs when you are in the datasource tab - */ - private static final int NUMBER_OF_TABS_FOR_DATASOURCE = 1; - - /** - * number of tabs when the datasource is not used - */ - private static final int NUMBER_OF_TABS_FOR_DATASOURCE_NOT_USED = 3; - - /** - * number of tabs when the datasource is used - */ - private static final int NUMBER_OF_TABS_FOR_DATASOURCE_USED = 4; - - /** - * name of the datasource - */ - private String name = ""; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDatabase(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDatabase(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDatabase.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test information of a JDBC - * @throws Exception if error occurs - * - */ - public void testJDBCInfo() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - if (jProp.isDbm()) { - // Add datasource - name = "new_datasource_info"; - String datasourceName = name; - String datasourceUrl = "jdbc:hsqldb:hsql://localhost:9001/db_jonas"; - String datasourceClassname = "org.hsqldb.jdbcDriver"; - String datasourceUsername = "jonas"; - String datasourcePassword = "jonas"; - String datasourceMapper = "rdb.hsql"; - String jdbcConnchecklevel = "0"; - String jdbcConnmaxage = "1440"; - String jdbcMaxopentime = "60"; - String jdbcConnteststmt = "select 1"; - String jdbcMinconpool = "10"; - String jdbcMaxconpool = "30"; - String jdbcSamplingperiod = "30"; - String jdbcMaxwaittime = "5"; - String jdbcMaxwaiters = "100"; - - Properties properties = new Properties(); - properties.put("datasource.name", datasourceName); - properties.put("datasource.url", datasourceUrl); - properties.put("datasource.classname", datasourceClassname); - properties.put("datasource.username", datasourceUsername); - properties.put("datasource.password", datasourcePassword); - properties.put("datasource.mapper", datasourceMapper); - properties.put("jdbc.connchecklevel", jdbcConnchecklevel); - properties.put("jdbc.connmaxage", jdbcConnmaxage); - properties.put("jdbc.maxopentime", jdbcMaxopentime); - properties.put("jdbc.connteststmt", jdbcConnteststmt); - properties.put("jdbc.minconpool", jdbcMinconpool); - properties.put("jdbc.maxconpool", jdbcMaxconpool); - properties.put("jdbc.samplingperiod", jdbcSamplingperiod); - properties.put("jdbc.maxwaittime", jdbcMaxwaittime); - properties.put("jdbc.maxwaiters", jdbcMaxwaiters); - - useDatasource(name, properties); - - // Use alarm.ear for adding opened connections - useEar("alarm"); - - // Go to service database - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVICE_DATABASE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE, selectedTab, "Problem in 'Datasources' tab."); - - // Verify JNDI Name - table = utils.getTable(wr, 0); - int rowNewDatasource = utils.getRow(name, table).intValue(); - if (rowNewDatasource == -1) { - fail("'" + name + "' was not found in the table. "); - } - int columnJNDI = 1; - assertEquals("It is not the JNDI name of '" + name + "'. ", datasourceName, table.getTableCell(rowNewDatasource, columnJNDI).getText()); - - // Verify JDBC Connection - int columnJDBCConnection = 2; - int currentOpenedConnection = getCurrentOpenedConnection(datasourceName); - assertEquals("It is not the number of opened connection for '" + name + "'. ", currentOpenedConnection, Integer.parseInt(table.getTableCell(rowNewDatasource, columnJDBCConnection).getText())); - - // Go to "new_datasource_info" database - link = wr.getLinkWith(name); - if (link == null) { - fail("No link was found for '" + name + "'in the page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE_NOT_USED, selectedTab, "Problem in the datasource tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_SERVICE_DATABASE + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVICE_DATABASE)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - - // Verify information - // JDBC Datasource configuration - table = utils.getTable(wr, 1); - // JNDI name - assertEquals("It is not the JNDI name of '" + name + "'. ", datasourceName, table.getTableCell(0, 2).getText()); - // Description no desc - assertEquals("It is not the description of '" + name + "'. ", "no desc", table.getTableCell(1, 2).getText()); - // URL jdbc:hsqldb:hsql://localhost:9001/db_jonas - assertEquals("It is not the URL of '" + name + "'. ", datasourceUrl, table.getTableCell(2, 2).getText()); - // User name jonas - assertEquals("It is not the user name of '" + name + "'. ", datasourceUsername, table.getTableCell(3, 2).getText()); - // User password jonas - assertEquals("It is not the user password of '" + name + "'. ", datasourcePassword, table.getTableCell(4, 2).getText()); - // Mapper rdb.hsql - assertEquals("It is not the mapper of '" + name + "'. ", datasourceMapper, table.getTableCell(5, 2).getText()); - - // JDBC Driver configuration - table = utils.getTable(wr, 4); - // Driver class name org.hsqldb.jdbcDriver - assertEquals("It is not the driver class name of '" + name + "'. ", datasourceClassname, table.getTableCell(0, 2).getText()); - - // JDBC connection configuration - WebForm form = wr.getForms()[0]; - // Maximum age - assertEquals("It is not the maximum age of '" + name + "'. ", jdbcConnmaxage, form.getParameterValue("jdbcConnMaxAge")); - // Maximum open time - assertEquals("It is not the maximum open time of '" + name + "'. ", jdbcMaxopentime, form.getParameterValue("jdbcMaxOpenTime")); - // Checking level - assertEquals("It is not the checking level of '" + name + "'. ", jdbcConnchecklevel, form.getParameterValue("jdbcConnCheckLevel")); - // Test - assertEquals("It is not the test of '" + name + "'. ", jdbcConnteststmt, form.getParameterValue("jdbcTestStatement")); - // Pool minimum - assertEquals("It is not the pool minimum of '" + name + "'. ", jdbcMinconpool, form.getParameterValue("jdbcMinConnPool")); - // Pool maximum - assertEquals("It is not the pool maximum time of '" + name + "'. ", jdbcMaxconpool, form.getParameterValue("jdbcMaxConnPool")); - // Max Wait Time - assertEquals("It is not the maximum wait time of '" + name + "'. ", jdbcMaxwaittime, form.getParameterValue("jdbcMaxWaitTime")); - // Max Waiters - assertEquals("It is not the maximum waiters of '" + name + "'. ", jdbcMaxwaiters, form.getParameterValue("jdbcMaxWaiters")); - // Sampling Period - assertEquals("It is not the sampling Period of '" + name + "'. ", jdbcSamplingperiod, form.getParameterValue("jdbcSamplingPeriod")); - - } - } - - /** - * Test Used By Tab of database service - * @throws Exception if error occurs - * - */ - public void testJDBCUsedBy() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String jdbc1Datasource = ""; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - if (jProp.isDbm()) { - - // Go to service database - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVICE_DATABASE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Search if there is a datasource with 'jdbc_1' as JNDI name - table = utils.getTable(wr, 0); - int columnJNDI = 1; - int rowJDBC1 = utils.getRow("jdbc_1", table, columnJNDI).intValue(); - if (rowJDBC1 == -1) { - // Add datasource - name = "new_datasource_used_by"; - String datasourceName = "jdbc_1"; - String datasourceUrl = "jdbc:hsqldb:hsql://localhost:9001/db_jonas"; - String datasourceClassname = "org.hsqldb.jdbcDriver"; - String datasourceUsername = "jonas"; - String datasourcePassword = "jonas"; - String datasourceMapper = "rdb.hsql"; - String jdbcConnchecklevel = "0"; - String jdbcConnmaxage = "1440"; - String jdbcMaxopentime = "60"; - String jdbcConnteststmt = "select 1"; - String jdbcMinconpool = "10"; - String jdbcMaxconpool = "30"; - String jdbcSamplingperiod = "30"; - String jdbcMaxwaittime = "5"; - String jdbcMaxwaiters = "100"; - - Properties properties = new Properties(); - properties.put("datasource.name", datasourceName); - properties.put("datasource.url", datasourceUrl); - properties.put("datasource.classname", datasourceClassname); - properties.put("datasource.username", datasourceUsername); - properties.put("datasource.password", datasourcePassword); - properties.put("datasource.mapper", datasourceMapper); - properties.put("jdbc.connchecklevel", jdbcConnchecklevel); - properties.put("jdbc.connmaxage", jdbcConnmaxage); - properties.put("jdbc.maxopentime", jdbcMaxopentime); - properties.put("jdbc.connteststmt", jdbcConnteststmt); - properties.put("jdbc.minconpool", jdbcMinconpool); - properties.put("jdbc.maxconpool", jdbcMaxconpool); - properties.put("jdbc.samplingperiod", jdbcSamplingperiod); - properties.put("jdbc.maxwaittime", jdbcMaxwaittime); - properties.put("jdbc.maxwaiters", jdbcMaxwaiters); - - useDatasource(name, properties); - - jdbc1Datasource = name; - } else { - jdbc1Datasource = table.getTableCell(rowJDBC1, 0).getText(); - } - - // Use alarm.ear - useEar("alarm"); - - // Reload service database page - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_SERVICE_DATABASE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify JDBC Connection is positif - rowJDBC1 = utils.getRow("jdbc_1", table, columnJNDI).intValue(); - int columnJDBCConnection = 2; - int currentOpenedConnection = getCurrentOpenedConnection("jdbc_1"); - assertEquals("It is not the number of opened connection for 'jdbc_1'. ", currentOpenedConnection, Integer.parseInt(table.getTableCell(rowJDBC1, columnJDBCConnection).getText())); - assertTrue("There is no opened connection for 'jdbc_1' JNDI name. ", currentOpenedConnection > 0); - - // Go to database - link = wr.getLinkWith(jdbc1Datasource); - if (link == null) { - fail("No link was found for '" + name + "'in the page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE_USED, selectedTab, "Problem in the datasource tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_SERVICE_DATABASE + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVICE_DATABASE)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_USED_BY + " is not found in the third tab. ", tabTable - .getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_USED_BY)); - - // Go to "Used by" tab - link = wr.getFirstMatchingLink(WebLink.MATCH_URL_STRING, URL_JONASADMIN_USED_BY); - if (link == null) { - fail("No link was found for '" + name + "'in the page. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DATASOURCE_USED, selectedTab, "Problem in the datasource tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_SERVICE_DATABASE + " is not found in the first tab. ", tabTable - .getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SERVICE_DATABASE)); - assertTrue("The link " + URL_JONASADMIN_EDIT + " is not found in the third tab. ", tabTable - .getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_EDIT)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", tabTable - .getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - - // Verify there is Alarm Record EJB - table = utils.getTable(wr, 0); - int rowEJB = utils.getRow("AlarmRecord", table).intValue(); - if (rowEJB == -1) { - fail("There is not 'Alarm Record' in the 'Used By' table. " + table.getText()); - } - - // Verify type - assertEquals("The EJB type is not EntityBean. ", "EntityBean", table.getTableCell(rowEJB, 1).getText()); - - // Verify link - link = table.getTableCell(rowEJB, 0).getLinks()[0]; - if (link == null) { - fail("No link was found for '" + name + "'in the page. "); - } - int code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertEquals("Fail to go to '" + link.getURLString() + "'. ", 200, code); - - } - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - - if (jProp.isDbm()) { - // remove created datasource file - if (!name.equals("")) { - // Undeploy datasource - unUseDatasource(name); - // Delete file - JonasAdminFiles.deleteConfigFile(name + ".properties"); - name = ""; - } - } - super.tearDown(); - } - - /** - * Get current opened connection - * @return number of current opened connection - * @throws Exception if an error occurs - */ - private int getCurrentOpenedConnection(String jndiName) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("*:j2eeType=JDBCDataSource,*"); - - QueryExp exp = Query.match(Query.attr("jndiName"), Query.value(jndiName)); - - ObjectName dataSourceON = (ObjectName) server.queryNames(on, exp).iterator().next(); - Integer currentOpenedConnection = (Integer) server.getAttribute(dataSourceON, "currentOpened"); - - return currentOpenedConnection.intValue(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/C_JonasAdminServiceDiscovery.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/C_JonasAdminServiceDiscovery.java deleted file mode 100755 index d43f713e1f..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/C_JonasAdminServiceDiscovery.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.discovery; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test discovery service - * Test : - service/discovery - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceDiscovery extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceDiscovery(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminDiscovery.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/F_JonasAdminDiscovery.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/F_JonasAdminDiscovery.java deleted file mode 100755 index dfe59671c7..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/discovery/F_JonasAdminDiscovery.java +++ /dev/null @@ -1,217 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.discovery; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HTMLElement; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing discovery service - * @author Paul Kemler - * - */ -public class F_JonasAdminDiscovery extends JonasAdminTestCase { - - /** - * URL of discovery service - */ - private static final String URL_JONASADMIN_DISCOVERY = "EditServiceDiscovery.do"; - - /** - * number of tabs when you are in discovery - */ - private static final int NUMBER_OF_TABS_FOR_DISCOVERY = 1; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminDiscovery(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminDiscovery(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminDiscovery.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test discovery table - * @throws Exception if error occurs - * - */ - public void testDiscovery() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the discovery service is enabled - if (jProp.isDiscovery()) { - - // Go to discovery service - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_DISCOVERY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify multicast infos - table = utils.getTable(wr, 0); - // Multicast address - String address = jProp.getPropertiesEnv().getProperty("jonas.service.discovery.multicast.address"); - assertEquals("It is not the expected multicast address. ", address, table.getTableCell(0, 2).getText()); - // Multicast port - String port = jProp.getPropertiesEnv().getProperty("jonas.service.discovery.multicast.port"); - assertEquals("It is not the expected multicast port. ", port, table.getTableCell(1, 2).getText()); - - // Verify action - String master = table.getTableCell(2, 2).getText(); - table = utils.getTable(wr, 3); - if (master.equals("true")) { - // class="btnDisabled" - HTMLElement[] btnDisabled = table.getTableCell(0, 0).getElementsWithAttribute("class", "btnDisabled"); - assertEquals("The class of the Start button is not 'btnDisabled'. ", 1, btnDisabled.length); - - // No link - WebLink[] btnLink = table.getTableCell(0, 0).getLinks(); - assertEquals("There is a link on the Start button. ", 0, btnLink.length); - } else { - // No class="btnDisabled" - HTMLElement[] btnDisabled = table.getTableCell(0, 0).getElementsWithAttribute("class", "btnDisabled"); - assertEquals("The class of the Start button is not 'btnDisabled'. ", 0, btnDisabled.length); - - // link=/DiscoveryServiceStartMaster.do - WebLink[] btnLink = table.getTableCell(0, 0).getLinks(); - assertEquals("There is no link on the Start button. ", 1, btnLink.length); - assertTrue("It is not the expected URL of the Start button. ", btnLink[0].getURLString().endsWith("/DiscoveryServiceStartMaster.do")); - - // Start Master - btnLink[0].click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify is master - table = utils.getTable(wr, 0); - master = table.getTableCell(2, 2).getText(); - assertEquals("It is not master. ", "true", master); - table = utils.getTable(wr, 3); - // class="btnDisabled" - btnDisabled = table.getTableCell(0, 0).getElementsWithAttribute("class", "btnDisabled"); - assertEquals("The class of the Start button is not 'btnDisabled'. ", 1, btnDisabled.length); - - // No link - btnLink = table.getTableCell(0, 0).getLinks(); - assertEquals("There is a link on the Start button. ", 0, btnLink.length); - } - - // Verify there is 1 tab - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_DISCOVERY, selectedTab, "Problem in 'Discovery' tab."); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/C_JonasAdminServiceTransaction.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/C_JonasAdminServiceTransaction.java deleted file mode 100755 index 9b2b0e578a..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/C_JonasAdminServiceTransaction.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.jtm; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test transaction service - * Test : - service/transaction - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceTransaction extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceTransaction(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminServiceTransaction.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/F_JonasAdminServiceTransaction.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/F_JonasAdminServiceTransaction.java deleted file mode 100755 index f7a3b7cb06..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/jtm/F_JonasAdminServiceTransaction.java +++ /dev/null @@ -1,640 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.jtm; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.Button; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing transaction service - * @author Paul Kemler - * - */ -public class F_JonasAdminServiceTransaction extends JonasAdminTestCase { - - /** - * URL of transaction - */ - private static final String URL_JONASADMIN_TRANSACTION = "EditJtmService.do"; - - /** - * URL of transaction Statistics - */ - private static final String URL_JONASADMIN_TRANSACTION_STATISTICS = "EditTransactionStatistic.do"; - - /** - * URL of transaction Monitor - */ - private static final String URL_JONASADMIN_TRANSACTION_MONITOR = "EditTransactionMonitor.do"; - - /** - * URL of transaction Recovery - */ - private static final String URL_JONASADMIN_TRANSACTION_RECOVERY = "EditTransactionRecovery.do"; - - /** - * URL of reset button - */ - private static final String URL_JONASADMIN_TRANSACTION_RESET = "ResetCounters.do"; - - /** - * number of tabs when you are in the transaction tabs - */ - private static final int NUMBER_OF_TABS_FOR_TRANSACTION = 4; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminServiceTransaction(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminServiceTransaction(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminServiceTransaction.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test Transaction Manager infos - * @throws Exception if error occurs - * - */ - public void testTransactionManagerInfos() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String location; - String hostName; - String port; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm()) { - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify transaction manager infos - table = utils.getTable(wr, 0); - location = getLocation(); - hostName = getHostName(); - port = getPortNumber(); - if (port.equals("0")) { - port = "undefined"; - } - // Location collocated - assertEquals("It is not the expected location value. ", location, table.getTableCell(0, 2).getText()); - // Host name mururoa.frec.bull.fr - assertEquals("It is not the expected host name value. ", hostName, table.getTableCell(1, 2).getText()); - // Port number undefined - assertEquals("It is not the expected port number. ", port, table.getTableCell(2, 2).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_TRANSACTION, selectedTab, "Problem in 'alarm.jar' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_STATISTICS + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_MONITOR + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_MONITOR)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_RECOVERY + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_RECOVERY)); - - } - } - - /** - * Test to modify time-out - * @throws Exception if an error occurs. - */ - public void testTransactionTimeOut() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm()) { - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Modify time-out - WebForm form = wr.getForms()[0]; - form.setParameter("timeOutText", "0"); - - // Apply - Button button = form.getButtons()[0]; - button.click(); - - // Verify "timeOutText" value - wr = wc.getFrameContents(FRAME_CONTENT); - form = wr.getForms()[0]; - assertEquals("The Transaction time-out is not '0'. ", "0", form.getParameterValue("timeOutText")); - } - } - - /** - * Test transaction statistics with transactions of the cmp2.ear example. - * @throws Exception if an error occurs. - */ - public void testTransactionStatistics() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm() && jProp.isEar()) { - - // Add cmp2.ear - useEar("cmp2"); - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Go to Statistics - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_TRANSACTION, selectedTab, "Problem in 'statistics' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_TRANSACTION + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_MONITOR + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_MONITOR)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_RECOVERY + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_RECOVERY)); - - // Create transactions - executeCMP2Example2(); - - // Refresh - wc.sendRequest(wr.getRefreshRequest()); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify statistics - table = utils.getTable(wr, 3); - // Current number of transactions - int currentNbTransaction = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Number of begun transactions - int nbBegunTransaction = Integer.parseInt(table.getTableCell(1, 2).getText()); - // Number of commited transactions - int nbCommitedTransaction = Integer.parseInt(table.getTableCell(2, 2).getText()); - // Number of rolledback transactions - int nbRolledbackTransaction = Integer.parseInt(table.getTableCell(3, 2).getText()); - // Number of transactions with expired time-out - int nbTransactionExpiredTimeOut = Integer.parseInt(table.getTableCell(4, 2).getText()); - - // nbBegunTransaction > 0 - assertTrue("'Number of begun transactions' is not positif. ", nbBegunTransaction > 0); - // currentNbTransaction + nbCommitedTransaction + nbRolledbackTransaction > 0 - assertTrue("The sum of 'Number of begun transactions', 'Number of commited transactions' and 'Number of rolledback transactions' is not positif. ", currentNbTransaction + nbCommitedTransaction + nbRolledbackTransaction > 0); - - // 0 <= nbTransactionExpiredTimeOut - assertTrue("'Number of transactions with expired time-out' is not positif. ", nbTransactionExpiredTimeOut >= 0); - } - } - - /** - * Test the 'Reset Counters' button in statistics. - * @throws Exception if an error occurs - */ - public void testResetCounters() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm() && jProp.isEar()) { - - // Add cmp2.ear - useEar("cmp2"); - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to Statistics - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Create transactions - executeCMP2Example1(); - - // Refresh - wc.sendRequest(wr.getRefreshRequest()); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify statistics - table = utils.getTable(wr, 3); - // Current number of transactions - int currentNbTransaction = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Number of begun transactions - int nbBegunTransaction = Integer.parseInt(table.getTableCell(1, 2).getText()); - // Number of commited transactions - int nbCommitedTransaction = Integer.parseInt(table.getTableCell(2, 2).getText()); - // Number of rolledback transactions - int nbRolledbackTransaction = Integer.parseInt(table.getTableCell(3, 2).getText()); - // Number of transactions with expired time-out - int nbTransactionExpiredTimeOut = Integer.parseInt(table.getTableCell(4, 2).getText()); - int total = currentNbTransaction + nbBegunTransaction + nbCommitedTransaction + nbRolledbackTransaction + nbTransactionExpiredTimeOut; - // total > 0 - assertTrue("Counters are all at '0' after executing cmp2 example.", total > 0); - - // Reset counters - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION_RESET); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify statistics - table = utils.getTable(wr, 3); - // Current number of transactions - currentNbTransaction = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Number of begun transactions - nbBegunTransaction = Integer.parseInt(table.getTableCell(1, 2).getText()); - // Number of commited transactions - nbCommitedTransaction = Integer.parseInt(table.getTableCell(2, 2).getText()); - // Number of rolledback transactions - nbRolledbackTransaction = Integer.parseInt(table.getTableCell(3, 2).getText()); - // Number of transactions with expired time-out - nbTransactionExpiredTimeOut = Integer.parseInt(table.getTableCell(4, 2).getText()); - - // currentNbTransaction = 0 - assertEquals("'Current number of transactions' is not '0'", 0, currentNbTransaction); - // nbBegunTransaction = 0 - assertEquals("'Number of begun transactions' is not '0'", 0, nbBegunTransaction); - // nbCommitedTransaction = 0 - assertEquals("'Number of commited transactions' is not '0'", 0, nbCommitedTransaction); - // nbRolledbackTransaction = 0 - assertEquals("'Number of rolledback transactions' is not '0'", 0, nbRolledbackTransaction); - // nbTransactionExpiredTimeOut = 0 - assertEquals("'Number of transactions with expired time-out' is not '0'", 0, nbTransactionExpiredTimeOut); - - // Create transactions - executeCMP2Example1(); - - // Refresh - wc.sendRequest(wr.getRefreshRequest()); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify statistics - table = utils.getTable(wr, 3); - // Current number of transactions - currentNbTransaction = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Number of begun transactions - nbBegunTransaction = Integer.parseInt(table.getTableCell(1, 2).getText()); - // Number of commited transactions - nbCommitedTransaction = Integer.parseInt(table.getTableCell(2, 2).getText()); - // Number of rolledback transactions - nbRolledbackTransaction = Integer.parseInt(table.getTableCell(3, 2).getText()); - // Number of transactions with expired time-out - nbTransactionExpiredTimeOut = Integer.parseInt(table.getTableCell(4, 2).getText()); - total = currentNbTransaction + nbBegunTransaction + nbCommitedTransaction + nbRolledbackTransaction + nbTransactionExpiredTimeOut; - // total > 0 - assertTrue("Counters are all at '0' after re-executing cmp2 example.", total > 0); - } - } - - /** - * Test transaction Monitor - * @throws Exception if an error occurs - */ - public void testTransactionMonitor() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String location; - String hostName; - String port; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm()) { - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to 'Monitor' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION_MONITOR); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify 'Monitor' table - table = utils.getTable(wr, 0); - if (!table.getTableCell(0, 0).getText().equals("Date")) { - // No Transactions in Execution ! - assertEquals("There is not the message: 'No Transactions in Execution !'. ", "No Transactions in Execution !", table.getTableCell(0, 0).getText()); - } else { - // There is one transaction (or more) - assertTrue("There is no text for the date. ", table.getTableCell(1, 0).getText().length() > 0); - assertTrue("There is no text for the transaction. ", table.getTableCell(1, 1).getText().length() > 0); - assertTrue("There is no text for the resource. ", table.getTableCell(1, 2).getText().length() > 0); - assertTrue("There is no text for the state. ", table.getTableCell(1, 3).getText().length() > 0); - } - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_TRANSACTION, selectedTab, "Problem in 'Monitor' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_TRANSACTION + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_STATISTICS + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_RECOVERY + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_RECOVERY)); - } - } - - /** - * Test transaction Recovery - * @throws Exception if an error occurs - */ - public void testTransactionRecovery() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String location; - String hostName; - String port; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the transaction service is enabled - if (jProp.isJtm()) { - - // Go to transaction - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to 'Recovery' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_TRANSACTION_RECOVERY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify 'Recovery' table - table = utils.getTable(wr, 0); - // No Transactions in Execution ! - assertEquals("There is not the message: 'No Transactions to Recover !'. ", "No Transactions to Recover !", table.getTableCell(0, 0).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_TRANSACTION, selectedTab, "Problem in 'Monitor' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_TRANSACTION + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_STATISTICS + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_TRANSACTION_MONITOR + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_TRANSACTION_MONITOR)); - } - } - - /** - * Get jtm location - * @return "collocated" or "Remote" - * @throws Exception if an error occurs - */ - private String getLocation() throws Exception { - MBeanServerConnection server; - String location = ""; - boolean localJtm; - server = getMBeanServer(); - ObjectName on = new ObjectName("jonas:j2eeType=JTAResource,name=JTAResource,J2EEServer=jonas"); - localJtm = ((Boolean) server.getAttribute(on, "localJtm")).booleanValue(); - if (localJtm) { - location = "collocated"; - } else { - location = "Remote"; - } - return location; - } - - /** - * Get jtm Host Name - * @return jtm host name - * @throws Exception if an error occurs - */ - private String getHostName() throws Exception { - MBeanServerConnection server = getMBeanServer(); - String hostName = ""; - ObjectName on = new ObjectName("jonas:j2eeType=JTAResource,name=JTAResource,J2EEServer=jonas"); - hostName = (String) server.getAttribute(on, "hostName"); - return hostName; - } - - /** - * Get jtm port number - * @return jtm port number - * @throws Exception if an error occurs - */ - private String getPortNumber() throws Exception { - MBeanServerConnection server = getMBeanServer(); - String port = "0"; - ObjectName on = new ObjectName("jonas:j2eeType=JTAResource,name=JTAResource,J2EEServer=jonas"); - port = ((Integer) server.getAttribute(on, "portNumber")).toString(); - return port; - } - - /** - * Execute the test1 of cmp2 - * @throws Exception if an error occurs - */ - private void executeCMP2Example1() throws Exception { - WebConversation wc2 = new WebConversation(); - String urlExample1 = prefixUrl + "/cmp2/test1?"; - WebResponse wr = wc2.getResponse(urlExample1); - } - - /** - * Execute the test2 of cmp2 - * @throws Exception if an error occurs - */ - private void executeCMP2Example2() throws Exception { - WebConversation wc2 = new WebConversation(); - String urlExample2 = prefixUrl + "/cmp2/test2?"; - WebResponse wr = wc2.getResponse(urlExample2); - } - - /** - * Execute the test3 of cmp2 - * @throws Exception if an error occurs - */ - private void executeCMP2Example3() throws Exception { - WebConversation wc2 = new WebConversation(); - String urlExample3 = prefixUrl + "/cmp2/test3?"; - WebResponse wr = wc2.getResponse(urlExample3); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/C_JonasAdminServiceMail.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/C_JonasAdminServiceMail.java deleted file mode 100755 index d9f5f5a7ea..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/C_JonasAdminServiceMail.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.mail; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test mail service - * Test : - mail service - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceMail extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceMail(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminServiceMail.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/F_JonasAdminServiceMail.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/F_JonasAdminServiceMail.java deleted file mode 100755 index 7ae86b9504..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/mail/F_JonasAdminServiceMail.java +++ /dev/null @@ -1,565 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.mail; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing ... - * @author Paul Kemler - * - */ -public class F_JonasAdminServiceMail extends JonasAdminTestCase { - - /** - * URL of mail service - */ - private static final String URL_JONASADMIN_MAIL_SERVICE = "EditMailService.do"; - - /** - * URL of Mail resource - */ - private static final String URL_JONASADMIN_MAIL = "EditDeploy.do?type=mail"; - - /** - * URL of Mail resource viewTree - */ - private static final String URL_JONASADMIN_VIEW_MAIL = "viewTree.do?tree=domain*jonas*resources"; - - /** - * URL of Session Mail Factories - */ - private static final String URL_JONASADMIN_SESSION_MF = "ListSessionMailFactories.do"; - - /** - * URL of Mime part datasource Mail Factories - */ - private static final String URL_JONASADMIN_MIME_PART_DATASOURCE_MF = "ListMimePartMailFactories.do"; - - /** - * number of tabs when you are in the mail tabs - */ - private static final int NUMBER_OF_TABS_FOR_MAIL = 3; - - /** - * number of tabs when you are in the Session Mail Factory tab - */ - private static final int NUMBER_OF_TABS_FOR_SESSION = 4; - - /** - * number of tabs when you are in the MimePartDS Mail Factory tab - */ - private static final int NUMBER_OF_TABS_FOR_MIME_PART_DS = 4; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminServiceMail(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminServiceMail(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminServiceMail.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test mail service without mail factory - * @throws Exception if error occurs - * - */ - public void testNoDeployedMailFactory() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - - // Undeploy mail factories - undeployMailFactories(wc); - - // Go to mail service - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL_SERVICE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify numbers - table = utils.getTable(wr, 1); - int sessionMF = Integer.parseInt(table.getTableCell(0, 2).getText()); - int mimePartDatasourceMF = Integer.parseInt(table.getTableCell(1, 2).getText()); - int total = Integer.parseInt(table.getTableCell(2, 2).getText()); - - // Session factories 0 - assertEquals("The number of Session Factories is not '0'. ", 0, sessionMF); - // MimePartDataSource 0 - assertEquals("The number of MimePartDataSource is not '0'. ", 0, mimePartDatasourceMF); - // total = sessionMF + mimePartDatasourceMF - assertEquals("The total is not the sum of Session factories and MimePartDataSource. ", sessionMF + mimePartDatasourceMF, total); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Mail' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - - // Go to Session factories - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SESSION_MF); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tree - WebResponse tree = wc.getFrameContents(FRAME_TREE); - assertTrue("The node 'Session Factories' is not found in the tree. ", tree.getText().indexOf("Session Factories") != -1); - - // Verify Message : "No Session mail factories !" - table = utils.getTable(wr, 0); - assertEquals("There is not 1 row in the 'Session Mail Factories' table. ", 1, table.getRowCount()); - - String messageNoSessionMF = "No Session mail factories !"; - assertEquals("There is not the expected message: '" + messageNoSessionMF + "'. ", messageNoSessionMF, table.getTableCell(0, 0).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Session Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - - // Go to MimePartDataSource Mail Factories - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MIME_PART_DATASOURCE_MF); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify Message : "No MimePartDataSource mail factories !" - table = utils.getTable(wr, 0); - assertEquals("There is not 1 row in the 'Session Mail Factories' table. ", 1, table.getRowCount()); - - String messageNoMimePartMF = "No MimePartDataSource mail factories !"; - assertEquals("There is not the expected message: '" + messageNoMimePartMF + "'. ", messageNoMimePartMF, table.getTableCell(0, 0).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'MimePartDataSource Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - - } - - } - - /** - * Test mail service with mail factories - * @throws Exception if error occurs - * - */ - public void testDeployedMailFactory() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - /* - * To get some utils for WebTable - */ - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - if (jProp.isMail()) { - - // Deploy mail factories - deployMailFactories(wc); - - // Go to mail service - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL_SERVICE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify numbers - table = utils.getTable(wr, 1); - int sessionMF = Integer.parseInt(table.getTableCell(0, 2).getText()); - int mimePartDatasourceMF = Integer.parseInt(table.getTableCell(1, 2).getText()); - int total = Integer.parseInt(table.getTableCell(2, 2).getText()); - - // Session factories > 0 - assertTrue("The number of Session Factories is not positif. ", sessionMF > 0); - // MimePartDataSource > 0 - assertTrue("The number of MimePartDataSource is not positif. ", mimePartDatasourceMF > 0); - // total = sessionMF + mimePartDatasourceMF - assertEquals("The total is not the sum of Session factories and MimePartDataSource. ", sessionMF + mimePartDatasourceMF, total); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Mail' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - - // Go to Session factories - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SESSION_MF); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tree - WebResponse tree = wc.getFrameContents(FRAME_TREE); - assertTrue("The node 'Session Factories' is not found in the tree. ", tree.getText().indexOf("Session Factories") != -1); - - // Verify Session mail factories table - table = utils.getTable(wr, 0); - assertTrue("There are not more than 1 row in the 'Session Mail Factories' table. ", 1 < table.getRowCount()); - int rowMailSession = utils.getFirstRow("mailSession_1", table, 0).intValue(); - if (rowMailSession == -1) { - throw new IllegalStateException("'mailSession_1' is not found in the table. "); - } - // JNDI name mailSession_1 - assertEquals("It is not the JNDI name of 'mailSession_1'. ", "mailSession_1", table.getTableCell(rowMailSession, 1).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'Session Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - // Go to url of the link - link = table.getTableCell(rowMailSession, 0).getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tree - tree = wc.getFrameContents(FRAME_TREE); - assertTrue("The node 'mailSession_1' is not found in the tree.", tree.getText().indexOf("mailSession_1") != -1); - - // Verify number of tables - try { - table = utils.getTable(wr, 9); - } catch (Exception e) { - fail("There are not enough tables in 'mailSession_1' page."); - } - try { - table = utils.getTable(wr, 10); - fail("There are not too tables in 'mailSession_1' page."); - } catch (Exception e) { - // ok - } - - // Type Session - table = utils.getTable(wr, 1); - assertEquals("It is not the expected type of 'mailSession_1'. ", "Session", table.getTableCell(0, 2).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_SESSION, selectedTab, "Problem in 'mailSession_1' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - - // Go to MimePartDataSource Mail Factories - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MIME_PART_DATASOURCE_MF); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify MimePartDatasource mail factories table - table = utils.getTable(wr, 0); - assertTrue("There are not more than 1 row in the 'MimePartDatasource Mail Factories' table. ", 1 < table.getRowCount()); - int rowMailMime = utils.getFirstRow("mailMimePartDS_1", table, 0).intValue(); - if (rowMailMime == -1) { - throw new IllegalStateException("'mailMimePartDS_1' is not found in the table. "); - } - // JNDI name mailMimePartDS_1 - assertEquals("It is not the JNDI name of 'mailMimePartDS_1'. ", "mailMimePartDS_1", table.getTableCell(rowMailMime, 1).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MAIL, selectedTab, "Problem in 'MimePartDataSource Mail Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - - // Go to url of the link - link = table.getTableCell(rowMailMime, 0).getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Verify tree - tree = wc.getFrameContents(FRAME_TREE); - assertTrue("The node 'mailMimePartDS_1' is not found in the tree.", tree.getText().indexOf("mailMimePartDS_1") != -1); - - // Verify number of tables - try { - table = utils.getTable(wr, 12); - } catch (Exception e) { - fail("There are not enough tables in 'mailMimePartDS_1' page."); - } - try { - table = utils.getTable(wr, 13); - fail("There are not too tables in 'mailMimePartDS_1' page."); - } catch (Exception e) { - // ok - } - - // Type MimePartDataSource - table = utils.getTable(wr, 1); - assertEquals("It is not the expected type of 'mailMimePartDS_1'. ", "MimePartDataSource", table.getTableCell(0, 2).getText()); - - // Verify tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_MIME_PART_DS, selectedTab, "Problem in 'mailMimePartDS_1' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_MAIL_SERVICE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MAIL_SERVICE)); - assertTrue("The link " + URL_JONASADMIN_SESSION_MF + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_SESSION_MF)); - assertTrue("The link " + URL_JONASADMIN_MIME_PART_DATASOURCE_MF + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_MIME_PART_DATASOURCE_MF)); - - } - - } - - - /** - * Undeploy all mail factories - * @param wc The jonasAdmin connexion - * @throws Exception if an error occurs - */ - private void undeployMailFactories(WebConversation wc) throws Exception { - WebLink link = null; - - // Go to Mail - WebResponse wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - if (link != null) { - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - // branch is not opened - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_MAIL); - if (link != null) { - link.click(); - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - if (link == null) { - throw new IllegalStateException("The link " + URL_JONASADMIN_MAIL + " is not found in tree. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - throw new IllegalStateException("The link " + URL_JONASADMIN_MAIL + " is not found in tree. "); - } - } - - // Undeploy all Mail Factories - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("deploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - script.setParameterValue("undeploy", params); - - WebResponse submitUndeploy = webForm.submit(); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - WebResponse endResp = webForm.submit(); - } - - - /** - * Deploy all mail factories - * @param wc The jonasAdmin connexion - * @throws Exception if an error occurs - */ - private void deployMailFactories(WebConversation wc) throws Exception { - WebLink link = null; - - // Go to Mail - WebResponse wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - if (link != null) { - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - // branch is not opened - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_VIEW_MAIL); - if (link != null) { - link.click(); - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_MAIL); - if (link == null) { - throw new IllegalStateException("The link " + URL_JONASADMIN_MAIL + " is not found in tree. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - } else { - throw new IllegalStateException("The link " + URL_JONASADMIN_MAIL + " is not found in tree. "); - } - } - - // Undeploy all Mail Factories - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - script.setParameterValue("deploy", params); - - WebResponse submitUndeploy = webForm.submit(); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - WebResponse endResp = webForm.submit(); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/C_JonasAdminServiceResource.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/C_JonasAdminServiceResource.java deleted file mode 100755 index 7a3958b087..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/C_JonasAdminServiceResource.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.resource; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test resource service - * Test : - resource service - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceResource extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceResource(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminResource.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/F_JonasAdminResource.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/F_JonasAdminResource.java deleted file mode 100755 index 968fabcb56..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/F_JonasAdminResource.java +++ /dev/null @@ -1,881 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.resource; - -import java.io.File; - -import javax.management.ObjectName; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.Button; -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing resource service - * @author Paul Kemler - * - */ -public class F_JonasAdminResource extends JonasAdminTestCase { - - /** - * URL of Resource Adapters - */ - private static final String URL_JONASADMIN_RESOURCE = "ListResourceAdapters.do"; - - /** - * URL of earsample.ra-sample - */ - private static final String URL_JONASADMIN_RA_SAMPLE = "earsample.ra-sample"; - - /** - * URL of db_access_jdbc1 - */ - private static final String URL_JONASADMIN_JONAS_JDBC = "db_access_jdbc1"; - - /** - * URL of Statistics tab - */ - private static final String URL_JONASADMIN_STATISTICS = "EditResourceAdapterStat.do"; - - /** - * URL of Used by - */ - private static final String URL_JONASADMIN_USED_BY = "rarUsedBy"; - - /** - * URL of ErsatzEIS - */ - private static final String URL_JONASADMIN_ERSATZ = "ErsatzEIS"; - - /** - * URL of connection factories - */ - private static final String URL_JONASADMIN_CONNECTION_FACTORIES = "service/rar15CFs.jsp"; - - /** - * URL of activationSpecs - */ - private static final String URL_JONASADMIN_ACTIVATION_SPECS = "service/rar15ASs.jsp"; - - /** - * URL of CF Statistics - */ - private static final String URL_JONASADMIN_STATISTICS_CF = "EditResourceAdapterCFStat.do"; - - /** - * URL of Resource Adapter - */ - private static final String URL_JONASADMIN_RA = "EditResourceAdapter.do"; - - /** - * URL of Resource Adapter CF - */ - private static final String URL_JONASADMIN_RA_CF = "EditResourceAdapterCF.do"; - - /** - * number of tabs when you are in resource - */ - private static final int NUMBER_OF_TABS_FOR_RESOURCE = 1; - - /** - * number of tabs when you are in earsample.ra-sample - */ - private static final int NUMBER_OF_TABS_FOR_RA_SAMPLE = 2; - - /** - * number of tabs when you are in 'db_access_jdbc1' tab - */ - private static final int NUMBER_OF_TABS_FOR_JDBC = 4; - - /** - * number of tabs when you are in 'ErsatzEIS' - */ - private static final int NUMBER_OF_TABS_RA15 = 4; - - /** - * number of tabs for a connection factory - */ - private static final int NUMBER_OF_TABS_CF = 6; - - /** - * number of tabs for a activation spec - */ - private static final int NUMBER_OF_TABS_AS = 5; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminResource(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminResource(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminResource.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test Resource service with rar in an ear. - * @throws Exception if error occurs - * - */ - public void testResourceInEar() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String name; - String file = null; - String path = null; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the resource service is enabled - if (jProp.isResource()) { - - // Add earsample.ear - useEar("earsample"); - - // Go to resource adapters - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_RESOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify 'Resource Adapters' page - table = utils.getTable(wr, 0); - testResourceAdapterNames(table); - name = "earsample.ra-sample"; - int rowRASample = utils.getFirstRow(name, table, 0).intValue(); - if (rowRASample != -1) { - // Verify File - file = table.getTableCell(rowRASample, 1).getText(); - assertEquals("It is not the name of the file of the 'earsample.ra-sample'. ", "ra-sample.rar", file); - // Verify Path - path = table.getTableCell(rowRASample, 2).getText(); - assertTrue("It is not the end of the path of the 'earsample.ra-sample'. ", path.endsWith(File.separator + "ra-sample.rar")); - } else { - fail("The RA 'earsample.ra-sample' is not found in the " + table.getTableCell(0, 0).getText() + ". "); - } - - // Verify there is 1 tab - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_RESOURCE, selectedTab, "Problem in 'Resource Adapter' tab."); - - - // Go to 'earsample.ra-sample' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_RA_SAMPLE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify Resource Adapter Infos - table = utils.getTable(wr, 1); - testRAInfos(table, name, file, path); - - // Verify 'In application' - table = utils.getTable(wr, 4); - testInApplication(table); - - // Verify 'Properties' - table = utils.getTable(wr, 7); - testEarSampleProperties(table); - - // Verify there are 2 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_RA_SAMPLE, selectedTab, "Problem in 'earsample.ra-sample' tab."); - } - - } - - /** - * Test Resource service with a JONAS_jdbc rar. - * @throws Exception if error occurs - * - */ - public void testResource10Jdbc() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the resource service is enabled - if (jProp.isResource()) { - // Add db_access_jdbc1 - useRar("db_access_jdbc1"); - - // Add alarm.ear to add the 4th tab "used by" - unUseEar("alarm"); - useEar("alarm"); - - // Go to resource adapters - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_RESOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to 'db_access_jdbc1' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_JONAS_JDBC); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify PoolProperties - testPoolProperties(wr, wc); - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JDBC, selectedTab, "Problem in 'db_access_jdbc1' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - assertTrue("The link " + URL_JONASADMIN_USED_BY + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_USED_BY) != -1); - - - // Go to 'Statistics' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_STATISTICS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify Connections Pool State - table = utils.getTable(wr, 1); - testConnectionsPoolState(table); - - // Verify Statistics on getConnection operations - table = utils.getTable(wr, 4); - testStatisticsOnGetConnectionOperations(table, wr, wc, utils); - - // Verify Statistics on waiters - table = utils.getTable(wr, 7); - testStatisticsOnWaiters(table); - - // Verify Connection to database statistics - table = utils.getTable(wr, 10); - testConnectionToDatabaseStatistics(table); - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JDBC, selectedTab, "Problem in 'Statistics' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RA)); - assertTrue("The link " + URL_JONASADMIN_USED_BY + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_USED_BY) != -1); - - - // Go to 'Used by' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_USED_BY); - if (link == null) { - throw new IllegalStateException("The link " + URL_JONASADMIN_USED_BY + " is not found from 'Statistics' tab. "); - } - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify 'Used by' - table = utils.getTable(wr, 0); - testUsedBy(table); - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_JDBC, selectedTab, "Problem in 'Used by' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RA)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS)); - } - } - - /** - * Test Resource Adapter 1.5 with ErsatzEIS.rar - * @throws Exception if an error occurs - */ - public void testResource15() throws Exception { - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the resource service is enabled - if (jProp.isResource()) { - // Add ErsatzEIS.rar - useRar("ErsatzEIS"); - - // Go to resource adapters - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_RESOURCE); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - - // Go to 'ErsatzEIS.rar' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_ERSATZ); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 2; - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_RA15, selectedTab, "Problem in 'ErsatzEIS' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_CONNECTION_FACTORIES + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONNECTION_FACTORIES)); - assertTrue("The link " + URL_JONASADMIN_ACTIVATION_SPECS + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_ACTIVATION_SPECS)); - - - // Go to 'Connection Factories' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_CONNECTION_FACTORIES); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 3; - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_RA15, selectedTab, "Problem in 'Connection Factories' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_RA) != -1); - assertTrue("The link " + URL_JONASADMIN_ACTIVATION_SPECS + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_ACTIVATION_SPECS)); - - // Test 'Connection Factories' - table = utils.getTable(wr, 0); - testConnectionFactories(table, wc, utils); - - - // Go to 'ActivationSpecs' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_ACTIVATION_SPECS); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 4; - - // Verify there are 4 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_RA15, selectedTab, "Problem in 'ActivationSpecs' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_RA) != -1); - assertTrue("The link " + URL_JONASADMIN_CONNECTION_FACTORIES + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONNECTION_FACTORIES)); - - // Test 'ActivationSpecs' - table = utils.getTable(wr, 0); - testActivationSpecs(table, wc, utils); - } - } - - /** - * Test 'Resource Adapters' table - * @param table the 'Resource Adapters' table - */ - private void testResourceAdapterNames(WebTable table) { - TableCell cell; - - for (int i = 1; i < table.getRowCount(); i++) { - // Verify there is a link for each name - cell = table.getTableCell(i, 0); - assertEquals("There is no one link for the context : " + cell.getText(), 1, cell.getLinks().length); - } - } - - /** - * Test the RA infos - * @param table the RA info table - * @param name the RA name - * @param file the RA file - * @param path the RA path - */ - private void testRAInfos(WebTable table, String name, String file, String path) { - assertEquals("It is not the name of the Resource Adapter. ", name, table.getTableCell(0, 2).getText()); - assertEquals("It is not the file of the Resource Adapter. ", file, table.getTableCell(1, 2).getText()); - assertEquals("It is not the path of the Resource Adapter. ", path, table.getTableCell(2, 2).getText()); - } - - /** - * Test 'In Application' table - * @param table 'In Application' table - */ - private void testInApplication(WebTable table) { - TableCell cell = table.getTableCell(0, 0); - // There is 1 link - assertEquals("There is not 1 link in 'In Application' table. ", 1, cell.getLinks().length); - // earsample.ear - assertEquals("There is not 'earsample.ear' in 'In Application' table. ", "earsample.ear", cell.getText()); - - cell = table.getTableCell(0, 2); - // path - assertTrue("It is not the end of the path. ", cell.getText().endsWith(File.separator + "earsample.ear")); - } - - /** - * Test earsample.ra-sample properties - * @param table the property table - */ - private void testEarSampleProperties(WebTable table) { - // EisURL EIS_URL - TableCell cell = table.getTableCell(0, 0); - assertEquals("It is not the name of the 1st property. ", "EisURL", cell.getText()); - cell = table.getTableCell(0, 2); - assertEquals("It is not the value of the 1st property. ", "EIS_URL", cell.getText()); - - // jndiName eisName - cell = table.getTableCell(1, 0); - assertEquals("It is not the name of the 2nd property. ", "jndiName", cell.getText()); - cell = table.getTableCell(1, 2); - assertEquals("It is not the value of the 2nd property. ", "eisName", cell.getText()); - } - - /** - * Test pool properties - * @param wr the content frame of Resource Adapter page - * @param wc the jonasAdmin WebConversation - * @throws Exception if an error occurs - */ - private void testPoolProperties(WebResponse wr, WebConversation wc) throws Exception { - WebForm form = wr.getForms()[0]; - String jdbcConnCheckLevel = "0"; - String connMaxAge = "0"; - String maxOpentime = "0"; - String jdbcTestStatement = ""; - String maxSize = "-1"; - String minSize = "0"; - String maxWaitTime = "0"; - String maxWaiters = "0"; - String samplingPeriod = "30"; - - ResourceUtils.modifyPoolProperties(form, jdbcConnCheckLevel, connMaxAge, - maxOpentime, jdbcTestStatement, maxSize, minSize, maxWaitTime, - maxWaiters, samplingPeriod); - - wr = wc.getFrameContents(FRAME_CONTENT); - form = wr.getForms()[0]; - assertEquals("The value of 'Pool maximum' is not '-1'. ", maxSize, form.getParameterValue("maxSize")); - assertEquals("The value of 'Maximum age' is not '" + connMaxAge + "'. ", connMaxAge, form.getParameterValue("connMaxAge")); - assertEquals("The value of 'Maximum open time' is not '" + maxOpentime + "'. ", maxOpentime, form.getParameterValue("maxOpentime")); - assertEquals("The value of 'Test' is not '" + jdbcTestStatement + "'. ", jdbcTestStatement, form.getParameterValue("jdbcTestStatement")); - assertEquals("The value of 'Pool minimum' is not '" + minSize + "'. ", minSize, form.getParameterValue("minSize")); - assertEquals("The value of 'Max Wait Time' is not '" + maxWaitTime + "'. ", maxWaitTime, form.getParameterValue("maxWaitTime")); - assertEquals("The value of 'Max Waiters' is not '" + maxWaiters + "'. ", maxWaiters, form.getParameterValue("maxWaiters")); - assertEquals("The value of 'Sampling Period' is not '" + samplingPeriod + "'. ", samplingPeriod, form.getParameterValue("samplingPeriod")); - assertEquals("The value of 'Checking level' is not '" + jdbcConnCheckLevel + "'. ", jdbcConnCheckLevel, form.getParameterValue("jdbcConnCheckLevel")); - } - - /** - * Test Connections Pool State - * @param table The connection pool state table - */ - private void testConnectionsPoolState(WebTable table) throws Exception { - ObjectName jcaConnFactOn = getJCAConnectionFactory("jdbc_1", "db_access_jdbc1"); - // Current pool size - Integer val = getIntegerMBeanAttribute(jcaConnFactOn, "currentOpened"); - String currentPoolsize = val.toString(); - //assertEquals("It is not the expected value of 'Current pool size'. ", "1", table.getTableCell(0, 2).getText()); - assertEquals("It is not the expected value of 'Current pool size'. ", currentPoolsize, table.getTableCell(0, 2).getText()); - // Busy connections - val = getIntegerMBeanAttribute(jcaConnFactOn, "currentBusy"); - //assertEquals("It is not the expected value of 'Busy connections'. ", "0", table.getTableCell(1, 2).getText()); - assertEquals("It is not the expected value of 'Busy connections'. ", val.toString(), table.getTableCell(1, 2).getText()); - // Busy in transactions - val = getIntegerMBeanAttribute(jcaConnFactOn, "currentInTx"); - //assertEquals("It is not the expected value of 'Busy in transactions'. ", "0", table.getTableCell(2, 2).getText()); - assertEquals("It is not the expected value of 'Busy in transactions'. ", val.toString(), table.getTableCell(2, 2).getText()); - // Min busy in last period - val = getIntegerMBeanAttribute(jcaConnFactOn, "busyMin"); - //assertEquals("It is not the expected value of 'Min busy in last period'. ", "0", table.getTableCell(3, 2).getText()); - assertEquals("It is not the expected value of 'Min busy in last period'. ", val.toString(), table.getTableCell(3, 2).getText()); - // Max busy in last period - val = getIntegerMBeanAttribute(jcaConnFactOn, "busyMax"); - //assertEquals("It is not the expected value of 'Max busy in last period'. ", "0", table.getTableCell(4, 2).getText()); - assertEquals("It is not the expected value of 'Max busy in last period'. ", val.toString(), table.getTableCell(4, 2).getText()); - // Connection leaks - val = getIntegerMBeanAttribute(jcaConnFactOn, "connectionLeaks"); - //assertEquals("It is not the expected value of 'Connection leaks'. ", "0", table.getTableCell(5, 2).getText()); - assertEquals("It is not the expected value of 'Connection leaks'. ", val.toString(), table.getTableCell(5, 2).getText()); - } - - /** - * Test Statistics On GetConnection Operations - * @param table The 'Statistics on getConnection operations' table - * @param wr the content frame - * @param wc the jonasAdmin connection - * @param utils jonasAdmin utils - * @throws Exception if an error occurs - */ - private void testStatisticsOnGetConnectionOperations(WebTable table, WebResponse wr, WebConversation wc, JonasAdminUtils utils) throws Exception { - Button button; - int servedConnections = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Create connections - createConnections(); - //Refresh - wc.sendRequest(wr.getRefreshRequest()); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 4); - - // Served connections have increased - assertTrue("The 'Served connections' number has not increased. ",servedConnections < Integer.parseInt(table.getTableCell(0, 2).getText())); - // Rejected connections 0 - assertEquals("The value of 'Rejected connections' is not '0'. ", "0", table.getTableCell(1, 2).getText()); - // By waiter overflow 0 - assertEquals("The value of 'By waiter overflow' is not '0'. ", "0", table.getTableCell(2, 2).getText()); - // By waiter timeout 0 - assertEquals("The value of 'By waiter timeout' is not '0'. ", "0", table.getTableCell(3, 2).getText()); - // By any other reason 0 - assertEquals("The value of 'By any other reason' is not '0'. ", "0", table.getTableCell(4, 2).getText()); - } - - /** - * Test 'Used By' infos and link - * @param table the 'Used by' table - * @throws Exception if an error occurs to send request. - */ - private void testUsedBy(WebTable table) throws Exception { - WebLink link; - // Ejb AlarmRecord - assertEquals("It is not used by 'AlarmRecord'. ", "AlarmRecord", table.getTableCell(1, 0).getText()); - link = table.getTableCell(1, 0).getLinks()[0]; - int code = wc.sendRequest(link.getRequest()).getResponseCode(); - assertEquals("The '" + link.getURLString() + "' link creates a '" + code + "' error. ", 200, code); - // Type EntityBean - assertEquals("It is not the Type of AlarmRecord. ", "EntityBean", table.getTableCell(1, 1).getText()); - } - - /** - * Test Statistics On Waiters - * @param table the 'Statistics On Waiters' table - * @throws Exception if an error occurs. - */ - private void testStatisticsOnWaiters(WebTable table) throws Exception { - // Current number of waiters 0 - int nbWaiters = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Max waiters 0 - int maxWaiters = Integer.parseInt(table.getTableCell(1, 2).getText()); - // Max waiters in last period 0 - int maxWaitersLastPeriod = Integer.parseInt(table.getTableCell(2, 2).getText()); - // Total waiters 0 - int totalWaiters = Integer.parseInt(table.getTableCell(3, 2).getText()); - // Max waiting time 0 - int maxWaitingTime = Integer.parseInt(table.getTableCell(4, 2).getText()); - // Max waiting in last period 0 - int maxWaitingLastPeriod = Integer.parseInt(table.getTableCell(5, 2).getText()); - // Total waiting 0 - int totalWaiting = Integer.parseInt(table.getTableCell(6, 2).getText()); - - // 0 < nbWaiters < maxWaitersLastPeriod < maxWaiters < totalWaiters - assertTrue("The current number of waiters is not positif. ", 0 <= nbWaiters); - assertTrue("Current number of waiters > Max waiters. ", nbWaiters <= maxWaitersLastPeriod); - assertTrue("Max waiters > Max waiters in last period. ", maxWaitersLastPeriod <= maxWaiters); - assertTrue("Max waiters in last period > Total waiters. ", maxWaiters <= totalWaiters); - - // 0 < maxWaitingLastPeriod < maxWaitingTime < totalWaiting - assertTrue("Max waiting in last period < 0. ", 0 <= maxWaitingLastPeriod); - assertTrue("Max waiting time < Max waiting in last period. ", maxWaitingLastPeriod <= maxWaitingTime); - assertTrue("Max waiting time > Total waiting. ", maxWaitingTime <= totalWaiting); - } - - /** - * Test Connection To Database Statistics - * @param table the 'Connection To Database Statistics' table - */ - private void testConnectionToDatabaseStatistics(WebTable table) { - // Number of connections > 0 - int nbConnections = Integer.parseInt(table.getTableCell(0, 2).getText()); - // Number of failures 0 - int nbFailures = Integer.parseInt(table.getTableCell(1, 2).getText()); - - assertTrue("The number of connections is not positif. ", 0 < nbConnections); - assertEquals("The expected number of failures was '0'. ", 0, nbFailures); - } - - /** - * Test connection factories - * @param table the 'connection factories' table - * @param wc the jonasAdmin connection - * @param utils the jonasAdmin utils - * @throws Exception if an error occurs - */ - private void testConnectionFactories(WebTable table, WebConversation wc, JonasAdminUtils utils) throws Exception { - WebResponse wr; - WebLink link; - WebTable tabTable; - TableCell cell; - int selectedTab; - - cell = table.getTableCell(1,0); - // Name eis/ErsatzEIS - assertEquals("It is not the expeted name of Connection Factory", "eis/ErsatzEIS", cell.getText()); - - // Go to 'eis/ErsatzEIS' - link = cell.getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - - // Verify there are 6 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_CF, selectedTab, "Problem in 'Connection Factory' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_RA) != -1); - assertTrue("The link " + URL_JONASADMIN_CONNECTION_FACTORIES + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONNECTION_FACTORIES)); - assertTrue("The link " + URL_JONASADMIN_ACTIVATION_SPECS + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_ACTIVATION_SPECS)); - assertTrue("The link " + URL_JONASADMIN_STATISTICS_CF + " is not found in the sixth tab. ", - tabTable.getTableCell(0, 10).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_STATISTICS_CF)); - - // Verify there are 10 tables - try { - // Try to get the last table with 'Apply' button. - table = utils.getTable(wr, 9); - } catch (ArrayIndexOutOfBoundsException e) { - fail("The number of tables is too little in the content frame of the connection factory page. "); - } - try { - // Try to get the eleventh table that doesn't exist. - table = utils.getTable(wr, 10); - fail("The number of tables is too big in the content frame of the connection factory page. "); - } catch (ArrayIndexOutOfBoundsException e) { - // ok - } - - // Go to 'Statistics' - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_STATISTICS_CF); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 6; - - // Verify there are 6 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_CF, selectedTab, "Problem in CF 'Statistics' tab. "); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_RA) != -1); - assertTrue("The link " + URL_JONASADMIN_CONNECTION_FACTORIES + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONNECTION_FACTORIES)); - assertTrue("The link " + URL_JONASADMIN_ACTIVATION_SPECS + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_ACTIVATION_SPECS)); - assertTrue("The link " + URL_JONASADMIN_RA_CF + " is not found in the fifth tab. ", - tabTable.getTableCell(0, 8).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RA_CF)); - - // Verify there are 13 tables - try { - // Try to get the last table with 'Apply' button. - table = utils.getTable(wr, 12); - } catch (ArrayIndexOutOfBoundsException e) { - fail("The number of tables is too little in the content frame of the CF statistic page. "); - } - try { - // Try to get the fourteenth table that doesn't exist. - table = utils.getTable(wr, 13); - fail("The number of tables is too big in the content frame of the CF statistic page. "); - } catch (ArrayIndexOutOfBoundsException e) { - // ok - } - - } - - /** - * Test Activation Specs - * @param table the 'ActivationSpecs' table - * @param wc the jonasAdmin connection - * @param utils the jonasAdmin utils - * @throws Exception if an error occurs - */ - private void testActivationSpecs(WebTable table, WebConversation wc, JonasAdminUtils utils) throws Exception { - WebResponse wr; - WebLink link; - WebTable tabTable; - TableCell cell; - int selectedTab; - - cell = table.getTableCell(1,0); - // Name eis/ErsatzAS - assertEquals("It is not the expeted name of ActivationSpec", "eis/ErsatzAS", cell.getText()); - - // Go to 'eis/ErsatzAS' - link = cell.getLinks()[0]; - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 5; - - // Verify there are 5 tabs - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_AS, selectedTab, "Problem in 'ActivationSpecs' tab."); - // - links - assertTrue("The link " + URL_JONASADMIN_RESOURCE + " is not found in the first tab. ", - tabTable.getTableCell(0, 0).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_RESOURCE)); - assertTrue("The link " + URL_JONASADMIN_RA + " is not found in the second tab. ", - tabTable.getTableCell(0, 2).getLinks()[0].getURLString().indexOf(URL_JONASADMIN_RA) != -1); - assertTrue("The link " + URL_JONASADMIN_CONNECTION_FACTORIES + " is not found in the third tab. ", - tabTable.getTableCell(0, 4).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_CONNECTION_FACTORIES)); - assertTrue("The link " + URL_JONASADMIN_ACTIVATION_SPECS + " is not found in the fourth tab. ", - tabTable.getTableCell(0, 6).getLinks()[0].getURLString().endsWith(URL_JONASADMIN_ACTIVATION_SPECS)); - - // Verify there are 5 tables - try { - // Try to get the last table with required properties. - table = utils.getTable(wr, 4); - } catch (ArrayIndexOutOfBoundsException e) { - fail("The number of tables is too little in the content frame of the activation spec page. "); - } - try { - // Try to get the eleventh table that doesn't exist. - table = utils.getTable(wr, 5); - fail("The number of tables is too big in the content frame of the activation spec page. "); - } catch (ArrayIndexOutOfBoundsException e) { - // ok - } - } - - /** - * Use Alarm Demo for creating connections - * @throws Exception if an error occurs - */ - private void createConnections() throws Exception { - WebConversation wc2 = new WebConversation(); - String urlAlarm = prefixUrl + "/alarm/secured/list.jsp"; - // Start the alarm demo - wc2.setAuthorization("jonas", "jonas"); - WebResponse wr = wc2.getResponse(urlAlarm); - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/ResourceUtils.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/ResourceUtils.java deleted file mode 100755 index 16b06bf5e0..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/resource/ResourceUtils.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.resource; - -import com.meterware.httpunit.Button; -import com.meterware.httpunit.WebForm; - -/** - * Class for filling resource forms. - * @author Paul Kemler - */ -public class ResourceUtils { - - /** - * Modify pool properties - * @param form the pool property form - * @param jdbcConnCheckLevel the value of Checking level - * @param connMaxAge the value of Maximum age - * @param maxOpentime the value of Maximum open time - * @param jdbcTestStatement SQL query for test statement - * @param maxSize the value of Pool maximum - * @param minSize the value of Pool minimum - * @param maxWaitTime the value of Max Wait Time - * @param maxWaiters the value of Max Waiters - * @param samplingPeriod the value of Sampling Period - * @throws Exception if an error occurs when button is clicked - */ - public static void modifyPoolProperties(WebForm form, String jdbcConnCheckLevel, String connMaxAge, - String maxOpentime, String jdbcTestStatement, String maxSize, String minSize, String maxWaitTime, - String maxWaiters, String samplingPeriod) throws Exception { - - Button button = null; - - form.setParameter("jdbcConnCheckLevel", jdbcConnCheckLevel); - form.setParameter("connMaxAge", connMaxAge); - form.setParameter("maxOpentime", maxOpentime); - form.setParameter("jdbcTestStatement", jdbcTestStatement); - form.setParameter("maxSize", maxSize); - form.setParameter("minSize", minSize); - form.setParameter("maxWaitTime", maxWaitTime); - form.setParameter("maxWaiters", maxWaiters); - form.setParameter("samplingPeriod", samplingPeriod); - - button = form.getButtons()[0]; - button.click(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/C_JonasAdminServiceSecurity.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/C_JonasAdminServiceSecurity.java deleted file mode 100755 index 8aeb04fa79..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/C_JonasAdminServiceSecurity.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.security; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test security service - * Test : - service/security - * - * @author Paul Kemler - */ -public class C_JonasAdminServiceSecurity extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminServiceSecurity(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_JonasAdminServiceSecurity.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/F_JonasAdminServiceSecurity.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/F_JonasAdminServiceSecurity.java deleted file mode 100755 index efccabccb4..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/service/security/F_JonasAdminServiceSecurity.java +++ /dev/null @@ -1,241 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.service.security; - -import java.io.File; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminUtils; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing security service - * @author Paul Kemler - * - */ -public class F_JonasAdminServiceSecurity extends JonasAdminTestCase { - - /** - * URL of security service - */ - private static final String URL_JONASADMIN_SECURITY = "EditServiceSecurity.do"; - - /** - * number of tabs when you are in security - */ - private static final int NUMBER_OF_TABS_FOR_SECURITY = 1; - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminServiceSecurity(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_JonasAdminServiceSecurity(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - return new TestSuite(F_JonasAdminServiceSecurity.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test realms table - * @throws Exception if error occurs - * - */ - public void testRealms() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - WebTable tabTable; - int selectedTab; - String name; - String type; - String path; - boolean used; - JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - // Test only if the security service is enabled - if (jProp.isSecurity()) { - - // Go to security service - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SECURITY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - selectedTab = 1; - - // Verify 'Realms' - path = File.separator + "jonasAdmin"; - name = "memrlm_1"; - type = "memory"; - used = true; - try { - table = utils.getTable(wr, 0); - int rowJonasAdmin = utils.getFirstRow(path, table, 2).intValue(); - if (rowJonasAdmin != -1) { - testRealmRow(table, rowJonasAdmin, name, type, path, used); - } - } catch (Exception e) { - if (jProp.isCatalina()) { - fail("The realm security table is not found. "); - } else { - throw new IllegalStateException("Not implemented: JETTY. "); - } - } - - // "Olstore": type=datasource and not used - if (jProp.isEar()) { - useEar("olstore"); - - path = File.separator + "olstore"; - name = "olstorerlm_1"; - type = "datasource"; - used = false; - wr = wc.getFrameContents(FRAME_TREE); - link = wr.getFirstMatchingLink( WebLink.MATCH_URL_STRING, URL_JONASADMIN_SECURITY); - link.click(); - wr = wc.getFrameContents(FRAME_CONTENT); - table = utils.getTable(wr, 0); - int rowDatasourceType = utils.getFirstRow(path, table, 2).intValue(); - if (rowDatasourceType != -1) { - testRealmRow(table, rowDatasourceType, name, type, path, used); - } else { - if (jProp.isCatalina()) { - fail("The realm security for the context path '" + path + "' is not found. "); - } else { - throw new IllegalStateException("Not implemented: JETTY. "); - } - } - } - - - // Verify there is 1 tab - tabTable = utils.getTabTable(wr); - testTabs(tabTable, NUMBER_OF_TABS_FOR_SECURITY, selectedTab, "Problem in 'Realms' tab."); - } - } - - /** - * Test infos of a realm row - * @param table the table of realms - * @param row the row to test - * @param name the value of the name - * @param type the value of the type - * @param path the value of the path - * @param used the value of 'used' - */ - private void testRealmRow(WebTable table, int row, String name, String type, String path, boolean used) { - // Verify Name - assertEquals("It is not the name for the context path '" + path + "' . ", name, table.getTableCell(row, 0).getText()); - // Verify Type - assertEquals("It is not the type for the context path '" + path + "' . ", type, table.getTableCell(row, 1).getText()); - // Verify Used - if (used) { - assertEquals("It is not the value of 'used' for the context path '" + path + "' . ", used, table.getTableCell(row, 3).getImages()[0].getSource().endsWith("images/icon/tag_blue.gif")); - } else { - assertEquals("It is not the value of 'used' for the context path '" + path + "' . ", 0, table.getTableCell(row, 3).getImages().length); - } - } - - /** - * Tear Down cleanUp action - * @throws Exception if an error occurs - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/suite/C_JonasAdmin.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/suite/C_JonasAdmin.java deleted file mode 100755 index 245957eb6c..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/suite/C_JonasAdmin.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.suite; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.catalina.C_JonasAdminCatalina; -import org.objectweb.jonas.jonasadmin.test.deploy.C_JonasAdminDeploy; -import org.objectweb.jonas.jonasadmin.test.domain.C_JonasAdminDomain; -import org.objectweb.jonas.jonasadmin.test.jonasserver.C_JonasAdminJonasserver; -import org.objectweb.jonas.jonasadmin.test.joram.C_JonasAdminJoram; -import org.objectweb.jonas.jonasadmin.test.logging.C_JonasAdminLogging; -import org.objectweb.jonas.jonasadmin.test.monitoring.C_JonasAdminMonitoring; -import org.objectweb.jonas.jonasadmin.test.navigation.C_JonasAdminNavigation; -import org.objectweb.jonas.jonasadmin.test.resource.C_JonasAdminResource; -import org.objectweb.jonas.jonasadmin.test.service.container.C_JonasAdminContainer; -import org.objectweb.jonas.jonasadmin.test.service.database.C_JonasAdminServiceDatabase; -import org.objectweb.jonas.jonasadmin.test.service.discovery.C_JonasAdminServiceDiscovery; -import org.objectweb.jonas.jonasadmin.test.service.jtm.C_JonasAdminServiceTransaction; -import org.objectweb.jonas.jonasadmin.test.service.mail.C_JonasAdminServiceMail; -import org.objectweb.jonas.jonasadmin.test.service.resource.C_JonasAdminServiceResource; -import org.objectweb.jonas.jonasadmin.test.service.security.C_JonasAdminServiceSecurity; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -/** - * Define a class to test jonasAdmin - * Test : - catalina - * - deploy - * - domain - * - jonasserver - * - joram - * - logging - * - monitoring - * - 'navigation' - * - service/container - * - service/resource - * - service/transaction - * - service/security - * - service/mail - * - service/discovery - * - service/database - * - resource - * @author Paul Kemler - */ - -public class C_JonasAdmin extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdmin(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(C_JonasAdminCatalina.suite()); - suite.addTest(C_JonasAdminDeploy.suite()); - suite.addTest(C_JonasAdminDomain.suite()); - suite.addTest(C_JonasAdminJonasserver.suite()); - suite.addTest(C_JonasAdminJoram.suite()); - suite.addTest(C_JonasAdminLogging.suite()); - suite.addTest(C_JonasAdminMonitoring.suite()); - suite.addTest(C_JonasAdminNavigation.suite()); - suite.addTest(C_JonasAdminContainer.suite()); - suite.addTest(C_JonasAdminServiceResource.suite()); - suite.addTest(C_JonasAdminServiceTransaction.suite()); - suite.addTest(C_JonasAdminServiceSecurity.suite()); - suite.addTest(C_JonasAdminServiceMail.suite()); - suite.addTest(C_JonasAdminServiceDiscovery.suite()); - suite.addTest(C_JonasAdminServiceDatabase.suite()); - suite.addTest(C_JonasAdminResource.suite()); - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/C_JonasAdminTemplate.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/C_JonasAdminTemplate.java deleted file mode 100755 index b6c3348d77..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/C_JonasAdminTemplate.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.template; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.WebConversation; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Define a class to test ... - * Test : - ... - * - * @author Paul Kemler - */ -public class C_JonasAdminTemplate extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param name the name - */ - public C_JonasAdminTemplate(String name) { - super(name); - } - - /** - * Get a new TestSuite for this class - * It includes all jonasAdmin tests - * @return a new TestSuite for this class - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - /* - * Add test cases - * TODO : replace F_JonasAdminTemplate - */ - suite.addTest(F_JonasAdminTemplate.suite()); - - return suite; - } - - /** - * Main method - * @param args the arguments - */ - public static void main (String[] args) { - WebConversation wc = new WebConversation(); - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/F_JonasAdminTemplate.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/F_JonasAdminTemplate.java deleted file mode 100755 index a68eecd507..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/template/F_JonasAdminTemplate.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.template; - -import junit.framework.TestSuite; - -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminAuth; -import org.objectweb.jonas.jonasadmin.test.util.JonasAdminTestCase; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Class for testing ... - * @author Paul Kemler - * - */ -public class F_JonasAdminTemplate extends JonasAdminTestCase { - - /** - * Constructor with a specified name - * @param s name - */ - public F_JonasAdminTemplate(String s) { - super(s, URL_JONASADMIN); - } - - /** - * Main method - * @param args the arguments - */ - public static void main(String[] args) { - - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String sArg = args[argn]; - if (sArg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - /* - * TODO : replace F_JonasAdminTemplate - */ - junit.textui.TestRunner.run(new F_JonasAdminTemplate(testtorun)); - } - } - - /** - * Get a new TestSuite for this class - * @return a new TestSuite for this class - */ - public static TestSuite suite() { - /* - * TODO : replace F_JonasAdminTemplate - */ - return new TestSuite(F_JonasAdminTemplate.class); - } - - /** - * Setup need for these tests - * jonasAdmin is required - * @throws Exception if it fails - */ - protected void setUp() throws Exception { - super.setUp(); - - if (wc.getCurrentPage().getURL() == null) { - useWar("jonasAdmin"); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception e) { - fail("authentification failed : " + e); - } - } else { - // if there was an error, the connection must be restablished - try { - wc.getFrameContents(FRAME_TREE); - } catch (Exception e) { - wc.getResponse(urlLogOut); - // login to jonas admin - try { - JonasAdminAuth.doValidAuth(wc, url); - } catch (Exception auth) { - fail("authentification failed : " + auth); - } - } - } - } - - /** - * Test ... - * @throws Exception if error occurs - * - */ - public void testTemplate() throws Exception { - - WebResponse wr; - WebLink link; - WebTable table; - /* - * To get some utils for WebTable - */ - // JonasAdminUtils utils = new JonasAdminUtils(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - /* - * TODO : ADD YOUR CODE HERE - */ - - } - - /** - * Tear Down - * cleanUp action - */ - public void tearDown() throws Exception { - super.tearDown(); - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JProperties.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JProperties.java deleted file mode 100644 index a8b4fe9b62..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JProperties.java +++ /dev/null @@ -1,533 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Properties; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import org.ow2.jonas.adm.AdmInterface; - -/** - * JOnAS property accessor - * @author kemlerp - */ -public class JProperties { - - /** - * Name of the JOnAS server used for tests - */ - private static String jonasName = "jonas"; - - /** - * Initial context used for lookup - */ - private static Context ictx = null; - - /** - * JOnAS admin used for communicate via JMX to JOnAS - */ - private static AdmInterface admI = null; - - /** - * System properties - */ - private static Properties systEnv = System.getProperties(); - - /** - * Separator of file - */ - private static String fileSeparator = systEnv.getProperty("file.separator"); - - /** - * -Djonas.test property - */ - private static final String JONAS_TEST = "jonas.test"; - - /** - * JONAS_TEST - */ - private static String jonasTest = systEnv.getProperty(JONAS_TEST); - - /** - * -Djonas.base property - */ - private static final String JONAS_BASE = "jonas.base"; - - /** - * JONAS_BASE - */ - private static String jonasBase = systEnv.getProperty(JONAS_BASE); - - /** - * resource directory name - */ - private static final String RESOURCE_DIR = "resources"; - - /** - * conf directory name - */ - private static final String CONF_DIR = "conf"; - - /** - * Get initialContext - * @return the initialContext - * @throws NamingException if the initial context can't be retrieved - */ - private Context getInitialContext() throws NamingException { - return new InitialContext(); - } - - /** - * Get list environnement - * @return JOnAS protperties - * @throws Exception if list environnement cannot be got - */ - public Properties getPropertiesEnv() throws Exception { - Properties prop = null; - - try { - if (ictx == null) { - ictx = getInitialContext(); - } - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - prop = admI.listEnv(); - } catch (Exception e) { - throw new Exception("Cannot get list environnement : " + e.getMessage()); - } - - return prop; - } - - /** - * Get services in jonas properties - * @return A table of string with services in jonas properties - * @throws Exception if properties cannot be got - */ - public String[] getServices() throws Exception { - Properties propertiesEnv = getPropertiesEnv(); - String services = propertiesEnv.getProperty("jonas.services"); - return services.split(","); - } - - /** - * Search a service in services - * @param service The string that is searched - * @return true if there is the service in services else false - * @throws Exception if services cannot be got - */ - public boolean searchService(String service) throws Exception { - String[] services = getServices(); - boolean found = false; - int i = 0; - - while (!found && i < services.length) { - if (services[i].equals(service)) { - found = true; - } - i++; - } - - return found; - } - - /** - * Db in service property - * @return True if db is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isDb() throws Exception { - boolean exist = false; - try { - if (searchService("db")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Dbm in service property - * @return True if dbm is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isDbm() throws Exception { - boolean exist = false; - try { - if (searchService("dbm")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Discovery in service property - * @return True if discovery is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isDiscovery() throws Exception { - boolean exist = false; - try { - if (searchService("discovery")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Ear in service property - * @return True if ear is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isEar() throws Exception { - boolean exist = false; - try { - if (searchService("ear")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Ejb in service property - * @return True if ejb is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isEjb() throws Exception { - boolean exist = false; - try { - if (searchService("ejb")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Jms in service property - * @return True if jms is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isJms() throws Exception { - boolean exist = false; - try { - if (searchService("jms")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Jmx in service property - * @return True if Jmx is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isJmx() throws Exception { - boolean exist = false; - try { - if (searchService("jmx")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Jtm in service property - * @return True if jtm is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isJtm() throws Exception { - boolean exist = false; - try { - if (searchService("jtm")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Mail in service property - * @return True if db is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isMail() throws Exception { - boolean exist = false; - try { - if (searchService("mail")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Registry in service property - * @return True if registry is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isRegistry() throws Exception { - boolean exist = false; - try { - if (searchService("registry")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Resource in service property - * @return True if resource is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isResource() throws Exception { - boolean exist = false; - try { - if (searchService("resource")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Security in service property - * @return True if security is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isSecurity() throws Exception { - boolean exist = false; - try { - if (searchService("security")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Web in service property - * @return True if web is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isWeb() throws Exception { - boolean exist = false; - try { - if (searchService("web")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * Ws in service property - * @return True if ws is a value of service property - * @throws Exception if service property cannot be got - */ - public boolean isWs() throws Exception { - boolean exist = false; - try { - if (searchService("ws")) { - exist = true; - } - } catch (Exception e) { - throw new Exception("Cannot get services : " + e.getMessage()); - } - return exist; - } - - /** - * JMS service location - * @return True if it is collocated, else False - * @throws Exception if property cannot be got - */ - public boolean isJMSCollocated() throws Exception { - Properties propertiesEnv = getPropertiesEnv(); - boolean collocated = Boolean.valueOf(propertiesEnv.getProperty("jonas.service.jms.collocated")).booleanValue(); - return collocated; - } - - /** - * Catalina in jonas properties - * @return True if Catalina is the web service, else false - * @throws Exception if property cannot be got - */ - public boolean isCatalina() throws Exception { - Properties propertiesEnv = getPropertiesEnv(); - String webClass = propertiesEnv.getProperty("jonas.service.web.class"); - return webClass.endsWith("CatalinaJWebContainerServiceWrapper"); - } - - /** - * Jtm location - * @return True if jtm is remote, False if it is collocated - * @throws Exception if property cannot be got - */ - public boolean isJtmRemote() throws Exception { - Properties propertiesEnv = getPropertiesEnv(); - boolean remote = Boolean.valueOf(propertiesEnv.getProperty("jonas.service.jtm.remote")).booleanValue(); - return remote; - } - - /** - * Get properties from a file in resources directory. - * @param fileName name of the property file with ".properties". - * @return Properties. - * @throws Exception if the file is not found. - */ - public Properties getProperties(String fileName) throws Exception { - // Get ClassLoader - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - URL url = cl.getResource(fileName); - InputStream is = cl.getResourceAsStream(fileName); - Properties configFile = new Properties(); - configFile.load(is); - return configFile; - } - - /** - * Get properties from a file in $JONAS_TEST/jonasadmin directory. - * @param fileName name of the property file without ".properties". - * @return Properties. - * @throws FileNotFoundException if the file is not found. - */ - private Properties getCarolProperties() throws FileNotFoundException { - // ${jonas.base}/conf/carol.properties - if (jonasBase.equalsIgnoreCase("${myenv.JONAS_BASE}")) { - throw new FileNotFoundException("You must add JONAS_BASE in your environnement variables. "); - } else { - String propFileName = jonasBase + fileSeparator + CONF_DIR + fileSeparator + "carol" + ".properties"; - - File f = null; - Properties configFile = new Properties(); - try { - f = new File(propFileName); - FileInputStream is = new FileInputStream(f); - configFile.load(is); - } catch (FileNotFoundException e) { - throw new FileNotFoundException("Cannot find properties for " + propFileName); - } catch (IOException e) { - System.err.println(e); - } - return configFile; - } - } - - /** - * Get registry protocol - * @return protocol name (jrmp, iiop, cmi) - */ - public String getRegistryProtocol() { - String protocol = null; - try { - protocol = getCarolProperties().getProperty("carol.protocols"); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return protocol; - } - - /** - * Get registry url - * @return url of the registry - */ - public String getRegistryUrl() { - String protocol = null; - String url = null; - try { - protocol = getCarolProperties().getProperty("carol.protocols"); - - try { - url = getCarolProperties().getProperty("carol." + protocol + ".url"); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return url; - } - - /** - * Get Jvm Version - * @return the java version - */ - public String getJvmVersion() { - return systEnv.getProperty("java.version"); - } - - /** - * Get Jvm vendor - * @return value of the property java.vm.specification.vendor - */ - public String getJvmVendor() { - return systEnv.getProperty("java.vm.specification.vendor"); - } -} \ No newline at end of file diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminAuth.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminAuth.java deleted file mode 100644 index 955fddf89b..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminAuth.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebResponse; - -/** - * JonasAdmin authentification - * @author kemlerp - * - */ -public class JonasAdminAuth { - - /** - * Constructor - * - */ - private JonasAdminAuth() { - super(); - } - /** - * Authenticate with a valid login/password - * @param wc Web Conversation to use - * @param url url to use - * @return the response - * @throws Exception if an error occurs - */ - public static WebResponse doValidAuth(WebConversation wc, String url) throws Exception { - return doAuth(wc, url, "jonas", "jonas"); - } - - /** - * Authenticate with the specified login/password - * @param wc Web Conversation to use - * @param url url to use - * @param login login to use - * @param password password to use - * @return the response after authentication - * @throws Exception if an error occurs - */ - public static WebResponse doAuth(WebConversation wc, String url, String login, String password) throws Exception { - WebResponse wr = wc.getResponse(url); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - webForm.setParameter("j_username", login); - webForm.setParameter("j_password", password); - return webForm.submit(); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminConnexion.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminConnexion.java deleted file mode 100755 index 0b81143ead..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminConnexion.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import com.meterware.httpunit.WebConversation; - -/** - * Class shares the connexion object - * Needs to use the same JVM => fork=no - * @author kemlerp - * - */ -public class JonasAdminConnexion { - - /** - * Conversation used for HttpUnit - */ - private static WebConversation wc = null; - - /** - * Constructor - * - */ - private JonasAdminConnexion() { - super(); - } - - - /** - * Get the connexion object, wc - * @return null or a WebConversation to JonasAdmin - */ - public static WebConversation getWc() { - return wc; - } - - - /** - * Set the connexion object, wc - * @param wc a WebConversation to JonasAdmin - */ - public static void setWc(WebConversation wc) { - JonasAdminConnexion.wc = wc; - } - - /** - * Create the connexion object, wc - * @return JonasAdminConnexion.wc - */ - public static WebConversation createWc() { - JonasAdminConnexion.wc = new WebConversation(); - return JonasAdminConnexion.wc; - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminFiles.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminFiles.java deleted file mode 100755 index 81289b18be..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminFiles.java +++ /dev/null @@ -1,259 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.util.Properties; -import java.util.Vector; - -import org.apache.tools.ant.BuildException; - -/** - * Class to use jonas files - * @author kemlerp - * - */ -public class JonasAdminFiles { - - /** - * Get "server.xml" created files by the test - * @return The table of created files - */ - private static Vector getCreatedFiles(String beginTime, String endTime) { - Vector createdFiles = new Vector(); - - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf path - String conf = jonasBase + File.separator + "conf"; - - // Get JONAS_BASE/conf directory - File directory = new File(conf); - - // Get JONAS_BASE conf files - File[] files = directory.listFiles(); - - // First name of file to compare - String beginName = "server.xml." + beginTime; - - // End name of file to compare - String endName = "server.xml." + endTime; - - // Get the created files by the test - for (int i = 0; i < files.length; i++) { - if (files[i].getName().compareTo(beginName) >= 0) { - if (files[i].getName().compareTo(endName) <= 0) { - createdFiles.add(files[i]); - } - } - } - return createdFiles; - } - - /** - * Delete files - * @param beginTime begin time of the test - * @param endTime end time of the test - */ - public static void deleteCreatedFiles(String beginTime, String endTime) { - Vector files = getCreatedFiles(beginTime, endTime); - - for (int i = 0; i < files.size(); i++) { - // Delete file - ((File) files.get(i)).delete(); - } - } - - /** - * Delete file in $JONAS_BASE/conf directory - * @param fileName name of the file - */ - public static void deleteConfigFile(String fileName) { - - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf/... path - String serverConfPath = jonasBase + File.separator + "conf" + File.separator + fileName; - - // Get file - File file = new File(serverConfPath); - - // delete file - file.delete(); - } - - /** - * Replace server.xml by previous configuration file and remove created files - * @param beginTime begin time of the test - * @param endTime end time of the test - */ - public static void recoverServerConf(String beginTime, String endTime) { - Vector files = getCreatedFiles(beginTime, endTime); - - if (files.size() > 0) { - // Get server.xml file - File serverConf = getServerXmlFile(); - // Get the older copied configuration file - File copiedFile = (File) files.get(0); - - // Rename previous configuration file to "server.xml" - if (serverConf.canWrite()) { - copiedFile.renameTo(serverConf); - } - - // Delete other created files - for (int i = 0; i < files.size(); i++) { - ((File) files.get(i)).delete(); - } - } - } - - - /** - * Get server.xml file - * @return File server.xml - */ - public static File getServerXmlFile() { - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf/server.xml path - String serverConfPath = jonasBase + File.separator + "conf" + File.separator + "server.xml"; - - // Get server.xml file - return new File(serverConfPath); - } - - /** - * Get previous server.xml file - * @param beginTime begin time of the test - * @param endTime end time of the test - * @return File - */ - public static File getPreviousServerXmlFile(String beginTime, String endTime) { - Vector files = getCreatedFiles(beginTime, endTime); - return (File) files.get(files.size() - 1); - } - - /** - * Get local joram server port - * @param fileName name of the administration task file: joram-admin.cfg (in JONAS_BASE/conf directory) - * @return port number - * @throws IOException if an error occurs while file is read - */ - public static String getJoramServerPort(String fileName) throws IOException { - String port = null; - - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf/server.xml path - String serverConfPath = jonasBase + File.separator + "conf" + File.separator + fileName; - - // Get server.xml file - File file = new File(serverConfPath); - - // Transform file into string - BufferedReader read = new BufferedReader(new FileReader(file)); - String line = read.readLine(); - while (line != null) { - if (line.startsWith("Port")) { - // Get port - port = line.substring("Port\t".length()); - } - line = read.readLine(); - } - read.close(); - - return port; - } - - /** - * Get local joram server host name - * @param fileName name of the administration task file: joram-admin.cfg (in JONAS_BASE/conf directory) - * @return host name - * @throws IOException if an error occurs while file is read - */ - public static String getJoramHostName(String fileName) throws IOException { - String hostName = null; - - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf/server.xml path - String serverConfPath = jonasBase + File.separator + "conf" + File.separator + fileName; - - // Get server.xml file - File file = new File(serverConfPath); - - // Transform file into string - BufferedReader read = new BufferedReader(new FileReader(file)); - String line = read.readLine(); - while (line != null) { - if (line.startsWith("Host")) { - // Get port - hostName = line.substring("Host\t".length()); - } - line = read.readLine(); - } - read.close(); - - return hostName; - } - - public static void writeConfigFile(String fileName, Properties properties) throws IOException { - - // Get JONAS_BASE path - String jonasBase = System.getProperty("jonas.base"); - - // Get JONAS_BASE/conf/... path - String serverConfPath = jonasBase + File.separator + "conf" + File.separator + fileName; - - // Get file - File file = new File(serverConfPath); - - // Write the properties file back out - FileOutputStream output = null; - - try { - output = new FileOutputStream(file); - - final String header = "File was created by jonasAdmin test suite."; - - properties.store(output, header); - } catch (final IOException ioe) { - final String message = "Error while writing " + file; - throw new BuildException(message, ioe); - } - - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTestCase.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTestCase.java deleted file mode 100644 index bece60e288..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTestCase.java +++ /dev/null @@ -1,909 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999-2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import java.io.File; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.net.URLClassLoader; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import junit.framework.TestCase; - -import org.ow2.jonas.adm.AdmInterface; -import org.ow2.jonas.lib.management.javaee.J2eeObjectName; -import org.omg.CORBA.ORB; - -import com.meterware.httpunit.HttpUnitOptions; -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebForm; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Define a class to add useful methods for test the examples - * - Deploy ear, war and beans - * - Retrieve initial context - * @author Florent Benoit - */ -public class JonasAdminTestCase extends TestCase { - - /** - * URL of the login page - * - */ - protected static final String URL_JONASADMIN = "/jonasAdmin/"; - - /** - * NAME of FRAME content - */ - protected static final String FRAME_CONTENT = "content"; - - /** - * NAME of FRAME tree - */ - protected static final String FRAME_TREE = "tree"; - - /** - * NAME of FRAME top - */ - protected static final String FRAME_TOP = "top"; - - /** - * URL of the deployment of EARs - */ - protected static final String URL_JONASADMIN_DEPLOYEAR = "/jonasAdmin/EditDeploy.do?type=ear"; - - /** - * URL of the deployment of JARs - */ - protected static final String URL_JONASADMIN_DEPLOYJAR = "/jonasAdmin/EditDeploy.do?type=jar"; - - /** - * Name of the property file of jonasAdmin tests - */ - private static final String JONASADMINTEST_PROPERTY_NAME = "jonasAdminTests.properties"; - /** - * JoramAdmin MBean's OBJECT_NAME - */ - private static final String JORAM_ADMIN_ON = "joramClient:type=JoramAdmin"; - /** - * Name of the JOnAS server used for tests - */ - private static String jonasName = "jonas"; - /** - * Name of the domain - */ - private static String domainName = "jonas"; - /** - * Initial context used for lookup - */ - private static Context ictx = null; - - /** - * JOnAS admin used for communicate via JMX to JOnAS - */ - private static AdmInterface admI = null; - - /** - * JMX connector - */ - private static JMXConnector connector = null; - - /** - * MBean Server Connection - */ - private static MBeanServerConnection currentServerConnection = null; - - /** - * Client ORB - */ - private static ORB orb =null; - - /** - * Conversation used for HttpUnit - */ - protected static WebConversation wc = null; - - /** - * URL used for the constructor - */ - protected String url = null; - - /** - * URL used to return to Welcome.jsp - */ - protected String urlWelcome = null; - - /** - * URL used to log out - */ - protected String urlLogOut = null; - - - /** - * Prefix for build URLs - */ - protected String prefixUrl = null; - - /** - * JOnAS and jonasAdmin properties - */ - protected JProperties jProp = null; - - /** - * jonasAdmin test properties - */ - protected Properties configFile; - - /** - * jonasAdmin port - */ - protected String port; - - /** - * Add to the specified url the prefix - * @param url relative URL - * @return absolute path of URL - */ - protected String getAbsoluteUrl (String url) { - return (this.prefixUrl + url); - } - - /** - * Initialize the port used by tests and the prefix - */ - private void init() { - // Port - port = System.getProperty("http.port"); - if (port == null) { - port = "9000"; - } - - // urls - prefixUrl = "http://localhost:" + port; - urlWelcome = prefixUrl + "/jonasAdmin/Welcome.do"; - urlLogOut = prefixUrl + "/jonasAdmin/logOut.do"; - - // Properties - jProp = new JProperties(); - - try { - configFile = jProp.getProperties(JONASADMINTEST_PROPERTY_NAME); - } catch (Exception e) { - System.err.println("Cannot find file : " + JONASADMINTEST_PROPERTY_NAME + ". " + e); - e.printStackTrace(); - } - - } - - /** - * Constructor with a specified name - * @param s the name - */ - public JonasAdminTestCase(String s) { - super(s); - init(); - } - - /** - * Constructor with a specified name and url - * @param s the name - * @param url the url which can be used - */ - public JonasAdminTestCase(String s, String url) { - super(s); - init(); - this.url = getAbsoluteUrl(url); - } - - /** - * Get initialContext - * @return the initialContext - * @throws NamingException if the initial context can't be retrieved - */ - private Context getInitialContext() throws NamingException { - return new InitialContext(); - } - - /** - * Common setUp routine, used for every test. - * @throws Exception if an error occurs - */ - protected void setUp() throws Exception { - - // WebConversation to jonasAdmin - wc = JonasAdminConnexion.getWc(); - if (wc == null) { - wc = JonasAdminConnexion.createWc(); - } - - try { - // get InitialContext - if (ictx == null) { - ictx = getInitialContext(); - } - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - - } catch (NamingException e) { - System.err.println("Cannot setup test: " + e); - e.printStackTrace(); - } - - // Get a MBean Server connection and set currentServerConnection variable - initMBeanServer(); - } - - - /** - * Load an ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void useEar(String filename) throws Exception { - - try { - // Load ear in JOnAS if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - - //Test in both directories (apps/ and apps/autoload) - String appsFileName = filename + ".ear"; - String autoloadAppsFileName = "autoload" + File.separator + filename + ".ear"; - if (!admI.isEarLoaded(appsFileName) && !admI.isEarLoaded(autoloadAppsFileName)) { - //if the file was in autoload, it was loaded - admI.addEar(appsFileName); - } - - } catch (Exception e) { - throw new Exception("Cannot load Ear : " + e.getMessage()); - } - } - - - /** - * Unload a ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void unUseEar(String filename) throws Exception { - try { - // Unload ear in EARServer if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - if (admI.isEarLoaded(filename + ".ear")) { - admI.removeEar(filename + ".ear"); - } - } catch (Exception e) { - throw new Exception("Cannot unload Bean : " + e.getMessage()); - } - } - - /** - * Load a war file in the jonas server - * @param filename war file, without ".war" extension - * @throws Exception if an error occurs - */ - public void useWar(String filename) throws Exception { - - try { - // Load war in JOnAS if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - - //Test in both directories (apps/ and apps/autoload) - String webappsFileName = filename + ".war"; - String autoloadWebappsFileName = "autoload" + File.separator + filename + ".war"; - if (!admI.isWarLoaded(webappsFileName) && !admI.isWarLoaded(autoloadWebappsFileName)) { - //if the file was in autoload, it was loaded - admI.addWar(webappsFileName); - } - - } catch (Exception e) { - throw new Exception("Cannot load War : " + e.getMessage()); - } - } - - /** - * Load a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void useBeans(String filename) throws Exception { - try { - // Load bean in EJBServer if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - if (!admI.isLoaded(filename + ".jar")) { - admI.addBeans(filename + ".jar"); - } - } catch (Exception e) { - throw new Exception("Cannot load Bean : " + e.getMessage()); - } - } - - - /** - * Unload a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void unUseBeans(String filename) throws Exception { - try { - // Load bean in EJBServer if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - if (admI.isLoaded(filename + ".jar")) { - admI.removeBeans(filename + ".jar"); - } - } catch (Exception e) { - throw new Exception("Cannot unload Bean : " + e.getMessage()); - } - } - - - /** - * Load a rar file in the jonas server - * @param filename rar file, without ".rar" extension - * @throws Exception if an error occurs - */ - public void useRar(String filename) throws Exception { - - try { - // Load rar in JOnAS if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - - //Test in both directories (rars/ and rars/autoload) - String raFileName = filename + ".rar"; - String autoloadRaFileName = "autoload" + File.separator + filename + ".rar"; - if (!admI.isRarLoaded(raFileName) && !admI.isRarLoaded(autoloadRaFileName)) { - //if the file was in autoload, it was loaded - admI.addRar(raFileName); - } - - } catch (Exception e) { - throw new Exception("Cannot load Rar : " + e.getMessage()); - } - } - - - /** - * Rar is loaded in the jonas server - * @param filename rar file, without ".rar" extension - * @return true if the rar is loaded, else false - * @throws Exception if an error occurs - */ - public boolean isRarLoaded(String filename) throws Exception { - - boolean found = false; - - try { - // Load rar in JOnAS if not already loaded. - if (ictx == null) { - ictx = getInitialContext(); - } - - if (admI == null) { - admI = (AdmInterface) PortableRemoteObject.narrow(ictx.lookup(jonasName + "_Adm"), AdmInterface.class); - } - - //Test in both directories (rars/ and rars/autoload) - String raFileName = filename + ".rar"; - String autoloadRaFileName = "autoload" + File.separator + filename + ".rar"; - if (admI.isRarLoaded(raFileName) || admI.isRarLoaded(autoloadRaFileName)) { - //if the file was in autoload, it was loaded - found = true; - } - - } catch (Exception e) { - throw new Exception("Cannot load Rar : " + e.getMessage()); - } - - return found; - } - - /** - * Create a mail factory in jonas server - * @param mail factory name of the datasource - * @param properties properties of the mail factory - * @throws Exception if an error occurs - */ - protected void createMailFactory(String mailFactory, Properties properties) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=mail"); - - // add properties in 'datasource'.properties - JonasAdminFiles.writeConfigFile(mailFactory + ".properties", properties); - - Object[] params = new Object[] {mailFactory, properties, new Boolean(true)}; - server.invoke(on, "createMailFactoryMBean", params, new String[] {String.class.getName(), Properties.class.getName(), Boolean.class.getName()}); - - } - - /** - * Unbind a mail factory in jonas server - * @param mailFactory name of the mail factory - * @throws Exception if an error occurs - */ - protected void unBindMailFactory(String mailFactory) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=mail"); - - Object[] params = new Object[] {mailFactory}; - server.invoke(on, "unbindMailFactoryMBean", params, new String[] {String.class.getName()}); - } - - /** - * Return if the mail factory is in mail factory list - * @param mailFactory the name of the mail factory - * @return true if the mail factory is in list, false else. - * @throws Exception if an error occurs. - */ - protected boolean isInMailFactoryList(String mailFactory) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=mail"); - - List list = (List) server.getAttribute(on, "MailFactoryPropertiesFiles"); - - return list.contains(mailFactory); - } - - /** - * Load a datasource in jonas server - * @param datasource name of the datasource - * @param properties properties of the datasource - * @throws Exception if an error occurs - */ - protected void useDatasource(String datasource, Properties properties) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=database"); - - if (!((Boolean) server.invoke(on, "isLoadedDataSource", new Object[] {datasource}, new String[] {String.class.getName()})).booleanValue()) { - // add properties in 'datasource'.properties - JonasAdminFiles.writeConfigFile(datasource + ".properties", properties); - - Object[] params = new Object[] {datasource, properties, new Boolean(true)}; - server.invoke(on, "loadDataSource", params, new String[] {String.class.getName(), Properties.class.getName(), Boolean.class.getName()}); - } - } - - /** - * Check if database service is started (dbm) - * @return true if dbm started - * @throws Exception if an error occurs - */ - protected boolean isDatabaseService() throws Exception { - boolean result = false; - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=database"); - if (server.isRegistered(on)) { - result = true; - } - return result; - } - - /** - * Check if the Joram RAR is deplyed - * @return true if dbm started - * @throws Exception if an error occurs - */ - protected boolean isJoramRar() throws Exception { - boolean result = false; - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance(JORAM_ADMIN_ON); - if (server.isRegistered(on)) { - result = true; - } - return result; - } - - /** - * Unload a datasource in jonas server - * @param datasource name of the datasource - * @throws Exception if an error occurs - */ - protected void unUseDatasource(String datasource) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=database"); - - if (((Boolean) server.invoke(on, "isLoadedDataSource", new Object[] {datasource}, new String[] {String.class.getName()})).booleanValue()) { - - Object[] params = new Object[] {datasource}; - server.invoke(on, "unloadDataSource", params, new String[] {String.class.getName()}); - } - } - - /** - * Load a datasource in jonas server - * @param datasource name of the datasource - * @return boolean true if the datasource is loaded, false else - * @throws Exception if an error occurs - */ - protected boolean isLoadedDatasource(String datasource) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("jonas:type=service,name=database"); - - return ((Boolean) server.invoke(on, "isLoadedDataSource", new Object[] {datasource}, new String[] {String.class.getName()})).booleanValue(); - } - - /** - * Create a topic in a joram server - * @param name name of the topic - * @param idString id of the current joram server - * @throws Exception if an error occurs - */ - protected void createTopic(String name, int idString) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=JoramAdapter,*"); - ObjectName joramAdapterON = (ObjectName) server.queryNames(on, null).iterator().next(); - - Object[] params = new Object[] {new Integer(idString), name}; - server.invoke(joramAdapterON, "createTopic", params, new String[] {"int", String.class.getName()}); - } - - /** - * Create a queue in a joram server - * @param name name of the queue - * @param idString id of the current joram server - * @throws Exception if an error occurs - */ - protected void createQueue(String name, int idString) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=JoramAdapter,*"); - ObjectName joramAdapterON = (ObjectName) server.queryNames(on, null).iterator().next(); - - Object[] params = new Object[] {new Integer(idString), name}; - server.invoke(joramAdapterON, "createQueue", params, new String[] {"int", String.class.getName()}); - } - - /** - * Create a user in a joram server - * @param name name of the user - * @param password password of the user - * @throws Exception if an error occurs - */ - protected void createLocalJmsUser(String name, String password) throws Exception { - MBeanServerConnection server = getMBeanServer(); - ObjectName on = ObjectName.getInstance("joramClient:type=JoramAdapter,*"); - ObjectName joramAdapterON = (ObjectName) server.queryNames(on, null).iterator().next(); - - Object[] params = new Object[] {name, password}; - server.invoke(joramAdapterON, "createUser", params, new String[] {"java.lang.String", "java.lang.String"}); - } - - - /** - * Call the main method of a specific class with empty args - * @param classToLoad name of class which contains the main method - * @throws Exception if it fails - */ - protected void callMainMethod(String classToLoad) throws Exception { - callMainMethod(classToLoad, new String[]{}); - } - - - /** - * Call the main method of a specific class and the specific args - * @param classToLoad name of class which contains the main method - * @param args args to give to the main method - * @throws Exception if it fails - */ - protected void callMainMethod(String classToLoad, String[] args) throws Exception { - //Build classloader - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - URL[] urls = new URL[1]; - urls[0] = new File(System.getProperty("jonas.root") + File.separator + "examples" + File.separator + "classes").toURL(); - URLClassLoader loader = new URLClassLoader(urls); - Thread.currentThread().setContextClassLoader(loader); - Class clazz = loader.loadClass(classToLoad); - Class[] argList = new Class[] {args.getClass()}; - Method meth = clazz.getMethod("main", argList); - Object appli = meth.invoke(null, new Object[]{args}); - } - - /** - * Get current time - * @return A String Time with the format yyyy-MM-dd.HH-mm-ss - */ - protected String getTime() { - Calendar cal = Calendar.getInstance(); - Date date = cal.getTime(); - SimpleDateFormat formatter; - formatter = new SimpleDateFormat("yyyy-MM-dd.HH-mm-ss"); - return formatter.format(date); - } - - /** - * Undeploy an EAR - * @param name String of EAR Name - * @throws Exception if error occurs - */ - protected void undeployEar(String name) throws Exception { - String fileName = name + ".ear"; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_DEPLOYEAR)); - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - String params = webForm.getParameterValue("undeploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - - if (params.length() == 0) { - params += fileName; - } else { - params += "," + fileName; - } - - script.setParameterValue("undeploy", params); - - WebResponse submitUndeploy = webForm.submit(); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - WebResponse endResp = webForm.submit(); - } - - /** - * Undeploy all EAR - * @throws Exception if error occurs - */ - protected void undeployAllEar() throws Exception { - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_DEPLOYEAR)); - undeployAll(wr); - } - - /** - * Undeploy all Jars - * @throws Exception if error occurs - */ - protected void undeployAllJar() throws Exception { - WebResponse wr = wc.getResponse(getAbsoluteUrl(URL_JONASADMIN_DEPLOYJAR)); - undeployAll(wr); - } - - /** - * Undeploy all - * @throws Exception if error occurs - */ - protected void undeployAll(WebResponse wr) throws Exception { - - WebForm[] webForms = wr.getForms(); - WebForm webForm = webForms[0]; - - // Disable errors of javascript - HttpUnitOptions.setExceptionsThrownOnScriptError(false); - // Disable exception thrown on error status - HttpUnitOptions.setExceptionsThrownOnErrorStatus(false); - - String params = webForm.getParameterValue("deploy"); - WebForm.Scriptable script = webForm.getScriptableObject(); - - if (params.length() == 0) { - params += webForm.getParameterValue("undeploy"); - } else { - params += "," + webForm.getParameterValue("undeploy"); - } - - script.setParameterValue("undeploy", params); - - WebResponse submitUndeploy = webForm.submit(); - - webForms = submitUndeploy.getForms(); - webForm = webForms[0]; - - WebResponse endResp = webForm.submit(); - - wc.getResponse(getAbsoluteUrl(URL_JONASADMIN)); - } - - /** - * Verify number of tabs and the selected tab - * @param tabTable the tab table - * @param nbTabs number of tabs - * @param selectedTab the numero of the selected tab - */ - protected void testTabs(WebTable tabTable, int nbTabs, int selectedTab, String msg) { - TableCell selectedCell; - // - number of tabs - assertEquals("There are not " + nbTabs + " tabs. " + msg, - nbTabs, (tabTable.getColumnCount() + 1) / 2); - // - selected tab - selectedCell = tabTable.getTableCell(1, (selectedTab * 2) - 2); - assertEquals("It is not the selected tab. ", 1, selectedCell.getElementsWithAttribute("src", "/jonasAdmin/images/dot.gif").length); - } - - /** - * Get MBean Server connection - * @throws Exception if an error occurs - */ - private void initMBeanServer() throws Exception { - String sCarolURL = jProp.getRegistryUrl(); - String carolProtocol = jProp.getRegistryProtocol(); - URI carolURL = new URI(sCarolURL); - int portNb = carolURL.getPort(); - String port = String.valueOf(portNb); - String url = null; - Map env = null; - if (carolProtocol.equals("jrmp")) { - // Treat JRMP case - url = "service:jmx:rmi:///jndi/rmi://localhost:" + port + "/jrmpconnector_" + jonasName; - } else if (carolProtocol.equals("iiop")) { - // Treat IIOP case - url = "service:jmx:iiop:///jndi/iiop://localhost:" + port + "/iiopconnector_" + jonasName; - env = new HashMap(); - if (orb == null) { - initORB(); - } - env.put("java.naming.corba.orb", orb); - } else if (carolProtocol.equals("cmi")) { - // Treat CMI - url = "service:jmx:rmi:///jndi/cmi://localhost:" + port + "/cmiconnector_" + jonasName; - } - - JMXServiceURL connURL = null; - try { - connURL = new JMXServiceURL(url); - } catch (MalformedURLException e) { - throw new Exception("Can't create JMXServiceURL with string: " + url); - } - - try { - connector = JMXConnectorFactory.newJMXConnector(connURL, env); - } catch (MalformedURLException e1) { - throw new Exception("there is no provider for the protocol in " + url); - } catch (java.io.IOException e) { - throw new Exception("Connector client cannot be made because of a communication problem (used URL: " + url + ")"); - } - try { - connector.connect(env); - currentServerConnection = connector.getMBeanServerConnection(); - } catch (java.io.IOException ioe) { - throw new Exception("connection could not be made because of a communication problem"); - } - } - - /** - * Get MBean Server connection - * @return a MBeanServer Connection - * @throws Exception if an error occurs - */ - protected MBeanServerConnection getMBeanServer() throws Exception { - return currentServerConnection; - } - - /** - * Close MBean Server connection - * @throws Exception if an error occurs - */ - protected void closeMBeanServer() throws Exception { - - try { - if (connector != null) { - connector.close(); - } - } catch (Exception e) { - throw new Exception("connection could not be close because of a communication problem."); - } - } - - /** - * Create an orb for the client - * - */ - private static void initORB() { - orb = ORB.init(new String[0], null); - } - - /** - * Tear Down cleanUp action - * @throws Exception - */ - public void tearDown() throws Exception { - // Close MBean Server Connection - closeMBeanServer(); - } - - /** - * Print a debug message - * @param msg The message - */ - public void debug(String msg) { - System.out.println("DEBUG: " + msg); - } - - protected ObjectName getJCAConnectionFactory(String name, String jcaResourceName) { - ObjectName on = J2eeObjectName.getJCAConnectionFactory(domainName, jcaResourceName, jonasName, name); - return on; - } - - protected String getStringMBeanAttribute(ObjectName on, String attName) throws Exception { - MBeanServerConnection server = getMBeanServer(); - return (String) server.getAttribute(on, attName); - } - - protected Integer getIntegerMBeanAttribute(ObjectName on, String attName) throws Exception { - MBeanServerConnection server = getMBeanServer(); - return (Integer) server.getAttribute(on, attName); - } -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTree.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTree.java deleted file mode 100755 index ad2b8e3b8c..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminTree.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import org.xml.sax.SAXException; - -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebImage; -import com.meterware.httpunit.WebLink; -import com.meterware.httpunit.WebResponse; - -/** - * Define a class to manipulate the tree frame of JonasAdmin - * @author kemlerp - * - */ -public class JonasAdminTree { - - /** - * NAME of FRAME tree - */ - private static final String FRAME_TREE = "tree"; - - /** - * Verify if it is the good link of the tree which is selected - * @param wr The WebResponse of the 'tree' frame - * @param name A string with the name of the link - * @return a boolean. True if the name is found in the link, else false. - */ - public static boolean treeControlSelected (WebResponse wr, String selectedLink) throws SAXException { - boolean isSelected = false; // the result - int nbSelectedLink = 0; // number of selected link - String attribut; // value of class attribut - String linkUrl = null; // url of selected attribut - - // Get all links - WebLink[] links; - try { - links = wr.getLinks(); - - // Search links with the 'tree-control-selected' class attribut - // and increase nbSelectedLink - for (int i = 0; i < links.length; i++) { - attribut = links[i].getAttribute("class"); - if (attribut.indexOf("tree-control-selected") != -1) { - linkUrl = links[i].getURLString(); - nbSelectedLink++; - } - } - - if (nbSelectedLink == 1) { - if (selectedLink.equals(linkUrl)) { - isSelected = true; - } - } - } catch (SAXException e) { - throw new SAXException("No link was found : " + e); - } - - return isSelected; - } - - /** - * Open tree - * @param wr Tree Frame Web Response - * @return Tree Frame Web Response with opened tree - * @throws Exception if an error occurs - */ - public static WebResponse openTree(WebResponse wr, WebConversation wc) throws Exception { - WebImage[] frameTreeImages = wr.getImages(); - for (int i = 0; i < frameTreeImages.length; i++) { - if (frameTreeImages[i].getSource().indexOf("node_close") != -1) { - if (!frameTreeImages[i].getLink().getURLString().endsWith("*mbeans")) { - frameTreeImages[i].getLink().click(); - // get frame tree response - wr = wc.getFrameContents(FRAME_TREE); - // update frameTreeImages - frameTreeImages = wr.getImages(); - } - } - } - return wr; - } - -} diff --git a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminUtils.java b/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminUtils.java deleted file mode 100755 index 8d3c2c83d7..0000000000 --- a/jonas_tests/jonasadmin/src/org/objectweb/jonas/jonasadmin/test/util/JonasAdminUtils.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jonasadmin.test.util; - -import org.xml.sax.SAXException; - -import com.meterware.httpunit.TableCell; -import com.meterware.httpunit.WebResponse; -import com.meterware.httpunit.WebTable; - -/** - * Utils - * @author kemlerp - * - */ -public class JonasAdminUtils { - - /** - * A class which represents the row and the column of a cell - * @author kemlerp - * - */ - public class CoordCell { - - /** - * Row of the cell - */ - private Integer row = null; - - /** - * Column of the cell - */ - private Integer column = null; - - /** - * Constructor - * @param row a positive integer - * @param column a positive integer - */ - public CoordCell (Integer row, Integer column) { - this.row = row; - this.column = column; - } - - /** - * Get column - * @return column number - */ - public Integer getColumn() { - return column; - } - - /** - * Set column - * @param column a positive integer - */ - public void setColumn(Integer column) { - this.column = column; - } - - /** - * Get row - * @return row number - */ - public Integer getRow() { - return row; - } - - /** - * Set row - * @param row a positive integer - */ - public void setRow(Integer row) { - this.row = row; - } - } - - /** - * Get the last row of table where text is found in the first column - * @param text title of the row - * @param table the table which contains text - * @return -1 if the text was not found in the first column else an integer - */ - public Integer getRow(String text, WebTable table) { - Integer row = new Integer(-1); - TableCell cell; - for (int i = 0; i < table.getRowCount(); i++) { - cell = table.getTableCell(i, 0); - if (cell.getText().indexOf(text) != -1) { - row = new Integer(i); - } - } - return row; - } - - /** - * Get the first row of table where text is found in the given column - * @param text title of the row - * @param table the table which contains text - * @param column the column - * @return -1 if the text was not found in the first column else an integer - */ - public Integer getFirstRow(String text, WebTable table, int column) { - boolean found = false; - Integer row = new Integer(-1); - TableCell cell; - int i = 0; - while (i < table.getRowCount() && !found) { - cell = table.getTableCell(i, column); - if (cell != null && cell.getText().indexOf(text) != -1) { - row = new Integer(i); - found = true; - } - i++; - } - return row; - } - - /** - * Get the last row of table where text is found in the given column - * @param text title of the row - * @param table the table which contains text - * @param column the column - * @return -1 if the text was not found in the first column else an integer - */ - public Integer getRow(String text, WebTable table, int column) { - Integer row = new Integer(-1); - TableCell cell; - for (int i = 0; i < table.getRowCount(); i++) { - cell = table.getTableCell(i, column); - if (cell.getText().indexOf(text) != -1) { - row = new Integer(i); - } - } - return row; - } - - /** - * Get the last column of table where text is found in the first row - * @param text title of the column - * @param table the table which contains text - * @return -1 if the text was not found in the first row else an integer - */ - public Integer getColumn(String text, WebTable table) { - Integer column = new Integer(-1); - TableCell cell; - for (int i = 0; i < table.getColumnCount(); i++) { - cell = table.getTableCell(0, i); - if (cell.getText().indexOf(text) != -1) { - column = new Integer(i); - } - } - return column; - } - - /** - * Get the row and the column of the cell which contains selected item - * @param table tree Table - * @return Null if no item is selected, else the row and the column - */ - public CoordCell getSelectedItemRow(WebTable table) { - Integer row = null; - Integer column = null; - TableCell cell = null; - CoordCell coord = null; - String attribut; - boolean found = false; - int i = 0; - int j = 0; - - while (i < table.getRowCount() && !found) { - j = 0; - while (j < table.getColumnCount() && !found) { - cell = table.getTableCell(i, j); - if (cell.getElementsWithAttribute("class", "tree-control-selected").length == 1) { - found = true; - row = new Integer(i); - column = new Integer(j); - coord = new CoordCell(row, column); - } - j++; - } - i++; - } - return coord; - } - - /** - * Get table num - * @param contentFrame the content frame - * @param num integer between 0 and number of tables in the cell - * @return table - * @throws SAXException if a table or a cell doesn't match. - */ - public WebTable getTable(WebResponse contentFrame, int num) throws SAXException { - WebTable table = contentFrame.getTables()[1]; - TableCell cell = table.getTableCell(1, 0); - table = cell.getTables()[0]; - cell = table.getTableCell(0, 0); - table = cell.getTables()[0]; - cell = table.getTableCell(0, 0); - // Get the (num+1)th table - table = cell.getTables()[num]; - return table; - } - - /** - * Get table of tabs - * @param contentFrame the content frame - * @return table of tabs - * @throws SAXException if a table or a cell doesn't match. - */ - public WebTable getTabTable(WebResponse contentFrame) throws SAXException { - WebTable table = contentFrame.getTables()[1]; - TableCell cell = table.getTableCell(0, 0); - table = cell.getTables()[0]; - return table; - } -} diff --git a/jonas_tests/junit.bat b/jonas_tests/junit.bat deleted file mode 100644 index c1afc6f1ee..0000000000 --- a/jonas_tests/junit.bat +++ /dev/null @@ -1,142 +0,0 @@ -@Echo off -Rem --------------------------------------------------------------------------- -Rem JOnAS: Java(TM) Open Application Server -Rem Copyright (C) 1999 Bull S.A. -Rem Contact: jonas-team@objectweb.org -Rem -Rem This library is free software; you can redistribute it and/or -Rem modify it under the terms of the GNU Lesser General Public -Rem License as published by the Free Software Foundation; either -Rem version 2.1 of the License, or any later version. -Rem -Rem This library is distributed in the hope that it will be useful, -Rem -Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Rem Lesser General Public License for more details. -Rem -Rem You should have received a copy of the GNU Lesser General Public -Rem License along with this library; if not, write to the Free Software -Rem Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -Rem USA -Rem -Rem Initial developer(s): Philippe Durieux -Rem Contributor(s): -Rem --------------------------------------------------------------------------- -Rem $Id$ -Rem --------------------------------------------------------------------------- - -Rem Usage: junit [ test-type [ dir-name [ suite-name [ test-name ] ] ] ] -Rem -Rem This script allows to run the jonas-test all the tests or a sub-set of the tests: -Rem - the tests of the given directory -Rem - the tests of the given suite of the given directory -Rem - only the given test of the given suite of the given directory -Rem for each type test (conformance, stress or ws) -Rem -setlocal ENABLEDELAYEDEXPANSION - -set TYPE=conf -set PACK=org.objectweb.jonas.jtests.clients -set DIR=suite -set SUITE=C_suite -set TEST= -set CLIENT_OPTS= -set TEST_CLASSES=%TEST_BASE%\conformance\classes;%TEST_BASE%\examples\classes - -if ["%JONAS_BASE%"]==[""] goto set_jonas_base -set CLIENT_OPTS=%CLIENT_OPTS% -Djonas.base="%JONAS_BASE%" - -:set_jonas_base -set CLIENT_OPTS=%CLIENT_OPTS% -Djonas.base="%JONAS_ROOT%" -if ["%REGISTRY%"]==[] goto set_registry -set CLIENT_OPTS=%CLIENT_OPTS% -Dregistry="%REGISTRY%" -:set_registry -set CLIENT_OPTS=%CLIENT_OPTS% -Dregistry="rmi://localhost:1099" -if ["%PROTOCOL%"]==[] goto set_protocol -set CLIENT_OPTS=%CLIENT_OPTS% -Dprotocol="%PROTOCOL%" -:set_protocol -set CLIENT_OPTS=%CLIENT_OPTS% -Dprotocol=jrmp - -if [%HTTP_PORT%]==[] set HTTP_PORT=9000 -if not [%1]==[] goto loop_on_args -:loop_on_args - - -if [%1]==[] goto endargs -if ["%1"]==["-debug"] goto debug_arg -set TYPE=%1 -shift -if [%1]==[] goto endargs -set DIR=%1 -set SUITE=C_%DIR% -shift -if [%1]==[] goto endargs -set SUITE=%1 -shift -if [%1%]==[] goto varinit -set TEST=-n %1 -goto varinit - - - -:debug_arg -set DEBUG_OPTS=%DEBUG_OPTS% %1 -shift -if not ["%1"]==["-p"] goto debug_usage -set DEBUG_OPTS=%DEBUG_OPTS% %1 -shift -set DEBUG_OPTS=%DEBUG_OPTS% %1 -shift -if ["%1"]==["-s"] goto set_debug_opts -goto loop_on_args - -:set_debug_opts -set DEBUG_OPTS=%DEBUG_OPTS% %1 -shift -set DEBUG_OPTS=%DEBUG_OPTS% %1 -shift -goto loop_on_args - -:debug_usage -echo -debug option parameters are : "-debug -p [-s ]" -goto :EOF - -:endargs -echo %TYPE% -echo %DIR% -echo %SUITE% -echo %DEBUG_OPTS% - -:varinit -if [%TYPE%]==[stress] goto varstress -if [%TYPE%]==[ws] goto varws -if [%TYPE%]==[examples] goto varexa -:varconf -set PACK=org.objectweb.jonas.jtests.clients -set TEST_CLASSES=%TEST_BASE%\conformance\classes -goto calllabel -:varstress -set PACK=org.objectweb.jonas.stests -set TEST_CLASSES=%TEST_BASE%\stress\classes -goto calllabel -:varws -set PACK=org.objectweb.ws.clients -set TEST_CLASSES=%TEST_BASE%\ws\classes -set JAVA_OPTS=%JAVA_OPTS% -Dhttp.port=%HTTP_PORT% -Daddressbook.dir=%TEST_BASE%\ws\src\org\objectweb\ws\ab_web -Dordering.dir=%TEST_BASE%\ws\src\org\objectweb\ws\ordering_app -goto calllabel -:varexa -set PACK=org.objectweb.jonas.examples.clients -set TEST_CLASSES=%TEST_BASE%\examples\classes -goto calllabel - -:calllabel - -Set JONAS_CLASSPATH=%TEST_CLASSES%;%ANT_HOME%\lib\junit.jar;%HTTPUNIT_HOME%\lib\httpunit.jar;%HTTPUNIT_HOME%\jars\nekohtml.jar;%HTTPUNIT_HOME%\jars\js.jar;%JONAS_ROOT%\examples\classes - -echo on -call jclient %PROPS% %PACK%.%DIR%.%SUITE% %TEST% -security %CLIENT_OPTS% %DEBUG_OPTS% - - - - - diff --git a/jonas_tests/junit.sh b/jonas_tests/junit.sh deleted file mode 100755 index f34c901617..0000000000 --- a/jonas_tests/junit.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999 Bull S.A. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# -# Usage: junit [ test-type [ dir-name [ suite-name [ test-name ] ] ] ] -# -# This script allows to run the jonas-test all the tests or a sub-set of the tests: -# - the tests of the given directory -# - the tests of the given suite of the given directory -# - only the given test of the given suite of the given directory -# for each type test (conformance, examples or ws) -#set -x -TYPE=conf -PACK=org.objectweb.jonas.jtests.clients -DIR=suite -SUITE=C_suite -TEST= - -# Try to find the directory where the jonas tests are -[ -d $PROJ_BASE/jonas_tests ] && TEST_BASE=$PROJ_BASE/jonas_tests -[ -d $JPROJ_BASE/jonas_tests ] && TEST_BASE=$JPROJ_BASE/jonas_tests - -TEST_CLASSES=$TEST_BASE/conformance/classes - -PROPS= - -# variable needed for ws tests -if [ -z "$HTTP_PORT" ] -then - HTTP_PORT=9000 -fi - -# registry url for JMX access -if [ -z "$REGISTRY" ] -then - REGISTRY=rmi://localhost:1099 -fi -# protocol used -if [ -z "$PROTOCOL" ] -then - PROTOCOL=jrmp -fi -if [ $# -gt 0 ] -then - TYPE=$1 - shift -fi - -case "$TYPE" in -"conf") - ;; -"stress") - TEST_CLASSES=$TEST_BASE/stress/classes - PACK=org.objectweb.jonas.stests - ;; -"ws") - TEST_CLASSES=$TEST_BASE/ws/classes - PROPS="-Dhttp.port=$HTTP_PORT" - PROPS="$PROPS -Daddressbook.dir=$TEST_BASE/ws/src/org/objectweb/ws/ab_web" - PROPS="$PROPS -Dordering.dir=$TEST_BASE/ws/src/org/objectweb/ws/ordering_app" - PROPS="$PROPS -Djonas.base.client=$JONAS_BASE -Djonas.root=$JONAS_ROOT" - - ;; -"examples") - TEST_CLASSES=$TEST_BASE/examples/classes:$TEST_BASE/examples/base/examples/classes - PACK=org.objectweb.jonas.examples.clients - PROPS="-Dhttp.port=$HTTP_PORT" - PROPS="$PROPS -Daddressbook.dir=$TEST_BASE/ws/src/org/objectweb/ws/ab_web" - PROPS="$PROPS -Dordering.dir=$TEST_BASE/ws/src/org/objectweb/ws/ordering_app" - - - ;; -*) - echo "USAGE : $0 [ test-type [ dir-name [ suite-name [ test-name ] ] ] ]" - exit - ;; -esac - -if [ $# -gt 0 ] -then - DIR=$1 - SUITE=C_$DIR - shift -fi - -if [ $# -gt 0 ] -then - SUITE=$1 - shift -fi - -if [ $# -gt 0 ] -then - PREFIX=`echo "$SUITE" | cut -b 1-2` - if [ "$PREFIX" != "F_" ] && [ "$PREFIX" != "G_" ] - then - echo "ERROR: a test-name may be specified only for a final suite (F_xxx)or (G_xxx)" - exit 2 - fi - case $1 in - -*) - TEST=$1 - ;; - *) - TEST="-n $1" - ;; - esac - shift -fi - - -# update classpath for junit tests and httpunit -# update the following lines depending on your own environment -for CLS in \ -$ANT_HOME/lib/junit.jar \ -$HTTPUNIT_HOME/lib/httpunit.jar \ -$HTTPUNIT_HOME/jars/nekohtml.jar \ -$HTTPUNIT_HOME/jars/js.jar \ -$TEST_CLASSES -do - echo $JONAS_CLASSPATH | grep $CLS >/dev/null || JONAS_CLASSPATH=$JONAS_CLASSPATH:$CLS -done - -# important to be seen in jclient script -export JONAS_CLASSPATH - - -echo $CLASSPATH -echo "Running junit test : $TYPE $DIR/$SUITE $TEST" - -jclient $PROPS $PACK.$DIR.$SUITE $TEST -security -Djonas.base=$JONAS_BASE -Dregistry=$REGISTRY -Dprotocol=$PROTOCOL -#jclient -debug -p 4142 -s y $PROPS $PACK.$DIR.$SUITE $TEST -security -Djonas.base=$JONAS_BASE -Dregistry=$REGISTRY -Dprotocol=$PROTOCOL diff --git a/jonas_tests/junitime.sh b/jonas_tests/junitime.sh deleted file mode 100755 index 6cb96b9b11..0000000000 --- a/jonas_tests/junitime.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# JOnAS: Java(TM) Open Application Server -# Copyright (C) 1999 Bull S.A. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# --------------------------------------------------------------------------- -# $Id$ -# --------------------------------------------------------------------------- - -# -# Usage: junitime.sh dir-name suite-name perfs -# -# This script allows to run a sub-set of the conformance tests resumed in a perfs method: -# -# for the moment only some final suites(F_) are updated in session and entity directory -# -# call: junitime.sh session F_ClientViewNoTxSL perfs -# -# it logs the results in a file LOGPATH/SUITE_$$ -# -# use of awk to format output -# -# awkcat concatenes on the same line the informations of one test and removes all dots and Failures - -awkcat() -{ -awk '/^Running.*/ { - n=split($0,a,"\t") # to get the name - s = a[1] - } - -/^Time:/ {s= s"|"$0} - -/^OK/{ s= s"|"$0;printf("%s\n",s); s=""} - -/^FAILURES/{printf("%s|FAILURES\n",a[1]); s=""} - -/^--/{print $0} - -{next} -' -} -# to get unit times per function and keep them -awkunit() -{ -awk ' -BEGIN {printf ("function \t\t\t\t iterations \t unit time \n") - printf ("------------------------------------------------------------\n") - } -/^--.*/{ print $0;next} - { - k=split($0,a,"|") - n=split (a[1],b," ")#a[1]= running names - nom=b[n]#b[n]=function name - nomclass=b[n-1]#b[n-1]= class name - n=split(a[2],c," ")#time part - temps=c[n]#time value - split(a[3],d,"(")#OK (nb tests) - split(d[2],e," ") - nb=e[1] - if ( a[k]=="FAILURES") {temps =" NOK"} else {temps=temps/nb} - printf ("%s %s %s %s\n",nomclass,nom,nb,temps) - } -' -} - -TYPE=conf -PACK=org.objectweb.jonas.jtests.clients -DIR=suite -SUITE=P_suite -TEST= -CLASS= - -# You must put here the directory where the jonas tests are -# TEST_BASE=$PROJ_BASE/jonas_tests -TEST_BASE=$PROJ_BASE/tests - -TEST_CLASSES=$TEST_BASE/conformance/classes -LOGPATH=$TEST_BASE/conformance/log -PROPS= - - -if [ $# -gt 0 ] -then - DIR=$1 - SUITE=P_$DIR - shift -fi - -if [ $# -gt 0 ] -then - SUITE=$1 - TEST="-n perfs" - shift -fi - - -# update classpath for junit tests -# update the following lines depending on your own environment -for CLS in \ -$ANT_HOME/lib/junit.jar \ -$TEST_CLASSES -do - echo $CLASSPATH | grep $CLS >/dev/null || CLASSPATH=$CLASSPATH:$CLS -done - -# important to be seen in jclient script -export CLASSPATH - - -echo "Running junit tests for time : $TYPE $DIR/$SUITE $TEST" - - -#jclient $PROPS $PACK.$DIR.$SUITE $TEST - -jclient $PROPS $PACK.$DIR.$SUITE $TEST|awkcat|awkunit|tee $LOGPATH/${SUITE}_$$ - - diff --git a/jonas_tests/protocols/README b/jonas_tests/protocols/README deleted file mode 100644 index b79ea408f4..0000000000 --- a/jonas_tests/protocols/README +++ /dev/null @@ -1,60 +0,0 @@ -Overview --------------- - -This application aims at providing a protocols test. Initially it was written for assessing the CMI protocol performance and for doing a comparison between CMI and JRMP. It can be used for any others protocols measurements. - -The test's invocation chain is : - -EJB client -> SSB/MyService -> SSB/BackA1 ; SSB/BackA2 - -Call processing time is evaluated both at the client and ejb sides. The EJBs logic is quite light and contains : -- the code for accessing to the others EJBs in the case of MyService -- the code for performing the measurements for all - -The client implements a loop defined by the command parameters. - -Each iteration contain : -- an invocation which can be (according the cmd parameters) either a 'Lookup+Create+Remote' or 'Create+Remote' or 'Remote' or 'MetaData' -- a think time -- statistics update - -2 kinds of client are provided multi and multiserial. The first one performs the call with a simple string as parameter whereas the second one performs the call with a complex structure. The serialization cost is higher in the second case. - -Results --------------- -During the test, the client prints on the console some statistics in a CSV format. -A the end of the test, the client prints the average values. -Main indicators are : -- responseTime : global return time at the client side that embedds the invocation time plus the EJB logic processing time (inFacadeMethod). -- inFacadeMethod : EJB logic processing time - -Configuration --------------- -the client configuration must be updated in the clientConfig directory. The carol.properties file specifies the connection url to the JOnAS server. - -Command usage --------------- - -scripts/client.sh with - -- multi|multiserial : specifies which type of parameters are passed in to the call : either a simple String or a more complex structure -- threadsNb : threads number in the client program -- iterationsNb : loop iterations number -- thinkTime : pause at each iteration -- invocationType : specifies the type of invocation to do at each iteration. Possibles values are : - + LookupCreateRemote : - + CreateRemote - + Remote - + MetaData - -Ex : scripts/client.sh multi 5 100 0 Remote - -Reporting --------------- - -Some scripts are provided for generating reporting : -- suiteMulti.sh : launches a suite of tests with the multi client, with all kinds of invocation and different thread numbers. The results are stored in the sub directory 'report'. Ex : suite.sh 200 JR485Cmi multi -- suiteMultiSerial.sh : same as suiteMulti with multiserial client -- synth.sh : Provides some statistics by comparing different reports. Output format is CSV. Ex : synt.sh JR484CmiSingleton JR485CmiSingleton - - diff --git a/jonas_tests/protocols/build.properties b/jonas_tests/protocols/build.properties deleted file mode 100644 index 1eab60a9ef..0000000000 --- a/jonas_tests/protocols/build.properties +++ /dev/null @@ -1 +0,0 @@ -opt.javac.debug=true \ No newline at end of file diff --git a/jonas_tests/protocols/build.xml b/jonas_tests/protocols/build.xml deleted file mode 100644 index 4e66b49761..0000000000 --- a/jonas_tests/protocols/build.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/protocols/clientconf/carol.properties b/jonas_tests/protocols/clientconf/carol.properties deleted file mode 100644 index 1f023e8ec6..0000000000 --- a/jonas_tests/protocols/clientconf/carol.properties +++ /dev/null @@ -1,140 +0,0 @@ -# Copyright (C) 2002-2005 ObjectWeb -# -# CAROL: Common Architecture for RMI ObjectWeb Layer -# -# This library is developed inside the ObjectWeb Consortium, -# http://www.objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA -# -# -------------------------------------------------------------------------- -# $Id$ -# -------------------------------------------------------------------------- - -# jonas rmi activation (iiop, irmi, jrmp, cmi) -carol.protocols=cmi - -# RMI IRMI URL -carol.irmi.url=rmi://localhost:1098 - -# RMI JRMP URL -carol.jrmp.url=rmi://localhost:2043 - -# RMI IIOP URL -carol.iiop.url=iiop://localhost:2001 - - -###################################################################### -# Configuration for CMI (clustering) -###################################################################### - -# java.naming.provider.url property -# For a server : the URL on which the registry will be started -# For clients : lists the registries available -#carol.cmi.url=cmi://129.183.148.75:2002,129.183.148.75:2202 -#carol.cmi.url=cmi://frecb000650:2002,frecb000650:2202 -carol.cmi.url=cmi://localhost:1951 - -# JGroups configuration file -carol.cmi.jgroups.conf=jgroups-cmi-tcp.xml -#carol.cmi.jgroups.conf=jgroups-cmi.xml - -# Multicast address used by the registries in the cluster -# !!! Deprecated - Not used if carol.cmi.jgroups.conf is set -#carol.cmi.multicast.address=224.0.0.35:35467 - -# IP address or network mask of the local network interface to use to send -# multicast messages -# Needed only when the server has several network interfaces and the multicast -# messages do not go through to interface you want them to use -# Works only on JDK 1.4 -# !!! Deprecated - Not used if carol.cmi.jgroups.conf is set -#carol.cmi.multicast.itf 192.168.25.0/24 - -# Groupname for Javagroups. No need to change if don't know. -carol.cmi.multicast.groupname=G1 - -# Factor used for this server in wheighted round robin algorithms -carol.cmi.rr.factor=100 - -# If enabled, cluster stubs will print messages on some error cases -carol.cmi.stub.debug=false - - -###################################################################### -# Advanced Configuration for IRMI -###################################################################### -# Exported objects will listen on this port for remote method -# invocations. -#A value of 0 will cause a random port to be selected. -# This is the default value. -# Warning : if the port is set (not 0) with the value 'n', be aware that -# the port 'n + 1' will be used by the JMX server. -# So, for the firewall configuration, you have to open the port numbers 'n' -# and 'n+1'. -carol.irmi.server.port=0 - -# Use only a single interface when creating the registry -# (specified in carol.irmi.url property) -# Use all interfaces available [default configuration = false] -carol.irmi.interfaces.bind.single=false - -###################################################################### -# Advanced Configuration for JRMP -###################################################################### -# If true, local call with jrmp are optimized. If you get "ClassCastException -# with 2 beans in different jars, you should set it at "false". -carol.jvm.rmi.local.call=false - -# If true a local Naming context is used (to be used only with a collocated registry) -carol.jvm.rmi.local.registry=false - -# The value of this port is used to set the port of the objects listener. -# This allow to use this port for a firewall configuration. -# If registry and server are on same host, the two ports to open are the following and the registry port. -# 0 means random port [default configuration = 0] -carol.jrmp.server.port=0 - -# Use only a single interface when creating the registry -# (specified in carol.jrmp.url property) -# Use all interfaces available [default configuration = false] -carol.jrmp.interfaces.bind.single=false - - -###################################################################### -# Advanced Configuration for IIOP -###################################################################### -# The value of this port is used to set the port of the objects listener. -# This allow to use this port for a firewall configuration. -# If registry and server are on same host, the two ports to open are the following and the registry port. -# 0 means random port [default configuration = 0] -carol.iiop.server.port=0 - -# The value of this port is used to set the SSL port of the objects listener. -# Note that this port musn't not be set to 0 as it is used for CsiV2. -# but this port is used only if SSL mode is enable. -# So by default, there is no listener on this port -# [default configuration = not used] -carol.iiop.server.sslport=2003 - -# Delegate used by JOnAS for rmi-iiop protocol -carol.iiop.PortableRemoteObjectClass=org.ow2.jonas.lib.naming.JacORBPRODelegate - - -###################################################################### -# Advanced JNDI Configuration -###################################################################### -carol.jndi.java.naming.factory.url.pkgs=org.ow2.jonas.lib.naming diff --git a/jonas_tests/protocols/clientconf/traceclient.properties b/jonas_tests/protocols/clientconf/traceclient.properties deleted file mode 100644 index e924727b75..0000000000 --- a/jonas_tests/protocols/clientconf/traceclient.properties +++ /dev/null @@ -1,46 +0,0 @@ -# ----------------------------------------------------------------------- -# This is a default configuration file for monolog. -# -# Patterns for each handler may include these possible values : -# %h the thread name -# %O{1} the Class name (basename only) -# %M the method name -# %L the line number -# %d the date -# %l the level -# %m the message itself -# %n a new line -# -# Each logger inherits from its parent for properties not defined. -# The root logger is "root". It must always be defined. -# -# Each logger is associated with a level that can be one of : -# ERROR | WARN | INFO | DEBUG -# -# -> More info on http://www.objectweb.org/monolog/doc.html -# ----------------------------------------------------------------------- -# -# Define which wrapper to use (= javaLog) -# ----------------------------------------------------------------------- -# For Log4j you need to add log4j.jar -# log.config.classname org.objectweb.util.monolog.wrapper.log4j.MonologLoggerFactory -log.config.classname org.objectweb.util.monolog.wrapper.javaLog.LoggerFactory - -# ----------------------------------------------------------------------- -# tty : console handler -# ----------------------------------------------------------------------- -handler.tty.type Console -handler.tty.output System.out -#handler.tty.pattern %O{1}.%M : %m%n -handler.tty.pattern %d : %l : %h : %O{1}.%M : %m%n - -# ----------------------------------------------------------------------- -# logger definitions -# ----------------------------------------------------------------------- -logger.root.handler.0 tty - -logger.root.level ERROR -logger.org.ow2.jonas.client.level ERROR -#logger.org.ow2.carol.cmi.level DEBUG - - diff --git a/jonas_tests/protocols/modules/appli/META-INF/application.xml b/jonas_tests/protocols/modules/appli/META-INF/application.xml deleted file mode 100644 index ad19ade1fc..0000000000 --- a/jonas_tests/protocols/modules/appli/META-INF/application.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - Protocols test EAR file - - Protocols test EAR - - ejbs.jar - - - client.jar - - diff --git a/jonas_tests/protocols/modules/appli/build/build.xml b/jonas_tests/protocols/modules/appli/build/build.xml deleted file mode 100644 index 4daa31c12d..0000000000 --- a/jonas_tests/protocols/modules/appli/build/build.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JONAS_ROOT=${jonas.root} - JONAS_BASE=${jonas.base} - - - - - - - - - diff --git a/jonas_tests/protocols/modules/client/META-INF/application-client.xml b/jonas_tests/protocols/modules/client/META-INF/application-client.xml deleted file mode 100644 index 86703e03d1..0000000000 --- a/jonas_tests/protocols/modules/client/META-INF/application-client.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - Protocols test client - - - - - ejb/MyService - Session - org.ow2.jonas.protocols.test.ejbs.MyServiceHome - org.ow2.jonas.protocols.test.ejbs.MyService - ejbs.jar#MyService - - - - - diff --git a/jonas_tests/protocols/modules/client/META-INF/jonas-client.xml b/jonas_tests/protocols/modules/client/META-INF/jonas-client.xml deleted file mode 100644 index 11c7850aba..0000000000 --- a/jonas_tests/protocols/modules/client/META-INF/jonas-client.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/jonas_tests/protocols/modules/client/build/build.xml b/jonas_tests/protocols/modules/client/build/build.xml deleted file mode 100644 index 07c8a0dc63..0000000000 --- a/jonas_tests/protocols/modules/client/build/build.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/protocols/modules/client/resources/jaas.config b/jonas_tests/protocols/modules/client/resources/jaas.config deleted file mode 100644 index 37efc03917..0000000000 --- a/jonas_tests/protocols/modules/client/resources/jaas.config +++ /dev/null @@ -1,16 +0,0 @@ -JMSLoader { - // Login Module to use for AppliGeneve. - - //First, use a LoginModule for the authentication - // Use the resource memrlm_1 - org.ow2.jonas.security.auth.spi.JResourceLoginModule required - resourceName="memrlm_1" - serverName="mqjca" - ; - - // Use the login module to propagate security to the JOnAS server - org.ow2.jonas.security.auth.spi.ClientLoginModule required - globalCtx="true" - - ; -}; \ No newline at end of file diff --git a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/AnyClient.java b/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/AnyClient.java deleted file mode 100644 index d94626dc2f..0000000000 --- a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/AnyClient.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.client; - -public class AnyClient { - - /** - * @param args - */ - public static void main(String[] args) { - - int client = 0; - if (args.length > 0) { - if ("-help".equalsIgnoreCase(args[0])) { - printUsage(); - System.exit(0); - } - // a bit of serialization - if ("multi".equalsIgnoreCase(args[0])) client = 0; - // a lot of serialization - if ("multiserial".equalsIgnoreCase(args[0])) client = 1; - if (args.length > 1 ) { - nargs = new String[args.length - 1]; - for (int i = 0; i < nargs.length; i++) nargs[i] = args[i + 1]; - } - } - - switch (client) { - case 0: - MyClient.main(nargs); - break; - case 1: - MyClient01.main(nargs); - break; - } - - } - - private static void printUsage() { - System.out.println ("OPTIONS:"); - System.out.println ("- multi/multiserial"); - System.out.println ("- multi clients iterations thinktime"); - System.out.println ("- multiserial clients iterations thinktime [ Remote | CreateRemote | LookupCreateRemote ]"); - } - - private static String[] nargs = new String[] { }; -} diff --git a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/Measure.java b/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/Measure.java deleted file mode 100644 index e77ca5c74d..0000000000 --- a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/Measure.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.client; - -import org.ow2.jonas.protocols.test.ejbs.Request; - -/** - * Measure class - * @author Francois Waeselynck - */ -public class Measure { - - - public Measure(String source, long timestamp, double responseTime, double inEJB) { - this.source = source; - this.timestamp = timestamp; - this.responseTime = responseTime; - this.inEJB = inEJB; - } - - public Measure(String source,long timestamp, double responseTime, Request request, double inEJB) { - this.source = source; - this.timestamp = timestamp; - this.responseTime = responseTime; - this.request = request; - this.inEJB = inEJB; - } - - public String getSource() { - return source; - } - public double getResponseTime() { - return responseTime; - } - - public void setResponseTime(long responseTime) { - this.responseTime = responseTime; - } - - public long getTimestamp() { - return timestamp; - } - - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - - public Request getRequest() { - return request; - } - - public void setRequest(Request request) { - this.request = request; - } - - public double getInEJB() { - return inEJB; - } - - String source = "nobody"; - long timestamp = 0; - double responseTime = 0; - Request request = null; - double inEJB = 0; -} diff --git a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient.java b/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient.java deleted file mode 100644 index e445f8125b..0000000000 --- a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient.java +++ /dev/null @@ -1,422 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.client; - -import java.lang.reflect.InvocationTargetException; -import java.rmi.RemoteException; - -import javax.ejb.EJBMetaData; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import org.ow2.jonas.protocols.test.ejbs.MyService; -import org.ow2.jonas.protocols.test.ejbs.MyServiceHome; - - -/** - * client program - * @author Francois Waeselynck - */ -public class MyClient implements Runnable { - - /* - * (non-Javadoc) - * - * @see java.lang.Runnable#run() - */ - public void run() { - status = RUNNING; - // System.err.println("Client " + clientName + " running."); - int count = 0; - long tb = 0; - long te = 0; - long deltaT = 0; - long result = 0; - - while ((count <= iteration) && !Thread.currentThread().isInterrupted()) { - - /* - * Compute statistics every PERIOD calls - * Stored in measures[] - */ - if ((count % PERIOD) == 0) { - if (tb != 0) { - te = System.currentTimeMillis(); - deltaT = te - tb; - chrono += deltaT; - - measures[count / PERIOD - 1] = new Measure(clientName, te, - 1.0 * deltaT / PERIOD, 1.0 * (result - lastResult) / PERIOD); - tb = te; - lastResult = result; - } else { - tb = System.currentTimeMillis(); - te = 0; - } - } - - /* - * Call facade EJB - */ - try { - result += callFacadeEJB(); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - count++; - - /* - * Sleep for a while - */ - if (thinktime > 0) { - try { - Thread.sleep(thinktime); - } catch (InterruptedException e) { - // nothing to do - } - } - - } - status = COMPLETE; - } - - /** - * invoke the EJB - * @return - * @throws NamingException - * @throws RemoteException - */ - private long callFacadeEJB() throws NamingException, RemoteException { - - long result = 0; - if (isLookupCreateRemote) { - InitialContext ctx = new InitialContext(); - optHome = (MyServiceHome) PortableRemoteObject - .narrow(ctx.lookup("java:comp/env/ejb/MyService"), - MyServiceHome.class); - optService = optHome.create(); - result = optService.call("LookupCreateRemote"); - } else if (isCreateRemote) { - optService = optHome.create(); - result = optService.optHomeCall("CreateRemote"); - } else if (isRemoteOnly) { - result = optService.optCall("Remote"); - } else if (isMetaData) { - optService = (MyService) callFacadeEJBMetaData(); - result = optService.callMetaData("MetaData"); - } - return result; - } - - /** - * Uses the getEJBMetaData() method for getting the home and remote interface - * and performs the invocation - * @return - * @throws NamingException - * @throws RemoteException - */ - private static Object callFacadeEJBMetaData() throws NamingException, RemoteException { - - Object im = null; - - InitialContext ctx = new InitialContext(); - optHome = (MyServiceHome) PortableRemoteObject - .narrow(ctx.lookup("java:comp/env/ejb/MyService"), - MyServiceHome.class); - - // Identify the home & remote class - EJBMetaData meta=null; - try { - meta = optHome.getEJBMetaData(); - } catch (RemoteException e) { - e.printStackTrace(System.err); - } - - // Narrow for the right type - Class homeClass = meta.getHomeInterfaceClass(); - Object imHome = PortableRemoteObject.narrow(optHome, homeClass); - - // Invoke the create method - try { - im = homeClass.getMethod("create", (java.lang.Class[]) null).invoke(imHome, (java.lang.Object[]) null); - } catch (IllegalArgumentException e) { - e.printStackTrace(System.err); - } catch (SecurityException e) { - e.printStackTrace(System.err); - } catch (IllegalAccessException e) { - e.printStackTrace(System.err); - } catch (InvocationTargetException e) { - e.printStackTrace(System.err); - } catch (NoSuchMethodException e) { - e.printStackTrace(System.err); - } - - // Try a narrow on the "remoteAble" class - Class remoteClass = meta.getRemoteInterfaceClass(); - String imAbleClassName = remoteClass.getName() + "Able"; - - ClassLoader cloader = Thread.currentThread().getContextClassLoader(); - try { - Class imAbleClass = cloader.loadClass(imAbleClassName); - if (!imAbleClass.isAssignableFrom(im.getClass())) { - im = PortableRemoteObject.narrow(im, imAbleClass); - - } - } catch (Exception ex) { - //ex.printStackTrace(System.err); - } - return im; - - } - - /** - * Thread initialization - * - */ - public void init() { - - if (isInitialized) - return; - - try { - InitialContext ctx = new InitialContext(); - optHome = (MyServiceHome) PortableRemoteObject - .narrow(ctx.lookup("java:comp/env/ejb/MyService"), - MyServiceHome.class); - optService = optHome.create(); - measures = new Measure[iteration / PERIOD]; - isInitialized = true; - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } - - } - - /** - * Constructor - * @param name - * @param iterations - * @param thinkTime - */ - public MyClient(String name, int iterations, long thinkTime) { - int q = iterations / PERIOD; - int r = iterations % PERIOD; - iteration = (q + (r != 0 ? 1 : 0)) * PERIOD; - this.thinktime = thinkTime; - this.clientName = name; - } - - public int getIterations() { - return iteration; - } - - public static int targetIterations(int iter) { - int q = iter / PERIOD; - int r = iter % PERIOD; - return (q + (r != 0 ? 1 : 0)) * PERIOD; - - } - - public static void process(int nbClients, int iterations, long thinkTime) { - - /* - * clients initialization - */ - MyClient[] clients = new MyClient[nbClients]; - boolean initOK = true; - for (int i = 1; i <= nbClients; i++) { - clients[i - 1] = new MyClient("cl-" + Integer.toString(i), - iterations, thinkTime); - clients[i - 1].init(); - initOK = initOK && clients[i - 1].isInitialized; - } - if (!initOK) - return; - - /* - * Run clients - */ - Thread[] th = new Thread[nbClients]; - for (int i = 0; i < nbClients; i++) { - th[i] = new Thread(clients[i]); - th[i].setDaemon(true); - th[i].start(); - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - - /* - * Wait for completion - */ - boolean goOn = true; - while (goOn) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - boolean complete = true; - for (int i = 0; i < nbClients; i++) { - complete = complete && (clients[i].getStatus() == COMPLETE); - } - goOn = !complete; - } - - /* - * Print statistics - */ - System.out.println("time;source;responseTime;inFacadeMethod"); - double sumClient=0; - double sumEjb=0; - int measureNb = 0; - for (int i = 0; i < nbClients; i++) { - Measure[] dots = clients[i].getMeasures(); - - for (int j = 0; j < dots.length; j++) { - measureNb++; - sumClient+=dots[j].getResponseTime() - thinkTime; - sumEjb+=dots[j].getInEJB(); - - System.out.println(dots[j].getTimestamp() + ";" - + dots[j].getSource() + ";" - + (dots[j].getResponseTime() - thinkTime) + ";" - + dots[j].getInEJB()); - } - } - System.err.println("responseTime;inFacadeMethod"); - System.err.println(sumClient/measureNb + ";"+ sumEjb/measureNb); - - } - - /** - * @param args - */ - public static void main(String[] args) { - // TODO Auto-generated method stub - - int iterations = 128; - int nbCl = 1; - long thinktime = 0; - - if (args.length > 0) { - nbCl = Integer.parseInt(args[0]); - } - - if (args.length > 1) { - iterations = Integer.parseInt(args[1]); - } - - if (args.length > 2) { - thinktime = Long.parseLong(args[2]); - } - - - if (args.length > 3) { - if ("Remote".equalsIgnoreCase(args[3])) { - isRemoteOnly = true; - isCreateRemote = false; - isLookupCreateRemote = false; - } - if ("CreateRemote".equalsIgnoreCase(args[3])) { - isRemoteOnly = false; - isCreateRemote = true; - isLookupCreateRemote = false; - } - if ("LookupCreateRemote".equalsIgnoreCase(args[3])) { - isRemoteOnly = false; - isCreateRemote = false; - isLookupCreateRemote = true; - } - if ("MetaData".equalsIgnoreCase(args[3])) { - isRemoteOnly = false; - isCreateRemote = false; - isLookupCreateRemote = false; - isMetaData = true; - } - } - - System.err.println("clients: " + nbCl); - System.err.println("iterations: " + targetIterations(iterations)); - System.err.println("think: " + thinktime); - - process(nbCl, iterations, thinktime); - - } - - public Measure[] getMeasures() { - return measures; - } - - public int getStatus() { - return status; - } - - public static final int CREATED = 1; - - public static final int RUNNING = 2; - - public static final int COMPLETE = 4; - - private static MyServiceHome optHome = null; - - private static MyService optService = null; - - private boolean isInitialized = false; - - private long chrono = 0; - - private long lastResult = 0; - - private int iteration = 0; - - private long thinktime = 0; - - private String clientName = "client"; - - private Measure[] measures = null; - - private int status = CREATED; - - /* - * cardinality of sample set for statistics - */ - private static int PERIOD = 16; - - private static boolean isRemoteOnly = false; - - private static boolean isCreateRemote = false; - - private static boolean isLookupCreateRemote = true; - private static boolean isMetaData = false; -} diff --git a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient01.java b/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient01.java deleted file mode 100644 index 9192926ab6..0000000000 --- a/jonas_tests/protocols/modules/client/src/org/ow2/jonas/protocols/test/client/MyClient01.java +++ /dev/null @@ -1,322 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.client; - -import java.rmi.RemoteException; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import org.ow2.jonas.protocols.test.ejbs.MyService; -import org.ow2.jonas.protocols.test.ejbs.MyServiceHome; -import org.ow2.jonas.protocols.test.ejbs.Request; - -/** - * @author waeselyf - * - */ -public class MyClient01 implements Runnable { - - public int getIterations() { - return iteration; - } - - public static int targetIterations(int iter) { - int q = iter / PERIOD; - int r = iter % PERIOD; - return (q + (r != 0 ? 1 : 0)) * PERIOD; - - } - - /* (non-Javadoc) - * @see java.lang.Runnable#run() - */ - public void run() { - status = RUNNING; - //System.err.println("Client " + clientName + " running."); - int count = 0; - long tb = 0; - long te = 0; - long deltaT = 0; - Request r = null; - int progressIncr = iteration/4; - int progressTreshold = progressIncr; - while ((count <= iteration) && !Thread.currentThread().isInterrupted()) { - - if ( (count % progressTreshold) == 0) { - progressTreshold += progressIncr; - //System.err.println(clientName + " - " + count + "/" + iteration); - } - /* - * Compute statistics every PERIOD calls - */ - if ( (count % PERIOD) == 0) { - if (tb != 0 ) { - te = System.currentTimeMillis(); - deltaT = te - tb; - chrono += deltaT; - r.addStamp(clientName, "client done"); - measures[count/PERIOD - 1] = new Measure(clientName,te,1.0*deltaT/PERIOD,r,0.0); - tb = te; - } else { - tb = System.currentTimeMillis(); - te = 0; - } - r = new Request("optCall"); - } - - /* - * Call facade EJB - */ - try { - r = callFacadeEJB(r); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - count++; - /* - * Sleep for a while - */ - if (thinktime > 0 ) { - try { - Thread.sleep(thinktime); - } catch (InterruptedException e) { - // nothing to do - } - } - - } - status = COMPLETE; - System.err.println(clientName + ";complete;" + (1.0 * chrono/(count-1) - thinktime)); - } - - private Request callFacadeEJB(Request r) throws NamingException, RemoteException { - - Request req = null; - if (isLookupCreateRemote) { - InitialContext ctx = new InitialContext(); - optHome = (MyServiceHome) PortableRemoteObject - .narrow(ctx.lookup("java:comp/env/ejb/MyService"), - MyServiceHome.class); - optService = optHome.create(); - req = optService.call(r); - } else if (isCreateRemote) { - optService = optHome.create(); - req = optService.optHomeCall(r); - } else if (isRemoteOnly) { - req = optService.optCall(r); - } - return req; - } - - public void init() { - - if (isInitialized) return; - - try { - InitialContext ctx = new InitialContext(); - optHome = (MyServiceHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/MyService"), - MyServiceHome.class); - optService = optHome.create(); - measures = new Measure[iteration / PERIOD]; - isInitialized = true; - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(System.err); - } - - } - - public MyClient01(String name, int iterations, long thinkTime) { - int q = iterations/PERIOD; - int r = iterations%PERIOD; - iteration = ( q + (r != 0 ? 1 : 0)) * PERIOD; - this.thinktime = thinkTime; - this.clientName = name; - } - - public static void process(int nbClients, int iterations, long thinkTime) { - - /* - * Initialise clients - */ - MyClient01[] clients = new MyClient01[nbClients]; - boolean initOK = true; - for (int i = 1; i <= nbClients ; i ++) { - clients[ i - 1 ] = new MyClient01("cl-" + Integer.toString(i), iterations,thinkTime); - clients[ i - 1 ].init(); - initOK = initOK && clients[ i - 1 ].isInitialized; - } - if (! initOK) return; - - /* - * Run clients - */ - Thread[] th = new Thread[nbClients]; - for (int i = 0 ; i < nbClients ; i++) { - th[i] = new Thread(clients[i]); - th[i].setDaemon(true); - th[i].start(); - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - - /* - * Wait for completion - */ - boolean goOn = true; - while (goOn) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } - boolean complete = true; - for (int i = 0; i < nbClients; i ++) { - complete = complete && (clients[i].getStatus() == COMPLETE); - } - goOn = !complete; - } - - /* - * Print statistics - */ - System.out.println("time;source;responseTime;inFacadeMethod"); - double sumClient=0; - double sumEjb=0; - int measureNb = 0; - for (int i = 0; i < nbClients; i++) { - Measure[] dots = clients[i].getMeasures(); - - for (int j = 0; j < dots.length; j++) { - measureNb++; - sumClient+=dots[j].getResponseTime() - thinkTime; - sumEjb+=dots[j].getInEJB(); - - System.out.println(dots[j].getTimestamp() + ";" - + dots[j].getSource() + ";" - + (dots[j].getResponseTime() - thinkTime) + ";" - + dots[j].getInEJB()); - } - } - System.err.println("responseTime;inFacadeMethod"); - System.err.println(sumClient/measureNb + ";"+ sumEjb/measureNb); - - } - - - /** - * @param args - */ - public static void main(String[] args) { - // TODO Auto-generated method stub - - int iterations = 128; - int nbCl = 1; - long thinktime = 0; - - if (args.length > 0) { - nbCl = Integer.parseInt(args[0]); - } - - if (args.length > 1) { - iterations = Integer.parseInt(args[1]); - } - - if (args.length > 2) { - thinktime = Long.parseLong(args[2]); - } - - - if (args.length > 3) { - if ("Remote".equalsIgnoreCase(args[3])) { - isRemoteOnly = true; - isCreateRemote = false; - isLookupCreateRemote = false; - } - if ("CreateRemote".equalsIgnoreCase(args[3])) { - isRemoteOnly = false; - isCreateRemote = true; - isLookupCreateRemote = false; - } - if ("LookupCreateRemote".equalsIgnoreCase(args[3])) { - isRemoteOnly = false; - isCreateRemote = false; - isLookupCreateRemote = true; - } - } - - System.err.println("clients: " + nbCl); - System.err.println("iterations: " + targetIterations(iterations)); - System.err.println("think: " + thinktime); - - process(nbCl, iterations, thinktime); - } - - public Measure[] getMeasures() { - return measures; - } - - public int getStatus() { - return status; - } - - public static final int CREATED = 1; - public static final int RUNNING = 2; - public static final int COMPLETE = 4; - - private static MyServiceHome optHome = null; - private static MyService optService = null; - - private boolean isInitialized = false; - private long chrono = 0; - private int iteration = 0; - private long thinktime = 0; - private String clientName = "client"; - private Measure[] measures = null; - private int status = CREATED; - - /* - * cardinality of sample set for statistics - */ - private static int PERIOD = 16; - - private static boolean isRemoteOnly = false; - - private static boolean isCreateRemote = false; - - private static boolean isLookupCreateRemote = true; -} - diff --git a/jonas_tests/protocols/modules/ejbs/META-INF/ejb-jar.xml b/jonas_tests/protocols/modules/ejbs/META-INF/ejb-jar.xml deleted file mode 100644 index a7475a4993..0000000000 --- a/jonas_tests/protocols/modules/ejbs/META-INF/ejb-jar.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - Deployment descriptor for the protocols test application - - Protocols test ejb-jar - - - - MyService - MyService - org.ow2.jonas.protocols.test.ejbs.MyServiceHome - org.ow2.jonas.protocols.test.ejbs.MyService - org.ow2.jonas.protocols.test.ejbs.MyServiceEJB - Stateless - Container - - params/myTag - java.lang.String - service - - - ejb/backA1 - Session - org.ow2.jonas.protocols.test.ejbs.BackAHome - org.ow2.jonas.protocols.test.ejbs.BackServiceA - BackA1 - - - ejb/backA2 - Session - org.ow2.jonas.protocols.test.ejbs.BackAHome - org.ow2.jonas.protocols.test.ejbs.BackServiceA - BackA2 - - - - - BackA1 - BackA1 - org.ow2.jonas.protocols.test.ejbs.BackAHome - org.ow2.jonas.protocols.test.ejbs.BackServiceA - org.ow2.jonas.protocols.test.ejbs.BackA1EJB - Stateless - Container - - params/myTag - java.lang.String - backA1 - - - params/wait - java.lang.Long - 20 - - - - - BackA2 - BackA2 - org.ow2.jonas.protocols.test.ejbs.BackAHome - org.ow2.jonas.protocols.test.ejbs.BackServiceA - org.ow2.jonas.protocols.test.ejbs.BackA2EJB - Stateless - Container - - params/myTag - java.lang.String - backA2 - - - params/wait - java.lang.Long - 20 - - - - - - - - - MyService - * - - Required - - - - BackA1 - * - - Required - - - - BackA2 - * - - Required - - - - diff --git a/jonas_tests/protocols/modules/ejbs/META-INF/jonas-ejb-jar.xml b/jonas_tests/protocols/modules/ejbs/META-INF/jonas-ejb-jar.xml deleted file mode 100644 index b2a0cb3501..0000000000 --- a/jonas_tests/protocols/modules/ejbs/META-INF/jonas-ejb-jar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - MyService - ejb/MyService - 10 - true - - - BackA1 - ejb/BackA1 - 10 - true - - - BackA2 - ejb/BackA2 - 10 - true - - - \ No newline at end of file diff --git a/jonas_tests/protocols/modules/ejbs/build/build.xml b/jonas_tests/protocols/modules/ejbs/build/build.xml deleted file mode 100644 index 3a0575a47e..0000000000 --- a/jonas_tests/protocols/modules/ejbs/build/build.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA1EJB.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA1EJB.java deleted file mode 100644 index 7bb8ca35b0..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA1EJB.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -/** - * @author Francois Waeselynck - */ -public class BackA1EJB extends BackAEJB { - - /** - * - */ - private static final long serialVersionUID = 0L; - -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA2EJB.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA2EJB.java deleted file mode 100644 index 2ca5f5d24a..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackA2EJB.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -/** - * @author Francois Waeselynck - */ -public class BackA2EJB extends BackAEJB { - - /** - * - */ - private static final long serialVersionUID = 0L; - -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAEJB.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAEJB.java deleted file mode 100644 index c441825261..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAEJB.java +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.EJBHome; -import javax.ejb.EJBObject; -import javax.ejb.Handle; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.InitialContext; -import javax.naming.NamingException; - - -/** - * @author Francois Waeselynck - */ -public class BackAEJB implements BackServiceA, SessionBean { - - /** - * - */ - private static final long serialVersionUID = 0L; - /* (non-Javadoc) - * @see org.ow2.jonas.protocols.test.ejbs.BackServiceA#call(java.lang.String) - */ - public long call(String comment) throws RemoteException { - if (delay != 0) { - try { - Thread.sleep(delay); - } catch (InterruptedException e) { - // nothing to do - } - } - return System.currentTimeMillis(); - } - - public Request call(Request r) throws RemoteException { - r.addStamp(id, "call IN"); - if (delay != 0) { - try { - Thread.sleep(delay); - } catch (InterruptedException e) { - // nothing to do - } - } - r.addStamp(id, "call OUT"); - return r; - } - - - /* (non-Javadoc) - * @see javax.ejb.EJBObject#getEJBHome() - */ - public EJBHome getEJBHome() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see javax.ejb.EJBObject#getHandle() - */ - public Handle getHandle() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see javax.ejb.EJBObject#getPrimaryKey() - */ - public Object getPrimaryKey() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see javax.ejb.EJBObject#isIdentical(javax.ejb.EJBObject) - */ - public boolean isIdentical(EJBObject arg0) throws RemoteException { - // TODO Auto-generated method stub - return false; - } - - /* (non-Javadoc) - * @see javax.ejb.EJBObject#remove() - */ - public void remove() throws RemoteException, RemoveException { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see javax.ejb.SessionBean#ejbActivate() - */ - public void ejbActivate() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see javax.ejb.SessionBean#ejbPassivate() - */ - public void ejbPassivate() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see javax.ejb.SessionBean#ejbRemove() - */ - public void ejbRemove() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext) - */ - public void setSessionContext(SessionContext sessionContext) throws EJBException, - RemoteException { - ejbContext = sessionContext; - } - - public void ejbCreate() throws CreateException { - try { - InitialContext ictx = new InitialContext(); - String tag = (String) ictx.lookup("java:comp/env/params/myTag"); - id = (tag == null ? id : tag); - Long delay = (Long) ictx.lookup("java:comp/env/params/wait"); - if (delay != null) { - this.delay = delay.longValue(); - } - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - } - - - private SessionContext ejbContext = null; - private String id = "BackAService"; - private long delay = 0; -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAHome.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAHome.java deleted file mode 100644 index d7a8585d88..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackAHome.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.rmi.RemoteException; - -import javax.ejb.EJBHome; - -/** - * @author Francois Waeselynck - */ - -public interface BackAHome extends EJBHome { - - public BackServiceA create() throws RemoteException; - -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackServiceA.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackServiceA.java deleted file mode 100644 index 1ed631f366..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/BackServiceA.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - - -/** - * @author Francois Waeselynck - */ -public interface BackServiceA extends EJBObject { - - public long call(String comment) throws RemoteException; - - public Request call(Request r) throws RemoteException; - -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyService.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyService.java deleted file mode 100644 index 144f4957db..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyService.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.rmi.RemoteException; - -import javax.ejb.EJBObject; - - -/** - * @author Francois Waeselynck - */ -public interface MyService extends EJBObject { - - public long call(String s)throws RemoteException; - - public long callMetaData(String s) throws RemoteException; - - public Request call(Request r)throws RemoteException; - - public long optCall(String s)throws RemoteException; - - public Request optCall(Request r)throws RemoteException; - - public long optHomeCall(String s)throws RemoteException; - - public Request optHomeCall(Request r)throws RemoteException; -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceEJB.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceEJB.java deleted file mode 100644 index af0284498d..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceEJB.java +++ /dev/null @@ -1,449 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.ow2.jonas.protocols.test.ejbs; - -import java.lang.reflect.InvocationTargetException; -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.EJBHome; -import javax.ejb.EJBMetaData; -import javax.ejb.EJBObject; -import javax.ejb.Handle; -import javax.ejb.RemoveException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - - -/** - * @author Francois Waeselynck - */ -public class MyServiceEJB implements SessionBean, MyService { - - /** - * - */ - private static final long serialVersionUID = 0L; - - - public void ejbActivate() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - public void ejbPassivate() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - public void ejbRemove() throws EJBException, RemoteException { - // TODO Auto-generated method stub - - } - - public void setSessionContext(SessionContext sessionContext) - throws EJBException, RemoteException { - ejbContext = sessionContext; - - } - - public long call(String s) throws RemoteException { - long tb = System.currentTimeMillis(); - /* - * Find the EJBs ten call them - */ - //long t = ba1.call(s); - - long t; - - try { - - InitialContext ctx = new InitialContext(); - - /* - * find BackA1 - */ - BackAHome aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA1"), - BackAHome.class); - BackServiceA ba = aHome.create(); - t = ba.call(s); - ba.remove(); - - /* - * find BackA2 - */ - aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA2"), - BackAHome.class); - ba = aHome.create(); - t = ba.call(s); - ba.remove(); - - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return System.currentTimeMillis() - tb; - } - - private long callBackHome(BackAHome aHome, String s) throws RemoteException{ - Object im = null; - EJBMetaData meta=null; - - long t; - - try { - - try { - meta = aHome.getEJBMetaData(); - } catch (RemoteException e) { - e.printStackTrace(System.err); - } - - // Do a narrow on the right type - Class homeClass = meta.getHomeInterfaceClass(); - Object imHome = PortableRemoteObject.narrow(aHome, homeClass); - - // Invoke create method - try { - im = homeClass.getMethod("create", (java.lang.Class[]) null).invoke(imHome, (java.lang.Object[]) null); - } catch (IllegalArgumentException e) { - e.printStackTrace(System.err); - } catch (SecurityException e) { - e.printStackTrace(System.err); - } catch (IllegalAccessException e) { - e.printStackTrace(System.err); - } catch (InvocationTargetException e) { - e.printStackTrace(System.err); - } catch (NoSuchMethodException e) { - e.printStackTrace(System.err); - } - - // Try a narrow on the "remoteAble" method - Class remoteClass = meta.getRemoteInterfaceClass(); - String imAbleClassName = remoteClass.getName() + "Able"; - - ClassLoader cloader = Thread.currentThread().getContextClassLoader(); - try { - Class imAbleClass = cloader.loadClass(imAbleClassName); - if (!imAbleClass.isAssignableFrom(im.getClass())) { - im = PortableRemoteObject.narrow(im, imAbleClass); - - } - } catch (Exception ex) { - //ex.printStackTrace(System.err); - } - BackServiceA ba = (BackServiceA) im; - - t = ba.call(s); - ba.remove(); - return t; - - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return 0; - } catch (RemoveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return 0; - } - } - public long callMetaData(String s) throws RemoteException { - long tb = System.currentTimeMillis(); - /* - * Find the EJBs ten call them - */ - //long t = ba1.call(s); - - long t; - - try { - - InitialContext ctx = new InitialContext(); - - - /* - * find BackA1 - */ - BackAHome aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA1"), - BackAHome.class); - - t = callBackHome(aHome, s); - - - - /* - * find BackA2 - */ - aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA2"), - BackAHome.class); - - t = callBackHome(aHome, s); - - - - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return System.currentTimeMillis() - tb; - } - - public long optCall(String s) throws RemoteException { - long tb = System.currentTimeMillis(); - /* - * Use the cached ba1 and ba2 EJBs - */ - long t = ba1.call(s); - t = ba2.call(s); - return System.currentTimeMillis() - tb; - } - - - public long optHomeCall(String s) throws RemoteException { - long tb = System.currentTimeMillis(); - long t = 0; - try { - - BackServiceA ba = ha1.create(); - t = ba.call(s); - ba.remove(); - - /* - * find BackA2 - */ - ba = ha2.create(); - t = ba.call(s); - ba.remove(); - - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return System.currentTimeMillis() - tb; - } - - public EJBHome getEJBHome() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - public Handle getHandle() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - public Object getPrimaryKey() throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - public boolean isIdentical(EJBObject arg0) throws RemoteException { - // TODO Auto-generated method stub - return false; - } - - public void remove() throws RemoteException, RemoveException { - // TODO Auto-generated method stub - - } - - public void ejbCreate() throws CreateException { - try { - - InitialContext ctx = new InitialContext(); - String tag = (String) ctx.lookup("java:comp/env/params/myTag"); - id = (tag == null ? id : tag); - } catch (NamingException e) { - e.printStackTrace(); - } - initForOptCall(); - } - - public void initForOptCall() { - try { - ictx = new InitialContext(); - - /* - * find BackA1 - */ - ha1 = (BackAHome) PortableRemoteObject.narrow( - ictx.lookup("java:comp/env/ejb/backA1"), - BackAHome.class); - ba1 = ha1.create(); - - /* - * find BackA2 - */ - ha2 = (BackAHome) PortableRemoteObject.narrow( - ictx.lookup("java:comp/env/ejb/backA2"), - BackAHome.class); - ba2 = ha2.create(); - - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } finally { - - } - System.out.println("FWA - ba1 : " + ba1 + " ; ba2 : " + ba2); - } - - private SessionContext ejbContext = null; - private String id = "MyService"; - - /* - * Fields for - */ - private InitialContext ictx = null; - private BackAHome ha1 = null; - private BackAHome ha2 = null; - private BackServiceA ba1 = null; - private BackServiceA ba2 = null; - - - public Request call(Request r) throws RemoteException { - /* - * Find the EJBs ten call them - */ - r.addStamp(id, "IN call"); - try { - - InitialContext ctx = new InitialContext(); - - /* - * find BackA1 - */ - BackAHome aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA1"), - BackAHome.class); - r.addStamp(id, "A1 LOOKUP"); - BackServiceA ba = aHome.create(); - r.addStamp(id, "A1 CREATE"); - r = ba.call(r); - r.addStamp(id, "A1 call"); - ba.remove(); - r.addStamp(id, "A1 REMOVE"); - - /* - * find BackA2 - */ - aHome = (BackAHome) PortableRemoteObject.narrow( - ctx.lookup("java:comp/env/ejb/backA2"), - BackAHome.class); - r.addStamp(id, "A2 LOOKUP"); - ba = aHome.create(); - r.addStamp(id, "A2 CREATE"); - r = ba.call(r); - r.addStamp(id, "A2 call"); - ba.remove(); - r.addStamp(id, "A2 REMOVE"); - - } catch (NamingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - r.addStamp(id, "OUT call"); - return r; - } - - - public Request optCall(Request r) throws RemoteException { - - /* - * Use the cached ba1 and ba2 EJBs - */ - r.addStamp(id, "IN optCall"); - r = ba1.call(r); - r.addStamp(id, "A1 < x < A2"); - r = ba2.call(r); - r.addStamp(id, "OUT optCall"); - return r; - } - - public Request optHomeCall(Request r) throws RemoteException { - /* - * Find the EJBs ten call them - */ - r.addStamp(id, "IN optHomeCall"); - try { - - BackServiceA ba = ha1.create(); - r.addStamp(id, "A1 CREATE"); - r = ba.call(r); - r.addStamp(id, "A1 call"); - ba.remove(); - r.addStamp(id, "A1 REMOVE"); - - /* - * find BackA2 - */ - ba = ha2.create(); - r.addStamp(id, "A2 CREATE"); - r = ba.call(r); - r.addStamp(id, "A2 call"); - ba.remove(); - r.addStamp(id, "A2 REMOVE"); - - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (RemoveException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - r.addStamp(id, "OUT optHomeCall"); - return r; - } -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceHome.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceHome.java deleted file mode 100644 index cf076a2075..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/MyServiceHome.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.rmi.RemoteException; - -import javax.ejb.EJBHome; - -/** - * @author Francois Waeselynck - */ -public interface MyServiceHome extends EJBHome { - - public MyService create() throws RemoteException; -} diff --git a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/Request.java b/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/Request.java deleted file mode 100644 index fc3b649e82..0000000000 --- a/jonas_tests/protocols/modules/ejbs/src/org/ow2/jonas/protocols/test/ejbs/Request.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Protocols test - * Copyright (C) 2007 Bull S.A.S. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.ow2.jonas.protocols.test.ejbs; - -import java.io.Serializable; -import java.util.Date; -import java.util.HashMap; - -/** - * @author Francois Waeselynck - */ -public class Request implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public Request(String root) { - id = root - + "-" + Long.toString(System.currentTimeMillis()) - + "-" + Thread.currentThread().getName(); - } - - public String getId() { - return id; - } - - public void addStamp(String name,String progress) { - String s = name + ":" + progress; - map.put(s, s + "-" + new Date().toString()); - } - - public String getStamp(String stamp) { - return (String) map.get(stamp); - } - - public HashMap getStamps() { - return (HashMap) map.clone(); - } - - public String toString() { - StringBuffer buf = new StringBuffer(1024); - buf.append("\n"); - buf.append(id); - buf.append("\n"); - buf.append("\n\n"); - buf.append(map.toString()); - buf.append("\n\n"); - return buf.toString(); - - } - - - private String id = null; - private HashMap map = new HashMap(); -} diff --git a/jonas_tests/protocols/scripts/client.cmd b/jonas_tests/protocols/scripts/client.cmd deleted file mode 100644 index b3cec901a9..0000000000 --- a/jonas_tests/protocols/scripts/client.cmd +++ /dev/null @@ -1,30 +0,0 @@ -REM --------------------------------------------------------------------------- -REM JOnAS: Java(TM) Open Application Server -REM Copyright (C) 2006 Bull S.A.S. -REM Contact: jonas-team@objectweb.org -REM -REM This library is free software; you can redistribute it and/or -REM modify it under the terms of the GNU Lesser General Public -REM License as published by the Free Software Foundation; either -REM version 2.1 of the License, or (at option) any later version. -REM -REM This library is distributed in the hope that it will be useful, -REM but WITHOUT ANY WARRANTY; without even the implied warranty of -REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -REM Lesser General Public License for more details. -REM -REM You should have received a copy of the GNU Lesser General Public -REM License along with this library; if not, write to the Free Software -REM Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -REM -REM --------------------------------------------------------------------------- -REM $Id$ -REM --------------------------------------------------------------------------- - -REM Launches a simple test -REM Usage : client.sh multi|multiserial 0 with -REM clientnb : the threads nb -REM iterationNb : the loop nb -REM type : the sort of test among Remote CreateRemote LookupCreateRemote MetaData -REM ex : client.cmd 10 10000 0 LookupCreateRemote -java %JAVA_OPTS% -jar %JONAS_ROOT%\lib\client.jar -carolFile client\carol.properties -traceFile client\traceclient.properties %JONAS_BASE%\apps\autoload\applicall.ear %* \ No newline at end of file diff --git a/jonas_tests/protocols/scripts/client.sh b/jonas_tests/protocols/scripts/client.sh deleted file mode 100755 index edb5201d5d..0000000000 --- a/jonas_tests/protocols/scripts/client.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# Protocols test -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -# -# --------------------------------------------------------------------------- -# $Id: $ -# --------------------------------------------------------------------------- - -# Launches a simple test -# Usage : client.sh multi 0 with -# clientnb : the threads nb -# iterationNb : the loop nb -# type : the sort of test among Remote CreateRemote LookupCreateRemote MetaData -# Ex : client.sh multi 5 200 0 Remote - -java -version -export JAVA_OPTS="-Dmonolog.wrappers=org.ow2.carol.cmi.configuration.TraceCmi $JAVA_OPTS" -export APPLI=$JONAS_BASE/apps/autoload/applicall.ear -java $JAVA_OPTS -jar $JONAS_ROOT/lib/client.jar -carolFile ./clientconf/carol.properties -traceFile ./clientconf/traceclient.properties $APPLI $* diff --git a/jonas_tests/protocols/scripts/suiteMulti.sh b/jonas_tests/protocols/scripts/suiteMulti.sh deleted file mode 100755 index 20c776875e..0000000000 --- a/jonas_tests/protocols/scripts/suiteMulti.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# Protocols test -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -# -# --------------------------------------------------------------------------- -# $Id: $ -# --------------------------------------------------------------------------- - -iterationNb=$1 -prefix=$2 - -if [[ "${iterationNb}" = "" || "${prefix}" = "" ]] -then - echo "Usage : $0 "; - echo "Example : $0 200 JR484Cmi"; -fi - -# Launches a tests suite - -rootdir=`dirname $0` - -mkdir report 2>/dev/null - -for j in Remote CreateRemote LookupCreateRemote MetaData -do -type=$j -for i in 1 5 10 20 -do - - file="report/${prefix}_${type}_${i}_${iterationNb}_0.report" - cmd="${rootdir}/client.sh multi ${i} ${iterationNb} 0 ${type} 2>${file}" - echo "$cmd"; - $cmd 1>/dev/null 2>${file} - -done -done diff --git a/jonas_tests/protocols/scripts/suiteMultiSerial.sh b/jonas_tests/protocols/scripts/suiteMultiSerial.sh deleted file mode 100755 index dc85b8e6c0..0000000000 --- a/jonas_tests/protocols/scripts/suiteMultiSerial.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# Protocols test -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -# -# --------------------------------------------------------------------------- -# $Id: $ -# --------------------------------------------------------------------------- - -iterationNb=$1 -prefix=$2 - -if [[ "${iterationNb}" = "" || "${prefix}" = "" ]] -then - echo "Usage : $0 "; - echo "Example : $0 200 JR484Cmi"; -fi - -# Launches a tests suite - -rootdir=`dirname $0` - -mkdir report 2>/dev/null - -for j in Remote CreateRemote LookupCreateRemote -do -type=$j -for i in 1 5 10 20 -do - - file="report/${prefix}_${type}_${i}_${iterationNb}_0.report" - cmd="${rootdir}/client.sh multiserial ${i} ${iterationNb} 0 ${type} 2>${file}" - echo "$cmd"; - $cmd 1>/dev/null 2>${file} - -done -done diff --git a/jonas_tests/protocols/scripts/synt.sh b/jonas_tests/protocols/scripts/synt.sh deleted file mode 100755 index 0e0e0744ee..0000000000 --- a/jonas_tests/protocols/scripts/synt.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -# --------------------------------------------------------------------------- -# Protocols test -# Copyright (C) 2007 Bull S.A.S. -# Contact: jonas-team@objectweb.org -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -# -# --------------------------------------------------------------------------- -# $Id: $ -# --------------------------------------------------------------------------- - - -# Generates a report that gives a global comparison. Output format is CSV -# Usage : synt.sh JR484CmiSingleton JR485CmiSingleton JR485Cmi JR485JrmpSingleton JR485CmiSingletonSerial JR485JrmpSingletonSerial - -patternList=$* - -echo "testType;cltNb;iter;testName;responseTime;inFacadeMethod" -for i in LookupCreateRemote CreateRemote Remote MetaData -do - for j in 1 5 10 20 - do - - for k in 20 -# for k in 200 500 - do - #echo . - #echo "TEST=${i} CLT=${j} ITER=${k}" - #echo "----------------------------------" - - for l in ${patternList} - do - reportname="${l}_${i}_${j}_${k}_0.report" - res=`tail -1 report/${reportname} 2>/dev/null` - if (( $? == 0 )) - then - echo "${i};${j};${k};${l};${res}" - fi - done - done - done -done diff --git a/jonas_tests/samplehttp/README b/jonas_tests/samplehttp/README deleted file mode 100644 index b556b2e9ec..0000000000 --- a/jonas_tests/samplehttp/README +++ /dev/null @@ -1,37 +0,0 @@ -This test may be used to do load tests for servlet+ejb -Structure: - - beans: sample bean session stateless with method void process(long timetowait) - - client: client code - - servlet: servlet SampleServlet code - - - -For building and packaging the application --> ant install - -With the default configuration of jonas.properties JOnAS and Tomcat are running in the same JVM - -Running the server -jonas start -jonas admin -a samplehttp.ear - -In order to test the web application is well deployed after having running JOnAS: -http://:/samplehttp/SampleServlet - - -Running a scenario: -Usage: jclient -cp /samplehttp/classes samplehttp.client.SampleClient -with: - -h hostname - -p port number - -n number of client threads - -t treatment time in servlet or in EJB's method - -w time to wait in thread client between 2 requests - -l nb loops in each thread client - -ejb call ejb in servlet (mode pure servlet if not set) - -ejbl call ejb in servlet via local interface. -Examples: -jclient -cp $PROJ_BASE/objectweb/jonas_tests/samplehttp/classes samplehttp.client.SampleClient -h localhost -p 19510 -n 50 -t 10 -l 100 -w 1000 -ejb - -jclient -cp $PROJ_BASE/objectweb/jonas_tests/samplehttp/classes samplehttp.client.SampleClient -h localhost -p 19510 -n 5 -t 10 -l 10 -w 1000 -ejbc - - diff --git a/jonas_tests/samplehttp/beans/Sess.java b/jonas_tests/samplehttp/beans/Sess.java deleted file mode 100644 index 3faa3ad0e8..0000000000 --- a/jonas_tests/samplehttp/beans/Sess.java +++ /dev/null @@ -1,14 +0,0 @@ -// Sess.java - -package samplehttp.beans; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * Sess remote interface - */ -public interface Sess extends EJBObject { - public void process(long time) throws RemoteException; - public void processwithconn(long time) throws RemoteException; -} diff --git a/jonas_tests/samplehttp/beans/SessClient.java b/jonas_tests/samplehttp/beans/SessClient.java deleted file mode 100644 index ca775620e1..0000000000 --- a/jonas_tests/samplehttp/beans/SessClient.java +++ /dev/null @@ -1,42 +0,0 @@ -// SessClient.java -// mini Client for accessing bean Sess - -package samplehttp.beans; - -import java.rmi.RemoteException; -import java.util.Collection; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -/** - * - */ -public class SessClient { - - static Context ctx = null; - static SessHome home = null; - - public static void main(String[] arg) { - - // Get InitialContext - try { - ctx = new InitialContext(); - } catch (NamingException e) { - e.printStackTrace(); - System.exit(2); - } - - // Lookup bean home - String bName = "sessSessSLRHome"; - try { - home = (SessHome) PortableRemoteObject.narrow(ctx.lookup(bName), SessHome.class); - } catch(Exception e) { - e.printStackTrace(); - System.exit(2); - } - - // ... - } -} diff --git a/jonas_tests/samplehttp/beans/SessHome.java b/jonas_tests/samplehttp/beans/SessHome.java deleted file mode 100644 index 0302b80a8b..0000000000 --- a/jonas_tests/samplehttp/beans/SessHome.java +++ /dev/null @@ -1,16 +0,0 @@ -// SessHome.java - -package samplehttp.beans; - -import java.rmi.RemoteException; -import java.util.Collection; -import javax.ejb.CreateException; -import javax.ejb.EJBHome; -import javax.ejb.FinderException; - -/** - * Home interface for the bean Sess - */ -public interface SessHome extends EJBHome { - Sess create() throws CreateException, RemoteException; -} diff --git a/jonas_tests/samplehttp/beans/SessLocal.java b/jonas_tests/samplehttp/beans/SessLocal.java deleted file mode 100644 index a2b55839af..0000000000 --- a/jonas_tests/samplehttp/beans/SessLocal.java +++ /dev/null @@ -1,13 +0,0 @@ -// SessLocal.java - -package samplehttp.beans; - - -import javax.ejb.EJBLocalObject; - -/** - * Sess remote interface - */ -public interface SessLocal extends EJBLocalObject { - public void process(long time); -} diff --git a/jonas_tests/samplehttp/beans/SessLocalHome.java b/jonas_tests/samplehttp/beans/SessLocalHome.java deleted file mode 100644 index eb62e727ca..0000000000 --- a/jonas_tests/samplehttp/beans/SessLocalHome.java +++ /dev/null @@ -1,15 +0,0 @@ -// SessHome.java - -package samplehttp.beans; - - -import javax.ejb.CreateException; -import javax.ejb.EJBLocalHome; - - -/** - * Home interface for the bean Sess - */ -public interface SessLocalHome extends EJBLocalHome { - SessLocal create() throws CreateException; -} diff --git a/jonas_tests/samplehttp/beans/SessSLR.java b/jonas_tests/samplehttp/beans/SessSLR.java deleted file mode 100644 index 8401b4b934..0000000000 --- a/jonas_tests/samplehttp/beans/SessSLR.java +++ /dev/null @@ -1,151 +0,0 @@ -// SessSLR.java -// Stateless Session bean - -package samplehttp.beans; - -import java.rmi.RemoteException; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; -import javax.ejb.CreateException; -import javax.ejb.EJBException; -import javax.ejb.RemoveException; -import javax.ejb.EJBObject; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.sql.DataSource; - -import org.objectweb.jonas.common.Log; -import org.objectweb.util.monolog.api.Logger; -import org.objectweb.util.monolog.api.BasicLevel; - - -/** - * - */ -public class SessSLR implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - private DataSource dataSource = null; - - - - - private Connection getConnection() throws EJBException, SQLException { - if (dataSource == null) { - // Finds DataSource from JNDI - Context initialContext = null; - try { - initialContext = new InitialContext(); - dataSource = (DataSource)initialContext.lookup("java:comp/env/jdbc/SessDs"); - } catch (Exception e) { - System.out.println("Cannot lookup dataSource"+e); - throw new javax.ejb.EJBException("Cannot lookup dataSource "); - } - } - return dataSource.getConnection(); - } - - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - /** - * Set the associated session context. The container calls this method - * after the instance creation. - * The enterprise Bean instance should store the reference to the context - * object in an instance variable. - * This method is called with no transaction context. - * - * @param sessionContext A SessionContext interface for the instance. - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - /** - * A container invokes this method before it ends the life of the session object. - * This happens as a result of a client's invoking a remove operation, or when a - * container decides to terminate the session object after a timeout. - * This method is called with no transaction context. - * - * @throws EJBException Thrown by the method to indicate a failure caused by - * a system-level error. - */ - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * The Session bean must define 1 or more ejbCreate methods. - * - * @throws CreateException Failure to create a session EJB object. - */ - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - - /** - * A container invokes this method on an instance before the instance - * becomes disassociated with a specific EJB object. - */ - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * A container invokes this method when the instance is taken out of - * the pool of available instances to become associated with a specific - * EJB object. - */ - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // Sess implementation - // ------------------------------------------------------------------ - - /** - * process - * @ param long treatment time - */ - public void process(long time) { - logger.log(BasicLevel.DEBUG, "treatment time = "+time); - try { - Thread.currentThread().sleep(time); - } catch (InterruptedException e) { - System.out.println("sleep:"+e); - } - } - - /** - * process - * @ param long treatment time - */ - public void processwithconn(long time) { - logger.log(BasicLevel.DEBUG, "treatment time = "+time); - try { - Connection conn = getConnection(); - Thread.currentThread().sleep(time); - conn.close(); - } catch (InterruptedException e) { - System.out.println("sleep:"+e); - } catch (Exception e) { - System.out.println("exception caught: "+e); - } - } - -} diff --git a/jonas_tests/samplehttp/beans/jonas-sess.xml b/jonas_tests/samplehttp/beans/jonas-sess.xml deleted file mode 100644 index 58bb1196d2..0000000000 --- a/jonas_tests/samplehttp/beans/jonas-sess.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - SessSLR - SessHome - - jdbc/SessDs - jdbc_1 - - 20 - 10 - - - diff --git a/jonas_tests/samplehttp/beans/sess.xml b/jonas_tests/samplehttp/beans/sess.xml deleted file mode 100644 index 599e6026e4..0000000000 --- a/jonas_tests/samplehttp/beans/sess.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - Describe here the content of this file - sess - - - - Describe here the session bean Sess - sess/SessSLR - SessSLR - samplehttp.beans.SessHome - samplehttp.beans.Sess - samplehttp.beans.SessLocalHome - samplehttp.beans.SessLocal - samplehttp.beans.SessSLR - Stateless - Container - - jdbc/SessDs - javax.sql.DataSource - Container - - - - - - - - - SessSLR - * - - Supports - - - - - diff --git a/jonas_tests/samplehttp/build.xml b/jonas_tests/samplehttp/build.xml deleted file mode 100644 index a264deb4d1..0000000000 --- a/jonas_tests/samplehttp/build.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/samplehttp/client/SampleClient.java b/jonas_tests/samplehttp/client/SampleClient.java deleted file mode 100644 index 3ff2bc9938..0000000000 --- a/jonas_tests/samplehttp/client/SampleClient.java +++ /dev/null @@ -1,162 +0,0 @@ - -package samplehttp.client; - -//Import statements -import java.io.*; - -import java.net.*; - - - - - -class SenderThread extends Thread { - - private String m_host; - private int m_port; - private String m_treattime; - private int m_loops; - private long m_wait; - private long m_time; - private int m_fejb; - - public SenderThread(String host, int port, String treattime, String wait, int loops, int fejb){ - m_host = host; - m_port = port; - m_treattime = treattime; - Long w = new Long(wait.trim()); - m_wait = w.longValue(); - m_loops = loops; - m_fejb = fejb; - } - - public void run() { - System.out.println("Running a SenderThread..."); - long d_begin = System.currentTimeMillis(); - Sender s = new Sender(m_host,"samplehttp/SampleServlet", m_port, m_treattime, m_fejb ); - try{ - for (int l = 0; l < m_loops; l++) { - s.execute(); - Thread.currentThread().sleep(m_wait); - } - }catch(Exception e) { - System.out.println(">>> SenderThread. Exception caught = "+e); - } - long d_end = System.currentTimeMillis(); - m_time = d_end - d_begin; - } - - public long getTime(){ - return m_time; - } -} - -public class SampleClient { - - - private static final int m_MAXTHREADS = 500; - private static int poolsize = 1; - private static int port; - private static int loops = 1; - private static String wait = "1000"; // Wait between 2 requests default = 1second - private static String treattime = "10"; // Treatment time in servlet default = 10 ms - private static String host; - private static int flgejb = 0; - - public static void main(String args[]) { - - // Get command args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - String sarg; - Integer i_arg; - - if ((argn+1"); - System.out.println(" -h hostname"); - System.out.println(" -p port number "); - System.out.println(" -n number of client threads"); - System.out.println(" -t treatment time in servlet"); - System.out.println(" -w time to wait in thread client"); - System.out.println(" -l nb loops in each thread client"); - System.out.println(" -ejb call ejb in servlet"); - System.out.println(" -ejbl call ejb via local interface in servlet"); - System.out.println(" -ejbc call ejb + getconnectionin servlet"); - - } - -} - diff --git a/jonas_tests/samplehttp/client/Sender.java b/jonas_tests/samplehttp/client/Sender.java deleted file mode 100644 index 93996b7b13..0000000000 --- a/jonas_tests/samplehttp/client/Sender.java +++ /dev/null @@ -1,116 +0,0 @@ - -package samplehttp.client; - -//Import statements -import java.io.*; - -import java.net.*; -import java.util.*; - - - -/** - * This is the class for non https communication - */ -public class Sender { - - - String hostname; - String servlet; - int port; - String timetowait; - int flgejb; - - final String HTTP = "HTTP/1.1"; - final String METHOD = "POST "; - final String CONTENT_TYPE = "Content-type: application/x-www-form-urlencoded"; - final String CONTENT_LENGTH = "Content-length: "; - - - /** - * Constructor Sender - * - * - * @param hostname - * @param servlet - * @param port - * - */ - public Sender(String hostname, String servlet, - int port, String timetowait, int flgejb) { - - this.hostname = hostname; - this.servlet = servlet; - this.port = port; - this.timetowait = timetowait; - this.flgejb = flgejb; - } - - /** - * execute: connect to a servlet and send something - */ - public void execute() throws IOException{ - - StringBuffer b = new StringBuffer("http://"); - - b.append(hostname); - b.append(':'); - b.append(port); - b.append('/'); - b.append(servlet); - - URL url = new URL(b.toString()); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - - - conn.setRequestProperty("Connection","Close"); - conn.setDoOutput(true); - conn.setDoInput(true); - conn.setRequestMethod("POST"); - - PrintWriter stream = new PrintWriter(conn.getOutputStream(), - true); - - // Send - - stream.println("param= " + timetowait+ " "+flgejb ); - System.out.println("timetowait "+timetowait); - - stream.close(); - - BufferedReader reader = - new BufferedReader(new InputStreamReader(conn - .getInputStream())); - - // Check for response "200 OK" - boolean ok = false; - - System.err.println("Reading response"); - StringBuffer response = new StringBuffer(); - String r = null; - - for (;;) { - r = reader.readLine(); - - if (r == null) { - break; - } - - response.append(r); - if (r.indexOf("OK") != -1) { - ok = true; - - break; - } - } - - System.err.println("Response received"); - reader.close(); - System.err.println("Connection closed"); - if (!ok) { - System.out.println(">> Non OK"); - } - - } -} - diff --git a/jonas_tests/samplehttp/etc/application.xml b/jonas_tests/samplehttp/etc/application.xml deleted file mode 100644 index 6d14c96b26..0000000000 --- a/jonas_tests/samplehttp/etc/application.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - samplehttp - samplehttp - - sess.jar - - - - - samplehttp.war - samplehttp - - - diff --git a/jonas_tests/samplehttp/etc/web.xml b/jonas_tests/samplehttp/etc/web.xml deleted file mode 100644 index b06fa8bd1f..0000000000 --- a/jonas_tests/samplehttp/etc/web.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - SampleServlet - samplehttp.servlet.SampleServlet - - - - SampleServlet - /SampleServlet - - - - ejb/Sess - Session - samplehttp.beans.SessHome - samplehttp.beans.Sess - sess.jar#SessSLR - - - - ejb/SessLocal - Session - samplehttp.beans.SessLocalHome - samplehttp.beans.SessLocal - sess.jar#SessSLR - - - diff --git a/jonas_tests/samplehttp/servlet/SampleServlet.java b/jonas_tests/samplehttp/servlet/SampleServlet.java deleted file mode 100644 index 4f55ee29ac..0000000000 --- a/jonas_tests/samplehttp/servlet/SampleServlet.java +++ /dev/null @@ -1,140 +0,0 @@ -package samplehttp.servlet; - -//import java -import java.io.IOException; -import java.io.PrintWriter; -import java.util.StringTokenizer; - -//import javax -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.rmi.PortableRemoteObject; -import samplehttp.beans.SessHome; -import samplehttp.beans.Sess; -import samplehttp.beans.SessLocalHome; -import samplehttp.beans.SessLocal; - -/** - * - */ -public class SampleServlet extends HttpServlet { - - /** - * Called by the server (via the service method) to allow a servlet to - * handle a GET request. - * @param request an HttpServletRequest object that contains the request - * the client has made of the servlet - * @param response an HttpServletResponse object that contains the - * response the servlet sends to the client - * @throws IOException if an input or output error is detected when the - * servlet handles the GET request - * @throws ServletException if the request for the GET could not be handled - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException { - //System.out.println(Thread.currentThread().getName()+" SampleServlet doGet"); - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - out.println("Sample Servlet "); - out.println(""); - out.println(""); - out.println("

    Sample Servlet accessing a protected EJB"); - - out.println("

    Initial context / UserTransaction

    "); - out.println("
      "); - Context initialContext = null; - try { - initialContext = new InitialContext(); - out.println("
    • Initial context OK
    • "); - } catch (Exception e) { - out.print("
    • Cannot get initial context for JNDI: "); - out.println(e + "
    • "); - return; - } - - } - public void doPost(HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException { - - //System.out.println(Thread.currentThread().getName()+" SampleServlet doPost"); - StringTokenizer st = new StringTokenizer(request.getParameter("param")); - String timetowait = (String)st.nextElement(); - String flag = (String)st.nextElement(); - //System.out.println("timetowait = "+timetowait); - Long lg = new Long(timetowait.trim()); - long twait = lg.longValue(); - - int ejbflg = new Integer(flag).intValue(); - // ejbflg = 0 ---> no ejb - // ejbflg = 1 ---> ejb via remote interface - // ejbflg = 2 ---> ejb via local interface - // ejbflg = 3 ---> ejb via remote interface + getConnection - - //System.out.println("waiting : "+twait +" ejb = "+ejbflg); - if( ejbflg == 0 ) { - //System.out.println("No ejb"); - try { - Thread.currentThread().sleep(twait); - } catch (InterruptedException e) { - //System.out.println("sleep:"+e); - } - - } else { - - Context initialContext = null; - try { - initialContext = new InitialContext(); - - } catch (Exception e) { - System.err.println("Cannot get initial context for JNDI: "+e); - return; - } if( ejbflg == 2) { - // ejbflg = 2 ---> ejb via local interface - SessLocalHome sh = null; - SessLocal s = null; - try { - sh = (SessLocalHome) initialContext.lookup("java:comp/env/ejb/SessLocal"); - s = sh.create(); - s.process(twait); - s.remove(); - } catch (Exception e) { - System.err.println("Exception caught: " + e ); - return; - } - } else { - // ejbflg = 1 or 3 ---> ejb via remote interface - SessHome sh = null; - Sess s = null; - try { - sh = (SessHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Sess"), SessHome.class); - s = sh.create(); - if( ejbflg == 1) { - // ejbflg = 1 ---> ejb via remote interface - s.process(twait); - } else { - // ejbflg = 3 ---> ejb business method + getConnection - s.processwithconn(twait); - } - s.remove(); - } catch (Exception e) { - System.err.println("Exception caught: " + e ); - return; - } - } - } - String okmsg = "OK\n"; - response.setContentLength(okmsg.length()); - PrintWriter out = response.getWriter(); - out.print(okmsg); - - - } - -} diff --git a/jonas_tests/ws/.cvsignore b/jonas_tests/ws/.cvsignore deleted file mode 100644 index bb8c50e8d0..0000000000 --- a/jonas_tests/ws/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -classes -output -temp -velocity.log -report diff --git a/jonas_tests/ws/README b/jonas_tests/ws/README deleted file mode 100644 index 636b766a06..0000000000 --- a/jonas_tests/ws/README +++ /dev/null @@ -1,64 +0,0 @@ -####################################################### -# Web Services Tests # -####################################################### - -General description : --------------------- - -This application is made of : - -- 2 Web service endpoints : - - AdressBook service : a JAX-RPC endpoint ( a class running on a web container) - providing operations to enter and find adresses. ==> adressbook.war - - Ordering service : a Stateless Session Bean providing operations to submit and get - an order. ==> ordering.ear - -- for each endpoints : - - 2 Web service clients implemented by EJB : - - one using generated classes (AXIS) to encapsulate Web Service Call object. - - the other using a Dynamic Invocation Interface (Call object). - - 2 Web service clients implemented by classes, using Stub (generated classes) and DII too. - -Many different architectures are possible : - -- 1 jonas server with all components (Web service endpoints, clients ...), -- 1 jonas server for each Web service endpoints, one other for Web service clients. -(all server on the same host because "localhost" is hardcoded) -- ... - - -WARNING: -To compile or/and run the tests, the JONAS_ROOT must contains -a JOnAS-Tomcat or a JOnAS-jetty package. - - -How to compile and to run the test: ------------------------------------ - -You must follow some simple rules in order tu run successfully this TestSuite : - -1. You must have an environment variable named HTTP_PORT containing the port - where your webcontainer is listening -2. The tests are running on localhost -3. The JOnAS Server must be named jonas (same as for conformance tests) -4. You must have the "web" service (tomcat or jetty) launched - -Steps : -------- - -1. Launch a JOnAS server in a terminal -jonas start - -2. Open another terminal - -3. Set the HTTP_PORT variable (see your $JONAS_BASE/conf/server.xml) -export HTTP_PORT=9000 - -4. Compile the tests -cd $PROJ_BASE/jonas_tests/ws -ant install - -5. Launch the suite -cd $PROJ_BASE/jonas_tests/ws -ant report - diff --git a/jonas_tests/ws/build.xml b/jonas_tests/ws/build.xml deleted file mode 100644 index 74eb02f387..0000000000 --- a/jonas_tests/ws/build.xml +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Running JUnit Client: 'jonas.base=${jonas.base}' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/apps/port-component-link.xml b/jonas_tests/ws/etc/apps/port-component-link.xml deleted file mode 100644 index a37b3a9e69..0000000000 --- a/jonas_tests/ws/etc/apps/port-component-link.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - port-component-link tests between - 2 webapps, the first one webendpoint exposing a webservices - and the seconf one using this service without previous knowledge - about the location. - - port-component-link tests - - - - webendpoint.war - endpoint - - - - - - webportlink.war - portlink - - - - diff --git a/jonas_tests/ws/etc/apps/time-test.xml b/jonas_tests/ws/etc/apps/time-test.xml deleted file mode 100644 index f494d3dd24..0000000000 --- a/jonas_tests/ws/etc/apps/time-test.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - time endpoint tests - - - time-client.jar - - - - time.jar - - - diff --git a/jonas_tests/ws/etc/clients/application-client.xml b/jonas_tests/ws/etc/clients/application-client.xml deleted file mode 100644 index ea592b1143..0000000000 --- a/jonas_tests/ws/etc/clients/application-client.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - Client of the time WS EJB - Client of the time WS EJB - - - service/time - javax.xml.rpc.Service - META-INF/wsdl/TimePort.wsdl - META-INF/timeMapping.xml - - org.objectweb.jonas.jtests.beans.time.TimeEndpoint - time.jar#TimePort - - - TimeClientHandler - org.objectweb.jonas.jtests.appclients.timeclient.TimeClientHandler - - jonas.test.client.handler - JOnAS - - TimePort - - - - diff --git a/jonas_tests/ws/etc/clients/jonas-client.xml b/jonas_tests/ws/etc/clients/jonas-client.xml deleted file mode 100644 index 87131bc5b9..0000000000 --- a/jonas_tests/ws/etc/clients/jonas-client.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - service/time - JOnAS_Unused - - - diff --git a/jonas_tests/ws/etc/clients/timeMapping.xml b/jonas_tests/ws/etc/clients/timeMapping.xml deleted file mode 100644 index 2b413463ad..0000000000 --- a/jonas_tests/ws/etc/clients/timeMapping.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - org.objectweb.jonas.jtests.appclients.timeclient.time - jonas:Time - - diff --git a/jonas_tests/ws/etc/clients/wsdl/TimePort.wsdl b/jonas_tests/ws/etc/clients/wsdl/TimePort.wsdl deleted file mode 100644 index 474f76e4e2..0000000000 --- a/jonas_tests/ws/etc/clients/wsdl/TimePort.wsdl +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/ejb-jar.xml deleted file mode 100644 index 09e24ae9b7..0000000000 --- a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/ejb-jar.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Describe here the content of this file - mcontext - - - - Describe here the session bean TestMC1 - mcontext/TestMC1SLL - TestMC1SLL - org.objectweb.jonas.jtests.beans.mcontext.TestMC1LocalHome - org.objectweb.jonas.jtests.beans.mcontext.TestMC1Local - org.objectweb.jonas.jtests.beans.mcontext.TestMC1Endpoint - org.objectweb.jonas.jtests.beans.mcontext.TestMC1SLL - Stateless - Container - - - Describe here the session bean TestMC2 - mcontext2/TestMC2SLR - TestMC2SLR - org.objectweb.jonas.jtests.beans.mcontext.TestMC2Home - org.objectweb.jonas.jtests.beans.mcontext.TestMC2 - org.objectweb.jonas.jtests.beans.mcontext.TestMC2Endpoint - org.objectweb.jonas.jtests.beans.mcontext.TestMC2SLR - Stateless - Container - - - Describe here the session bean BeanAccessor - accessor/BeanAccessorSLR - BeanAccessorSLR - org.objectweb.jonas.jtests.beans.mcontext.BeanAccessorHome - org.objectweb.jonas.jtests.beans.mcontext.BeanAccessor - org.objectweb.jonas.jtests.beans.mcontext.BeanAccessorSLR - Stateless - Container - - - - - - - - TestMC1SLL - * - - Supports - - - - - TestMC2SLR - * - - Supports - - - - - BeanAccessorSLR - * - - Supports - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/jonas-ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/jonas-ejb-jar.xml deleted file mode 100644 index 9357e0555a..0000000000 --- a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/jonas-ejb-jar.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - TestMC1SLL - TestMC1Home - - - - TestMC2SLR - TestMC2Home - - - - BeanAccessorSLR - BeanAccessorHome - - - diff --git a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/mappingMCT.xml b/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/mappingMCT.xml deleted file mode 100644 index d5f185ff56..0000000000 --- a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/mappingMCT.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - org.objectweb.jonas.jtests.beans.mcontext - jonas:MessageContextTest - - diff --git a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/webservices.xml b/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/webservices.xml deleted file mode 100644 index 612194ab65..0000000000 --- a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/webservices.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - MessageContextTest WebService - - MessageContextWS - META-INF/wsdl/MessageContext.wsdl - META-INF/mappingMCT.xml - - - local interfaces bean - LocalMContextPort - mc:LocalMContextPort - org.objectweb.jonas.jtests.beans.mcontext.TestMC1Local - - TestMC1SLL - - - - - remote interfaces bean - RemoteMContextPort - mc:RemoteMContextPort - org.objectweb.jonas.jtests.beans.mcontext.TestMC2 - - TestMC2SLR - - - - diff --git a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/wsdl/MessageContext.wsdl b/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/wsdl/MessageContext.wsdl deleted file mode 100644 index 6e8e3ac5e0..0000000000 --- a/jonas_tests/ws/etc/ejbjars/mcontext/META-INF/wsdl/MessageContext.wsdl +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/time/META-INF/ejb-jar.xml deleted file mode 100644 index 5c9a0a74aa..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/ejb-jar.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Describe here the content of this file - time - - - - Describe here the session bean TimeBean - time/TimeBeanSLR - TimeBeanSLR - org.objectweb.jonas.jtests.beans.time.TimeEndpoint - org.objectweb.jonas.jtests.beans.time.TimeBeanSLR - Stateless - Container - - - - - - - - TimeBeanSLR - - ServiceEndpoint - * - - Supports - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/jonas-ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/time/META-INF/jonas-ejb-jar.xml deleted file mode 100644 index e66fb88eb4..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/jonas-ejb-jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - TimeBeanSLR - TimeBeanHome - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/mapping.xml b/jonas_tests/ws/etc/ejbjars/time/META-INF/mapping.xml deleted file mode 100644 index 1e0acb402e..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/mapping.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - org.objectweb.jonas.jtests.beans.time - jonas:Time - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/webservices.xml b/jonas_tests/ws/etc/ejbjars/time/META-INF/webservices.xml deleted file mode 100644 index 88f628d07a..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/webservices.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Time WebService - TimeWebService - META-INF/wsdl/TimePort.wsdl - META-INF/mapping.xml - - port component description - TimePort - time:TimePort - - org.objectweb.jonas.jtests.beans.time.TimeEndpoint - - TimeBeanSLR - - - TimeBeanHandler - org.objectweb.jonas.jtests.beans.time.TimeBeanHandler - - jonas.test.server.handler - JOnAS - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBook.xsd b/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBook.xsd deleted file mode 100644 index a3c86df36c..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBook.xsd +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBookPort.wsdl b/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBookPort.wsdl deleted file mode 100644 index 05c860ab1c..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/AddressBookPort.wsdl +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/Time.wsdl b/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/Time.wsdl deleted file mode 100644 index c6a3701708..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/Time.wsdl +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/TimePort.wsdl b/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/TimePort.wsdl deleted file mode 100644 index 7c270cfc3d..0000000000 --- a/jonas_tests/ws/etc/ejbjars/time/META-INF/wsdl/TimePort.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/XMethodsMapping.xml b/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/XMethodsMapping.xml deleted file mode 100644 index 7a14fdf641..0000000000 --- a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/XMethodsMapping.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - org.objectweb.jonas.jtests.gen.xmethods - http://www.xmethods.net/interfaces/query.wsdl - - - org.objectweb.jonas.jtests.gen.xmethods - http://www.xmethods.net/interfaces/query - - - org.objectweb.jonas.jtests.gen.xmethods - http://www.xmethods.net/interfaces/query.xsd - - - - - org.objectweb.jonas.jtests.gen.xmethods.IDNamePair - qxsd:IDNamePair - complexType - - - org.objectweb.jonas.jtests.gen.xmethods.IDNamePair[] - qxsd:ArrayOfIDNamePair - complexType - - - - - org.objectweb.jonas.jtests.gen.xmethods.ServiceSummary - qxsd:ServiceSummary - complexType - - - org.objectweb.jonas.jtests.gen.xmethods.ServiceSummary[] - qxsd:ArrayOfServiceSummary - complexType - - - - - org.objectweb.jonas.jtests.gen.xmethods.ServiceDetail - qxsd:ServiceDetail - complexType - - - diff --git a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/ejb-jar.xml deleted file mode 100644 index c39b04e1b4..0000000000 --- a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/ejb-jar.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - Describe here the content of this file - wsclient - - - - Describe here the session bean WsClient1 - wsclient/WsClient1SLR - WsClient1SLR - org.objectweb.jonas.jtests.beans.wsclient.WsClient1Home - org.objectweb.jonas.jtests.beans.wsclient.WsClient1 - org.objectweb.jonas.jtests.beans.wsclient.WsClient1SLR - Stateless - Container - - service/XMethods - javax.xml.rpc.Service - META-INF/wsdl/query.wsdl - META-INF/XMethodsMapping.xml - - xm:XMethodsQuery - - - - - - - - - - - WsClient1SLR - * - - Supports - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/jonas-ejb-jar.xml b/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/jonas-ejb-jar.xml deleted file mode 100644 index ce9312c28b..0000000000 --- a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/jonas-ejb-jar.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - WsClient1SLR - WsClient1Home - - service/XMethods - ws/XMethodsService - - - - diff --git a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.wsdl b/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.wsdl deleted file mode 100644 index 70740807a5..0000000000 --- a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.wsdl +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - XMethods query service - - - - - diff --git a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.xsd b/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.xsd deleted file mode 100644 index dbc09ecbc6..0000000000 --- a/jonas_tests/ws/etc/ejbjars/wsclient/META-INF/wsdl/query.xsd +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/alone/jonas-webservices.xml b/jonas_tests/ws/etc/webapps/alone/jonas-webservices.xml deleted file mode 100644 index 8a73040308..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/jonas-webservices.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - AddressBookWS - - - AddressBookPort - /addressbook - - file:/tmp/ab-ws-wsdl - - diff --git a/jonas_tests/ws/etc/webapps/alone/mapping.xml b/jonas_tests/ws/etc/webapps/alone/mapping.xml deleted file mode 100644 index bed5482c51..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/mapping.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - org.objectweb.jonas.jtests.servlets.endpoint - jonas:AddressBook - - - org.objectweb.jonas.jtests.servlets.endpoint.Address - ab:Address - complexType - - - org.objectweb.jonas.jtests.servlets.endpoint.AddressBookException - ab:AddressBookException - complexType - - diff --git a/jonas_tests/ws/etc/webapps/alone/web.xml b/jonas_tests/ws/etc/webapps/alone/web.xml deleted file mode 100644 index 693a25e195..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/web.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - AddressBook - org.objectweb.jonas.jtests.servlets.endpoint.AddressBookImpl - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/alone/webservices.xml b/jonas_tests/ws/etc/webapps/alone/webservices.xml deleted file mode 100644 index ddea0f53f8..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/webservices.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - AddressBook WebService - - AddressBookWS - WEB-INF/wsdl/AddressBookPort.wsdl - WEB-INF/mapping.xml - - port component description - AddressBookPort - ab:AddressBookPort - org.objectweb.jonas.jtests.servlets.endpoint.AddressBook - - AddressBook - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBook.xsd b/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBook.xsd deleted file mode 100644 index 7655a1b00d..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBook.xsd +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBookPort.wsdl b/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBookPort.wsdl deleted file mode 100644 index 1fd027badb..0000000000 --- a/jonas_tests/ws/etc/webapps/alone/wsdl/AddressBookPort.wsdl +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/webapps/portlink/AdressBook.xml b/jonas_tests/ws/etc/webapps/portlink/AdressBook.xml deleted file mode 100644 index 874eae89dd..0000000000 --- a/jonas_tests/ws/etc/webapps/portlink/AdressBook.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - org.objectweb.jonas.jtests.servlets.portlink - jonas:AddressBook - - - org.objectweb.jonas.jtests.servlets.portlink.Address - ns:Address - complexType - - - org.objectweb.jonas.jtests.servlets.portlink.AddressBookException - ns:AddressBookException - complexType - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/portlink/jonas-web.xml b/jonas_tests/ws/etc/webapps/portlink/jonas-web.xml deleted file mode 100644 index 638ad2b291..0000000000 --- a/jonas_tests/ws/etc/webapps/portlink/jonas-web.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - service/AddressBook - ws/AddressBook - - - diff --git a/jonas_tests/ws/etc/webapps/portlink/web.xml b/jonas_tests/ws/etc/webapps/portlink/web.xml deleted file mode 100644 index b54630be75..0000000000 --- a/jonas_tests/ws/etc/webapps/portlink/web.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - service/AddressBook - javax.xml.rpc.Service - WEB-INF/wsdl/AddressBookPort.wsdl - WEB-INF/AdressBook.xml - ab:AddressBookService - - org.objectweb.jonas.jtests.servlets.portlink.AddressBook - webendpoint.war#AddressBookPort - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/portlink/web/index.jsp b/jonas_tests/ws/etc/webapps/portlink/web/index.jsp deleted file mode 100644 index 3c92d3a380..0000000000 --- a/jonas_tests/ws/etc/webapps/portlink/web/index.jsp +++ /dev/null @@ -1,124 +0,0 @@ - - - - Port Component Link Test - - - -

      Port Component Link Test

      - - <%@ page contentType="text/html" %> - <%@ page import="javax.naming.InitialContext" %> - <%@ page import="javax.xml.rpc.Service" %> - <%@ page import="javax.xml.rpc.Call" %> - <%@ page import="javax.xml.rpc.Stub" %> - <%@ page import="java.rmi.Remote" %> - <%@ page import="javax.xml.namespace.QName" %> - <%@ page import="org.objectweb.jonas.jtests.servlets.portlink.Address" %> - <% - - // new InitialContext - InitialContext ic = new InitialContext(); - - // Lookup - Service s = (Service) ic.lookup("java:comp/env/service/AddressBook"); - - // QNames preparation - QName port = new QName("jonas:AddressBook", "AddressBookPort"); - QName opReset = new QName("jonas:AddressBook", "reset"); - QName opAddAddress = new QName("jonas:AddressBook", "addAddress"); - QName opGetAddresses = new QName("jonas:AddressBook", "getAddresses"); - QName opGetAddress = new QName("jonas:AddressBook", "getAddress"); - QName opIsPresent = new QName("jonas:AddressBook", "isPresent"); - - // Call creation - Call call = s.createCall(port); - call.setProperty(Call.SESSION_MAINTAIN_PROPERTY, new Boolean(true)); - - - Remote remote = s.getPort(org.objectweb.jonas.jtests.servlets.portlink.AddressBook.class); - - %> -
      - Config :
      -
      - get.getTargetEndpointAddress() : '<%= call.getTargetEndpointAddress() %>' - - - getPort return a Stub : '<%= (remote instanceof Stub) %>'
      -
      - <% - - // preInvoke - // reset the base - call.setOperationName(opReset); - call.invoke(new Object[] {}); - - // Call execution - // 1: getAddress - call.setOperationName(opGetAddress); - Address jonas = (Address) call.invoke(new Object[] {"JOnAS"}); - - // 2: addAddress - Address jonasTeam = new Address(); - jonasTeam.setName("JOnAS-Team"); - jonasTeam.setCompany("ObjectWeb Consortium"); - jonasTeam.setVersion(1.0f); - call.setOperationName(opAddAddress); - call.invoke(new Object[] {jonasTeam}); - - // 3: getAddresses - call.setOperationName(opGetAddresses); - // return a Address[] but ClassCastException is thrown when direct casting - Object[] objects = (Object[]) call.invoke(new Object[] {}); - - // So we cast Addresses one by one in a new Array. - Address[] addresses = new Address[objects.length]; - for (int i = 0; i < objects.length; i++ ) { - addresses[i] = (Address) objects[i]; - } - %> - - return type : <%= addresses[0].getClass().getName() %> - - <% - - // 4: isPresent - call.setOperationName(opIsPresent); - Boolean presence = (Boolean) call.invoke(new Object[] {jonasTeam.getName()}); - %> -
      -
      - Results :
      -
      - - getAddress("JOnAS") :
      - name : '<%= jonas.getName() %>'
      - company : '<%= jonas.getCompany() %>'
      - version : '<%= jonas.getVersion() %>'
      -
      - - - getAddresses() length : <%= addresses.length %>
      - <% - for (int i = 0; i < addresses.length; i++) { - out.println("
      "); - %> - - - name[<%= i %>] : '<%= addresses[i].getName() %>'
      - company[<%= i %>] : '<%= addresses[i].getCompany() %>'
      - version[<%= i %>] : '<%= addresses[i].getVersion() %>'
      -
      - <% - } - %> - - -
      - - isPresent("JOnAS-Team") : '<%= presence %>'
      -
      - - - diff --git a/jonas_tests/ws/etc/webapps/portlink/wsdl/AddressBookPort.wsdl b/jonas_tests/ws/etc/webapps/portlink/wsdl/AddressBookPort.wsdl deleted file mode 100644 index 7e7454214f..0000000000 --- a/jonas_tests/ws/etc/webapps/portlink/wsdl/AddressBookPort.wsdl +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/etc/webapps/secured/jonas-webservices.xml b/jonas_tests/ws/etc/webapps/secured/jonas-webservices.xml deleted file mode 100644 index b984fbb197..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/jonas-webservices.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - AddressBookWS - - - AddressBookPort - /addressbook - - file:/tmp/ab-ws-wsdl - - - - AddressBookWS2 - - AddressBookPort2 - /addressbook2 - - file:/tmp/ab-ws-wsdl - - - - - - addressbook - /addressbook - /addressbook2 - - - jonas-admin - - - - - - BASIC - WS Example Authentication Area - - - - - jonas-admin - - - - memrlm_1 - - - WS Example Authentication Area - - diff --git a/jonas_tests/ws/etc/webapps/secured/mapping.xml b/jonas_tests/ws/etc/webapps/secured/mapping.xml deleted file mode 100644 index bed5482c51..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/mapping.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - org.objectweb.jonas.jtests.servlets.endpoint - jonas:AddressBook - - - org.objectweb.jonas.jtests.servlets.endpoint.Address - ab:Address - complexType - - - org.objectweb.jonas.jtests.servlets.endpoint.AddressBookException - ab:AddressBookException - complexType - - diff --git a/jonas_tests/ws/etc/webapps/secured/web.xml b/jonas_tests/ws/etc/webapps/secured/web.xml deleted file mode 100644 index 5b263accd0..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/web.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - AddressBook - org.objectweb.jonas.jtests.servlets.endpoint.AddressBookImpl - - - AddressBook2 - org.objectweb.jonas.jtests.servlets.endpoint.AddressBookImpl - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/secured/webservices.xml b/jonas_tests/ws/etc/webapps/secured/webservices.xml deleted file mode 100644 index 00247b7125..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/webservices.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - AddressBook WebService - - AddressBookWS - WEB-INF/wsdl/AddressBookPort.wsdl - WEB-INF/mapping.xml - - port component description - AddressBookPort - ab:AddressBookPort - org.objectweb.jonas.jtests.servlets.endpoint.AddressBook - - AddressBook - - - - - - AddressBookWS2 - WEB-INF/wsdl/AddressBookPort.wsdl - WEB-INF/mapping.xml - - port component description - AddressBookPort2 - ab:AddressBookPort - org.objectweb.jonas.jtests.servlets.endpoint.AddressBook - - AddressBook2 - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBook.xsd b/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBook.xsd deleted file mode 100644 index 7655a1b00d..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBook.xsd +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBookPort.wsdl b/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBookPort.wsdl deleted file mode 100644 index 1fd027badb..0000000000 --- a/jonas_tests/ws/etc/webapps/secured/wsdl/AddressBookPort.wsdl +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/resources/call-props-empty-j2ee.xml b/jonas_tests/ws/resources/call-props-empty-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/call-props-empty-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/call-props-empty-jonas.xml b/jonas_tests/ws/resources/call-props-empty-jonas.xml deleted file mode 100644 index 3935802390..0000000000 --- a/jonas_tests/ws/resources/call-props-empty-jonas.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/call-props-j2ee.xml b/jonas_tests/ws/resources/call-props-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/call-props-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/call-props-jonas.xml b/jonas_tests/ws/resources/call-props-jonas.xml deleted file mode 100644 index 973b2210f9..0000000000 --- a/jonas_tests/ws/resources/call-props-jonas.xml +++ /dev/null @@ -1,28 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - my.test.property - test.value - - - my.test.property.2 - test.value.2 - - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - other.test.property - test.value - - - other.test.property.2 - test.value.2 - - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/call-props-null-j2ee.xml b/jonas_tests/ws/resources/call-props-null-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/call-props-null-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/call-props-null-jonas.xml b/jonas_tests/ws/resources/call-props-null-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/call-props-null-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/mapping/AxisServiceTest.xml b/jonas_tests/ws/resources/mapping/AxisServiceTest.xml deleted file mode 100644 index 0b1dc6a622..0000000000 --- a/jonas_tests/ws/resources/mapping/AxisServiceTest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - org.objectweb.jonas.jtests.hello - http://hello.simple - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/no-port2wsdl-map-j2ee.xml b/jonas_tests/ws/resources/no-port2wsdl-map-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/no-port2wsdl-map-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/no-port2wsdl-map-jonas.xml b/jonas_tests/ws/resources/no-port2wsdl-map-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/no-port2wsdl-map-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/no-wsdd-specified-j2ee.xml b/jonas_tests/ws/resources/no-wsdd-specified-j2ee.xml deleted file mode 100644 index a15316821d..0000000000 --- a/jonas_tests/ws/resources/no-wsdd-specified-j2ee.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - javax.xml.rpc.Service - \ No newline at end of file diff --git a/jonas_tests/ws/resources/no-wsdd-specified-jonas.xml b/jonas_tests/ws/resources/no-wsdd-specified-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/no-wsdd-specified-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port-name-list-empty-j2ee.xml b/jonas_tests/ws/resources/port-name-list-empty-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/port-name-list-empty-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port-name-list-empty-jonas.xml b/jonas_tests/ws/resources/port-name-list-empty-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/port-name-list-empty-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port-name-list-j2ee.xml b/jonas_tests/ws/resources/port-name-list-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/port-name-list-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port-name-list-jonas.xml b/jonas_tests/ws/resources/port-name-list-jonas.xml deleted file mode 100644 index 973b2210f9..0000000000 --- a/jonas_tests/ws/resources/port-name-list-jonas.xml +++ /dev/null @@ -1,28 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - my.test.property - test.value - - - my.test.property.2 - test.value.2 - - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - other.test.property - test.value - - - other.test.property.2 - test.value.2 - - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port2wsdl-map-j2ee.xml b/jonas_tests/ws/resources/port2wsdl-map-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/port2wsdl-map-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/port2wsdl-map-jonas.xml b/jonas_tests/ws/resources/port2wsdl-map-jonas.xml deleted file mode 100644 index 3935802390..0000000000 --- a/jonas_tests/ws/resources/port2wsdl-map-jonas.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/service-qname-auto-j2ee.xml b/jonas_tests/ws/resources/service-qname-auto-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/service-qname-auto-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/service-qname-auto-jonas.xml b/jonas_tests/ws/resources/service-qname-auto-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/service-qname-auto-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/service-qname-explicit-j2ee.xml b/jonas_tests/ws/resources/service-qname-explicit-j2ee.xml deleted file mode 100644 index a45ccd71dc..0000000000 --- a/jonas_tests/ws/resources/service-qname-explicit-j2ee.xml +++ /dev/null @@ -1,7 +0,0 @@ - - service/Service - javax.xml.rpc.Service - ns:HelloWsService2 - wsdl/twoService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/service-qname-explicit-jonas.xml b/jonas_tests/ws/resources/service-qname-explicit-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/service-qname-explicit-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-empty-j2ee.xml b/jonas_tests/ws/resources/stub-props-empty-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/stub-props-empty-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-empty-jonas.xml b/jonas_tests/ws/resources/stub-props-empty-jonas.xml deleted file mode 100644 index 3935802390..0000000000 --- a/jonas_tests/ws/resources/stub-props-empty-jonas.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-j2ee.xml b/jonas_tests/ws/resources/stub-props-j2ee.xml deleted file mode 100644 index 13d5aecf02..0000000000 --- a/jonas_tests/ws/resources/stub-props-j2ee.xml +++ /dev/null @@ -1,12 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - - org.objectweb.jonas.jtests.hello.HelloWs - - - org.objectweb.jonas.jtests.hello.HelloWs2 - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-jonas.xml b/jonas_tests/ws/resources/stub-props-jonas.xml deleted file mode 100644 index 1c6d91f223..0000000000 --- a/jonas_tests/ws/resources/stub-props-jonas.xml +++ /dev/null @@ -1,28 +0,0 @@ - - service/Service - empty - - org.objectweb.jonas.jtests.hello.HelloWs - ns:HelloPortComponent - - my.test.property - test.value - - - my.test.property.2 - test.value.2 - - - - org.objectweb.jonas.jtests.hello.HelloWs2 - ns:HelloPortComponent2 - - other.test.property - test.value - - - other.test.property.2 - test.value.2 - - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-null-j2ee.xml b/jonas_tests/ws/resources/stub-props-null-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/stub-props-null-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/stub-props-null-jonas.xml b/jonas_tests/ws/resources/stub-props-null-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/stub-props-null-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdd-specified-j2ee.xml b/jonas_tests/ws/resources/wsdd-specified-j2ee.xml deleted file mode 100644 index a15316821d..0000000000 --- a/jonas_tests/ws/resources/wsdd-specified-j2ee.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - javax.xml.rpc.Service - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdd-specified-jonas.xml b/jonas_tests/ws/resources/wsdd-specified-jonas.xml deleted file mode 100644 index 849f4aa042..0000000000 --- a/jonas_tests/ws/resources/wsdd-specified-jonas.xml +++ /dev/null @@ -1,8 +0,0 @@ - - service/Service - empty - - axis.clientConfigFile - wsdd/deploy.wsdd - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdd/deploy.wsdd b/jonas_tests/ws/resources/wsdd/deploy.wsdd deleted file mode 100644 index ee7aaf0103..0000000000 --- a/jonas_tests/ws/resources/wsdd/deploy.wsdd +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdl-url-default-j2ee.xml b/jonas_tests/ws/resources/wsdl-url-default-j2ee.xml deleted file mode 100644 index b5b86d183c..0000000000 --- a/jonas_tests/ws/resources/wsdl-url-default-j2ee.xml +++ /dev/null @@ -1,6 +0,0 @@ - - service/Service - javax.xml.rpc.Service - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdl-url-default-jonas.xml b/jonas_tests/ws/resources/wsdl-url-default-jonas.xml deleted file mode 100644 index b0d6b56e46..0000000000 --- a/jonas_tests/ws/resources/wsdl-url-default-jonas.xml +++ /dev/null @@ -1,4 +0,0 @@ - - service/Service - empty - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdl-url-override-j2ee.xml b/jonas_tests/ws/resources/wsdl-url-override-j2ee.xml deleted file mode 100644 index e24fcc2ece..0000000000 --- a/jonas_tests/ws/resources/wsdl-url-override-j2ee.xml +++ /dev/null @@ -1,7 +0,0 @@ - - service/Service - javax.xml.rpc.Service - ns:HelloWsService - wsdl/oneService.wsdl - mapping/AxisServiceTest.xml - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdl-url-override-jonas.xml b/jonas_tests/ws/resources/wsdl-url-override-jonas.xml deleted file mode 100644 index 1fef22b56b..0000000000 --- a/jonas_tests/ws/resources/wsdl-url-override-jonas.xml +++ /dev/null @@ -1,5 +0,0 @@ - - service/Service - empty - @@RESOURCES_DIR@@/wsdl/twoService.wsdl - \ No newline at end of file diff --git a/jonas_tests/ws/resources/wsdl/oneService.wsdl b/jonas_tests/ws/resources/wsdl/oneService.wsdl deleted file mode 100644 index 1a25c8cdc1..0000000000 --- a/jonas_tests/ws/resources/wsdl/oneService.wsdl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/resources/wsdl/twoService.wsdl b/jonas_tests/ws/resources/wsdl/twoService.wsdl deleted file mode 100644 index 22b459f51b..0000000000 --- a/jonas_tests/ws/resources/wsdl/twoService.wsdl +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/StaticPassValue.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/StaticPassValue.java deleted file mode 100644 index 0701b38bee..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/StaticPassValue.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.appclients.timeclient; - - -/** - * - * - * @author Guillaume Sauthier - */ -public class StaticPassValue { - - private static StaticPassValue instance = null; - private String init = null; - private String request = null; - private String response = null; - /** - * - */ - private StaticPassValue() { - } - - public static StaticPassValue getInstance() { - if (instance == null) { - instance = new StaticPassValue(); - } - return instance; - } - - /** - * @param val - */ - public void setInitValue(String val) { - init = val; - } - - /** - * @param string - */ - public void setRequestValue(String val) { - request = val; - } - - /** - * @return Returns the init. - */ - public String getInit() { - return init; - } - /** - * @return Returns the request. - */ - public String getRequest() { - return request; - } - - /** - * @return Returns the response. - */ - public String getResponse() { - return response; - } - /** - * @param response The response to set. - */ - public void setResponseValue(String response) { - this.response = response; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClient.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClient.java deleted file mode 100644 index 43a6601231..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClient.java +++ /dev/null @@ -1,118 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.appclients.timeclient; - -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.xml.namespace.QName; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; - -/** - * @author Guillaume Sauthier - */ -public class TimeClient { - - /** - * Service Ref Name - */ - private static final String SERVICE_REF_NAME = "java:comp/env/service/time"; - - /** - * InitialContext - */ - private InitialContext ic; - - /** - * - */ - public TimeClient() throws Exception { - init(); - } - - /** - * - */ - private void init() throws NamingException { - ic = new InitialContext(); - } - - public boolean hasBindedService() throws NamingException { - Object o = lookupService(); - if (o != null) { - if (o instanceof Service) { - return true; - } - } - return false; - } - - /* - public boolean isServiceWellConfigured() throws NamingException { - Service s = (Service) lookupService(); - if (s instanceof XXX) { - return true; - } - return false; - } - */ - - private Object lookupService() throws NamingException { - return ic.lookup(SERVICE_REF_NAME); - } - - public static void main(String[] args) throws Exception { - TimeClient tc = new TimeClient(); - - if (!tc.hasBindedService()) { - throw new Exception("TimeClient should have a Service instance binded to '" + SERVICE_REF_NAME + "'"); - } - - tc.handlersInvoked(); - } - - /** - * @return - */ - private boolean handlersInvoked() throws Exception { - Service s = (Service) lookupService(); - Call call = s.createCall(new QName("TimePort"), new QName("jonas:Time", "getDate")); - call.invoke(new Object[] {}); - StaticPassValue spv = StaticPassValue.getInstance(); - String init = spv.getInit(); - String req = spv.getRequest(); - String resp = spv.getResponse(); - if (init == null) { - throw new Exception("Handler.init not invoked"); - } - if (req == null) { - throw new Exception("Handler.handleRequest not invoked"); - } - if (resp == null) { - throw new Exception("Handler.handlerResponse not invoked"); - } - return true; - } -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClientHandler.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClientHandler.java deleted file mode 100644 index fae24ebcff..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/appclients/timeclient/TimeClientHandler.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.appclients.timeclient; - -import javax.xml.namespace.QName; -import javax.xml.rpc.handler.GenericHandler; -import javax.xml.rpc.handler.HandlerInfo; -import javax.xml.rpc.handler.MessageContext; - - - -/** - * - * - * @author Guillaume Sauthier - */ -public class TimeClientHandler extends GenericHandler { - - /* (non-Javadoc) - * @see javax.xml.rpc.handler.Handler#init(javax.xml.rpc.handler.HandlerInfo) - */ - public void init(HandlerInfo hinfo) { - String val = (String) hinfo.getHandlerConfig().get("jonas.test.client.handler"); - StaticPassValue spv = StaticPassValue.getInstance(); - spv.setInitValue(val); - } - - - /* (non-Javadoc) - * @see javax.xml.rpc.handler.Handler#handleRequest(javax.xml.rpc.handler.MessageContext) - */ - public boolean handleRequest(MessageContext mc) { - StaticPassValue spv = StaticPassValue.getInstance(); - spv.setRequestValue("handlerRequest-Invoked"); - return true; - } - - /* (non-Javadoc) - * @see javax.xml.rpc.handler.Handler#handleRequest(javax.xml.rpc.handler.MessageContext) - */ - public boolean handleResponse(MessageContext mc) { - StaticPassValue spv = StaticPassValue.getInstance(); - spv.setResponseValue("handleResponse-Invoked"); - return true; - } - - /* (non-Javadoc) - * @see javax.xml.rpc.handler.Handler#getHeaders() - */ - public QName[] getHeaders() { - return new QName[0]; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessor.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessor.java deleted file mode 100644 index 2a5650fbe7..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessor.java +++ /dev/null @@ -1,14 +0,0 @@ -// BeanAccessor.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * BeanAccessor remote interface - */ -public interface BeanAccessor extends EJBObject { - public boolean localBeanHasMessageContext() throws RemoteException; - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorHome.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorHome.java deleted file mode 100644 index 765e009319..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorHome.java +++ /dev/null @@ -1,15 +0,0 @@ -// BeanAccessorHome.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean BeanAccessor - */ -public interface BeanAccessorHome extends EJBHome { - BeanAccessor create() throws CreateException, RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorSLR.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorSLR.java deleted file mode 100644 index 66c33eabd1..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/BeanAccessorSLR.java +++ /dev/null @@ -1,77 +0,0 @@ -// BeanAccessorSLR.java -// Stateless Session bean - -package org.objectweb.jonas.jtests.beans.mcontext; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.Context; -import javax.naming.InitialContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - - -/** - * - */ -public class BeanAccessorSLR implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // BeanAccessor implementation - // ------------------------------------------------------------------ - - /** - * method1 - */ - public boolean localBeanHasMessageContext() { - logger.log(BasicLevel.DEBUG, ""); - try { - Context ctx = new InitialContext(); - TestMC1LocalHome home = (TestMC1LocalHome) ctx.lookup("TestMC1Home_L"); - TestMC1Local mc1 = home.create(); - return mc1.localMethodHasMessageContext(); - } catch (Exception e) { - logger.log(BasicLevel.WARN, "Something goes wrong"); - } - return true; - } - -} - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Endpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Endpoint.java deleted file mode 100644 index 94e5c1393e..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Endpoint.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.Remote; -import java.rmi.RemoteException; - - -/** - * - * - * @author Guillaume Sauthier - */ -public interface TestMC1Endpoint extends Remote { - public boolean serviceEndpointMethodHasMessageContext() throws RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Local.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Local.java deleted file mode 100644 index b2e2478cfb..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1Local.java +++ /dev/null @@ -1,13 +0,0 @@ -// TestMC1.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import javax.ejb.EJBLocalObject; - -/** - * TestMC1 local interface - */ -public interface TestMC1Local extends EJBLocalObject { - - public boolean localMethodHasMessageContext(); -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1LocalHome.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1LocalHome.java deleted file mode 100644 index 52369584de..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1LocalHome.java +++ /dev/null @@ -1,13 +0,0 @@ -// TestMC1Home.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import javax.ejb.CreateException; -import javax.ejb.EJBLocalHome; - -/** - * Local Home interface for the bean TestMC1 - */ -public interface TestMC1LocalHome extends EJBLocalHome { - TestMC1Local create() throws CreateException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1SLL.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1SLL.java deleted file mode 100644 index e39aceb27a..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC1SLL.java +++ /dev/null @@ -1,83 +0,0 @@ -// TestMC1SLL.java -// Stateless Session bean - -package org.objectweb.jonas.jtests.beans.mcontext; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.xml.rpc.handler.MessageContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - - -/** - * - */ -public class TestMC1SLL implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // TestMC1 implementation - // ------------------------------------------------------------------ - - public boolean serviceEndpointMethodHasMessageContext() { - logger.log(BasicLevel.DEBUG, ""); - return hasMessageContext(); - } - - public boolean localMethodHasMessageContext() { - logger.log(BasicLevel.DEBUG, ""); - return hasMessageContext(); - } - - private boolean hasMessageContext() { - try { - MessageContext mc = ejbContext.getMessageContext(); - if (mc != null) { - return true; - } else { - return false; - } - } catch(IllegalStateException ise) { - return false; - } - } - -} - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2.java deleted file mode 100644 index 4eaf18109a..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2.java +++ /dev/null @@ -1,14 +0,0 @@ -// TestMC2.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; - -/** - * TestMC2 remote interface - */ -public interface TestMC2 extends EJBObject { - public boolean remoteMethodHasMessageContext() throws RemoteException; - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Endpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Endpoint.java deleted file mode 100644 index 6ea2a077e2..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Endpoint.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.Remote; -import java.rmi.RemoteException; - -/** - * @author Guillaume Sauthier - */ -public interface TestMC2Endpoint extends Remote { - - public boolean serviceEndpointMethodHasMessageContext() throws RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Home.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Home.java deleted file mode 100644 index b129d73449..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2Home.java +++ /dev/null @@ -1,15 +0,0 @@ -// TestMC2Home.java - -package org.objectweb.jonas.jtests.beans.mcontext; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean TestMC2 - */ -public interface TestMC2Home extends EJBHome { - TestMC2 create() throws CreateException, RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2SLR.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2SLR.java deleted file mode 100644 index 89685eeb37..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/mcontext/TestMC2SLR.java +++ /dev/null @@ -1,83 +0,0 @@ -// TestMC2SLR.java -// Stateless Session bean - -package org.objectweb.jonas.jtests.beans.mcontext; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.xml.rpc.handler.MessageContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - - -/** - * - */ -public class TestMC2SLR implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // TestMC2 implementation - // ------------------------------------------------------------------ - - public boolean serviceEndpointMethodHasMessageContext() { - logger.log(BasicLevel.DEBUG, ""); - return hasMessageContext(); - } - - public boolean remoteMethodHasMessageContext() { - logger.log(BasicLevel.DEBUG, ""); - return hasMessageContext(); - } - - private boolean hasMessageContext() { - try { - MessageContext mc = ejbContext.getMessageContext(); - if (mc != null) { - return true; - } else { - return false; - } - } catch(IllegalStateException ise) { - return false; - } - } - -} - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/StaticPassValue.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/StaticPassValue.java deleted file mode 100644 index ac61e45c59..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/StaticPassValue.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.beans.time; - - -/** - * - * - * @author Guillaume Sauthier - */ -public class StaticPassValue { - - private static StaticPassValue instance = null; - private String init = null; - private String request = null; - /** - * - */ - private StaticPassValue() { - } - - public static StaticPassValue getInstance() { - if (instance == null) { - instance = new StaticPassValue(); - } - return instance; - } - - /** - * @param val - */ - public void setInitValue(String val) { - init = val; - } - - /** - * @param string - */ - public void setRequestValue(String val) { - request = val; - } - - /** - * @return Returns the init. - */ - public String getInit() { - return init; - } - /** - * @return Returns the request. - */ - public String getRequest() { - return request; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanHandler.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanHandler.java deleted file mode 100644 index 7aa749d2e6..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanHandler.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.beans.time; - -import javax.xml.namespace.QName; -import javax.xml.rpc.handler.GenericHandler; -import javax.xml.rpc.handler.HandlerInfo; -import javax.xml.rpc.handler.MessageContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - - -/** - * - * - * @author Guillaume Sauthier - */ -public class TimeBeanHandler extends GenericHandler { - - private Logger logger = null; - - /** - * The init method to enable the Handler instance to - * initialize itself. - * @param config handler configuration - */ - public void init(HandlerInfo hinfo) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - String val = (String) hinfo.getHandlerConfig().get("jonas.test.server.handler"); - StaticPassValue spv = StaticPassValue.getInstance(); - spv.setInitValue(val); - } - - /** - * The destroy method indicates the end of lifecycle - * for a Handler instance. - */ - public void destroy() { - logger.log(BasicLevel.DEBUG, ""); - } - - /** - * The handleRequest method processes the request - * SOAP message. The default implementation of this method returns - * true. This indicates that the handler chain - * should continue processing of the request SOAP message. - * @param context the message context - * @return true/false - */ - public boolean handleRequest(MessageContext mc) { - logger.log(BasicLevel.DEBUG, ""); - StaticPassValue spv = StaticPassValue.getInstance(); - spv.setRequestValue("handlerRequest-Invoked"); - return true; - } - - /** - * The handleResponse method processes the response - * message. The default implementation of this method returns - * true. This indicates that the handler chain - * should continue processing of the response SOAP message. - * @param context the message context - * @return true/false - */ - public boolean handleResponse(MessageContext context) { - logger.log(BasicLevel.DEBUG, ""); - return true; - } - - /** - * The handleFault method processes the SOAP faults - * based on the SOAP message processing model. The default - * implementation of this method returns true. This - * indicates that the handler chain should continue processing - * of the SOAP fault. - * @param context the message context - * @return true/false - */ - public boolean handleFault(MessageContext context) { - logger.log(BasicLevel.DEBUG, ""); - return true; - } - - /** - * Gets the header blocks processed by this Handler instance. - * - * @return Array of QNames of header blocks processed by this handler instance. - * QName is the qualified name of the outermost element of the Header block. - */ - public QName[] getHeaders() { - logger.log(BasicLevel.DEBUG, ""); - return new QName[0]; - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanSLR.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanSLR.java deleted file mode 100644 index d3f41a201e..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeBeanSLR.java +++ /dev/null @@ -1,77 +0,0 @@ -// TimeBeanSLR.java -// Stateless Session bean - -package org.objectweb.jonas.jtests.beans.time; - -import java.util.Date; - -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; - -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - -/** - * - */ -public class TimeBeanSLR implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // TimeBean implementation - // ------------------------------------------------------------------ - - public long getDateAsLong() { - logger.log(BasicLevel.DEBUG, ""); - return new Date().getTime(); - } - - public Date getDate() { - logger.log(BasicLevel.DEBUG, ""); - return new Date(); - } - - public boolean isHandlerInitRequestInvoked() { - logger.log(BasicLevel.DEBUG, ""); - StaticPassValue spv = StaticPassValue.getInstance(); - String init = spv.getInit(); - String req = spv.getRequest(); - return (init != null && req != null); - } -} - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeEndpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeEndpoint.java deleted file mode 100644 index c335b162c1..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/time/TimeEndpoint.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.beans.time; - -import java.rmi.Remote; -import java.rmi.RemoteException; -import java.util.Date; - - -/** - * TimeBean service-endpoint interface - * Methods exposed a webservices - * - * @author Guillaume Sauthier - */ -public interface TimeEndpoint extends Remote { - long getDateAsLong() throws RemoteException; - Date getDate() throws RemoteException; - boolean isHandlerInitRequestInvoked() throws RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1.java deleted file mode 100644 index 08ca6eb9a9..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1.java +++ /dev/null @@ -1,16 +0,0 @@ -// WsClient1.java - -package org.objectweb.jonas.jtests.beans.wsclient; - -import java.rmi.RemoteException; -import javax.ejb.EJBObject; -import javax.xml.rpc.ServiceException; - -/** - * WsClient1 remote interface - */ -public interface WsClient1 extends EJBObject { - public boolean lookupServiceJNDI() throws RemoteException; - public boolean lookupServiceName() throws RemoteException; - public void getAllServiceNames() throws RemoteException, ServiceException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1Home.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1Home.java deleted file mode 100644 index 5d12b9cd27..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1Home.java +++ /dev/null @@ -1,15 +0,0 @@ -// WsClient1Home.java - -package org.objectweb.jonas.jtests.beans.wsclient; - -import java.rmi.RemoteException; - -import javax.ejb.CreateException; -import javax.ejb.EJBHome; - -/** - * Home interface for the bean WsClient1 - */ -public interface WsClient1Home extends EJBHome { - WsClient1 create() throws CreateException, RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1SLR.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1SLR.java deleted file mode 100644 index 5684d7d7bd..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/beans/wsclient/WsClient1SLR.java +++ /dev/null @@ -1,105 +0,0 @@ -// WsClient1SLR.java -// Stateless Session bean - -package org.objectweb.jonas.jtests.beans.wsclient; - - - -import java.rmi.RemoteException; -import javax.ejb.CreateException; -import javax.ejb.SessionBean; -import javax.ejb.SessionContext; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.xml.namespace.QName; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; -import javax.xml.rpc.ServiceException; -import org.ow2.jonas.lib.util.Log; -import org.objectweb.util.monolog.api.BasicLevel; -import org.objectweb.util.monolog.api.Logger; - - -/** - * - */ -public class WsClient1SLR implements SessionBean { - - static private Logger logger = null; - SessionContext ejbContext; - - Service service; - - // ------------------------------------------------------------------ - // SessionBean implementation - // ------------------------------------------------------------------ - - - public void setSessionContext(SessionContext ctx) { - if (logger == null) { - logger = Log.getLogger("org.objectweb.jonas_tests"); - } - logger.log(BasicLevel.DEBUG, ""); - ejbContext = ctx; - } - - - public void ejbRemove() { - logger.log(BasicLevel.DEBUG, ""); - } - - - public void ejbCreate() throws CreateException { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbPassivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - public void ejbActivate() { - logger.log(BasicLevel.DEBUG, ""); - } - - // ------------------------------------------------------------------ - // WsClient1 implementation - // ------------------------------------------------------------------ - - public boolean lookupServiceJNDI() { - logger.log(BasicLevel.DEBUG, "lookupServiceJNDI"); - service = null; - try { - InitialContext ic = new InitialContext(); - service = (Service) ic.lookup("ws/XMethodsService"); - } catch (NamingException ne) { - logger.log(BasicLevel.ERROR, "looking ws/XMethodsService : " + ne.getMessage()); - return false; - } - return (service != null); - } - - public boolean lookupServiceName() { - logger.log(BasicLevel.DEBUG, "lookupServiceName"); - service = null; - try { - InitialContext ic = new InitialContext(); - service = (Service) ic.lookup("java:comp/env/service/XMethods"); - } catch (NamingException ne) { - logger.log(BasicLevel.ERROR, "looking java:comp/env/service/XMethods : " + ne.getMessage()); - return false; - } - return (service != null); - } - - public void getAllServiceNames() throws ServiceException, RemoteException { - logger.log(BasicLevel.DEBUG, "getAllServiceNames"); - - lookupServiceName(); - Call call = service.createCall(new QName("XMethodsQuerySoap"), - new QName("getAllServiceNames")); - call.invoke(new Object[] {}); - - logger.log(BasicLevel.DEBUG, "Call is OK"); - } -} - diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/C_endpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/C_endpoint.java deleted file mode 100644 index 8cb7ee09bf..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/C_endpoint.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.endpoint; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - - -/** - * - * - * @author Guillaume Sauthier - */ -public class C_endpoint extends JWebServicesTestCase { - - public C_endpoint(String name) { - super(name); - } - - /** - * This suite run WsGen test cases - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_TimeEndpoint.suite()); - return suite; - } - - public static void main (String args[]) { - junit.textui.TestRunner.run(suite()); - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/F_TimeEndpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/F_TimeEndpoint.java deleted file mode 100644 index 7e1ad63734..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/endpoint/F_TimeEndpoint.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.endpoint; - -import java.io.File; -import java.util.Calendar; - -import javax.wsdl.Definition; -import javax.wsdl.Import; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; -import javax.xml.rpc.ServiceFactory; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.ow2.jonas.lib.util.Cmd; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -/** - * @author Guillaume Sauthier - */ -public class F_TimeEndpoint extends JWebServicesTestCase { - - private static final String TIMEPORT_URL = "/time/TimePort/TimePort"; - - /** - * @param s - */ - public F_TimeEndpoint(String s) { - super(s); - } - - public static Test suite() { - return new TestSuite(F_TimeEndpoint.class); - } - - public void setUp() throws Exception { - super.setUp(); - - useEar("time-test"); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - public void testTimeEndpoint() throws Exception { - String port = System.getProperty("http.port"); - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:Time", "TimeBeanService")); - Call call = service.createCall(new QName("TimePort"), new QName("getDate")); - call.setTargetEndpointAddress("http://localhost:" + port + TIMEPORT_URL); - Calendar cal = (Calendar) call.invoke(new Object[] {}); - - assertNotNull("ServiceEndpoint performed succesfully", cal); - } - - public void testTimeEndpointServerHandler() throws Exception { - String port = System.getProperty("http.port"); - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:Time", "TimeBeanService")); - Call call = service.createCall(new QName("TimePort"), new QName("isHandlerInitRequestInvoked")); - call.setTargetEndpointAddress("http://localhost:" + port + TIMEPORT_URL); - Boolean b = (Boolean) call.invoke(new Object[] {}); - - assertTrue("Handler were not invoked successfully", b.booleanValue()); - } - - public void testTimeEndpointFromAppClient() throws Exception { - - String javaHomeBin = System.getProperty("java.home") + File.separator + "bin" + File.separator; - String jonasRoot = System.getProperty("jonas.root"); - String jonasBase = System.getProperty("jonas.base.client"); - - Cmd cmd = new Cmd(javaHomeBin + "java"); - - cmd.addArgument("-Djava.endorsed.dirs=" + jonasRoot + File.separator + "lib" + File.separator + "endorsed"); - - // classpath - cmd.addArgument("-classpath"); - - String jonasBaseConf = jonasBase + File.separator + "conf"; - String clientJarPath = jonasBase + File.separator + "conf" + File.pathSeparator + jonasRoot + File.separator + "lib" - + File.separator + "client.jar"; - String jonasClientJarPath = jonasRoot + File.separator + "lib" + File.separator + "jonas-client.jar"; - cmd.addArgument(jonasBaseConf + File.pathSeparator + clientJarPath + File.pathSeparator + jonasClientJarPath); - cmd.addArgument("org.ow2.jonas.client.ClientContainer"); - // ear - cmd.addArgument(jonasBase + File.separator + "apps" + File.separator + "time-test.ear"); - - if (!cmd.run()) { - fail("Client fail see output for informations"); - } - } - - - public void testTimeEndpointURLPublication() throws Exception { - String port = System.getProperty("http.port"); - - String url = "http://localhost:" + port + TIMEPORT_URL + "?JWSDL"; - WSDLFactory factory = WSDLFactory.newInstance(); - WSDLReader reader = factory.newWSDLReader(); - reader.setFeature("javax.wsdl.importDocuments", true); - Definition def = reader.readWSDL(url); - - Import imp = (Import) def.getImports("jonas:Time").get(0); - assertEquals("wsdl:import[@location] not updated !", url + "&filename=Time.wsdl&context=.", imp.getLocationURI()); - } - -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/C_mbeans.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/C_mbeans.java deleted file mode 100644 index b65f9ebf08..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/C_mbeans.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.mbeans; - -import junit.framework.Test; -import junit.framework.TestSuite; - -public class C_mbeans { - - public C_mbeans() { - super(); - // TODO Auto-generated constructor stub - } - - /** - * This suite run BMP + CMP test cases - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_WebServicesMBeans.suite()); - return suite; - } - - public static void main (String args[]) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/F_WebServicesMBeans.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/F_WebServicesMBeans.java deleted file mode 100644 index caf67b6b1f..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mbeans/F_WebServicesMBeans.java +++ /dev/null @@ -1,296 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2005 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.mbeans; - -import java.util.Properties; - -import javax.management.ObjectName; -import javax.management.j2ee.Management; -import javax.management.j2ee.ManagementHome; -import javax.naming.InitialContext; -import javax.rmi.PortableRemoteObject; -import javax.security.auth.login.LoginContext; -import javax.security.auth.callback.CallbackHandler; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; -import org.ow2.jonas.security.auth.callback.NoInputCallbackHandler; - -/** - * Test WebServices MBeans (WebServices, Service, PortComponent and Handler). - * - * @author Guillaume Sauthier - */ -public class F_WebServicesMBeans extends JWebServicesTestCase { - - /** - * MEJB instance - */ - private Management mejb = null; - - /** - * Service of Time Sample's ObjectName - */ - private static final String SERVICE_MBEAN_ON = "jonas:type=WebService,name=TimeWebService,J2EEServer=jonas,J2EEApplication=time-test,EJBModule=time"; - - /** - * PortComponent of Time Sample's ObjectName - */ - private static final String PC_MBEAN_ON = "jonas:type=WebServicePortComponent,name=TimePort,WebService=TimeWebService,J2EEServer=jonas,EJBModule=time,J2EEApplication=time-test"; - - /** - * Handler of Time Sample's ObjectName - */ - private static final String HANDLER_MBEAN_ON = "jonas:type=WebServiceHandler,name=TimeBeanHandler,WebServicePortComponent=TimePort,EJBModule=time,J2EEServer=jonas,J2EEApplication=time-test,WebService=TimeWebService"; - - /** - * SessionBean realizing the Time Service - */ - private static final String SSB_MBEAN_ON = "jonas:j2eeType=StatelessSessionBean,name=TimeBeanSLR,EJBModule=time,J2EEApplication=time-test,J2EEServer=jonas"; - - // =================== Attributes pre-filling ====================================== - - /** - * Service.portComponents - */ - private static final String[] SERVICE_PCS_ATT = new String[] { PC_MBEAN_ON }; - - /** - * PortComponent.handlers - */ - private static final String[] PC_HANDLERS_ATT = new String[] { HANDLER_MBEAN_ON }; - - /** - * Handler.soapHeaders - */ - private static final String[] SOAP_HEADERS = new String[] { }; - - /** - * Handler.soapRoles - */ - private static final String[] SOAP_ROLES = new String[] { }; - - /** - * Handler.initParams - */ - private static Properties INIT_PARAMS = null; - - /** - * Inner static class used to store tests expected results - * - * @author Guillaume Sauthier - */ - private static class WsTest { - /** - * MBean attribute name - */ - public String name; - - /** - * MBean attribute type - */ - public Class type; - - /** - * Expected result - */ - public Object expected; - - /** - * does the String represents an ObjectName ? - */ - public boolean isObjectName; - - /** - * WsTest Constructor - * @param name att name - * @param type att type - * @param expected att value - */ - public WsTest(String name, Class type, Object expected) { - this(name, type, expected, false); - } - - /** - * WsTest Constructor - * @param name att name - * @param type att type - * @param expected att value - */ - public WsTest(String name, Class type, Object expected, boolean on) { - super(); - this.name = name; - this.type = type; - this.expected = expected; - this.isObjectName = on; - } - } - - /** - * Tests values for Service MBean - */ - private WsTest[] SERVICE_TEST = null; - - /** - * Tests values for PortComponent MBean - */ - private WsTest[] PORT_TEST = null; - - /** - * Tests values for Handler MBean - */ - private WsTest[] HANDLER_TEST = null; - - /** - * Are the tables init ? - */ - private boolean initialized = false; - - /** - * The LoginContext to be used for security. - */ - private LoginContext context; - - public F_WebServicesMBeans(String s) { - super(s); - } - - public static Test suite() { - return new TestSuite(F_WebServicesMBeans.class); - } - - public void setUp() throws Exception { - super.setUp(); - useEar("time-test"); - CallbackHandler handler = new NoInputCallbackHandler("jonas", "jonas"); - context = new LoginContext("test", handler); - context.login(); - - mejb = getMEJB(); - if (!initialized) { - initTestsTables(); - initialized = true; - } - } - - /** - * init tables - */ - private void initTestsTables() { - - INIT_PARAMS = new Properties(); - INIT_PARAMS.put("jonas.test.server.handler", "JOnAS"); - - SERVICE_TEST = new WsTest[] { - new WsTest("name", java.lang.String.class, "TimeWebService"), - new WsTest("portComponents", java.lang.String[].class, SERVICE_PCS_ATT, true), - new WsTest("wsdlURL", java.lang.String.class, getAbsoluteUrl("/time/TimePort/TimePort?JWSDL")), - new WsTest("mappingFilename", java.lang.String.class, "META-INF/mapping.xml"), - new WsTest("wsdlFilename", java.lang.String.class, "META-INF/wsdl/TimePort.wsdl") }; - - PORT_TEST = new WsTest[] { - new WsTest("name", java.lang.String.class, "TimePort"), - new WsTest("handlers", java.lang.String[].class, PC_HANDLERS_ATT, true), - new WsTest("wsdlPort", java.lang.String.class, "{jonas:Time}TimePort"), - new WsTest("serviceEndpointInterface", java.lang.String.class, "org.objectweb.jonas.jtests.beans.time.TimeEndpoint"), - new WsTest("endpoint", java.lang.String.class, getAbsoluteUrl("/time/TimePort/TimePort")), - new WsTest("implementationBean", java.lang.String.class, SSB_MBEAN_ON, true) }; - - HANDLER_TEST = new WsTest[] { - new WsTest("name", java.lang.String.class, "TimeBeanHandler"), - new WsTest("classname", java.lang.String.class, "org.objectweb.jonas.jtests.beans.time.TimeBeanHandler"), - new WsTest("soapHeaders", java.lang.String[].class, SOAP_HEADERS), - new WsTest("soapRoles", java.lang.String[].class, SOAP_ROLES), - new WsTest("initParams", java.util.Properties.class, INIT_PARAMS) }; - - } - - - private Management getMEJB() throws Exception { - InitialContext ic = new InitialContext(); - Object o = ic.lookup("ejb/mgmt/MEJB"); - ManagementHome home = (ManagementHome) PortableRemoteObject.narrow(o, ManagementHome.class); - return home.create(); - } - - public void tearDown() throws Exception { - mejb = null; - context.logout(); - super.tearDown(); - } - - public void testWebServiceMBean() throws Exception { - checkMBean(SERVICE_MBEAN_ON, SERVICE_TEST); - } - - public void testPortComponentMBean() throws Exception { - checkMBean(PC_MBEAN_ON, PORT_TEST); - // check that the implementationBean is live - String se = (String) mejb.getAttribute(new ObjectName(PC_MBEAN_ON), "implementationBean"); - assertTrue("implementationBean MBean must be registered", mejb.isRegistered(new ObjectName(se))); - } - - public void testHandlerMBean() throws Exception { - checkMBean(HANDLER_MBEAN_ON, HANDLER_TEST); - } - - private void checkMBean(String onStr, WsTest[] tests) throws Exception { - ObjectName on = ObjectName.getInstance(onStr); - assertTrue("ObjectName not registered " + on, mejb.isRegistered(on)); - - for (int i = 0; i < tests.length; i++) { - - boolean isObjectName = tests[i].isObjectName; - - Object o = mejb.getAttribute(on, tests[i].name); - assertNotNull("Cannot retrieve attribute '" + tests[i].name - + "' from " + on, o); - assertEquals("Expecting type " + tests[i].type + " for attribute " - + tests[i].name, tests[i].type, o.getClass()); - if (tests[i].type.isArray()) { - Object[] a1 = (Object[]) o; - Object[] a2 = (Object[]) tests[i].expected; - assertEquals("'" + tests[i].name + "' Array size error", a2.length, a1.length); - - for (int j = 0; j < a1.length; j++) { - if (isObjectName) { - assertEquals("'" + tests[i].name + "[" + j + "]' mismatch", new ObjectName((String) a2[j]), new ObjectName((String) a1[j])); - } else { - assertEquals("'" + tests[i].name + "[" + j + "]' mismatch", a2[j], a1[j]); - } - } - } else { - if (isObjectName) { - assertEquals("'" + tests[i].name + "' mismatch", new ObjectName((String) tests[i].expected), new ObjectName((String) o)); - } else { - assertEquals("'" + tests[i].name + "' mismatch", tests[i].expected, o); - } - } - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mcontext/F_MessageContext.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mcontext/F_MessageContext.java deleted file mode 100644 index 9bb28a5ff4..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/mcontext/F_MessageContext.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.mcontext; - -import javax.xml.namespace.QName; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; -import javax.xml.rpc.ServiceFactory; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.beans.mcontext.BeanAccessor; -import org.objectweb.jonas.jtests.beans.mcontext.BeanAccessorHome; -import org.objectweb.jonas.jtests.beans.mcontext.TestMC2; -import org.objectweb.jonas.jtests.beans.mcontext.TestMC2Home; -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -/** - * test case for MessageContext use between web & ejb container - */ -public class F_MessageContext extends JWebServicesTestCase { - - public F_MessageContext(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(F_MessageContext.class); - } - - public void setUp() throws Exception { - super.setUp(); - - useEar("mcontext"); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - - public void testWSCallLocal() throws Exception { - String port = System.getProperty("http.port"); - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:MessageContextTest", - "MessageContextTestService")); - Call call = service.createCall(new QName("LocalMContextPort"), - new QName("serviceEndpointMethodHasMessageContext")); - call.setTargetEndpointAddress("http://localhost:" + port + "/mcontext/MessageContextWS/LocalMContextPort"); - Boolean b = (Boolean) call.invoke(new Object[]{}); - - assertTrue("ServiceEndpoint invokation cannot access the MessageContext", - b.booleanValue()); - } - - public void testWSCallRemote() throws Exception { - String port = System.getProperty("http.port"); - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:MessageContextTest", - "MessageContextTestService")); - Call call = service.createCall(new QName("RemoteMContextPort"), - new QName("serviceEndpointMethodHasMessageContext")); - call.setTargetEndpointAddress("http://localhost:" + port + "/mcontext/MessageContextWS/RemoteMContextPort"); - Boolean b = (Boolean) call.invoke(new Object[]{}); - - assertTrue("ServiceEndpoint invokation cannot access the MessageContext", - b.booleanValue()); - } - - public void testEJBCallLocal() throws Exception { - BeanAccessorHome home = (BeanAccessorHome) ictx.lookup("BeanAccessorHome"); - BeanAccessor accessor = home.create(); - assertFalse("ejb call have access to the MessageContext.", - accessor.localBeanHasMessageContext()); - } - - public void testEJBCallRemote() throws Exception { - Object obj = ictx.lookup("TestMC2Home"); - TestMC2Home home = (TestMC2Home) javax.rmi.PortableRemoteObject.narrow(obj, TestMC2Home.class); - TestMC2 mc2 = home.create(); - assertFalse("ejb call have access to the MessageContext.", - mc2.remoteMethodHasMessageContext()); - } - - public static void main (String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - Integer i_arg; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_MessageContext(testtorun)); - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/A_ServiceUsage.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/A_ServiceUsage.java deleted file mode 100644 index ae8fb49ac3..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/A_ServiceUsage.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.service; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -/** - * abstract test case for web service usage (client side) - */ -public abstract class A_ServiceUsage extends JWebServicesTestCase { - - public A_ServiceUsage(String name) { - super(name); - } - - public void setUp() throws Exception { - super.setUp(); - useBeans("wsclient"); - } - - public void tearDown() throws Exception { - super.tearDown(); - unUseBeans("wsclient"); - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/C_service.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/C_service.java deleted file mode 100644 index 51978a54a0..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/C_service.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.service; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -public class C_service extends JWebServicesTestCase { - - public C_service(String name) { - super(name); - } - - /** - * This suite run BMP + CMP test cases - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_AxisService.suite()); - return suite; - } - - public static void main (String args[]) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AgnosticServiceUsage.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AgnosticServiceUsage.java deleted file mode 100644 index 1fb7201748..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AgnosticServiceUsage.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.service; - -import javax.rmi.PortableRemoteObject; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.beans.wsclient.WsClient1; -import org.objectweb.jonas.jtests.beans.wsclient.WsClient1Home; - -/** - * test case for web service usage (client side) - */ -public class F_AgnosticServiceUsage extends A_ServiceUsage { - - protected static final String BEAN_HOME = "WsClient1Home"; - protected WsClient1Home home = null; - - public F_AgnosticServiceUsage(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(F_AgnosticServiceUsage.class); - } - - public void setUp() throws Exception { - super.setUp(); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - protected WsClient1Home getHome() throws Exception { - if (home == null) { - home = (WsClient1Home) PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME),WsClient1Home.class) ; - } - assertTrue(home != null); - return home; - } - - public void testJNDILookupWithJNDIName() throws Exception { - WsClient1 wsc = getHome().create(); - assertFalse("lookup with jndi name must fail", wsc.lookupServiceJNDI()); - wsc.remove(); - } - - public void testJNDILookupWithServiceRefName() throws Exception { - WsClient1 wsc = getHome().create(); - assertTrue("lookup with service-ref-name fail", wsc.lookupServiceName()); - wsc.remove(); - } - - public static void main (String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_AgnosticServiceUsage(testtorun)); - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AxisService.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AxisService.java deleted file mode 100644 index f50844a982..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_AxisService.java +++ /dev/null @@ -1,408 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.service; - -import java.io.BufferedReader; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import javax.naming.RefAddr; -import javax.naming.Reference; -import javax.naming.StringRefAddr; -import javax.xml.namespace.QName; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.custommonkey.xmlunit.Diff; -import org.custommonkey.xmlunit.XMLAssert; -import org.custommonkey.xmlunit.XMLUnit; -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; -import org.ow2.jonas.deployment.common.digester.JDigester; -import org.ow2.jonas.deployment.common.rules.JonasServiceRefRuleSet; -import org.ow2.jonas.deployment.common.rules.ServiceRefRuleSet; -import org.ow2.jonas.deployment.ws.ServiceRefDesc; -import org.ow2.jonas.lib.util.JNDIUtils; -import org.ow2.jonas.ws.axis.JAxisServiceFactory; -import org.ow2.jonas.ws.jaxrpc.factory.JServiceFactory; - -/** - * test case for axis service instanciation - */ -public class F_AxisService extends JWebServicesTestCase { - private String resources = null; - - private JServiceFactory jfactory = null; - - public F_AxisService(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(F_AxisService.class); - } - - public void setUp() throws Exception { - super.setUp(); - resources = System.getProperty("ws.resources"); - jfactory = new JAxisServiceFactory(); - } - - public void tearDown() throws Exception { - jfactory = null; - super.tearDown(); - } - - public void testClientWSDDDefaultWhenWSDDNotSpecified() throws Exception { - String expected = "\n" - + "\n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + "\n"; - Reference ref = createServiceReference("no-wsdd-specified-j2ee.xml", - "no-wsdd-specified-jonas.xml"); - assertNotNull("Shouldn't have a wsdd", ref.get(JAxisServiceFactory.REF_CLIENT_CONFIG)); - - String returned = (String) ref.get(JAxisServiceFactory.REF_CLIENT_CONFIG).getContent(); - XMLUnit.setIgnoreWhitespace(true); - Diff diff = XMLUnit.compareXML(expected, returned); - XMLAssert.assertXMLEqual("WSDD are not equivalent", diff, true); - } - - public void testClientWSDDMergingWhenWSDDSpecified() throws Exception { - String expected = "\n" - + "\n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" + "\n"; - Reference ref = createServiceReference("wsdd-specified-j2ee.xml", - "wsdd-specified-jonas.xml"); - - String returned = (String) ref.get(JAxisServiceFactory.REF_CLIENT_CONFIG).getContent(); - XMLUnit.setIgnoreWhitespace(true); - Diff diff = XMLUnit.compareXML(expected, returned); - XMLAssert.assertXMLEqual("WSDD are not equivalent", diff, true); - } - - public void testWSDLUrlWithNoWSDLOverride() throws Exception { - Reference ref = createServiceReference("wsdl-url-default-j2ee.xml", - "wsdl-url-default-jonas.xml"); - URL urlMatching = new File(new File(resources, "wsdl"), "oneService.wsdl").toURL(); - assertEquals("WSDL URL is not set appropriately", - urlMatching.toString(), - ref.get(JAxisServiceFactory.REF_SERVICE_WSDL).getContent()); - } - - public void testWSDLUrlWithWSDLOverride() throws Exception { - Reference ref = createServiceReference("wsdl-url-override-j2ee.xml", - "wsdl-url-override-jonas.xml"); - // create matching URL - URL urlMatching = new File(new File(resources, "wsdl"), "twoService.wsdl").toURL(); - assertEquals( - "WSDL URL is not set appropriately", - urlMatching.toString(), - ref.get(JAxisServiceFactory.REF_SERVICE_WSDL).getContent()); - } - - public void testServiceQNameWhenNotSpecified() throws Exception { - Reference ref = createServiceReference("service-qname-auto-j2ee.xml", - "service-qname-auto-jonas.xml"); - QName exp = new QName("http://hello.simple", "HelloWsService"); - QName auto = (QName) JNDIUtils.getObjectFromBytes((byte[]) ref.get( - JAxisServiceFactory.REF_SERVICE_QNAME).getContent()); - assertEquals("Service QName is incorrect", exp, auto); - } - - public void testServiceQNameWhenExplicitelySet() throws Exception { - Reference ref = createServiceReference( - "service-qname-explicit-j2ee.xml", - "service-qname-explicit-jonas.xml"); - QName exp = new QName("http://hello.simple", "HelloWsService2"); - QName auto = (QName) JNDIUtils.getObjectFromBytes((byte[]) ref.get( - JAxisServiceFactory.REF_SERVICE_QNAME).getContent()); - assertEquals("Service QName is incorrect", exp, auto); - } - - public void testPort2WSDLMapWhenNoPortComponentRefSpecified() - throws Exception { - Reference ref = createServiceReference("no-port2wsdl-map-j2ee.xml", - "no-port2wsdl-map-jonas.xml"); - assertNull("Shouldn't have a Port2WSDL Map", ref - .get(JAxisServiceFactory.REF_SERVICE_PORT2WSDL)); - } - - public void testPort2WSDLMapWithMultiplePortComponent() throws Exception { - Reference ref = createServiceReference("port2wsdl-map-j2ee.xml", - "port2wsdl-map-jonas.xml"); - Map exp = new HashMap(); - exp.put("org.objectweb.jonas.jtests.hello.HelloWs", new QName( - "http://hello.simple", "HelloPortComponent")); - exp.put("org.objectweb.jonas.jtests.hello.HelloWs2", new QName( - "http://hello.simple", "HelloPortComponent2")); - Map returned = (Map) JNDIUtils.getObjectFromBytes((byte[]) ref.get( - JAxisServiceFactory.REF_SERVICE_PORT2WSDL).getContent()); - assertEquals("Map are not identical", exp, returned); - } - - public void testStubPropertiesNull() throws Exception { - Reference ref = createServiceReference("stub-props-null-j2ee.xml", - "stub-props-null-jonas.xml"); - assertNull("Stub properties should be null", ref - .get(JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent")); - } - - public void testStubPropertiesEmpty() throws Exception { - Reference ref = createServiceReference("stub-props-empty-j2ee.xml", - "stub-props-empty-jonas.xml"); - RefAddr ra = ref.get(JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent"); - assertNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent" + " must be null", ra); - RefAddr ra2 = ref.get(JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent2"); - assertNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent2" + " must be null", ra2); - } - - public void testStubPropertiesForGivenPortName() throws Exception { - Reference ref = createServiceReference("stub-props-j2ee.xml", - "stub-props-jonas.xml"); - // port #1 - RefAddr ra = ref.get(JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent"); - assertNotNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent" + " must be not null", ra); - Map returned = (Map) JNDIUtils.getObjectFromBytes((byte[]) ra - .getContent()); - assertFalse("Stub properties shouldn't be empty", returned.isEmpty()); - Properties exp = new Properties(); - exp.setProperty("my.test.property", "test.value"); - exp.setProperty("my.test.property.2", "test.value.2"); - assertEquals( - "Stub Properties for port 'HelloPortComponent' not identical", - exp, returned); - // port #2 - RefAddr ra2 = ref.get(JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent2"); - assertNotNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_STUB_PROPS - + "_HelloPortComponent2" + " must be not null", ra2); - Map returned2 = (Map) JNDIUtils.getObjectFromBytes((byte[]) ra2 - .getContent()); - assertFalse("Stub properties shouldn't be empty", returned2.isEmpty()); - Properties exp2 = new Properties(); - exp2.setProperty("other.test.property", "test.value"); - exp2.setProperty("other.test.property.2", "test.value.2"); - assertEquals( - "Stub Properties for port 'HelloPortComponent' not identical", - exp2, returned2); - } - - public void testCallPropertiesNull() throws Exception { - Reference ref = createServiceReference("call-props-null-j2ee.xml", - "call-props-null-jonas.xml"); - assertNull("Call properties should be null", ref - .get(JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent")); - } - - public void testCallPropertiesEmpty() throws Exception { - Reference ref = createServiceReference("call-props-empty-j2ee.xml", - "call-props-empty-jonas.xml"); - RefAddr ra = ref.get(JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent"); - assertNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent" + " must be null", ra); - RefAddr ra2 = ref.get(JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent2"); - assertNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent2" + " must be null", ra2); - } - - public void testCallPropertiesForGivenPortName() throws Exception { - Reference ref = createServiceReference("call-props-j2ee.xml", - "call-props-jonas.xml"); - // port #1 - RefAddr ra = ref.get(JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent"); - assertNotNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent" + " must be not null", ra); - Map returned = (Map) JNDIUtils.getObjectFromBytes((byte[]) ra - .getContent()); - assertFalse("Stub properties shouldn't be empty", returned.isEmpty()); - Properties exp = new Properties(); - exp.setProperty("my.test.property", "test.value"); - exp.setProperty("my.test.property.2", "test.value.2"); - assertEquals( - "Stub Properties for port 'HelloPortComponent' not identical", - exp, returned); - // port #2 - RefAddr ra2 = ref.get(JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent2"); - assertNotNull("RefAddr " + JAxisServiceFactory.REF_SERVICE_CALL_PROPS - + "_HelloPortComponent2" + " must be not null", ra2); - Map returned2 = (Map) JNDIUtils.getObjectFromBytes((byte[]) ra2 - .getContent()); - assertFalse("Call properties shouldn't be empty", returned2.isEmpty()); - Properties exp2 = new Properties(); - exp2.setProperty("other.test.property", "test.value"); - exp2.setProperty("other.test.property.2", "test.value.2"); - assertEquals( - "Call Properties for port 'HelloPortComponent' not identical", - exp2, returned2); - } - - public void testPortNameListEmpty() throws Exception { - Reference ref = createServiceReference("port-name-list-empty-j2ee.xml", - "port-name-list-empty-jonas.xml"); - assertNull(JAxisServiceFactory.REF_SERVICE_WSDL_PORT_LIST - + " should be null", ref - .get(JAxisServiceFactory.REF_SERVICE_WSDL_PORT_LIST)); - } - - public void testPortNameListWithMultiplePortComponent() throws Exception { - Reference ref = createServiceReference("port-name-list-j2ee.xml", - "port-name-list-jonas.xml"); - RefAddr ra = ref.get(JAxisServiceFactory.REF_SERVICE_WSDL_PORT_LIST); - assertNotNull(JAxisServiceFactory.REF_SERVICE_WSDL_PORT_LIST - + " shouldn't be null", ra); - assertEquals("portname list incorrect", - "HelloPortComponent,HelloPortComponent2", ra.getContent()); - } - - private Reference createServiceReference(String standard, String specific) - throws Exception { - // Get a ServiceRef for the test - ServiceRefDesc sr = createServiceRefDesc(standard, specific); - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - return jfactory.getServiceReference(sr, cl); - } - - public void testGetObjectInstance() throws Exception { - String cfg = "" - + "" - + "" - + "" - + "" - + ""; - Reference ref = new Reference( - "org.objectweb.jonas.jtests.hello.HelloWsServiceLocator", - jfactory.getClass().getName(), null); - ref.add(new StringRefAddr(JAxisServiceFactory.REF_CLIENT_CONFIG, cfg)); - try { - jfactory.getObjectInstance(ref, null, null, null); - } catch (Exception e) { - fail("JAxisServiceFactory.getObjectInstance has failed " + e); - } - // cannot success when using Proxies - } - - private ServiceRefDesc createServiceRefDesc(String srFilename, - String jsrFilename) throws Exception { - // Get Context ClassLoader - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - ServiceRefTLE srTopLevel = new ServiceRefTLE(); - // Load ServiceRef Object - //----------------------------- - // Create Digester - JDigester serviceRefDigester = new JDigester(new ServiceRefRuleSet(""), - false, true, null, null); - // Get Reader - Reader r = new InputStreamReader(cl.getResourceAsStream(srFilename)); - // Parse - serviceRefDigester.parse(r, srFilename, srTopLevel); - // Load JonasServiceRef Object - //----------------------------- - // Create Digester - JDigester jonasServiceRefDigester = new JDigester( - new JonasServiceRefRuleSet(""), false, true, null, null); - - // Read xml file and modify path containing RESOURCES_DIR - InputStream contentIs = cl.getResourceAsStream(jsrFilename); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(contentIs)); - StringWriter stringWriter = new StringWriter(); - String line = null; - while (((line = bufferedReader.readLine()) != null)) { - if (line.indexOf("@@RESOURCES_DIR@@") != -1) { - line = line.replaceAll("@@RESOURCES_DIR@@", "file://" + resources); - } - stringWriter.write(line); - } - - - - // Get Reader - r = new StringReader(stringWriter.toString()); - bufferedReader.close(); - stringWriter.close(); - // Parse - jonasServiceRefDigester.parse(r, jsrFilename, srTopLevel); - ServiceRefDesc sr = new ServiceRefDesc(cl, srTopLevel.getServiceRef(), - srTopLevel.getJonasServiceRef(), resources); - - return sr; - } - - public static void main(String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_AxisService(testtorun)); - } - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_PortComponentLink.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_PortComponentLink.java deleted file mode 100644 index 657d6bd424..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/F_PortComponentLink.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.service; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import com.meterware.httpunit.*; - -/** - * test case for port component link (service-ref on a colocated webservices instance) - * Client doesn't know the ws location in advance. - */ -public class F_PortComponentLink extends JWebServicesTestCase { - - protected static final String CONTEXT = "/portlink/"; - - public F_PortComponentLink(String name) { - super(name, CONTEXT); - } - - public static Test suite() { - return new TestSuite(F_PortComponentLink.class); - } - - public void setUp() throws Exception { - super.setUp(); - useEar("port-component-link"); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - public void testConfiguration() throws Exception { - WebResponse wr = wc.getResponse(url + "index.jsp"); - - // check endpoint URL - WebLink loc = wr.getLinkWithID("location"); - assertNotNull(loc); - String link = loc.asText(); - String url = "http://localhost:" - + System.getProperty("http.port") - + "/endpoint/addressbook"; - int index = link.indexOf(url); - System.out.println("expected URL :" + url); - System.out.println("current URL :" + link); - assertTrue("endpoint not updated", -1 != index); - - // check Stub creation - WebLink stub = wr.getLinkWithID("stub"); - assertNotNull("no stub", stub); - link = stub.asText(); - index = link.indexOf("'true'"); - assertTrue("stub not returned", -1 != index); - - } - - public void testResults() throws Exception { - WebResponse wr = wc.getResponse(url + "index.jsp"); - - // check return type - WebLink type = wr.getLinkWithID("classname"); - assertNotNull(type); - String link = type.asText(); - int index = link.indexOf("org.objectweb.jonas.jtests.servlets.portlink.Address"); - assertTrue("bad return type", -1 != index); - - // check getAddress return - WebLink get = wr.getLinkWithID("get"); - assertNotNull(get); - link = get.asText(); - index = link.indexOf("name : 'JOnAS'"); - assertTrue("bad name returned", -1 != index); - index = link.indexOf("company : 'ObjectWeb Consortium'"); - assertTrue("bad company returned", -1 != index); - index = link.indexOf("version : '4.0'"); - assertTrue("bad version returned", -1 != index); - - // check getAddresses return - WebLink getAll = wr.getLinkWithID("getAll"); - assertNotNull(getAll); - link = getAll.asText(); - index = link.indexOf("getAddresses() length : 2"); - assertTrue("bad length", -1 != index); - - // check isPresent return - WebLink pres = wr.getLinkWithID("present"); - assertNotNull(pres); - link = pres.asText(); - index = link.indexOf("isPresent(\"JOnAS-Team\") : 'true'"); - assertTrue("JOnAS Team not found", -1 != index); - - } - - public static void main (String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_PortComponentLink(testtorun)); - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/ServiceRefTLE.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/ServiceRefTLE.java deleted file mode 100644 index 400f4b755e..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/service/ServiceRefTLE.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.objectweb.jonas.jtests.clients.service; - -import org.ow2.jonas.deployment.common.xml.TopLevelElement; -import org.ow2.jonas.deployment.common.xml.ServiceRef; -import org.ow2.jonas.deployment.common.xml.JonasServiceRef; - -public class ServiceRefTLE implements TopLevelElement { - - private ServiceRef sr = null; - private JonasServiceRef jsr = null; - - public void addServiceRef(ServiceRef sr) { - this.sr = sr; - } - - public void addJonasServiceRef(JonasServiceRef jsr) { - this.jsr = jsr; - } - - public ServiceRef getServiceRef() { - return sr; - } - - public JonasServiceRef getJonasServiceRef() { - return jsr; - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/A_WsGen.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/A_WsGen.java deleted file mode 100644 index 35937ae838..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/A_WsGen.java +++ /dev/null @@ -1,123 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.wsgen; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.jar.JarFile; -import java.util.zip.ZipEntry; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -public abstract class A_WsGen extends JWebServicesTestCase { - private String jonasbase = null; - private String resources = null; - private String basedir = null; - - public A_WsGen(String name) { - super(name); - } - - public void setUp() throws Exception { - super.setUp(); - - jonasbase = System.getProperty("jonas.base.client"); - resources = System.getProperty("ws.resources"); - basedir = System.getProperty("basedir"); - - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - protected String getJonasBaseFile(String path) { - return jonasbase + File.separator + path; - } - - protected String getResourceFile(String path) { - return resources + File.separator + path; - } - - protected String getTestFile(String path) { - return basedir + File.separator + path; - } - - protected static boolean deleteDirectory(String dir) throws IOException { - File file = new File(dir); - boolean isDestroy = true; - if (file.isDirectory()) { - // destroy all childs - File[] childs = file.listFiles(); - for (int i = 0; i < childs.length; i++) { - isDestroy &= deleteDirectory(childs[i].getAbsolutePath()); - } - } - return isDestroy && file.delete(); - - } - - protected static String unpackJar(JarFile file) throws IOException { - String tmp = createTempDir(); - - for (Enumeration e = file.entries(); e.hasMoreElements();) { - ZipEntry ze = (ZipEntry) e.nextElement(); - - // If is not a directory - if (!ze.getName().endsWith("/")) { - String newFilename = tmp + File.separator + ze.getName(); - File entryFile = new File(newFilename); - - entryFile.getParentFile().mkdirs(); - FileOutputStream fos = new FileOutputStream(entryFile); - InputStream is = file.getInputStream(ze); - - int n = 0; - byte[] buffer = new byte[1024]; - - while ((n = is.read(buffer)) > 0) { - fos.write(buffer, 0, n); - } - - fos.close(); - is.close(); - } - } - - return tmp; - } - - protected static String createTempDir() throws IOException { - File tmpDir = File.createTempFile("wsgen-tests", null, null); - tmpDir.delete(); - tmpDir.mkdir(); - return tmpDir.getAbsolutePath(); - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/C_wsgen.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/C_wsgen.java deleted file mode 100644 index cf0628e060..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/C_wsgen.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.wsgen; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -public class C_wsgen extends JWebServicesTestCase { - - public C_wsgen(String name) { - super(name); - } - - /** - * This suite run WsGen test cases - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_WsGen.suite()); - return suite; - } - - public static void main (String args[]) { - junit.textui.TestRunner.run(suite()); - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_Generate.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_Generate.java deleted file mode 100644 index 1685da3d4a..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_Generate.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.wsgen; - -import junit.framework.Test; -import junit.framework.TestSuite; - - -/** - * test case for WsGen - */ -public class F_Generate extends A_WsGen { - - public F_Generate(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(F_Generate.class); - } - - public void setUp() throws Exception { - super.setUp(); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - public void testWebappEndpointAlone() throws Exception { - // TODO use Cmd to test WsGen call - //String[] args = new String[] {"-help"}; - //WsGen.main(args); - } - - public void testWsClientEjb() throws Exception { - // TODO use Cmd to test WsGen call - //String[] args = new String[] {"-help"}; - //WsGen.main(args); - } - - public void testTimeEndpoint() throws Exception { - // TODO use Cmd to test WsGen call - //String[] args = new String[] {"-help"}; - //WsGen.main(args); - } - - public static void main (String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_Generate(testtorun)); - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_WsGen.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_WsGen.java deleted file mode 100644 index 31bb364f17..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wsgen/F_WsGen.java +++ /dev/null @@ -1,177 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.clients.wsgen; - -import java.io.File; -import java.util.Enumeration; -import java.util.jar.JarFile; -import java.util.zip.ZipEntry; - -import junit.framework.Test; -import junit.framework.TestSuite; - - -/** - * test case for WsGen - */ -public class F_WsGen extends A_WsGen { - - public F_WsGen(String name) { - super(name); - } - - public static Test suite() { - return new TestSuite(F_WsGen.class); - } - - public void setUp() throws Exception { - super.setUp(); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - /* - * Tests : - * - webapps (endpoint, clients, both, none) (various Schemas, DTD) - * - ejbjars (endpoint, clients, both, none) (various Schemas, DTD) - * - apps (combine above examples) + () - */ - - public void testWebappEndpointAlone() throws Exception { - - // Check entries in JarFile - String [] entries = new String[] { "META-INF/MANIFEST.MF", - "WEB-INF/wsdl/AddressBookPort.wsdl", - "WEB-INF/wsdl/AddressBook.xsd", - "WEB-INF/web.xml", - "WEB-INF/webservices.xml", - "WEB-INF/jonas-webservices.xml", - "WEB-INF/mapping.xml", - "WEB-INF/classes/org/objectweb/jonas/jtests/servlets/endpoint/Address.class", - "WEB-INF/classes/org/objectweb/jonas/jtests/servlets/endpoint/AddressBook.class", - "WEB-INF/classes/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookImpl.class", - "WEB-INF/classes/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookException.class"}; - - JarFile alone = new JarFile(getJonasBaseFile("webapps" + File.separator + "webendpoint.war")); - - checkEntries(entries, alone); - - assertEquals("entries number doesn't match", entries.length, countEntries(alone)); - - } - - public void testWsClientEjb() throws Exception { - - // Check entries in JarFile - String path = "org/objectweb/jonas/jtests/beans/wsclient/"; - String [] entries = new String[] { "META-INF/MANIFEST.MF", - "META-INF/jonas-ejb-jar.xml", - "META-INF/ejb-jar.xml", - "META-INF/wsdl/query.wsdl"}; - - JarFile wsclient = new JarFile(getJonasBaseFile("ejbjars" + File.separator + "wsclient.jar")); - - checkEntries(entries, wsclient); - - } - - public void testTimeEndpoint() throws Exception { - // Check entries in JarFile (Wrapping Application) - String [] entries = new String[] { "META-INF/application.xml", - "META-INF/MANIFEST.MF", - "time.war", - "time.jar", - "time-client.jar"}; - - JarFile time = new JarFile(getJonasBaseFile("apps" + File.separator + "time-test.ear")); - - checkEntries(entries, time); - - assertEquals("entries number doesn't match", 5, countEntries(time)); - - // Check entries in JarFile (Wrapped WebApp) - String tmp = unpackJar(time); - - // Check war correctly created - JarFile web = new JarFile(tmp + File.separator - + "time.war"); - String [] webEntries = new String[] { "META-INF/MANIFEST.MF", - "WEB-INF/web.xml", - "WEB-INF/web-jetty.xml", - "META-INF/context.xml", - "WEB-INF/sources/deploy-server-0.wsdd", - "WEB-INF/deploy-server-0.wsdd"}; - - // TODO should improve entries check : deploy-server-0 may be deploy-server-25 !! - //checkEntries(webEntries, web); - assertEquals("web entries number doesn't match", webEntries.length, countEntries(web)); - - deleteDirectory(tmp); - - } - - public void checkEntries(String [] entries, JarFile file) { - - for (int i = 0; i < entries.length; i++) { - ZipEntry ze = file.getEntry(entries[i]); - assertNotNull("missing entry '" + entries[i] + "' in '" + file.getName() + "'", ze); - } - } - - public int countEntries(JarFile file) { - Enumeration e = file.entries(); - int count = 0; - while (e.hasMoreElements()) { - ZipEntry ze = (ZipEntry) e.nextElement(); - // not a directory - if (!ze.getName().endsWith("/")) { - count++; - } - - } - return count; - } - - - public static void main (String args[]) { - String testtorun = null; - // Get args - for (int argn = 0; argn < args.length; argn++) { - String s_arg = args[argn]; - if (s_arg.equals("-n")) { - testtorun = args[++argn]; - } - } - if (testtorun == null) { - junit.textui.TestRunner.run(suite()); - } else { - junit.textui.TestRunner.run(new F_WsGen(testtorun)); - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/C_wssecured.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/C_wssecured.java deleted file mode 100644 index 531e28d44a..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/C_wssecured.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.wssecured; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - - -/** - * - * - * @author Guillaume Sauthier - */ -public class C_wssecured extends JWebServicesTestCase { - - public C_wssecured(String name) { - super(name); - } - - /** - * This suite run WsGen test cases - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(F_WsSecuredMultipleEndpoint.suite()); - return suite; - } - - public static void main (String args[]) { - junit.textui.TestRunner.run(suite()); - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/F_WsSecuredMultipleEndpoint.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/F_WsSecuredMultipleEndpoint.java deleted file mode 100644 index cd072d5b9c..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/clients/wssecured/F_WsSecuredMultipleEndpoint.java +++ /dev/null @@ -1,131 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 2006 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ -package org.objectweb.jonas.jtests.clients.wssecured; - -import java.rmi.RemoteException; - -import javax.xml.namespace.QName; -import javax.xml.rpc.Call; -import javax.xml.rpc.Service; -import javax.xml.rpc.ServiceFactory; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.objectweb.jonas.jtests.util.JWebServicesTestCase; - -/** - * Test secured endpoints. - * @author Guillaume Sauthier - */ -public class F_WsSecuredMultipleEndpoint extends JWebServicesTestCase { - - /** - * First proectedt endpoint. - */ - private static final String ADDRESSBOOK_URL = "/ws-secured/addressbook"; - - /** - * Seconf protected endpoint. - */ - private static final String ADDRESSBOOK2_URL = "/ws-secured/addressbook2"; - - /** - * HTTP port to use (default to 9000). - */ - private String port = "9000"; - - /** - * @param s - */ - public F_WsSecuredMultipleEndpoint(String s) { - super(s); - } - - public static Test suite() { - return new TestSuite(F_WsSecuredMultipleEndpoint.class); - } - - public void setUp() throws Exception { - super.setUp(); - port = System.getProperty("http.port"); - useWar("ws-secured"); - } - - public void tearDown() throws Exception { - super.tearDown(); - } - - public void testAuthorizedAddressBookEndpoint1() throws Exception { - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:AddressBook", "AddressBookService")); - Call call = service.createCall(new QName("AddressBookPort"), new QName("isPresent")); - call.setTargetEndpointAddress("http://localhost:" + port + ADDRESSBOOK_URL); - call.setProperty(Call.USERNAME_PROPERTY, "jonas"); - call.setProperty(Call.PASSWORD_PROPERTY, "jonas"); - Boolean present = (Boolean) call.invoke(new Object[] {"JOnAS"}); - - assertNotNull("ServiceEndpoint performed succesfully", present); - } - - public void testUnauthorizedAddressBookEndpoint1() throws Exception { - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:AddressBook", "AddressBookService")); - Call call = service.createCall(new QName("AddressBookPort"), new QName("isPresent")); - call.setTargetEndpointAddress("http://localhost:" + port + ADDRESSBOOK_URL); - try { - call.invoke(new Object[] {"JOnAS"}); - fail("AddressBookService was not URL protected !"); - } catch (RemoteException re) { - // expected Exception - } - } - - public void testAuthorizedAddressBookEndpoint2() throws Exception { - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:AddressBook", "AddressBookService")); - Call call = service.createCall(new QName("AddressBookPort"), new QName("isPresent")); - call.setTargetEndpointAddress("http://localhost:" + port + ADDRESSBOOK2_URL); - call.setProperty(Call.USERNAME_PROPERTY, "jonas"); - call.setProperty(Call.PASSWORD_PROPERTY, "jonas"); - Boolean present = (Boolean) call.invoke(new Object[] {"JOnAS"}); - - assertNotNull("ServiceEndpoint performed succesfully", present); - } - - public void testUnauthorizedAddressBookEndpoint2() throws Exception { - - Service service = ServiceFactory.newInstance().createService(new QName("jonas:AddressBook", "AddressBookService")); - Call call = service.createCall(new QName("AddressBookPort"), new QName("isPresent")); - call.setTargetEndpointAddress("http://localhost:" + port + ADDRESSBOOK2_URL); - try { - call.invoke(new Object[] {"JOnAS"}); - fail("AddressBookService was not URL protected !"); - } catch (RemoteException re) { - // expected Exception - } - } - -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/IDNamePair.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/IDNamePair.java deleted file mode 100644 index 214783862c..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/IDNamePair.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * IDNamePair.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2beta Mar 31, 2004 (12:47:03 EST) WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.gen.xmethods; - -public class IDNamePair implements java.io.Serializable { - private java.lang.String id; - private java.lang.String name; - - public IDNamePair() { - } - - - /** - * Gets the id value for this IDNamePair. - * - * @return id - */ - public java.lang.String getId() { - return id; - } - - - /** - * Sets the id value for this IDNamePair. - * - * @param id - */ - public void setId(java.lang.String id) { - this.id = id; - } - - - /** - * Gets the name value for this IDNamePair. - * - * @return name - */ - public java.lang.String getName() { - return name; - } - - - /** - * Sets the name value for this IDNamePair. - * - * @param name - */ - public void setName(java.lang.String name) { - this.name = name; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceDetail.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceDetail.java deleted file mode 100644 index 5eece3018f..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceDetail.java +++ /dev/null @@ -1,287 +0,0 @@ -/** - * ServiceDetail.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2beta Mar 31, 2004 (12:47:03 EST) WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.gen.xmethods; - -public class ServiceDetail implements java.io.Serializable { - private java.lang.String name; - private java.lang.String id; - private java.lang.String shortDescription; - private java.lang.String description; - private java.lang.String implementationID; - private java.lang.String email; - private java.lang.String wsdlURL; - private java.lang.String infoURL; - private java.lang.String discussionURL; - private java.lang.String notes; - private java.lang.String tmodelID; - private java.lang.String publisherID; - private java.lang.String uuid; - - public ServiceDetail() { - } - - - /** - * Gets the name value for this ServiceDetail. - * - * @return name - */ - public java.lang.String getName() { - return name; - } - - - /** - * Sets the name value for this ServiceDetail. - * - * @param name - */ - public void setName(java.lang.String name) { - this.name = name; - } - - - /** - * Gets the id value for this ServiceDetail. - * - * @return id - */ - public java.lang.String getId() { - return id; - } - - - /** - * Sets the id value for this ServiceDetail. - * - * @param id - */ - public void setId(java.lang.String id) { - this.id = id; - } - - - /** - * Gets the shortDescription value for this ServiceDetail. - * - * @return shortDescription - */ - public java.lang.String getShortDescription() { - return shortDescription; - } - - - /** - * Sets the shortDescription value for this ServiceDetail. - * - * @param shortDescription - */ - public void setShortDescription(java.lang.String shortDescription) { - this.shortDescription = shortDescription; - } - - - /** - * Gets the description value for this ServiceDetail. - * - * @return description - */ - public java.lang.String getDescription() { - return description; - } - - - /** - * Sets the description value for this ServiceDetail. - * - * @param description - */ - public void setDescription(java.lang.String description) { - this.description = description; - } - - - /** - * Gets the implementationID value for this ServiceDetail. - * - * @return implementationID - */ - public java.lang.String getImplementationID() { - return implementationID; - } - - - /** - * Sets the implementationID value for this ServiceDetail. - * - * @param implementationID - */ - public void setImplementationID(java.lang.String implementationID) { - this.implementationID = implementationID; - } - - - /** - * Gets the email value for this ServiceDetail. - * - * @return email - */ - public java.lang.String getEmail() { - return email; - } - - - /** - * Sets the email value for this ServiceDetail. - * - * @param email - */ - public void setEmail(java.lang.String email) { - this.email = email; - } - - - /** - * Gets the wsdlURL value for this ServiceDetail. - * - * @return wsdlURL - */ - public java.lang.String getWsdlURL() { - return wsdlURL; - } - - - /** - * Sets the wsdlURL value for this ServiceDetail. - * - * @param wsdlURL - */ - public void setWsdlURL(java.lang.String wsdlURL) { - this.wsdlURL = wsdlURL; - } - - - /** - * Gets the infoURL value for this ServiceDetail. - * - * @return infoURL - */ - public java.lang.String getInfoURL() { - return infoURL; - } - - - /** - * Sets the infoURL value for this ServiceDetail. - * - * @param infoURL - */ - public void setInfoURL(java.lang.String infoURL) { - this.infoURL = infoURL; - } - - - /** - * Gets the discussionURL value for this ServiceDetail. - * - * @return discussionURL - */ - public java.lang.String getDiscussionURL() { - return discussionURL; - } - - - /** - * Sets the discussionURL value for this ServiceDetail. - * - * @param discussionURL - */ - public void setDiscussionURL(java.lang.String discussionURL) { - this.discussionURL = discussionURL; - } - - - /** - * Gets the notes value for this ServiceDetail. - * - * @return notes - */ - public java.lang.String getNotes() { - return notes; - } - - - /** - * Sets the notes value for this ServiceDetail. - * - * @param notes - */ - public void setNotes(java.lang.String notes) { - this.notes = notes; - } - - - /** - * Gets the tmodelID value for this ServiceDetail. - * - * @return tmodelID - */ - public java.lang.String getTmodelID() { - return tmodelID; - } - - - /** - * Sets the tmodelID value for this ServiceDetail. - * - * @param tmodelID - */ - public void setTmodelID(java.lang.String tmodelID) { - this.tmodelID = tmodelID; - } - - - /** - * Gets the publisherID value for this ServiceDetail. - * - * @return publisherID - */ - public java.lang.String getPublisherID() { - return publisherID; - } - - - /** - * Sets the publisherID value for this ServiceDetail. - * - * @param publisherID - */ - public void setPublisherID(java.lang.String publisherID) { - this.publisherID = publisherID; - } - - - /** - * Gets the uuid value for this ServiceDetail. - * - * @return uuid - */ - public java.lang.String getUuid() { - return uuid; - } - - - /** - * Sets the uuid value for this ServiceDetail. - * - * @param uuid - */ - public void setUuid(java.lang.String uuid) { - this.uuid = uuid; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceSummary.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceSummary.java deleted file mode 100644 index 93e85465f4..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/ServiceSummary.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * ServiceSummary.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2beta Mar 31, 2004 (12:47:03 EST) WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.gen.xmethods; - -public class ServiceSummary implements java.io.Serializable { - private java.lang.String name; - private java.lang.String id; - private java.lang.String shortDescription; - private java.lang.String wsdlURL; - private java.lang.String publisherID; - - public ServiceSummary() { - } - - - /** - * Gets the name value for this ServiceSummary. - * - * @return name - */ - public java.lang.String getName() { - return name; - } - - - /** - * Sets the name value for this ServiceSummary. - * - * @param name - */ - public void setName(java.lang.String name) { - this.name = name; - } - - - /** - * Gets the id value for this ServiceSummary. - * - * @return id - */ - public java.lang.String getId() { - return id; - } - - - /** - * Sets the id value for this ServiceSummary. - * - * @param id - */ - public void setId(java.lang.String id) { - this.id = id; - } - - - /** - * Gets the shortDescription value for this ServiceSummary. - * - * @return shortDescription - */ - public java.lang.String getShortDescription() { - return shortDescription; - } - - - /** - * Sets the shortDescription value for this ServiceSummary. - * - * @param shortDescription - */ - public void setShortDescription(java.lang.String shortDescription) { - this.shortDescription = shortDescription; - } - - - /** - * Gets the wsdlURL value for this ServiceSummary. - * - * @return wsdlURL - */ - public java.lang.String getWsdlURL() { - return wsdlURL; - } - - - /** - * Sets the wsdlURL value for this ServiceSummary. - * - * @param wsdlURL - */ - public void setWsdlURL(java.lang.String wsdlURL) { - this.wsdlURL = wsdlURL; - } - - - /** - * Gets the publisherID value for this ServiceSummary. - * - * @return publisherID - */ - public java.lang.String getPublisherID() { - return publisherID; - } - - - /** - * Sets the publisherID value for this ServiceSummary. - * - * @param publisherID - */ - public void setPublisherID(java.lang.String publisherID) { - this.publisherID = publisherID; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuery.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuery.java deleted file mode 100644 index 163d25de99..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuery.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * XMethodsQuery.java - * - * This file was auto-generated from WSDL by the Apache Axis 1.2beta Mar 31, - * 2004 (12:47:03 EST) WSDL2Java emitter. - */ -package org.objectweb.jonas.jtests.gen.xmethods; - -public interface XMethodsQuery extends javax.xml.rpc.Service { - /** - * XMethods query service - */ - public java.lang.String getXMethodsQuerySoapAddress(); - - public org.objectweb.jonas.jtests.gen.xmethods.XMethodsQuerySoapPortType getXMethodsQuerySoap() - throws javax.xml.rpc.ServiceException; - - public org.objectweb.jonas.jtests.gen.xmethods.XMethodsQuerySoapPortType getXMethodsQuerySoap( - java.net.URL portAddress) throws javax.xml.rpc.ServiceException; -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuerySoapPortType.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuerySoapPortType.java deleted file mode 100644 index 76f9b6853c..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/xmethods/XMethodsQuerySoapPortType.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * XMethodsQuerySoapPortType.java - * - * This file was auto-generated from WSDL by the Apache Axis 1.2beta Mar 31, - * 2004 (12:47:03 EST) WSDL2Java emitter. - */ -package org.objectweb.jonas.jtests.gen.xmethods; - -public interface XMethodsQuerySoapPortType extends java.rmi.Remote { - public org.objectweb.jonas.jtests.gen.xmethods.ServiceSummary[] getServiceSummariesByPublisher( - java.lang.String publisherID) throws java.rmi.RemoteException; - - public org.objectweb.jonas.jtests.gen.xmethods.ServiceSummary[] getAllServiceSummaries() - throws java.rmi.RemoteException; - - public org.objectweb.jonas.jtests.gen.xmethods.IDNamePair[] getAllServiceNames() - throws java.rmi.RemoteException; - - public org.objectweb.jonas.jtests.gen.xmethods.IDNamePair[] getServiceNamesByPublisher( - java.lang.String publisherID) throws java.rmi.RemoteException; - - public org.objectweb.jonas.jtests.gen.xmethods.ServiceDetail getServiceDetail( - java.lang.String id) throws java.rmi.RemoteException; -} \ No newline at end of file diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUX.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUX.java deleted file mode 100644 index 505953198d..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUX.java +++ /dev/null @@ -1,18 +0,0 @@ -/** - * IODCODESPOSTAUX.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2dev nov. 26, 2003 (03:17:19 CET) WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.gen.zip; - -public interface IODCODESPOSTAUX extends java.rmi.Remote { - public java.lang.String getDepartmentForCode(java.lang.String depCode) throws java.rmi.RemoteException; - public java.lang.String getDepartmentAdminCenterForCode(java.lang.String depCode) throws java.rmi.RemoteException; - public java.lang.String getDepartmentList(java.lang.String separator) throws java.rmi.RemoteException; - public java.lang.String getTownForZip(java.lang.String zipCode, java.lang.String separator) throws java.rmi.RemoteException; - public java.lang.String getZipForTown(java.lang.String town, java.lang.String separator, boolean exactMatch) throws java.rmi.RemoteException; - public java.lang.String getTownsForSoundex(java.lang.String searchFor, java.lang.String separator) throws java.rmi.RemoteException; - public void reportErrorInFile(java.lang.String yourName, java.lang.String yourMail, java.lang.String yourMessage) throws java.rmi.RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUXservice.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUXservice.java deleted file mode 100644 index 57a7713514..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/gen/zip/IODCODESPOSTAUXservice.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * IODCODESPOSTAUXservice.java - * - * This file was auto-generated from WSDL - * by the Apache Axis 1.2dev nov. 26, 2003 (03:17:19 CET) WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.gen.zip; - -public interface IODCODESPOSTAUXservice extends javax.xml.rpc.Service { - public java.lang.String getIODCODESPOSTAUXPortAddress(); - - public org.objectweb.jonas.jtests.gen.zip.IODCODESPOSTAUX getIODCODESPOSTAUXPort() throws javax.xml.rpc.ServiceException; - - public org.objectweb.jonas.jtests.gen.zip.IODCODESPOSTAUX getIODCODESPOSTAUXPort(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloPortComponentSoapBindingStub.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloPortComponentSoapBindingStub.java deleted file mode 100644 index 1623136d41..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloPortComponentSoapBindingStub.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * HelloPortComponentSoapBindingStub.java - * - * This file was auto-generated from WSDL - * by the Apache Axis WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.hello; - -public class HelloPortComponentSoapBindingStub extends org.apache.axis.client.Stub implements org.objectweb.jonas.jtests.hello.HelloWs { - private java.util.Vector cachedSerClasses = new java.util.Vector(); - private java.util.Vector cachedSerQNames = new java.util.Vector(); - private java.util.Vector cachedSerFactories = new java.util.Vector(); - private java.util.Vector cachedDeserFactories = new java.util.Vector(); - - static org.apache.axis.description.OperationDesc [] _operations; - - static { - _operations = new org.apache.axis.description.OperationDesc[1]; - org.apache.axis.description.OperationDesc oper; - oper = new org.apache.axis.description.OperationDesc(); - oper.setName("sayHello"); - oper.addParameter(new javax.xml.namespace.QName("", "in0"), new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, org.apache.axis.description.ParameterDesc.IN, false, false); - oper.setReturnType(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string")); - oper.setReturnClass(java.lang.String.class); - oper.setReturnQName(new javax.xml.namespace.QName("", "return")); - oper.setStyle(org.apache.axis.constants.Style.RPC); - oper.setUse(org.apache.axis.constants.Use.ENCODED); - _operations[0] = oper; - - } - - public HelloPortComponentSoapBindingStub() throws org.apache.axis.AxisFault { - this(null); - } - - public HelloPortComponentSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault { - this(service); - super.cachedEndpoint = endpointURL; - } - - public HelloPortComponentSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault { - if (service == null) { - super.service = new org.apache.axis.client.Service(); - } else { - super.service = service; - } - } - - private org.apache.axis.client.Call createCall() throws java.rmi.RemoteException { - try { - org.apache.axis.client.Call _call = - (org.apache.axis.client.Call) super.service.createCall(); - if (super.maintainSessionSet) { - _call.setMaintainSession(super.maintainSession); - } - if (super.cachedUsername != null) { - _call.setUsername(super.cachedUsername); - } - if (super.cachedPassword != null) { - _call.setPassword(super.cachedPassword); - } - if (super.cachedEndpoint != null) { - _call.setTargetEndpointAddress(super.cachedEndpoint); - } - if (super.cachedTimeout != null) { - _call.setTimeout(super.cachedTimeout); - } - if (super.cachedPortName != null) { - _call.setPortName(super.cachedPortName); - } - java.util.Enumeration keys = super.cachedProperties.keys(); - while (keys.hasMoreElements()) { - java.lang.String key = (java.lang.String) keys.nextElement(); - _call.setProperty(key, super.cachedProperties.get(key)); - } - return _call; - } - catch (java.lang.Throwable t) { - throw new org.apache.axis.AxisFault("Failure trying to get the Call object", t); - } - } - - public java.lang.String sayHello(java.lang.String in0) throws java.rmi.RemoteException { - if (super.cachedEndpoint == null) { - throw new org.apache.axis.NoEndPointException(); - } - org.apache.axis.client.Call _call = createCall(); - _call.setOperation(_operations[0]); - _call.setUseSOAPAction(true); - _call.setSOAPActionURI(""); - _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS); - _call.setOperationName(new javax.xml.namespace.QName("http://hello.simple", "sayHello")); - - setRequestHeaders(_call); - setAttachments(_call); - java.lang.Object _resp = _call.invoke(new java.lang.Object[] {in0}); - - if (_resp instanceof java.rmi.RemoteException) { - throw (java.rmi.RemoteException)_resp; - } - else { - extractAttachments(_call); - try { - return (java.lang.String) _resp; - } catch (java.lang.Exception _exception) { - return (java.lang.String) org.apache.axis.utils.JavaUtils.convert(_resp, java.lang.String.class); - } - } - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs.java deleted file mode 100644 index c275a202d8..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs.java +++ /dev/null @@ -1,12 +0,0 @@ -/** - * HelloWs.java - * - * This file was auto-generated from WSDL - * by the Apache Axis WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.hello; - -public interface HelloWs extends java.rmi.Remote { - public java.lang.String sayHello(java.lang.String in0) throws java.rmi.RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs2.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs2.java deleted file mode 100644 index 97383baf23..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWs2.java +++ /dev/null @@ -1,12 +0,0 @@ -/** - * HelloWs.java - * - * This file was auto-generated from WSDL - * by the Apache Axis WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.hello; - -public interface HelloWs2 extends java.rmi.Remote { - public java.lang.String sayHello(java.lang.String in0) throws java.rmi.RemoteException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsService.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsService.java deleted file mode 100644 index 95c98d5d29..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsService.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * HelloWsService.java - * - * This file was auto-generated from WSDL - * by the Apache Axis WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.hello; - -public interface HelloWsService extends javax.xml.rpc.Service { - public java.lang.String getHelloPortComponentAddress(); - - public org.objectweb.jonas.jtests.hello.HelloWs getHelloPortComponent() throws javax.xml.rpc.ServiceException; - - public org.objectweb.jonas.jtests.hello.HelloWs getHelloPortComponent(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsServiceLocator.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsServiceLocator.java deleted file mode 100644 index 93a4a2236f..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/hello/HelloWsServiceLocator.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * HelloWsServiceLocator.java - * - * This file was auto-generated from WSDL - * by the Apache Axis WSDL2Java emitter. - */ - -package org.objectweb.jonas.jtests.hello; - -import javax.xml.namespace.QName; - -public class HelloWsServiceLocator extends org.ow2.jonas.ws.axis.JService implements org.objectweb.jonas.jtests.hello.HelloWsService { - - public HelloWsServiceLocator(String name, QName qname) { - - } - - // Use to get a proxy class for HelloPortComponent - private final java.lang.String HelloPortComponent_address = "http://dummy_location/HelloPortComponent"; - - public java.lang.String getHelloPortComponentAddress() { - return HelloPortComponent_address; - } - - // The WSDD service name defaults to the port name. - private java.lang.String HelloPortComponentWSDDServiceName = "HelloPortComponent"; - - public java.lang.String getHelloPortComponentWSDDServiceName() { - return HelloPortComponentWSDDServiceName; - } - - public void setHelloPortComponentWSDDServiceName(java.lang.String name) { - HelloPortComponentWSDDServiceName = name; - } - - public org.objectweb.jonas.jtests.hello.HelloWs getHelloPortComponent() throws javax.xml.rpc.ServiceException { - java.net.URL endpoint; - try { - endpoint = new java.net.URL(HelloPortComponent_address); - } - catch (java.net.MalformedURLException e) { - throw new javax.xml.rpc.ServiceException(e); - } - return getHelloPortComponent(endpoint); - } - - public org.objectweb.jonas.jtests.hello.HelloWs getHelloPortComponent(java.net.URL portAddress) throws javax.xml.rpc.ServiceException { - try { - org.objectweb.jonas.jtests.hello.HelloPortComponentSoapBindingStub _stub = new org.objectweb.jonas.jtests.hello.HelloPortComponentSoapBindingStub(portAddress, this); - _stub.setPortName(getHelloPortComponentWSDDServiceName()); - return _stub; - } - catch (org.apache.axis.AxisFault e) { - return null; - } - } - - /** - * For the given interface, get the stub implementation. - * If this service has no port for the given interface, - * then ServiceException is thrown. - */ - public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException { - try { - if (org.objectweb.jonas.jtests.hello.HelloWs.class.isAssignableFrom(serviceEndpointInterface)) { - org.objectweb.jonas.jtests.hello.HelloPortComponentSoapBindingStub _stub = new org.objectweb.jonas.jtests.hello.HelloPortComponentSoapBindingStub(new java.net.URL(HelloPortComponent_address), this); - _stub.setPortName(getHelloPortComponentWSDDServiceName()); - return _stub; - } - } - catch (java.lang.Throwable t) { - throw new javax.xml.rpc.ServiceException(t); - } - throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface: " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName())); - } - - /** - * For the given interface, get the stub implementation. - * If this service has no port for the given interface, - * then ServiceException is thrown. - */ - public java.rmi.Remote getPort(javax.xml.namespace.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException { - if (portName == null) { - return getPort(serviceEndpointInterface); - } - String inputPortName = portName.getLocalPart(); - if ("HelloPortComponent".equals(inputPortName)) { - return getHelloPortComponent(); - } - else { - java.rmi.Remote _stub = getPort(serviceEndpointInterface); - ((org.apache.axis.client.Stub) _stub).setPortName(portName); - return _stub; - } - } - - public javax.xml.namespace.QName getServiceName() { - return new javax.xml.namespace.QName("http://hello.simple", "HelloWsService"); - } - - private java.util.HashSet ports = null; - - public java.util.Iterator getPorts() { - if (ports == null) { - ports = new java.util.HashSet(); - ports.add(new javax.xml.namespace.QName("HelloPortComponent")); - } - return ports.iterator(); - } - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/Address.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/Address.java deleted file mode 100644 index c4eedffd75..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/Address.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.endpoint; - -public class Address { - - private String name; - private String company; - private float version; - - public Address() { - } - - public void setName(String name) { - this.name = name; - } - - public void setCompany(String company) { - this.company = company; - } - - public void setVersion(float version) { - this.version = version; - } - - public String getName() { - return name; - } - - public String getCompany() { - return company; - } - - public float getVersion() { - return version; - } - - public String toString() { - return "Address {name='" + getName() - + "', company='" + getCompany() - + "', version='" + getVersion() + "'}"; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBook.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBook.java deleted file mode 100644 index 70f4236adb..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBook.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.endpoint; - - -public interface AddressBook { - - public void addAddress(Address addr) throws AddressBookException; - public Address getAddress(String name); - public Address[] getAddresses(); - public boolean isPresent(String name); - - public void reset(); - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookException.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookException.java deleted file mode 100644 index 859e87a76e..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.endpoint; - -public class AddressBookException extends Exception { - - public AddressBookException(String msg) { - super(msg); - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookImpl.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookImpl.java deleted file mode 100644 index 4a22b29958..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/endpoint/AddressBookImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.endpoint; - -import java.util.Hashtable; -import java.util.Map; - -public class AddressBookImpl implements AddressBook { - - /** - * Hack !! used to keep a state in this ws ! - */ - private static Map addresses = null; - - private static void initAddresses() { - addresses = new Hashtable(); - Address a = new Address(); - a.setName("JOnAS"); - a.setCompany("ObjectWeb Consortium"); - a.setVersion(4.0f); - addresses.put(a.getName(), a); - } - - public AddressBookImpl() { - if (addresses == null) { - initAddresses(); - } - } - - public void addAddress(Address addr) throws AddressBookException { - if (isPresent(addr.getName())) { - throw new AddressBookException("Address " + addr + " already present in Book"); - } - - addresses.put(addr.getName(), addr); - } - - public Address getAddress(String name) { - return (Address) addresses.get(name); - } - - public Address[] getAddresses() { - Address[] exported = new Address[addresses.size()]; - return (Address[]) addresses.values().toArray(exported); - } - - public boolean isPresent(String name) { - return (getAddress(name) != null); - } - - public void reset() { - addresses = null; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/Address.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/Address.java deleted file mode 100644 index a0531011d3..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/Address.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.portlink; - -public class Address { - - private String name; - private String company; - private float version; - - public Address() { - } - - public void setName(String name) { - this.name = name; - } - - public void setCompany(String company) { - this.company = company; - } - - public void setVersion(float version) { - this.version = version; - } - - public String getName() { - return name; - } - - public String getCompany() { - return company; - } - - public float getVersion() { - return version; - } - - public String toString() { - return "Address {name='" + getName() - + "', company='" + getCompany() - + "', version='" + getVersion() + "'}"; - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBook.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBook.java deleted file mode 100644 index b22bae5a58..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBook.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.portlink; - -import java.rmi.RemoteException; - -/** - * Remote interface used for Dynamix Proxy Generation - */ -public interface AddressBook extends java.rmi.Remote { - - public void addAddress(Address addr) throws RemoteException, AddressBookException; - public Address getAddress(String name) throws RemoteException; - public Address[] getAddresses() throws RemoteException; - public boolean isPresent(String name) throws RemoteException; - -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBookException.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBookException.java deleted file mode 100644 index 8ac4c46676..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/servlets/portlink/AddressBookException.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.objectweb.jonas.jtests.servlets.portlink; - -public class AddressBookException extends Exception { - - public AddressBookException(String msg) { - super(msg); - } -} diff --git a/jonas_tests/ws/src/org/objectweb/jonas/jtests/util/JWebServicesTestCase.java b/jonas_tests/ws/src/org/objectweb/jonas/jtests/util/JWebServicesTestCase.java deleted file mode 100644 index c9d203c1a2..0000000000 --- a/jonas_tests/ws/src/org/objectweb/jonas/jtests/util/JWebServicesTestCase.java +++ /dev/null @@ -1,454 +0,0 @@ -/** - * JOnAS: Java(TM) Open Application Server - * Copyright (C) 1999 Bull S.A. - * Contact: jonas-team@objectweb.org - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or 1any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - * - * Initial developer: Florent BENOIT - * -------------------------------------------------------------------------- - * $Id$ - * -------------------------------------------------------------------------- - */ - -package org.objectweb.jonas.jtests.util; - -import java.io.File; -import java.io.IOException; -import java.util.Set; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.rmi.PortableRemoteObject; - -import junit.framework.TestCase; - -import com.meterware.httpunit.WebConversation; - -/** - * Define a class to add useful methods for test the webservices - * - Deploy ear, war and beans - * - Retrieve initial context - * @author Florent Benoit - */ -public class JWebServicesTestCase extends TestCase { - - /** - * Name of the JOnAS server used for tests - */ - private static String jonasName = "jonas"; - - /* - * JONAS_BASE - */ - protected static String jb = null; - - /** - * Initial context used for lookup - */ - protected static Context ictx = null; - - /** - * Connection to the MBeanServer - */ - private static MBeanServerConnection cnx = null; - - /** - * Conversation used for HttpUnit - */ - protected WebConversation wc = null; - - /** - * URL used for the constructor - */ - protected String url = null; - - /** - * Prefix for build URLs - */ - private String prefixUrl = null; - - /** - * Add to the specified url the prefix - * @param url relative URL - * @return absolute path of URL - */ - protected String getAbsoluteUrl (String url) { - return (this.prefixUrl + url); - } - - - /** - * Make an absolute path with the filename. - */ - public String absPath(String name, String extension) { - - String ret = ""; - if ( extension.equals(".jar")) { - ret = jb + "/ejbjars/" + name + ".jar"; - } else if ( extension.equals(".war")) { - ret = jb + "/webapps/" + name + ".war"; - } else if (extension.equals(".ear")) { - ret = jb + "/apps/" + name + ".ear"; - } - return ret; - } - private static JMXServiceURL jmxServerUrl = null; - private static String urlSuffix = "service:jmx:"; - private static String registry = null; - private static String defaultRegistry = "rmi://localhost:1099"; - private static String protocol = null; - private static String defaultProtocol = "jrmp"; - - /* - * Get Connection to the MBean server - * Set the static cnx variable - */ - private void getJmxCnx() { - if (cnx == null) { - try { - if (registry == null) { - registry = defaultRegistry; - } - registry = registry + "/"; - int indx = registry.lastIndexOf(":"); - String st = registry.substring(0, indx); - String serverUrl = urlSuffix + st +"/jndi/"+registry; - if (protocol == null) { - protocol = defaultProtocol; - } - String connectorName = protocol.concat("connector_"); - connectorName = connectorName.concat(jonasName); - serverUrl = serverUrl.concat(connectorName); - jmxServerUrl = new JMXServiceURL(serverUrl); - JMXConnector cntor = JMXConnectorFactory.connect(jmxServerUrl, null); - cnx = cntor.getMBeanServerConnection(null); - System.out.println("server reached via: "+serverUrl); - } catch (IOException e) { - System.err.println("Can't reach server " + jonasName - + " as couldn't create JMXConnector (" + e.getMessage() - + ")"); - System.err.println("Check name, registry and protocol options."); - System.exit(2); - } - } - } - - /* - * ObjectName of y=the J2eeServerMBean - */ - private static ObjectName j2eeserver = null; - - /* - * Get the ObjectName of the J2eeServerMBean - * @return the ObjectName - */ - private ObjectName getJ2eeServer() { - if (j2eeserver == null) { - try { - ObjectName on = ObjectName.getInstance("*:j2eeType=J2EEServer,name=" + jonasName); - Set j2eeservers = cnx.queryNames(on, null); - if (j2eeservers.isEmpty()) { - System.err.println("Can't admin server " + jonasName + ": didn't found J2EEServer MBean"); - System.exit(2); - } - j2eeserver = (ObjectName) j2eeservers.iterator().next(); - } catch (Exception e) { - System.err.println("Can't invoke mbeanServer: " + e); - } - } - return j2eeserver; - } - - /** - * Initialize the port used by tests and the prefix - */ - private void init() { - String port = System.getProperty("http.port"); - if (port == null) { - port = "9000"; - } - - prefixUrl = "http://localhost:" + port; - } - - /** - * Constructor with a specified name - * @param s the name - */ - public JWebServicesTestCase(String s) { - super(s); - init(); - } - /** - * Constructor with a specified name and url - * @param s the name - * @param url the url which can be used - */ - public JWebServicesTestCase(String s, String url) { - super(s); - wc = new WebConversation(); - init(); - this.url = getAbsoluteUrl(url); - } - - /** - * Get initialContext - * @return the initialContext - * @throws NamingException if the initial context can't be retrieved - */ - private Context getInitialContext() throws NamingException { - return new InitialContext(); - } - - /** - * Common setUp routine, used for every test. - * @throws Exception if an error occurs - */ - - protected void setUp() throws Exception { - try { - // get InitialContext - if (ictx == null) { - ictx = getInitialContext(); - } - jb = System.getProperty("jonas.base"); - registry = System.getProperty("registry"); - protocol = System.getProperty("protocol"); - getJmxCnx(); - - } catch (NamingException e) { - System.err.println("Cannot setup test: " + e); - e.printStackTrace(); - } - } - - - /** - * Load an ear file in the jonas server - * @param filename ear file, without ".ear" extension - * @throws Exception if an error occurs - */ - public void useEar(String fname) throws Exception { - String filename = absPath(fname, ".ear"); - try { - // Load ear in JOnAS if not already loaded. - if (!isEarLoaded(filename)) { - loadEar(filename); - } - - } catch (Exception e) { - throw new Exception("Cannot load Ear : " + e.getMessage()); - } - - } - - /** - * Load a war file in the jonas server - * @param filename war file, without ".war" extension - * @throws Exception if an error occurs - */ - - public void useWar(String fname) throws Exception { - String filename = absPath(fname, ".war"); - try { - // Load war in JOnAS if not already loaded. - if (!isWarLoaded(filename)) { - loadWar(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load War : " + e.getMessage()); - } - } - - - - /** - * Load a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void useBeans(String fname) throws Exception { - try { - String filename = absPath(fname, ".jar"); - // Load bean in EJBServer if not already loaded. - if (!isJarLoaded(filename)) { - addBeans(filename); - } - } catch (Exception e) { - throw new Exception("Cannot load Bean : " + e.getMessage()); - } - } - - - - /** - * Unload a bean jar file in the jonas server - * @param filename jar file, without ".jar" extension - * @throws Exception if an error occurs - */ - public void unUseBeans(String filename) throws Exception { - try { - - if (isJarLoaded(filename + ".jar")) { - unloadBeans(filename + ".jar"); - } - } catch (Exception e) { - throw new Exception("Cannot unload Bean : " + e.getMessage()); - } - } - - - - /* - * isLoaded remote operation - */ - private boolean isLoaded(String filename) { - boolean ret = false; - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - Boolean r = (Boolean) cnx.invoke(getJ2eeServer(), "isDeployed", params, signature); - ret = r.booleanValue(); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - return ret; - } - - /** - * isJarLoaded remote operation - * @param filename jar file, with ".jar" extension - */ - private boolean isJarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - public void addBeans(String filename) { - - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * loadEar remote operation - * @param filename war file, with ".war" extension - */ - public void loadWar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - - /** - * isWarLoaded remote operation - * @param filename war file, with ".war" extension - */ - private boolean isWarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - /** - * isEarLoaded remote operation - * @param filename ear file, with ".ear" extension - */ - private boolean isEarLoaded(String filename) { - boolean ret = false; - try { - return isLoaded(filename); - - } catch (Exception e) { - System.err.println("Cannot test bean: " + e); - } - - return ret; - } - /** - * loadEar remote operation - * @param filename ear file, with ".ear" extension - */ - public void loadEar(String filename) { - try { - - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "deploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot deploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot load bean: " + e); - } - } - /** - * unloadBean remote operation - * @param filename jar file, with ".jar" extension - */ - public void unloadBeans(String filename) { - try { - String[] params = {filename}; - String[] signature = {"java.lang.String"}; - try { - cnx.invoke(getJ2eeServer(), "undeploy", params, signature); - } catch (Exception e) { - System.err.println("Cannot undeploy " + filename + ": " + e); - } - - } catch (Exception e) { - System.err.println("Cannot unload bean: " + e); - } - } -} diff --git a/jonas_doc/olddoc/Admin.html b/olddoc/Admin.html similarity index 100% rename from jonas_doc/olddoc/Admin.html rename to olddoc/Admin.html diff --git a/jonas_doc/olddoc/Cmi.html b/olddoc/Cmi.html similarity index 100% rename from jonas_doc/olddoc/Cmi.html rename to olddoc/Cmi.html diff --git a/jonas_doc/olddoc/Deployer.html b/olddoc/Deployer.html similarity index 100% rename from jonas_doc/olddoc/Deployer.html rename to olddoc/Deployer.html diff --git a/jonas_doc/olddoc/Domain.html b/olddoc/Domain.html similarity index 100% rename from jonas_doc/olddoc/Domain.html rename to olddoc/Domain.html diff --git a/jonas_doc/olddoc/JOnASWP.html b/olddoc/JOnASWP.html similarity index 100% rename from jonas_doc/olddoc/JOnASWP.html rename to olddoc/JOnASWP.html diff --git a/jonas_doc/olddoc/JOnASWebServices.html b/olddoc/JOnASWebServices.html similarity index 100% rename from jonas_doc/olddoc/JOnASWebServices.html rename to olddoc/JOnASWebServices.html diff --git a/jonas_doc/olddoc/MBeans.html b/olddoc/MBeans.html similarity index 100% rename from jonas_doc/olddoc/MBeans.html rename to olddoc/MBeans.html diff --git a/jonas_doc/olddoc/PG_Client.html b/olddoc/PG_Client.html similarity index 100% rename from jonas_doc/olddoc/PG_Client.html rename to olddoc/PG_Client.html diff --git a/jonas_doc/olddoc/PG_Connector.html b/olddoc/PG_Connector.html similarity index 100% rename from jonas_doc/olddoc/PG_Connector.html rename to olddoc/PG_Connector.html diff --git a/jonas_doc/olddoc/PG_Deployment.html b/olddoc/PG_Deployment.html similarity index 100% rename from jonas_doc/olddoc/PG_Deployment.html rename to olddoc/PG_Deployment.html diff --git a/jonas_doc/olddoc/PG_EarDeployment.html b/olddoc/PG_EarDeployment.html similarity index 100% rename from jonas_doc/olddoc/PG_EarDeployment.html rename to olddoc/PG_EarDeployment.html diff --git a/jonas_doc/olddoc/PG_Entity.html b/olddoc/PG_Entity.html similarity index 100% rename from jonas_doc/olddoc/PG_Entity.html rename to olddoc/PG_Entity.html diff --git a/jonas_doc/olddoc/PG_Environment.html b/olddoc/PG_Environment.html similarity index 100% rename from jonas_doc/olddoc/PG_Environment.html rename to olddoc/PG_Environment.html diff --git a/jonas_doc/olddoc/PG_J2eeApps.html b/olddoc/PG_J2eeApps.html similarity index 100% rename from jonas_doc/olddoc/PG_J2eeApps.html rename to olddoc/PG_J2eeApps.html diff --git a/jonas_doc/olddoc/PG_JmsGuide.html b/olddoc/PG_JmsGuide.html similarity index 100% rename from jonas_doc/olddoc/PG_JmsGuide.html rename to olddoc/PG_JmsGuide.html diff --git a/jonas_doc/olddoc/PG_LogModules.html b/olddoc/PG_LogModules.html similarity index 100% rename from jonas_doc/olddoc/PG_LogModules.html rename to olddoc/PG_LogModules.html diff --git a/jonas_doc/olddoc/PG_MsgDrvBean.html b/olddoc/PG_MsgDrvBean.html similarity index 100% rename from jonas_doc/olddoc/PG_MsgDrvBean.html rename to olddoc/PG_MsgDrvBean.html diff --git a/jonas_doc/olddoc/PG_Packaging.html b/olddoc/PG_Packaging.html similarity index 100% rename from jonas_doc/olddoc/PG_Packaging.html rename to olddoc/PG_Packaging.html diff --git a/jonas_doc/olddoc/PG_Security.html b/olddoc/PG_Security.html similarity index 100% rename from jonas_doc/olddoc/PG_Security.html rename to olddoc/PG_Security.html diff --git a/jonas_doc/olddoc/PG_Session.html b/olddoc/PG_Session.html similarity index 100% rename from jonas_doc/olddoc/PG_Session.html rename to olddoc/PG_Session.html diff --git a/jonas_doc/olddoc/PG_Transaction.html b/olddoc/PG_Transaction.html similarity index 100% rename from jonas_doc/olddoc/PG_Transaction.html rename to olddoc/PG_Transaction.html diff --git a/jonas_doc/olddoc/PG_War.html b/olddoc/PG_War.html similarity index 100% rename from jonas_doc/olddoc/PG_War.html rename to olddoc/PG_War.html diff --git a/jonas_doc/olddoc/Services.html b/olddoc/Services.html similarity index 100% rename from jonas_doc/olddoc/Services.html rename to olddoc/Services.html diff --git a/jonas_doc/olddoc/ant-ejbjar.html b/olddoc/ant-ejbjar.html similarity index 100% rename from jonas_doc/olddoc/ant-ejbjar.html rename to olddoc/ant-ejbjar.html diff --git a/jonas_doc/olddoc/clusterd.html b/olddoc/clusterd.html similarity index 100% rename from jonas_doc/olddoc/clusterd.html rename to olddoc/clusterd.html diff --git a/jonas_doc/olddoc/clustering.html b/olddoc/clustering.html similarity index 100% rename from jonas_doc/olddoc/clustering.html rename to olddoc/clustering.html diff --git a/jonas_doc/olddoc/common.css b/olddoc/common.css similarity index 100% rename from jonas_doc/olddoc/common.css rename to olddoc/common.css diff --git a/jonas_doc/olddoc/howto/Clustering.html b/olddoc/howto/Clustering.html similarity index 100% rename from jonas_doc/olddoc/howto/Clustering.html rename to olddoc/howto/Clustering.html diff --git a/jonas_doc/olddoc/howto/Firewall.html b/olddoc/howto/Firewall.html similarity index 100% rename from jonas_doc/olddoc/howto/Firewall.html rename to olddoc/howto/Firewall.html diff --git a/jonas_doc/olddoc/howto/JMSClustering.html b/olddoc/howto/JMSClustering.html similarity index 100% rename from jonas_doc/olddoc/howto/JMSClustering.html rename to olddoc/howto/JMSClustering.html diff --git a/jonas_doc/olddoc/howto/JORAMdistributed_JOnAS_4_1.html b/olddoc/howto/JORAMdistributed_JOnAS_4_1.html similarity index 100% rename from jonas_doc/olddoc/howto/JORAMdistributed_JOnAS_4_1.html rename to olddoc/howto/JORAMdistributed_JOnAS_4_1.html diff --git a/jonas_doc/olddoc/howto/JSR160_support.html b/olddoc/howto/JSR160_support.html similarity index 100% rename from jonas_doc/olddoc/howto/JSR160_support.html rename to olddoc/howto/JSR160_support.html diff --git a/jonas_doc/olddoc/howto/JonasArchi.html b/olddoc/howto/JonasArchi.html similarity index 100% rename from jonas_doc/olddoc/howto/JonasArchi.html rename to olddoc/howto/JonasArchi.html diff --git a/jonas_doc/olddoc/howto/JonasMBeansHowTo.html b/olddoc/howto/JonasMBeansHowTo.html similarity index 100% rename from jonas_doc/olddoc/howto/JonasMBeansHowTo.html rename to olddoc/howto/JonasMBeansHowTo.html diff --git a/jonas_doc/olddoc/howto/WebSphereMQ.html b/olddoc/howto/WebSphereMQ.html similarity index 100% rename from jonas_doc/olddoc/howto/WebSphereMQ.html rename to olddoc/howto/WebSphereMQ.html diff --git a/jonas_doc/olddoc/howto/Win32Service.html b/olddoc/howto/Win32Service.html similarity index 100% rename from jonas_doc/olddoc/howto/Win32Service.html rename to olddoc/howto/Win32Service.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/AutomaticClusterConfiguration.html b/olddoc/howto/clusterdetails/AutomaticClusterConfiguration.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/AutomaticClusterConfiguration.html rename to olddoc/howto/clusterdetails/AutomaticClusterConfiguration.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/ManualClusterConfiguration.html b/olddoc/howto/clusterdetails/ManualClusterConfiguration.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/ManualClusterConfiguration.html rename to olddoc/howto/clusterdetails/ManualClusterConfiguration.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/c-jdbc.html b/olddoc/howto/clusterdetails/c-jdbc.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/c-jdbc.html rename to olddoc/howto/clusterdetails/c-jdbc.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/director.html b/olddoc/howto/clusterdetails/director.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/director.html rename to olddoc/howto/clusterdetails/director.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/mod_jk2-to-mod_jk.html b/olddoc/howto/clusterdetails/mod_jk2-to-mod_jk.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/mod_jk2-to-mod_jk.html rename to olddoc/howto/clusterdetails/mod_jk2-to-mod_jk.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/mod_jk2_embeddedtomcat.html b/olddoc/howto/clusterdetails/mod_jk2_embeddedtomcat.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/mod_jk2_embeddedtomcat.html rename to olddoc/howto/clusterdetails/mod_jk2_embeddedtomcat.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/mod_jk_embeddedtomcat.html b/olddoc/howto/clusterdetails/mod_jk_embeddedtomcat.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/mod_jk_embeddedtomcat.html rename to olddoc/howto/clusterdetails/mod_jk_embeddedtomcat.html diff --git a/jonas_doc/olddoc/howto/clusterdetails/sequoia.html b/olddoc/howto/clusterdetails/sequoia.html similarity index 100% rename from jonas_doc/olddoc/howto/clusterdetails/sequoia.html rename to olddoc/howto/clusterdetails/sequoia.html diff --git a/jonas_doc/olddoc/howto/common.css b/olddoc/howto/common.css similarity index 100% rename from jonas_doc/olddoc/howto/common.css rename to olddoc/howto/common.css diff --git a/jonas_doc/olddoc/howto/emb-images/emb-component.png b/olddoc/howto/emb-images/emb-component.png similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/emb-component.png rename to olddoc/howto/emb-images/emb-component.png diff --git a/jonas_doc/olddoc/howto/emb-images/emb-deps.png b/olddoc/howto/emb-images/emb-deps.png similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/emb-deps.png rename to olddoc/howto/emb-images/emb-deps.png diff --git a/jonas_doc/olddoc/howto/emb-images/mfb.png b/olddoc/howto/emb-images/mfb.png similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/mfb.png rename to olddoc/howto/emb-images/mfb.png diff --git a/jonas_doc/olddoc/howto/emb-images/src/emb-component.svg b/olddoc/howto/emb-images/src/emb-component.svg similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/src/emb-component.svg rename to olddoc/howto/emb-images/src/emb-component.svg diff --git a/jonas_doc/olddoc/howto/emb-images/src/emb-deps.svg b/olddoc/howto/emb-images/src/emb-deps.svg similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/src/emb-deps.svg rename to olddoc/howto/emb-images/src/emb-deps.svg diff --git a/jonas_doc/olddoc/howto/emb-images/src/mfb.svg b/olddoc/howto/emb-images/src/mfb.svg similarity index 100% rename from jonas_doc/olddoc/howto/emb-images/src/mfb.svg rename to olddoc/howto/emb-images/src/mfb.svg diff --git a/jonas_doc/olddoc/howto/images/JOnASJMX.gif b/olddoc/howto/images/JOnASJMX.gif similarity index 100% rename from jonas_doc/olddoc/howto/images/JOnASJMX.gif rename to olddoc/howto/images/JOnASJMX.gif diff --git a/jonas_doc/olddoc/howto/images/cluster1.gif b/olddoc/howto/images/cluster1.gif similarity index 100% rename from jonas_doc/olddoc/howto/images/cluster1.gif rename to olddoc/howto/images/cluster1.gif diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Apache.jpg b/olddoc/howto/images/clusterfiles/Apache.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Apache.jpg rename to olddoc/howto/images/clusterfiles/Apache.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Archi1.jpg b/olddoc/howto/images/clusterfiles/Archi1.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Archi1.jpg rename to olddoc/howto/images/clusterfiles/Archi1.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Archi2.jpg b/olddoc/howto/images/clusterfiles/Archi2.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Archi2.jpg rename to olddoc/howto/images/clusterfiles/Archi2.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Archi3.jpg b/olddoc/howto/images/clusterfiles/Archi3.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Archi3.jpg rename to olddoc/howto/images/clusterfiles/Archi3.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Archi4.jpg b/olddoc/howto/images/clusterfiles/Archi4.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Archi4.jpg rename to olddoc/howto/images/clusterfiles/Archi4.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Archi5.jpg b/olddoc/howto/images/clusterfiles/Archi5.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Archi5.jpg rename to olddoc/howto/images/clusterfiles/Archi5.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Architecture.jpg b/olddoc/howto/images/clusterfiles/Architecture.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Architecture.jpg rename to olddoc/howto/images/clusterfiles/Architecture.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/EJBCont.jpg b/olddoc/howto/images/clusterfiles/EJBCont.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/EJBCont.jpg rename to olddoc/howto/images/clusterfiles/EJBCont.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/FullJOnAS.jpg b/olddoc/howto/images/clusterfiles/FullJOnAS.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/FullJOnAS.jpg rename to olddoc/howto/images/clusterfiles/FullJOnAS.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/JOnASEJB.jpg b/olddoc/howto/images/clusterfiles/JOnASEJB.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/JOnASEJB.jpg rename to olddoc/howto/images/clusterfiles/JOnASEJB.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/JOnASWeb.jpg b/olddoc/howto/images/clusterfiles/JOnASWeb.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/JOnASWeb.jpg rename to olddoc/howto/images/clusterfiles/JOnASWeb.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Node.jpg b/olddoc/howto/images/clusterfiles/Node.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Node.jpg rename to olddoc/howto/images/clusterfiles/Node.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/Thumbs.db b/olddoc/howto/images/clusterfiles/Thumbs.db similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/Thumbs.db rename to olddoc/howto/images/clusterfiles/Thumbs.db diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/WebCont.jpg b/olddoc/howto/images/clusterfiles/WebCont.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/WebCont.jpg rename to olddoc/howto/images/clusterfiles/WebCont.jpg diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/common.css b/olddoc/howto/images/clusterfiles/common.css similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/common.css rename to olddoc/howto/images/clusterfiles/common.css diff --git a/jonas_doc/olddoc/howto/images/clusterfiles/sampleCluster2Screen.GIF b/olddoc/howto/images/clusterfiles/sampleCluster2Screen.GIF similarity index 100% rename from jonas_doc/olddoc/howto/images/clusterfiles/sampleCluster2Screen.GIF rename to olddoc/howto/images/clusterfiles/sampleCluster2Screen.GIF diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/JmsClustering-queues.jpg b/olddoc/howto/images/jmsclustering/JmsClustering-queues.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/JmsClustering-queues.jpg rename to olddoc/howto/images/jmsclustering/JmsClustering-queues.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/JmsClustering-topics.jpg b/olddoc/howto/images/jmsclustering/JmsClustering-topics.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/JmsClustering-topics.jpg rename to olddoc/howto/images/jmsclustering/JmsClustering-topics.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/joram.jpg b/olddoc/howto/images/jmsclustering/joram.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/joram.jpg rename to olddoc/howto/images/jmsclustering/joram.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/joram_ha.jpg b/olddoc/howto/images/jmsclustering/joram_ha.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/joram_ha.jpg rename to olddoc/howto/images/jmsclustering/joram_ha.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/mdb.jpg b/olddoc/howto/images/jmsclustering/mdb.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/mdb.jpg rename to olddoc/howto/images/jmsclustering/mdb.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/mdb_config.jpg b/olddoc/howto/images/jmsclustering/mdb_config.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/mdb_config.jpg rename to olddoc/howto/images/jmsclustering/mdb_config.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/queue.jpg b/olddoc/howto/images/jmsclustering/queue.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/queue.jpg rename to olddoc/howto/images/jmsclustering/queue.jpg diff --git a/jonas_doc/olddoc/howto/images/jmsclustering/topic.jpg b/olddoc/howto/images/jmsclustering/topic.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jmsclustering/topic.jpg rename to olddoc/howto/images/jmsclustering/topic.jpg diff --git a/jonas_doc/olddoc/howto/images/jonas_cmp.gif b/olddoc/howto/images/jonas_cmp.gif similarity index 100% rename from jonas_doc/olddoc/howto/images/jonas_cmp.gif rename to olddoc/howto/images/jonas_cmp.gif diff --git a/jonas_doc/olddoc/howto/images/jonasarch.gif b/olddoc/howto/images/jonasarch.gif similarity index 100% rename from jonas_doc/olddoc/howto/images/jonasarch.gif rename to olddoc/howto/images/jonasarch.gif diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg1.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg1.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg1.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg1.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg2.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg2.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg2.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg2.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg3.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg3.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg3.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg3.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg4.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg4.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg4.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg4.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg5.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg5.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg5.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg5.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg6.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg6.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg6.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg6.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg7.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg7.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg7.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg7.jpg diff --git a/jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg8.jpg b/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg8.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/jonastransactionrecoveryhowto/recovimg8.jpg rename to olddoc/howto/images/jonastransactionrecoveryhowto/recovimg8.jpg diff --git a/jonas_doc/olddoc/howto/images/logo_jonas.jpg b/olddoc/howto/images/logo_jonas.jpg similarity index 100% rename from jonas_doc/olddoc/howto/images/logo_jonas.jpg rename to olddoc/howto/images/logo_jonas.jpg diff --git a/jonas_doc/olddoc/howto/install_j2ee.html b/olddoc/howto/install_j2ee.html similarity index 100% rename from jonas_doc/olddoc/howto/install_j2ee.html rename to olddoc/howto/install_j2ee.html diff --git a/jonas_doc/olddoc/howto/install_jonas.html b/olddoc/howto/install_jonas.html similarity index 100% rename from jonas_doc/olddoc/howto/install_jonas.html rename to olddoc/howto/install_jonas.html diff --git a/jonas_doc/olddoc/howto/ws/sample-deploy.wsdd b/olddoc/howto/ws/sample-deploy.wsdd similarity index 100% rename from jonas_doc/olddoc/howto/ws/sample-deploy.wsdd rename to olddoc/howto/ws/sample-deploy.wsdd diff --git a/jonas_doc/olddoc/howto/ws/sample-server-config.wsdd b/olddoc/howto/ws/sample-server-config.wsdd similarity index 100% rename from jonas_doc/olddoc/howto/ws/sample-server-config.wsdd rename to olddoc/howto/ws/sample-server-config.wsdd diff --git a/jonas_doc/olddoc/howto/ws/sample-web.xml b/olddoc/howto/ws/sample-web.xml similarity index 100% rename from jonas_doc/olddoc/howto/ws/sample-web.xml rename to olddoc/howto/ws/sample-web.xml diff --git a/jonas_doc/olddoc/images/AreaGraph.png b/olddoc/images/AreaGraph.png similarity index 100% rename from jonas_doc/olddoc/images/AreaGraph.png rename to olddoc/images/AreaGraph.png diff --git a/jonas_doc/olddoc/images/JonasAdmin.gif b/olddoc/images/JonasAdmin.gif similarity index 100% rename from jonas_doc/olddoc/images/JonasAdmin.gif rename to olddoc/images/JonasAdmin.gif diff --git a/jonas_doc/olddoc/images/JonasAreas.png b/olddoc/images/JonasAreas.png similarity index 100% rename from jonas_doc/olddoc/images/JonasAreas.png rename to olddoc/images/JonasAreas.png diff --git a/jonas_doc/olddoc/images/WP_distr.gif b/olddoc/images/WP_distr.gif similarity index 100% rename from jonas_doc/olddoc/images/WP_distr.gif rename to olddoc/images/WP_distr.gif diff --git a/jonas_doc/olddoc/images/classloaders.png b/olddoc/images/classloaders.png similarity index 100% rename from jonas_doc/olddoc/images/classloaders.png rename to olddoc/images/classloaders.png diff --git a/jonas_doc/olddoc/images/cluster1.gif b/olddoc/images/cluster1.gif similarity index 100% rename from jonas_doc/olddoc/images/cluster1.gif rename to olddoc/images/cluster1.gif diff --git a/jonas_doc/olddoc/images/clusterd.gif b/olddoc/images/clusterd.gif similarity index 100% rename from jonas_doc/olddoc/images/clusterd.gif rename to olddoc/images/clusterd.gif diff --git a/jonas_doc/olddoc/images/clustering.gif b/olddoc/images/clustering.gif similarity index 100% rename from jonas_doc/olddoc/images/clustering.gif rename to olddoc/images/clustering.gif diff --git a/jonas_doc/olddoc/images/cmi-cluster-stub.gif b/olddoc/images/cmi-cluster-stub.gif similarity index 100% rename from jonas_doc/olddoc/images/cmi-cluster-stub.gif rename to olddoc/images/cmi-cluster-stub.gif diff --git a/jonas_doc/olddoc/images/cmi-jndi.gif b/olddoc/images/cmi-jndi.gif similarity index 100% rename from jonas_doc/olddoc/images/cmi-jndi.gif rename to olddoc/images/cmi-jndi.gif diff --git a/jonas_doc/olddoc/images/cmi.gif b/olddoc/images/cmi.gif similarity index 100% rename from jonas_doc/olddoc/images/cmi.gif rename to olddoc/images/cmi.gif diff --git a/jonas_doc/olddoc/images/domain_new.gif b/olddoc/images/domain_new.gif similarity index 100% rename from jonas_doc/olddoc/images/domain_new.gif rename to olddoc/images/domain_new.gif diff --git a/jonas_doc/olddoc/images/eb_img_31.gif b/olddoc/images/eb_img_31.gif similarity index 100% rename from jonas_doc/olddoc/images/eb_img_31.gif rename to olddoc/images/eb_img_31.gif diff --git a/jonas_doc/olddoc/images/favicon.ico b/olddoc/images/favicon.ico similarity index 100% rename from jonas_doc/olddoc/images/favicon.ico rename to olddoc/images/favicon.ico diff --git a/jonas_doc/olddoc/images/j2ee.gif b/olddoc/images/j2ee.gif similarity index 100% rename from jonas_doc/olddoc/images/j2ee.gif rename to olddoc/images/j2ee.gif diff --git a/jonas_doc/olddoc/images/jcaarch.gif b/olddoc/images/jcaarch.gif similarity index 100% rename from jonas_doc/olddoc/images/jcaarch.gif rename to olddoc/images/jcaarch.gif diff --git a/jonas_doc/olddoc/images/jconsole.png b/olddoc/images/jconsole.png similarity index 100% rename from jonas_doc/olddoc/images/jconsole.png rename to olddoc/images/jconsole.png diff --git a/jonas_doc/olddoc/images/jonas48repscenarios.jpg b/olddoc/images/jonas48repscenarios.jpg similarity index 100% rename from jonas_doc/olddoc/images/jonas48repscenarios.jpg rename to olddoc/images/jonas48repscenarios.jpg diff --git a/jonas_doc/olddoc/images/jonasTree.png b/olddoc/images/jonasTree.png similarity index 100% rename from jonas_doc/olddoc/images/jonasTree.png rename to olddoc/images/jonasTree.png diff --git a/jonas_doc/olddoc/images/jonasarch.gif b/olddoc/images/jonasarch.gif similarity index 100% rename from jonas_doc/olddoc/images/jonasarch.gif rename to olddoc/images/jonasarch.gif diff --git a/jonas_doc/olddoc/images/logo_jonas.jpg b/olddoc/images/logo_jonas.jpg similarity index 100% rename from jonas_doc/olddoc/images/logo_jonas.jpg rename to olddoc/images/logo_jonas.jpg diff --git a/jonas_doc/olddoc/images/pix.gif b/olddoc/images/pix.gif similarity index 100% rename from jonas_doc/olddoc/images/pix.gif rename to olddoc/images/pix.gif diff --git a/jonas_doc/olddoc/images/roles1.gif b/olddoc/images/roles1.gif similarity index 100% rename from jonas_doc/olddoc/images/roles1.gif rename to olddoc/images/roles1.gif diff --git a/jonas_doc/olddoc/images/sfsb-rep.jpg b/olddoc/images/sfsb-rep.jpg similarity index 100% rename from jonas_doc/olddoc/images/sfsb-rep.jpg rename to olddoc/images/sfsb-rep.jpg diff --git a/jonas_doc/olddoc/images/ws_client.jpg b/olddoc/images/ws_client.jpg similarity index 100% rename from jonas_doc/olddoc/images/ws_client.jpg rename to olddoc/images/ws_client.jpg diff --git a/jonas_doc/olddoc/images/ws_endpoint.jpg b/olddoc/images/ws_endpoint.jpg similarity index 100% rename from jonas_doc/olddoc/images/ws_endpoint.jpg rename to olddoc/images/ws_endpoint.jpg diff --git a/jonas_doc/olddoc/index.html b/olddoc/index.html similarity index 100% rename from jonas_doc/olddoc/index.html rename to olddoc/index.html diff --git a/jonas_doc/pom.xml b/pom.xml similarity index 100% rename from jonas_doc/pom.xml rename to pom.xml diff --git a/jonas_doc/src/docbook/doc-en/Glossary.xml b/src/docbook/doc-en/Glossary.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/Glossary.xml rename to src/docbook/doc-en/Glossary.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/JSR160_support.xml b/src/docbook/doc-en/admin/JSR160_support.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/JSR160_support.xml rename to src/docbook/doc-en/admin/JSR160_support.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/admindefs.xml b/src/docbook/doc-en/admin/admindefs.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/admindefs.xml rename to src/docbook/doc-en/admin/admindefs.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/adminfunctions.xml b/src/docbook/doc-en/admin/adminfunctions.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/adminfunctions.xml rename to src/docbook/doc-en/admin/adminfunctions.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/adminmbeans.xml b/src/docbook/doc-en/admin/adminmbeans.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/adminmbeans.xml rename to src/docbook/doc-en/admin/adminmbeans.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/admintools.xml b/src/docbook/doc-en/admin/admintools.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/admintools.xml rename to src/docbook/doc-en/admin/admintools.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/adminuse.xml b/src/docbook/doc-en/admin/adminuse.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/adminuse.xml rename to src/docbook/doc-en/admin/adminuse.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/install.xml b/src/docbook/doc-en/admin/install.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/install.xml rename to src/docbook/doc-en/admin/install.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/mejb.xml b/src/docbook/doc-en/admin/mejb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/mejb.xml rename to src/docbook/doc-en/admin/mejb.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/mejbaccess.xml b/src/docbook/doc-en/admin/mejbaccess.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/mejbaccess.xml rename to src/docbook/doc-en/admin/mejbaccess.xml diff --git a/jonas_doc/src/docbook/doc-en/admin/threadStackDump.xml b/src/docbook/doc-en/admin/threadStackDump.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/admin/threadStackDump.xml rename to src/docbook/doc-en/admin/threadStackDump.xml diff --git a/jonas_doc/src/docbook/doc-en/administration_guide.xml b/src/docbook/doc-en/administration_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/administration_guide.xml rename to src/docbook/doc-en/administration_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/ant_tasks.xml b/src/docbook/doc-en/ant_tasks.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ant_tasks.xml rename to src/docbook/doc-en/ant_tasks.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_ejbjar.xml b/src/docbook/doc-en/anttasks/ant_ejbjar.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_ejbjar.xml rename to src/docbook/doc-en/anttasks/ant_ejbjar.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_genic.xml b/src/docbook/doc-en/anttasks/ant_genic.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_genic.xml rename to src/docbook/doc-en/anttasks/ant_genic.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_jonas.xml b/src/docbook/doc-en/anttasks/ant_jonas.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_jonas.xml rename to src/docbook/doc-en/anttasks/ant_jonas.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_jonasbase.xml b/src/docbook/doc-en/anttasks/ant_jonasbase.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_jonasbase.xml rename to src/docbook/doc-en/anttasks/ant_jonasbase.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_newjc.xml b/src/docbook/doc-en/anttasks/ant_newjc.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_newjc.xml rename to src/docbook/doc-en/anttasks/ant_newjc.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_property.xml b/src/docbook/doc-en/anttasks/ant_property.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_property.xml rename to src/docbook/doc-en/anttasks/ant_property.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_serverdeploy.xml b/src/docbook/doc-en/anttasks/ant_serverdeploy.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_serverdeploy.xml rename to src/docbook/doc-en/anttasks/ant_serverdeploy.xml diff --git a/jonas_doc/src/docbook/doc-en/anttasks/ant_wsgen.xml b/src/docbook/doc-en/anttasks/ant_wsgen.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/anttasks/ant_wsgen.xml rename to src/docbook/doc-en/anttasks/ant_wsgen.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/clustering-variables.xml b/src/docbook/doc-en/clustering/clustering-variables.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/clustering-variables.xml rename to src/docbook/doc-en/clustering/clustering-variables.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/configuration/ejb.xml b/src/docbook/doc-en/clustering/configuration/ejb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/configuration/ejb.xml rename to src/docbook/doc-en/clustering/configuration/ejb.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/configuration/jms.xml b/src/docbook/doc-en/clustering/configuration/jms.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/configuration/jms.xml rename to src/docbook/doc-en/clustering/configuration/jms.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/configuration/web.xml b/src/docbook/doc-en/clustering/configuration/web.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/configuration/web.xml rename to src/docbook/doc-en/clustering/configuration/web.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/examples/sampleCluster2.xml b/src/docbook/doc-en/clustering/examples/sampleCluster2.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/examples/sampleCluster2.xml rename to src/docbook/doc-en/clustering/examples/sampleCluster2.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/examples/sampleCluster3.xml b/src/docbook/doc-en/clustering/examples/sampleCluster3.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/examples/sampleCluster3.xml rename to src/docbook/doc-en/clustering/examples/sampleCluster3.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/faq/faq.xml b/src/docbook/doc-en/clustering/faq/faq.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/faq/faq.xml rename to src/docbook/doc-en/clustering/faq/faq.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/management/cluster.xml b/src/docbook/doc-en/clustering/management/cluster.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/management/cluster.xml rename to src/docbook/doc-en/clustering/management/cluster.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/management/clusterd.xml b/src/docbook/doc-en/clustering/management/clusterd.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/management/clusterd.xml rename to src/docbook/doc-en/clustering/management/clusterd.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/management/cmi.xml b/src/docbook/doc-en/clustering/management/cmi.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/management/cmi.xml rename to src/docbook/doc-en/clustering/management/cmi.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/management/domain.xml b/src/docbook/doc-en/clustering/management/domain.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/management/domain.xml rename to src/docbook/doc-en/clustering/management/domain.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/management/ha.xml b/src/docbook/doc-en/clustering/management/ha.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/management/ha.xml rename to src/docbook/doc-en/clustering/management/ha.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/principles/clustering.xml b/src/docbook/doc-en/clustering/principles/clustering.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/principles/clustering.xml rename to src/docbook/doc-en/clustering/principles/clustering.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/principles/management.xml b/src/docbook/doc-en/clustering/principles/management.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/principles/management.xml rename to src/docbook/doc-en/clustering/principles/management.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/principles/terminology.xml b/src/docbook/doc-en/clustering/principles/terminology.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/principles/terminology.xml rename to src/docbook/doc-en/clustering/principles/terminology.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/tooling/jasmine.xml b/src/docbook/doc-en/clustering/tooling/jasmine.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/tooling/jasmine.xml rename to src/docbook/doc-en/clustering/tooling/jasmine.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering/tooling/jkmanager.xml b/src/docbook/doc-en/clustering/tooling/jkmanager.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering/tooling/jkmanager.xml rename to src/docbook/doc-en/clustering/tooling/jkmanager.xml diff --git a/jonas_doc/src/docbook/doc-en/clustering_guide.xml b/src/docbook/doc-en/clustering_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/clustering_guide.xml rename to src/docbook/doc-en/clustering_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/command_guide.xml b/src/docbook/doc-en/command_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/command_guide.xml rename to src/docbook/doc-en/command_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/configuration_newjb.xml b/src/docbook/doc-en/commands/configuration_newjb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/configuration_newjb.xml rename to src/docbook/doc-en/commands/configuration_newjb.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/configuration_newjc.xml b/src/docbook/doc-en/commands/configuration_newjc.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/configuration_newjc.xml rename to src/docbook/doc-en/commands/configuration_newjc.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/configuration_raconfig.xml b/src/docbook/doc-en/commands/configuration_raconfig.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/configuration_raconfig.xml rename to src/docbook/doc-en/commands/configuration_raconfig.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/genic.xml b/src/docbook/doc-en/commands/genic.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/genic.xml rename to src/docbook/doc-en/commands/genic.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/jclient.xml b/src/docbook/doc-en/commands/jclient.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/jclient.xml rename to src/docbook/doc-en/commands/jclient.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/jms.xml b/src/docbook/doc-en/commands/jms.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/jms.xml rename to src/docbook/doc-en/commands/jms.xml diff --git a/jonas_doc/src/docbook/doc-en/commands/jonas.xml b/src/docbook/doc-en/commands/jonas.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/commands/jonas.xml rename to src/docbook/doc-en/commands/jonas.xml diff --git a/jonas_doc/src/docbook/doc-en/config/jonas_properties.xml b/src/docbook/doc-en/config/jonas_properties.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/config/jonas_properties.xml rename to src/docbook/doc-en/config/jonas_properties.xml diff --git a/jonas_doc/src/docbook/doc-en/config/jonasbase_conf.xml b/src/docbook/doc-en/config/jonasbase_conf.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/config/jonasbase_conf.xml rename to src/docbook/doc-en/config/jonasbase_conf.xml diff --git a/jonas_doc/src/docbook/doc-en/config/jonasbase_creation.xml b/src/docbook/doc-en/config/jonasbase_creation.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/config/jonasbase_creation.xml rename to src/docbook/doc-en/config/jonasbase_creation.xml diff --git a/jonas_doc/src/docbook/doc-en/config/jonasbase_structure.xml b/src/docbook/doc-en/config/jonasbase_structure.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/config/jonasbase_structure.xml rename to src/docbook/doc-en/config/jonasbase_structure.xml diff --git a/jonas_doc/src/docbook/doc-en/config/jonasroot_structure.xml b/src/docbook/doc-en/config/jonasroot_structure.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/config/jonasroot_structure.xml rename to src/docbook/doc-en/config/jonasroot_structure.xml diff --git a/jonas_doc/src/docbook/doc-en/configuration_guide.xml b/src/docbook/doc-en/configuration_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/configuration_guide.xml rename to src/docbook/doc-en/configuration_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/connector_pg.xml b/src/docbook/doc-en/connector_pg.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/connector_pg.xml rename to src/docbook/doc-en/connector_pg.xml diff --git a/jonas_doc/src/docbook/doc-en/continuous_integration_guide.xml b/src/docbook/doc-en/continuous_integration_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/continuous_integration_guide.xml rename to src/docbook/doc-en/continuous_integration_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/deploy/ear.xml b/src/docbook/doc-en/deploy/ear.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deploy/ear.xml rename to src/docbook/doc-en/deploy/ear.xml diff --git a/jonas_doc/src/docbook/doc-en/deploy/ejb2.xml b/src/docbook/doc-en/deploy/ejb2.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deploy/ejb2.xml rename to src/docbook/doc-en/deploy/ejb2.xml diff --git a/jonas_doc/src/docbook/doc-en/deploy/principes.xml b/src/docbook/doc-en/deploy/principes.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deploy/principes.xml rename to src/docbook/doc-en/deploy/principes.xml diff --git a/jonas_doc/src/docbook/doc-en/deploy/war.xml b/src/docbook/doc-en/deploy/war.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deploy/war.xml rename to src/docbook/doc-en/deploy/war.xml diff --git a/jonas_doc/src/docbook/doc-en/deploy/webapps.xml b/src/docbook/doc-en/deploy/webapps.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deploy/webapps.xml rename to src/docbook/doc-en/deploy/webapps.xml diff --git a/jonas_doc/src/docbook/doc-en/deployer_guide.xml b/src/docbook/doc-en/deployer_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployer_guide.xml rename to src/docbook/doc-en/deployer_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-common.xml b/src/docbook/doc-en/deployment-plans/deployment-plan-common.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-common.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan-common.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-element-attribute.xml b/src/docbook/doc-en/deployment-plans/deployment-plan-element-attribute.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-element-attribute.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan-element-attribute.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-mixed.xml b/src/docbook/doc-en/deployment-plans/deployment-plan-mixed.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-mixed.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan-mixed.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-sample-example.xml b/src/docbook/doc-en/deployment-plans/deployment-plan-sample-example.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-sample-example.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan-sample-example.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-type.xml b/src/docbook/doc-en/deployment-plans/deployment-plan-type.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan-type.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan-type.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan.xml b/src/docbook/doc-en/deployment-plans/deployment-plan.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/deployment-plan.xml rename to src/docbook/doc-en/deployment-plans/deployment-plan.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/introduction.xml b/src/docbook/doc-en/deployment-plans/introduction.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/introduction.xml rename to src/docbook/doc-en/deployment-plans/introduction.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/jonas/jonas-deployment-plan.xml b/src/docbook/doc-en/deployment-plans/jonas/jonas-deployment-plan.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/jonas/jonas-deployment-plan.xml rename to src/docbook/doc-en/deployment-plans/jonas/jonas-deployment-plan.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/repositories.xml b/src/docbook/doc-en/deployment-plans/repositories.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/repositories.xml rename to src/docbook/doc-en/deployment-plans/repositories.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/deployment-type-specific-data.xml b/src/docbook/doc-en/deployment-plans/typespecific/deployment-type-specific-data.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/deployment-type-specific-data.xml rename to src/docbook/doc-en/deployment-plans/typespecific/deployment-type-specific-data.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/maven2-deployment-data.xml b/src/docbook/doc-en/deployment-plans/typespecific/maven2-deployment-data.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/maven2-deployment-data.xml rename to src/docbook/doc-en/deployment-plans/typespecific/maven2-deployment-data.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/obr-deployment-data.xml b/src/docbook/doc-en/deployment-plans/typespecific/obr-deployment-data.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/obr-deployment-data.xml rename to src/docbook/doc-en/deployment-plans/typespecific/obr-deployment-data.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/url-deployment-data.xml b/src/docbook/doc-en/deployment-plans/typespecific/url-deployment-data.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans/typespecific/url-deployment-data.xml rename to src/docbook/doc-en/deployment-plans/typespecific/url-deployment-data.xml diff --git a/jonas_doc/src/docbook/doc-en/deployment-plans_guide.xml b/src/docbook/doc-en/deployment-plans_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/deployment-plans_guide.xml rename to src/docbook/doc-en/deployment-plans_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide.xml b/src/docbook/doc-en/developerguide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide.xml rename to src/docbook/doc-en/developerguide.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/building.xml b/src/docbook/doc-en/developerguide/building.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/building.xml rename to src/docbook/doc-en/developerguide/building.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/code_convention.xml b/src/docbook/doc-en/developerguide/code_convention.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/code_convention.xml rename to src/docbook/doc-en/developerguide/code_convention.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/contributing.xml b/src/docbook/doc-en/developerguide/contributing.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/contributing.xml rename to src/docbook/doc-en/developerguide/contributing.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/getting_from_svn.xml b/src/docbook/doc-en/developerguide/getting_from_svn.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/getting_from_svn.xml rename to src/docbook/doc-en/developerguide/getting_from_svn.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/running.xml b/src/docbook/doc-en/developerguide/running.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/running.xml rename to src/docbook/doc-en/developerguide/running.xml diff --git a/jonas_doc/src/docbook/doc-en/developerguide/usingexamples.xml b/src/docbook/doc-en/developerguide/usingexamples.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/developerguide/usingexamples.xml rename to src/docbook/doc-en/developerguide/usingexamples.xml diff --git a/jonas_doc/src/docbook/doc-en/eardeploy.xml b/src/docbook/doc-en/eardeploy.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/eardeploy.xml rename to src/docbook/doc-en/eardeploy.xml diff --git a/jonas_doc/src/docbook/doc-en/ejb2_programmer_guide.xml b/src/docbook/doc-en/ejb2_programmer_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ejb2_programmer_guide.xml rename to src/docbook/doc-en/ejb2_programmer_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/ejb3_programmer_guide.xml b/src/docbook/doc-en/ejb3_programmer_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ejb3_programmer_guide.xml rename to src/docbook/doc-en/ejb3_programmer_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/essai.xml b/src/docbook/doc-en/essai.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/essai.xml rename to src/docbook/doc-en/essai.xml diff --git a/jonas_doc/src/docbook/doc-en/essai2.xml b/src/docbook/doc-en/essai2.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/essai2.xml rename to src/docbook/doc-en/essai2.xml diff --git a/jonas_doc/src/docbook/doc-en/essaibook.xml b/src/docbook/doc-en/essaibook.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/essaibook.xml rename to src/docbook/doc-en/essaibook.xml diff --git a/jonas_doc/src/docbook/doc-en/getting_started_guide.xml b/src/docbook/doc-en/getting_started_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/getting_started_guide.xml rename to src/docbook/doc-en/getting_started_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/howto.xml b/src/docbook/doc-en/howto.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto.xml rename to src/docbook/doc-en/howto.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_distributed_joram.xml b/src/docbook/doc-en/howto_distributed_joram.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_distributed_joram.xml rename to src/docbook/doc-en/howto_distributed_joram.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_firewall.xml b/src/docbook/doc-en/howto_firewall.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_firewall.xml rename to src/docbook/doc-en/howto_firewall.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_install_jdbc_driver.xml b/src/docbook/doc-en/howto_install_jdbc_driver.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_install_jdbc_driver.xml rename to src/docbook/doc-en/howto_install_jdbc_driver.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_mbeans.xml b/src/docbook/doc-en/howto_mbeans.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_mbeans.xml rename to src/docbook/doc-en/howto_mbeans.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_services.xml b/src/docbook/doc-en/howto_services.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_services.xml rename to src/docbook/doc-en/howto_services.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_services_on_demand.xml b/src/docbook/doc-en/howto_services_on_demand.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_services_on_demand.xml rename to src/docbook/doc-en/howto_services_on_demand.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_track_jdbc_connectionleaks.xml b/src/docbook/doc-en/howto_track_jdbc_connectionleaks.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_track_jdbc_connectionleaks.xml rename to src/docbook/doc-en/howto_track_jdbc_connectionleaks.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_use_cdi.xml b/src/docbook/doc-en/howto_use_cdi.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_use_cdi.xml rename to src/docbook/doc-en/howto_use_cdi.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_use_jaxrs.xml b/src/docbook/doc-en/howto_use_jaxrs.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_use_jaxrs.xml rename to src/docbook/doc-en/howto_use_jaxrs.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_webspheremq.xml b/src/docbook/doc-en/howto_webspheremq.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_webspheremq.xml rename to src/docbook/doc-en/howto_webspheremq.xml diff --git a/jonas_doc/src/docbook/doc-en/howto_win32_service.xml b/src/docbook/doc-en/howto_win32_service.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/howto_win32_service.xml rename to src/docbook/doc-en/howto_win32_service.xml diff --git a/jonas_doc/src/docbook/doc-en/index.html b/src/docbook/doc-en/index.html similarity index 100% rename from jonas_doc/src/docbook/doc-en/index.html rename to src/docbook/doc-en/index.html diff --git a/jonas_doc/src/docbook/doc-en/install/install_j2ee.xml b/src/docbook/doc-en/install/install_j2ee.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/install/install_j2ee.xml rename to src/docbook/doc-en/install/install_j2ee.xml diff --git a/jonas_doc/src/docbook/doc-en/install/install_jonas.xml b/src/docbook/doc-en/install/install_jonas.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/install/install_jonas.xml rename to src/docbook/doc-en/install/install_jonas.xml diff --git a/jonas_doc/src/docbook/doc-en/j2ee/classloader.xml b/src/docbook/doc-en/j2ee/classloader.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2ee/classloader.xml rename to src/docbook/doc-en/j2ee/classloader.xml diff --git a/jonas_doc/src/docbook/doc-en/j2ee/j2ee-app.xml b/src/docbook/doc-en/j2ee/j2ee-app.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2ee/j2ee-app.xml rename to src/docbook/doc-en/j2ee/j2ee-app.xml diff --git a/jonas_doc/src/docbook/doc-en/j2ee/j2ee-ejb.xml b/src/docbook/doc-en/j2ee/j2ee-ejb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2ee/j2ee-ejb.xml rename to src/docbook/doc-en/j2ee/j2ee-ejb.xml diff --git a/jonas_doc/src/docbook/doc-en/j2ee/j2ee-web.xml b/src/docbook/doc-en/j2ee/j2ee-web.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2ee/j2ee-web.xml rename to src/docbook/doc-en/j2ee/j2ee-web.xml diff --git a/jonas_doc/src/docbook/doc-en/j2eeclient_pg.xml b/src/docbook/doc-en/j2eeclient_pg.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2eeclient_pg.xml rename to src/docbook/doc-en/j2eeclient_pg.xml diff --git a/jonas_doc/src/docbook/doc-en/j2eeprogrammerguide.xml b/src/docbook/doc-en/j2eeprogrammerguide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/j2eeprogrammerguide.xml rename to src/docbook/doc-en/j2eeprogrammerguide.xml diff --git a/jonas_doc/src/docbook/doc-en/jaxws_developer_guide.xml b/src/docbook/doc-en/jaxws_developer_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/jaxws_developer_guide.xml rename to src/docbook/doc-en/jaxws_developer_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/basics-of-classloading.xml b/src/docbook/doc-en/loaders/basics-of-classloading.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/basics-of-classloading.xml rename to src/docbook/doc-en/loaders/basics-of-classloading.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/classloading-in-jonas.xml b/src/docbook/doc-en/loaders/classloading-in-jonas.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/classloading-in-jonas.xml rename to src/docbook/doc-en/loaders/classloading-in-jonas.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/configuration.xml b/src/docbook/doc-en/loaders/configuration.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/configuration.xml rename to src/docbook/doc-en/loaders/configuration.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/glossary.xml b/src/docbook/doc-en/loaders/glossary.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/glossary.xml rename to src/docbook/doc-en/loaders/glossary.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/tips.xml b/src/docbook/doc-en/loaders/tips.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/tips.xml rename to src/docbook/doc-en/loaders/tips.xml diff --git a/jonas_doc/src/docbook/doc-en/loaders/tooling.xml b/src/docbook/doc-en/loaders/tooling.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/loaders/tooling.xml rename to src/docbook/doc-en/loaders/tooling.xml diff --git a/jonas_doc/src/docbook/doc-en/log/config.xml b/src/docbook/doc-en/log/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/log/config.xml rename to src/docbook/doc-en/log/config.xml diff --git a/jonas_doc/src/docbook/doc-en/mastering-jonas-classloaders.xml b/src/docbook/doc-en/mastering-jonas-classloaders.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/mastering-jonas-classloaders.xml rename to src/docbook/doc-en/mastering-jonas-classloaders.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/jonas_4_7.xml b/src/docbook/doc-en/migration/jonas_4_7.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/jonas_4_7.xml rename to src/docbook/doc-en/migration/jonas_4_7.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/jonas_4_8.xml b/src/docbook/doc-en/migration/jonas_4_8.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/jonas_4_8.xml rename to src/docbook/doc-en/migration/jonas_4_8.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/jonas_4_9.xml b/src/docbook/doc-en/migration/jonas_4_9.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/jonas_4_9.xml rename to src/docbook/doc-en/migration/jonas_4_9.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/jonas_5_0.xml b/src/docbook/doc-en/migration/jonas_5_0.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/jonas_5_0.xml rename to src/docbook/doc-en/migration/jonas_5_0.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/versionAPI.xml b/src/docbook/doc-en/migration/versionAPI.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/versionAPI.xml rename to src/docbook/doc-en/migration/versionAPI.xml diff --git a/jonas_doc/src/docbook/doc-en/migration/versionModules.xml b/src/docbook/doc-en/migration/versionModules.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration/versionModules.xml rename to src/docbook/doc-en/migration/versionModules.xml diff --git a/jonas_doc/src/docbook/doc-en/migration_guide.xml b/src/docbook/doc-en/migration_guide.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/migration_guide.xml rename to src/docbook/doc-en/migration_guide.xml diff --git a/jonas_doc/src/docbook/doc-en/protocols/config.xml b/src/docbook/doc-en/protocols/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/protocols/config.xml rename to src/docbook/doc-en/protocols/config.xml diff --git a/jonas_doc/src/docbook/doc-en/ra/JDBCRA.xml b/src/docbook/doc-en/ra/JDBCRA.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ra/JDBCRA.xml rename to src/docbook/doc-en/ra/JDBCRA.xml diff --git a/jonas_doc/src/docbook/doc-en/ra/JDBCXML.xml b/src/docbook/doc-en/ra/JDBCXML.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ra/JDBCXML.xml rename to src/docbook/doc-en/ra/JDBCXML.xml diff --git a/jonas_doc/src/docbook/doc-en/ra/JMSRA.xml b/src/docbook/doc-en/ra/JMSRA.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/ra/JMSRA.xml rename to src/docbook/doc-en/ra/JMSRA.xml diff --git a/jonas_doc/src/docbook/doc-en/security/configsecurity.xml b/src/docbook/doc-en/security/configsecurity.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/security/configsecurity.xml rename to src/docbook/doc-en/security/configsecurity.xml diff --git a/jonas_doc/src/docbook/doc-en/services/cmi/config.xml b/src/docbook/doc-en/services/cmi/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/cmi/config.xml rename to src/docbook/doc-en/services/cmi/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/db/config.xml b/src/docbook/doc-en/services/db/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/db/config.xml rename to src/docbook/doc-en/services/db/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/dbm/config.xml b/src/docbook/doc-en/services/dbm/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/dbm/config.xml rename to src/docbook/doc-en/services/dbm/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/dbm/jdbcdatasource.xml b/src/docbook/doc-en/services/dbm/jdbcdatasource.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/dbm/jdbcdatasource.xml rename to src/docbook/doc-en/services/dbm/jdbcdatasource.xml diff --git a/jonas_doc/src/docbook/doc-en/services/depmonitor/config.xml b/src/docbook/doc-en/services/depmonitor/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/depmonitor/config.xml rename to src/docbook/doc-en/services/depmonitor/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/discovery/config.xml b/src/docbook/doc-en/services/discovery/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/discovery/config.xml rename to src/docbook/doc-en/services/discovery/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ear/config.xml b/src/docbook/doc-en/services/ear/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ear/config.xml rename to src/docbook/doc-en/services/ear/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/cmp2_usage.xml b/src/docbook/doc-en/services/ejb2/cmp2_usage.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/cmp2_usage.xml rename to src/docbook/doc-en/services/ejb2/cmp2_usage.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/config.xml b/src/docbook/doc-en/services/ejb2/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/config.xml rename to src/docbook/doc-en/services/ejb2/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/db_access_bmp.xml b/src/docbook/doc-en/services/ejb2/db_access_bmp.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/db_access_bmp.xml rename to src/docbook/doc-en/services/ejb2/db_access_bmp.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/db_access_cmp.xml b/src/docbook/doc-en/services/ejb2/db_access_cmp.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/db_access_cmp.xml rename to src/docbook/doc-en/services/ejb2/db_access_cmp.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/deploy.xml b/src/docbook/doc-en/services/ejb2/deploy.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/deploy.xml rename to src/docbook/doc-en/services/ejb2/deploy.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/entity.xml b/src/docbook/doc-en/services/ejb2/entity.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/entity.xml rename to src/docbook/doc-en/services/ejb2/entity.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/entity_tuning.xml b/src/docbook/doc-en/services/ejb2/entity_tuning.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/entity_tuning.xml rename to src/docbook/doc-en/services/ejb2/entity_tuning.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/environment.xml b/src/docbook/doc-en/services/ejb2/environment.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/environment.xml rename to src/docbook/doc-en/services/ejb2/environment.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/mdb.xml b/src/docbook/doc-en/services/ejb2/mdb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/mdb.xml rename to src/docbook/doc-en/services/ejb2/mdb.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/mdb_tuning.xml b/src/docbook/doc-en/services/ejb2/mdb_tuning.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/mdb_tuning.xml rename to src/docbook/doc-en/services/ejb2/mdb_tuning.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/packaging.xml b/src/docbook/doc-en/services/ejb2/packaging.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/packaging.xml rename to src/docbook/doc-en/services/ejb2/packaging.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/security.xml b/src/docbook/doc-en/services/ejb2/security.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/security.xml rename to src/docbook/doc-en/services/ejb2/security.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/session.xml b/src/docbook/doc-en/services/ejb2/session.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/session.xml rename to src/docbook/doc-en/services/ejb2/session.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/session_tuning.xml b/src/docbook/doc-en/services/ejb2/session_tuning.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/session_tuning.xml rename to src/docbook/doc-en/services/ejb2/session_tuning.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb2/transaction.xml b/src/docbook/doc-en/services/ejb2/transaction.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb2/transaction.xml rename to src/docbook/doc-en/services/ejb2/transaction.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ejb3/config.xml b/src/docbook/doc-en/services/ejb3/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ejb3/config.xml rename to src/docbook/doc-en/services/ejb3/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/ha/config.xml b/src/docbook/doc-en/services/ha/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/ha/config.xml rename to src/docbook/doc-en/services/ha/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/jaxrpc/config.xml b/src/docbook/doc-en/services/jaxrpc/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/jaxrpc/config.xml rename to src/docbook/doc-en/services/jaxrpc/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/jaxws/config.xml b/src/docbook/doc-en/services/jaxws/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/jaxws/config.xml rename to src/docbook/doc-en/services/jaxws/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/jmx/config.xml b/src/docbook/doc-en/services/jmx/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/jmx/config.xml rename to src/docbook/doc-en/services/jmx/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/jtm/config.xml b/src/docbook/doc-en/services/jtm/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/jtm/config.xml rename to src/docbook/doc-en/services/jtm/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/mail/config.xml b/src/docbook/doc-en/services/mail/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/mail/config.xml rename to src/docbook/doc-en/services/mail/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/registry/config.xml b/src/docbook/doc-en/services/registry/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/registry/config.xml rename to src/docbook/doc-en/services/registry/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/resource/config.xml b/src/docbook/doc-en/services/resource/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/resource/config.xml rename to src/docbook/doc-en/services/resource/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/resource/connector_packaging.xml b/src/docbook/doc-en/services/resource/connector_packaging.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/resource/connector_packaging.xml rename to src/docbook/doc-en/services/resource/connector_packaging.xml diff --git a/jonas_doc/src/docbook/doc-en/services/resource/connector_principles.xml b/src/docbook/doc-en/services/resource/connector_principles.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/resource/connector_principles.xml rename to src/docbook/doc-en/services/resource/connector_principles.xml diff --git a/jonas_doc/src/docbook/doc-en/services/resource/connector_using.xml b/src/docbook/doc-en/services/resource/connector_using.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/resource/connector_using.xml rename to src/docbook/doc-en/services/resource/connector_using.xml diff --git a/jonas_doc/src/docbook/doc-en/services/resource/jonas-ra.xml b/src/docbook/doc-en/services/resource/jonas-ra.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/resource/jonas-ra.xml rename to src/docbook/doc-en/services/resource/jonas-ra.xml diff --git a/jonas_doc/src/docbook/doc-en/services/security/config.xml b/src/docbook/doc-en/services/security/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/security/config.xml rename to src/docbook/doc-en/services/security/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/smartclient/config.xml b/src/docbook/doc-en/services/smartclient/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/smartclient/config.xml rename to src/docbook/doc-en/services/smartclient/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/versioning/about.xml b/src/docbook/doc-en/services/versioning/about.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/versioning/about.xml rename to src/docbook/doc-en/services/versioning/about.xml diff --git a/jonas_doc/src/docbook/doc-en/services/versioning/config.xml b/src/docbook/doc-en/services/versioning/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/versioning/config.xml rename to src/docbook/doc-en/services/versioning/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/versioning/versioning-ejb.xml b/src/docbook/doc-en/services/versioning/versioning-ejb.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/versioning/versioning-ejb.xml rename to src/docbook/doc-en/services/versioning/versioning-ejb.xml diff --git a/jonas_doc/src/docbook/doc-en/services/versioning/versioning-web.xml b/src/docbook/doc-en/services/versioning/versioning-web.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/versioning/versioning-web.xml rename to src/docbook/doc-en/services/versioning/versioning-web.xml diff --git a/jonas_doc/src/docbook/doc-en/services/wc/config.xml b/src/docbook/doc-en/services/wc/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/wc/config.xml rename to src/docbook/doc-en/services/wc/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/web/config.xml b/src/docbook/doc-en/services/web/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/web/config.xml rename to src/docbook/doc-en/services/web/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/web/webcomponent.xml b/src/docbook/doc-en/services/web/webcomponent.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/web/webcomponent.xml rename to src/docbook/doc-en/services/web/webcomponent.xml diff --git a/jonas_doc/src/docbook/doc-en/services/web/webdeploy.xml b/src/docbook/doc-en/services/web/webdeploy.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/web/webdeploy.xml rename to src/docbook/doc-en/services/web/webdeploy.xml diff --git a/jonas_doc/src/docbook/doc-en/services/web/webpackaging.xml b/src/docbook/doc-en/services/web/webpackaging.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/web/webpackaging.xml rename to src/docbook/doc-en/services/web/webpackaging.xml diff --git a/jonas_doc/src/docbook/doc-en/services/wm/config.xml b/src/docbook/doc-en/services/wm/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/wm/config.xml rename to src/docbook/doc-en/services/wm/config.xml diff --git a/jonas_doc/src/docbook/doc-en/services/wsdl-publisher/config.xml b/src/docbook/doc-en/services/wsdl-publisher/config.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/services/wsdl-publisher/config.xml rename to src/docbook/doc-en/services/wsdl-publisher/config.xml diff --git a/jonas_doc/src/docbook/doc-en/terminology.xml b/src/docbook/doc-en/terminology.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/terminology.xml rename to src/docbook/doc-en/terminology.xml diff --git a/jonas_doc/src/docbook/doc-en/variables.xml b/src/docbook/doc-en/variables.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/variables.xml rename to src/docbook/doc-en/variables.xml diff --git a/jonas_doc/src/docbook/doc-en/web_pg.xml b/src/docbook/doc-en/web_pg.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/web_pg.xml rename to src/docbook/doc-en/web_pg.xml diff --git a/jonas_doc/src/docbook/doc-en/xmltips.xml b/src/docbook/doc-en/xmltips.xml similarity index 100% rename from jonas_doc/src/docbook/doc-en/xmltips.xml rename to src/docbook/doc-en/xmltips.xml diff --git a/jonas_doc/src/docbook/doc-fr/howtoJOnASDocBook.xml b/src/docbook/doc-fr/howtoJOnASDocBook.xml similarity index 100% rename from jonas_doc/src/docbook/doc-fr/howtoJOnASDocBook.xml rename to src/docbook/doc-fr/howtoJOnASDocBook.xml diff --git a/jonas_doc/src/pom/jonas-doc-en.pom b/src/pom/jonas-doc-en.pom similarity index 100% rename from jonas_doc/src/pom/jonas-doc-en.pom rename to src/pom/jonas-doc-en.pom diff --git a/jonas_doc/src/resources/WEB-INF/jonas-web.xml b/src/resources/WEB-INF/jonas-web.xml similarity index 100% rename from jonas_doc/src/resources/WEB-INF/jonas-web.xml rename to src/resources/WEB-INF/jonas-web.xml diff --git a/jonas_doc/src/resources/WEB-INF/web.xml b/src/resources/WEB-INF/web.xml similarity index 100% rename from jonas_doc/src/resources/WEB-INF/web.xml rename to src/resources/WEB-INF/web.xml diff --git a/jonas_doc/src/resources/chunk.xsl b/src/resources/chunk.xsl similarity index 100% rename from jonas_doc/src/resources/chunk.xsl rename to src/resources/chunk.xsl diff --git a/jonas_doc/src/resources/common.css b/src/resources/common.css similarity index 100% rename from jonas_doc/src/resources/common.css rename to src/resources/common.css diff --git a/jonas_doc/src/resources/fo.xsl b/src/resources/fo.xsl similarity index 100% rename from jonas_doc/src/resources/fo.xsl rename to src/resources/fo.xsl diff --git a/jonas_doc/src/resources/footer.xml b/src/resources/footer.xml similarity index 100% rename from jonas_doc/src/resources/footer.xml rename to src/resources/footer.xml diff --git a/jonas_doc/src/resources/html.xsl b/src/resources/html.xsl similarity index 100% rename from jonas_doc/src/resources/html.xsl rename to src/resources/html.xsl diff --git a/jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSmall.png b/src/resources/images/JonasSmall.png similarity index 100% rename from jonas/modules/ee-components/jonas-admin/src/main/webapp/images/logo/JonasSmall.png rename to src/resources/images/JonasSmall.png diff --git a/jonas_doc/src/resources/images/WP_distr.gif b/src/resources/images/WP_distr.gif similarity index 100% rename from jonas_doc/src/resources/images/WP_distr.gif rename to src/resources/images/WP_distr.gif diff --git a/jonas_doc/src/resources/images/admin-webmodule-virtual.png b/src/resources/images/admin-webmodule-virtual.png similarity index 100% rename from jonas_doc/src/resources/images/admin-webmodule-virtual.png rename to src/resources/images/admin-webmodule-virtual.png diff --git a/jonas_doc/src/resources/images/admintree.gif b/src/resources/images/admintree.gif similarity index 100% rename from jonas_doc/src/resources/images/admintree.gif rename to src/resources/images/admintree.gif diff --git a/jonas_doc/src/resources/images/bamboo/Bamboo_WorkDirectory.gif b/src/resources/images/bamboo/Bamboo_WorkDirectory.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/Bamboo_WorkDirectory.gif rename to src/resources/images/bamboo/Bamboo_WorkDirectory.gif diff --git a/jonas_doc/src/resources/images/bamboo/BuildPlan_AntBuildDependency.gif b/src/resources/images/bamboo/BuildPlan_AntBuildDependency.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/BuildPlan_AntBuildDependency.gif rename to src/resources/images/bamboo/BuildPlan_AntBuildDependency.gif diff --git a/jonas_doc/src/resources/images/bamboo/Builders.gif b/src/resources/images/bamboo/Builders.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/Builders.gif rename to src/resources/images/bamboo/Builders.gif diff --git a/jonas_doc/src/resources/images/bamboo/Dashboard_CurrentActivty.gif b/src/resources/images/bamboo/Dashboard_CurrentActivty.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/Dashboard_CurrentActivty.gif rename to src/resources/images/bamboo/Dashboard_CurrentActivty.gif diff --git a/jonas_doc/src/resources/images/bamboo/JDK_tailor.gif b/src/resources/images/bamboo/JDK_tailor.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/JDK_tailor.gif rename to src/resources/images/bamboo/JDK_tailor.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestBuildPlan_ActivityLog.gif b/src/resources/images/bamboo/TestBuildPlan_ActivityLog.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestBuildPlan_ActivityLog.gif rename to src/resources/images/bamboo/TestBuildPlan_ActivityLog.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestBuildPlan_Dashboard_Run.gif b/src/resources/images/bamboo/TestBuildPlan_Dashboard_Run.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestBuildPlan_Dashboard_Run.gif rename to src/resources/images/bamboo/TestBuildPlan_Dashboard_Run.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestsBuild_Artifacts.gif b/src/resources/images/bamboo/TestsBuild_Artifacts.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestsBuild_Artifacts.gif rename to src/resources/images/bamboo/TestsBuild_Artifacts.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestsBuild_BuilderConfig.gif b/src/resources/images/bamboo/TestsBuild_BuilderConfig.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestsBuild_BuilderConfig.gif rename to src/resources/images/bamboo/TestsBuild_BuilderConfig.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestsBuild_PlanDetail.gif b/src/resources/images/bamboo/TestsBuild_PlanDetail.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestsBuild_PlanDetail.gif rename to src/resources/images/bamboo/TestsBuild_PlanDetail.gif diff --git a/jonas_doc/src/resources/images/bamboo/TestsBuild_sourcerepos.gif b/src/resources/images/bamboo/TestsBuild_sourcerepos.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/TestsBuild_sourcerepos.gif rename to src/resources/images/bamboo/TestsBuild_sourcerepos.gif diff --git a/jonas_doc/src/resources/images/bamboo/ant_BuilderConfig.gif b/src/resources/images/bamboo/ant_BuilderConfig.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/ant_BuilderConfig.gif rename to src/resources/images/bamboo/ant_BuilderConfig.gif diff --git a/jonas_doc/src/resources/images/bamboo/ant_createplan.gif b/src/resources/images/bamboo/ant_createplan.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/ant_createplan.gif rename to src/resources/images/bamboo/ant_createplan.gif diff --git a/jonas_doc/src/resources/images/bamboo/jb.config.gif b/src/resources/images/bamboo/jb.config.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/jb.config.gif rename to src/resources/images/bamboo/jb.config.gif diff --git a/jonas_doc/src/resources/images/bamboo/main_tailor.gif b/src/resources/images/bamboo/main_tailor.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/main_tailor.gif rename to src/resources/images/bamboo/main_tailor.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_BuildArtifacts.gif b/src/resources/images/bamboo/maven_BuildArtifacts.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_BuildArtifacts.gif rename to src/resources/images/bamboo/maven_BuildArtifacts.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_BuildNotification.gif b/src/resources/images/bamboo/maven_BuildNotification.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_BuildNotification.gif rename to src/resources/images/bamboo/maven_BuildNotification.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_BuilderConfig.gif b/src/resources/images/bamboo/maven_BuilderConfig.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_BuilderConfig.gif rename to src/resources/images/bamboo/maven_BuilderConfig.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_CheckoutAndBuilding.gif b/src/resources/images/bamboo/maven_CheckoutAndBuilding.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_CheckoutAndBuilding.gif rename to src/resources/images/bamboo/maven_CheckoutAndBuilding.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_PlanDetail.gif b/src/resources/images/bamboo/maven_PlanDetail.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_PlanDetail.gif rename to src/resources/images/bamboo/maven_PlanDetail.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_PostAction.gif b/src/resources/images/bamboo/maven_PostAction.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_PostAction.gif rename to src/resources/images/bamboo/maven_PostAction.gif diff --git a/jonas_doc/src/resources/images/bamboo/maven_sourcerepos_step2.gif b/src/resources/images/bamboo/maven_sourcerepos_step2.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/maven_sourcerepos_step2.gif rename to src/resources/images/bamboo/maven_sourcerepos_step2.gif diff --git a/jonas_doc/src/resources/images/bamboo/variables.gif b/src/resources/images/bamboo/variables.gif similarity index 100% rename from jonas_doc/src/resources/images/bamboo/variables.gif rename to src/resources/images/bamboo/variables.gif diff --git a/jonas_doc/src/resources/images/callouts/1.png b/src/resources/images/callouts/1.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/1.png rename to src/resources/images/callouts/1.png diff --git a/jonas_doc/src/resources/images/callouts/10.png b/src/resources/images/callouts/10.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/10.png rename to src/resources/images/callouts/10.png diff --git a/jonas_doc/src/resources/images/callouts/11.png b/src/resources/images/callouts/11.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/11.png rename to src/resources/images/callouts/11.png diff --git a/jonas_doc/src/resources/images/callouts/12.png b/src/resources/images/callouts/12.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/12.png rename to src/resources/images/callouts/12.png diff --git a/jonas_doc/src/resources/images/callouts/13.png b/src/resources/images/callouts/13.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/13.png rename to src/resources/images/callouts/13.png diff --git a/jonas_doc/src/resources/images/callouts/14.png b/src/resources/images/callouts/14.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/14.png rename to src/resources/images/callouts/14.png diff --git a/jonas_doc/src/resources/images/callouts/15.png b/src/resources/images/callouts/15.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/15.png rename to src/resources/images/callouts/15.png diff --git a/jonas_doc/src/resources/images/callouts/2.png b/src/resources/images/callouts/2.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/2.png rename to src/resources/images/callouts/2.png diff --git a/jonas_doc/src/resources/images/callouts/3.png b/src/resources/images/callouts/3.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/3.png rename to src/resources/images/callouts/3.png diff --git a/jonas_doc/src/resources/images/callouts/4.png b/src/resources/images/callouts/4.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/4.png rename to src/resources/images/callouts/4.png diff --git a/jonas_doc/src/resources/images/callouts/5.png b/src/resources/images/callouts/5.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/5.png rename to src/resources/images/callouts/5.png diff --git a/jonas_doc/src/resources/images/callouts/6.png b/src/resources/images/callouts/6.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/6.png rename to src/resources/images/callouts/6.png diff --git a/jonas_doc/src/resources/images/callouts/7.png b/src/resources/images/callouts/7.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/7.png rename to src/resources/images/callouts/7.png diff --git a/jonas_doc/src/resources/images/callouts/8.png b/src/resources/images/callouts/8.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/8.png rename to src/resources/images/callouts/8.png diff --git a/jonas_doc/src/resources/images/callouts/9.png b/src/resources/images/callouts/9.png similarity index 100% rename from jonas_doc/src/resources/images/callouts/9.png rename to src/resources/images/callouts/9.png diff --git a/jonas_doc/src/resources/images/caution.png b/src/resources/images/caution.png similarity index 100% rename from jonas_doc/src/resources/images/caution.png rename to src/resources/images/caution.png diff --git a/jonas_doc/src/resources/images/clusterfiles/Apache.jpg b/src/resources/images/clusterfiles/Apache.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Apache.jpg rename to src/resources/images/clusterfiles/Apache.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Archi1.jpg b/src/resources/images/clusterfiles/Archi1.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Archi1.jpg rename to src/resources/images/clusterfiles/Archi1.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Archi2.jpg b/src/resources/images/clusterfiles/Archi2.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Archi2.jpg rename to src/resources/images/clusterfiles/Archi2.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Archi3.jpg b/src/resources/images/clusterfiles/Archi3.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Archi3.jpg rename to src/resources/images/clusterfiles/Archi3.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Archi4.jpg b/src/resources/images/clusterfiles/Archi4.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Archi4.jpg rename to src/resources/images/clusterfiles/Archi4.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Archi5.jpg b/src/resources/images/clusterfiles/Archi5.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Archi5.jpg rename to src/resources/images/clusterfiles/Archi5.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Architecture.jpg b/src/resources/images/clusterfiles/Architecture.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Architecture.jpg rename to src/resources/images/clusterfiles/Architecture.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/EJBCont.jpg b/src/resources/images/clusterfiles/EJBCont.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/EJBCont.jpg rename to src/resources/images/clusterfiles/EJBCont.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/FullJOnAS.jpg b/src/resources/images/clusterfiles/FullJOnAS.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/FullJOnAS.jpg rename to src/resources/images/clusterfiles/FullJOnAS.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/JOnASEJB.jpg b/src/resources/images/clusterfiles/JOnASEJB.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/JOnASEJB.jpg rename to src/resources/images/clusterfiles/JOnASEJB.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/JOnASWeb.jpg b/src/resources/images/clusterfiles/JOnASWeb.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/JOnASWeb.jpg rename to src/resources/images/clusterfiles/JOnASWeb.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/Node.jpg b/src/resources/images/clusterfiles/Node.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/Node.jpg rename to src/resources/images/clusterfiles/Node.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/WebCont.jpg b/src/resources/images/clusterfiles/WebCont.jpg similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/WebCont.jpg rename to src/resources/images/clusterfiles/WebCont.jpg diff --git a/jonas_doc/src/resources/images/clusterfiles/sampleCluster2Screen.GIF b/src/resources/images/clusterfiles/sampleCluster2Screen.GIF similarity index 100% rename from jonas_doc/src/resources/images/clusterfiles/sampleCluster2Screen.GIF rename to src/resources/images/clusterfiles/sampleCluster2Screen.GIF diff --git a/jonas_doc/src/resources/images/clustering/clusterd.png b/src/resources/images/clustering/clusterd.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/clusterd.png rename to src/resources/images/clustering/clusterd.png diff --git a/jonas_doc/src/resources/images/clustering/clusterd.svg b/src/resources/images/clustering/clusterd.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/clusterd.svg rename to src/resources/images/clustering/clusterd.svg diff --git a/jonas_doc/src/resources/images/clustering/clustersolution.png b/src/resources/images/clustering/clustersolution.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/clustersolution.png rename to src/resources/images/clustering/clustersolution.png diff --git a/jonas_doc/src/resources/images/clustering/clustersolution.svg b/src/resources/images/clustering/clustersolution.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/clustersolution.svg rename to src/resources/images/clustering/clustersolution.svg diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster.png b/src/resources/images/clustering/cmi_cluster.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster.png rename to src/resources/images/clustering/cmi_cluster.png diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster.svg b/src/resources/images/clustering/cmi_cluster.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster.svg rename to src/resources/images/clustering/cmi_cluster.svg diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster_config.svg b/src/resources/images/clustering/cmi_cluster_config.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster_config.svg rename to src/resources/images/clustering/cmi_cluster_config.svg diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster_config_2tiers_client.png b/src/resources/images/clustering/cmi_cluster_config_2tiers_client.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster_config_2tiers_client.png rename to src/resources/images/clustering/cmi_cluster_config_2tiers_client.png diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster_config_2tiers_server.png b/src/resources/images/clustering/cmi_cluster_config_2tiers_server.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster_config_2tiers_server.png rename to src/resources/images/clustering/cmi_cluster_config_2tiers_server.png diff --git a/jonas_doc/src/resources/images/clustering/cmi_cluster_config_javaclient.png b/src/resources/images/clustering/cmi_cluster_config_javaclient.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmi_cluster_config_javaclient.png rename to src/resources/images/clustering/cmi_cluster_config_javaclient.png diff --git a/jonas_doc/src/resources/images/clustering/cmiv2.png b/src/resources/images/clustering/cmiv2.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/cmiv2.png rename to src/resources/images/clustering/cmiv2.png diff --git a/jonas_doc/src/resources/images/clustering/domain.cmi.cluster.png b/src/resources/images/clustering/domain.cmi.cluster.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/domain.cmi.cluster.png rename to src/resources/images/clustering/domain.cmi.cluster.png diff --git a/jonas_doc/src/resources/images/clustering/domain.jk.cluster.member.png b/src/resources/images/clustering/domain.jk.cluster.member.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/domain.jk.cluster.member.png rename to src/resources/images/clustering/domain.jk.cluster.member.png diff --git a/jonas_doc/src/resources/images/clustering/domain.jk.cluster.png b/src/resources/images/clustering/domain.jk.cluster.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/domain.jk.cluster.png rename to src/resources/images/clustering/domain.jk.cluster.png diff --git a/jonas_doc/src/resources/images/clustering/domainmngt.png b/src/resources/images/clustering/domainmngt.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/domainmngt.png rename to src/resources/images/clustering/domainmngt.png diff --git a/jonas_doc/src/resources/images/clustering/domainmngt.svg b/src/resources/images/clustering/domainmngt.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/domainmngt.svg rename to src/resources/images/clustering/domainmngt.svg diff --git a/jonas_doc/src/resources/images/clustering/easybeans-logo.png b/src/resources/images/clustering/easybeans-logo.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/easybeans-logo.png rename to src/resources/images/clustering/easybeans-logo.png diff --git a/jonas_doc/src/resources/images/clustering/ejbcluster.png b/src/resources/images/clustering/ejbcluster.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/ejbcluster.png rename to src/resources/images/clustering/ejbcluster.png diff --git a/jonas_doc/src/resources/images/clustering/ejbcluster.svg b/src/resources/images/clustering/ejbcluster.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/ejbcluster.svg rename to src/resources/images/clustering/ejbcluster.svg diff --git a/jonas_doc/src/resources/images/clustering/ejbfarm.png b/src/resources/images/clustering/ejbfarm.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/ejbfarm.png rename to src/resources/images/clustering/ejbfarm.png diff --git a/jonas_doc/src/resources/images/clustering/ejbfarm.svg b/src/resources/images/clustering/ejbfarm.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/ejbfarm.svg rename to src/resources/images/clustering/ejbfarm.svg diff --git a/jonas_doc/src/resources/images/clustering/httpcluster.png b/src/resources/images/clustering/httpcluster.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/httpcluster.png rename to src/resources/images/clustering/httpcluster.png diff --git a/jonas_doc/src/resources/images/clustering/httpcluster.svg b/src/resources/images/clustering/httpcluster.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/httpcluster.svg rename to src/resources/images/clustering/httpcluster.svg diff --git a/jonas_doc/src/resources/images/clustering/httpfarm.png b/src/resources/images/clustering/httpfarm.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/httpfarm.png rename to src/resources/images/clustering/httpfarm.png diff --git a/jonas_doc/src/resources/images/clustering/httpfarm.svg b/src/resources/images/clustering/httpfarm.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/httpfarm.svg rename to src/resources/images/clustering/httpfarm.svg diff --git a/jonas_doc/src/resources/images/clustering/jmscluster_a.png b/src/resources/images/clustering/jmscluster_a.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmscluster_a.png rename to src/resources/images/clustering/jmscluster_a.png diff --git a/jonas_doc/src/resources/images/clustering/jmscluster_a.svg b/src/resources/images/clustering/jmscluster_a.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmscluster_a.svg rename to src/resources/images/clustering/jmscluster_a.svg diff --git a/jonas_doc/src/resources/images/clustering/jmscluster_b.png b/src/resources/images/clustering/jmscluster_b.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmscluster_b.png rename to src/resources/images/clustering/jmscluster_b.png diff --git a/jonas_doc/src/resources/images/clustering/jmscluster_b.svg b/src/resources/images/clustering/jmscluster_b.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmscluster_b.svg rename to src/resources/images/clustering/jmscluster_b.svg diff --git a/jonas_doc/src/resources/images/clustering/jmsfarm_a.png b/src/resources/images/clustering/jmsfarm_a.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmsfarm_a.png rename to src/resources/images/clustering/jmsfarm_a.png diff --git a/jonas_doc/src/resources/images/clustering/jmsfarm_a.svg b/src/resources/images/clustering/jmsfarm_a.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmsfarm_a.svg rename to src/resources/images/clustering/jmsfarm_a.svg diff --git a/jonas_doc/src/resources/images/clustering/jmsfarm_b.png b/src/resources/images/clustering/jmsfarm_b.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmsfarm_b.png rename to src/resources/images/clustering/jmsfarm_b.png diff --git a/jonas_doc/src/resources/images/clustering/jmsfarm_b.svg b/src/resources/images/clustering/jmsfarm_b.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/jmsfarm_b.svg rename to src/resources/images/clustering/jmsfarm_b.svg diff --git a/jonas_doc/src/resources/images/clustering/jonas48repscenarios.jpg b/src/resources/images/clustering/jonas48repscenarios.jpg similarity index 100% rename from jonas_doc/src/resources/images/clustering/jonas48repscenarios.jpg rename to src/resources/images/clustering/jonas48repscenarios.jpg diff --git a/jonas_doc/src/resources/images/clustering/logo_jonas2.png b/src/resources/images/clustering/logo_jonas2.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/logo_jonas2.png rename to src/resources/images/clustering/logo_jonas2.png diff --git a/jonas_doc/src/resources/images/clustering/myTomcatCluster.gif b/src/resources/images/clustering/myTomcatCluster.gif similarity index 100% rename from jonas_doc/src/resources/images/clustering/myTomcatCluster.gif rename to src/resources/images/clustering/myTomcatCluster.gif diff --git a/jonas_doc/src/resources/images/clustering/registry_replication.png b/src/resources/images/clustering/registry_replication.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/registry_replication.png rename to src/resources/images/clustering/registry_replication.png diff --git a/jonas_doc/src/resources/images/clustering/registry_replication.svg b/src/resources/images/clustering/registry_replication.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/registry_replication.svg rename to src/resources/images/clustering/registry_replication.svg diff --git a/jonas_doc/src/resources/images/clustering/sampleCluster2.png b/src/resources/images/clustering/sampleCluster2.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sampleCluster2.png rename to src/resources/images/clustering/sampleCluster2.png diff --git a/jonas_doc/src/resources/images/clustering/sampleCluster2.svg b/src/resources/images/clustering/sampleCluster2.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/sampleCluster2.svg rename to src/resources/images/clustering/sampleCluster2.svg diff --git a/jonas_doc/src/resources/images/clustering/sampleCluster3.png b/src/resources/images/clustering/sampleCluster3.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sampleCluster3.png rename to src/resources/images/clustering/sampleCluster3.png diff --git a/jonas_doc/src/resources/images/clustering/sampleCluster3.svg b/src/resources/images/clustering/sampleCluster3.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/sampleCluster3.svg rename to src/resources/images/clustering/sampleCluster3.svg diff --git a/jonas_doc/src/resources/images/clustering/sc/jasmine_design.png b/src/resources/images/clustering/sc/jasmine_design.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jasmine_design.png rename to src/resources/images/clustering/sc/jasmine_design.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jasmine_eos.png b/src/resources/images/clustering/sc/jasmine_eos.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jasmine_eos.png rename to src/resources/images/clustering/sc/jasmine_eos.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jkmanager.png b/src/resources/images/clustering/sc/jkmanager.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jkmanager.png rename to src/resources/images/clustering/sc/jkmanager.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_cluster_tab.png b/src/resources/images/clustering/sc/jonasadmin_cmi_cluster_tab.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_cluster_tab.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_cluster_tab.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_mbeans_attr.png b/src/resources/images/clustering/sc/jonasadmin_cmi_mbeans_attr.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_mbeans_attr.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_mbeans_attr.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_object_info.png b/src/resources/images/clustering/sc/jonasadmin_cmi_object_info.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_object_info.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_object_info.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_policies.png b/src/resources/images/clustering/sc/jonasadmin_cmi_policies.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_policies.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_policies.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_server_info.png b/src/resources/images/clustering/sc/jonasadmin_cmi_server_info.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_server_info.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_server_info.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_servers.png b/src/resources/images/clustering/sc/jonasadmin_cmi_servers.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_servers.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_servers.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_strategies.png b/src/resources/images/clustering/sc/jonasadmin_cmi_strategies.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_strategies.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_strategies.png diff --git a/jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_tab.png b/src/resources/images/clustering/sc/jonasadmin_cmi_tab.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/sc/jonasadmin_cmi_tab.png rename to src/resources/images/clustering/sc/jonasadmin_cmi_tab.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_cluster_tab.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_mbeans_attr.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_object_info.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_policies.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_server_info.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_servers.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_strategies.svg diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.png b/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.png similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.png rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.png diff --git a/jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.svg b/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.svg similarity index 100% rename from jonas_doc/src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.svg rename to src/resources/images/clustering/screenshot_jonasadmin_cmi_tab.svg diff --git a/jonas_doc/src/resources/images/cmi.gif b/src/resources/images/cmi.gif similarity index 100% rename from jonas_doc/src/resources/images/cmi.gif rename to src/resources/images/cmi.gif diff --git a/jonas_doc/src/resources/images/connect.gif b/src/resources/images/connect.gif similarity index 100% rename from jonas_doc/src/resources/images/connect.gif rename to src/resources/images/connect.gif diff --git a/jonas_doc/src/resources/images/defilement.gif b/src/resources/images/defilement.gif similarity index 100% rename from jonas_doc/src/resources/images/defilement.gif rename to src/resources/images/defilement.gif diff --git a/jonas_doc/src/resources/images/deployment.gif b/src/resources/images/deployment.gif similarity index 100% rename from jonas_doc/src/resources/images/deployment.gif rename to src/resources/images/deployment.gif diff --git a/jonas_doc/src/resources/images/draft.png b/src/resources/images/draft.png similarity index 100% rename from jonas_doc/src/resources/images/draft.png rename to src/resources/images/draft.png diff --git a/jonas_doc/src/resources/images/earsample-add-author.png b/src/resources/images/earsample-add-author.png similarity index 100% rename from jonas_doc/src/resources/images/earsample-add-author.png rename to src/resources/images/earsample-add-author.png diff --git a/jonas_doc/src/resources/images/earsample-architecture.png b/src/resources/images/earsample-architecture.png similarity index 100% rename from jonas_doc/src/resources/images/earsample-architecture.png rename to src/resources/images/earsample-architecture.png diff --git a/jonas_doc/src/resources/images/earsample-authentication.png b/src/resources/images/earsample-authentication.png similarity index 100% rename from jonas_doc/src/resources/images/earsample-authentication.png rename to src/resources/images/earsample-authentication.png diff --git a/jonas_doc/src/resources/images/earsample-jpa-model.png b/src/resources/images/earsample-jpa-model.png similarity index 100% rename from jonas_doc/src/resources/images/earsample-jpa-model.png rename to src/resources/images/earsample-jpa-model.png diff --git a/jonas_doc/src/resources/images/earsample-list-content.png b/src/resources/images/earsample-list-content.png similarity index 100% rename from jonas_doc/src/resources/images/earsample-list-content.png rename to src/resources/images/earsample-list-content.png diff --git a/jonas_doc/src/resources/images/eb_img_31.gif b/src/resources/images/eb_img_31.gif similarity index 100% rename from jonas_doc/src/resources/images/eb_img_31.gif rename to src/resources/images/eb_img_31.gif diff --git a/jonas_doc/src/resources/images/editbuttons.gif b/src/resources/images/editbuttons.gif similarity index 100% rename from jonas_doc/src/resources/images/editbuttons.gif rename to src/resources/images/editbuttons.gif diff --git a/jonas_doc/src/resources/images/filtering-loader.png b/src/resources/images/filtering-loader.png similarity index 100% rename from jonas_doc/src/resources/images/filtering-loader.png rename to src/resources/images/filtering-loader.png diff --git a/jonas_doc/src/resources/images/firstpage.gif b/src/resources/images/firstpage.gif similarity index 100% rename from jonas_doc/src/resources/images/firstpage.gif rename to src/resources/images/firstpage.gif diff --git a/jonas_doc/src/resources/images/forgeadmin.gif b/src/resources/images/forgeadmin.gif similarity index 100% rename from jonas_doc/src/resources/images/forgeadmin.gif rename to src/resources/images/forgeadmin.gif diff --git a/jonas_doc/src/resources/images/jcaarch.gif b/src/resources/images/jcaarch.gif similarity index 100% rename from jonas_doc/src/resources/images/jcaarch.gif rename to src/resources/images/jcaarch.gif diff --git a/jonas_doc/src/resources/images/jconsoleStackDumpList.png b/src/resources/images/jconsoleStackDumpList.png similarity index 100% rename from jonas_doc/src/resources/images/jconsoleStackDumpList.png rename to src/resources/images/jconsoleStackDumpList.png diff --git a/jonas_doc/src/resources/images/jconsoleStackDumpOperations.png b/src/resources/images/jconsoleStackDumpOperations.png similarity index 100% rename from jonas_doc/src/resources/images/jconsoleStackDumpOperations.png rename to src/resources/images/jconsoleStackDumpOperations.png diff --git a/jonas_doc/src/resources/images/jmsclustering/Cluster JMS-JORAM-JOnAS.ppt b/src/resources/images/jmsclustering/Cluster JMS-JORAM-JOnAS.ppt similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/Cluster JMS-JORAM-JOnAS.ppt rename to src/resources/images/jmsclustering/Cluster JMS-JORAM-JOnAS.ppt diff --git a/jonas_doc/src/resources/images/jmsclustering/JmsClustering-queues.jpg b/src/resources/images/jmsclustering/JmsClustering-queues.jpg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/JmsClustering-queues.jpg rename to src/resources/images/jmsclustering/JmsClustering-queues.jpg diff --git a/jonas_doc/src/resources/images/jmsclustering/JmsClustering-queues.ppt b/src/resources/images/jmsclustering/JmsClustering-queues.ppt similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/JmsClustering-queues.ppt rename to src/resources/images/jmsclustering/JmsClustering-queues.ppt diff --git a/jonas_doc/src/resources/images/jmsclustering/JmsClustering-topics.jpg b/src/resources/images/jmsclustering/JmsClustering-topics.jpg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/JmsClustering-topics.jpg rename to src/resources/images/jmsclustering/JmsClustering-topics.jpg diff --git a/jonas_doc/src/resources/images/jmsclustering/JmsClustering-topics.ppt b/src/resources/images/jmsclustering/JmsClustering-topics.ppt similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/JmsClustering-topics.ppt rename to src/resources/images/jmsclustering/JmsClustering-topics.ppt diff --git a/jonas_doc/src/resources/images/jmsclustering/joram.jpg b/src/resources/images/jmsclustering/joram.jpg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/joram.jpg rename to src/resources/images/jmsclustering/joram.jpg diff --git a/jonas_doc/src/resources/images/jmsclustering/joram_ha.jpg b/src/resources/images/jmsclustering/joram_ha.jpg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/joram_ha.jpg rename to src/resources/images/jmsclustering/joram_ha.jpg diff --git a/jonas_doc/src/resources/images/jmsclustering/mdbHa.ppt b/src/resources/images/jmsclustering/mdbHa.ppt similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/mdbHa.ppt rename to src/resources/images/jmsclustering/mdbHa.ppt diff --git a/jonas_doc/src/resources/images/jmsclustering/mdbclustering.png b/src/resources/images/jmsclustering/mdbclustering.png similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/mdbclustering.png rename to src/resources/images/jmsclustering/mdbclustering.png diff --git a/jonas_doc/src/resources/images/jmsclustering/mdbclustering.svg b/src/resources/images/jmsclustering/mdbclustering.svg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/mdbclustering.svg rename to src/resources/images/jmsclustering/mdbclustering.svg diff --git a/jonas_doc/src/resources/images/jmsclustering/queuelb.png b/src/resources/images/jmsclustering/queuelb.png similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/queuelb.png rename to src/resources/images/jmsclustering/queuelb.png diff --git a/jonas_doc/src/resources/images/jmsclustering/queuelb.svg b/src/resources/images/jmsclustering/queuelb.svg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/queuelb.svg rename to src/resources/images/jmsclustering/queuelb.svg diff --git a/jonas_doc/src/resources/images/jmsclustering/topic.jpg b/src/resources/images/jmsclustering/topic.jpg similarity index 100% rename from jonas_doc/src/resources/images/jmsclustering/topic.jpg rename to src/resources/images/jmsclustering/topic.jpg diff --git a/jonas_doc/src/resources/images/jonas-classloaders.png b/src/resources/images/jonas-classloaders.png similarity index 100% rename from jonas_doc/src/resources/images/jonas-classloaders.png rename to src/resources/images/jonas-classloaders.png diff --git a/jonas_doc/src/resources/images/jonasAdminDomain.gif b/src/resources/images/jonasAdminDomain.gif similarity index 100% rename from jonas_doc/src/resources/images/jonasAdminDomain.gif rename to src/resources/images/jonasAdminDomain.gif diff --git a/jonas_doc/src/resources/images/jonasAdminStackDump.png b/src/resources/images/jonasAdminStackDump.png similarity index 100% rename from jonas_doc/src/resources/images/jonasAdminStackDump.png rename to src/resources/images/jonasAdminStackDump.png diff --git a/jonas_doc/src/resources/images/jonas_doc.gif b/src/resources/images/jonas_doc.gif similarity index 100% rename from jonas_doc/src/resources/images/jonas_doc.gif rename to src/resources/images/jonas_doc.gif diff --git a/jonas_doc/src/resources/images/loaders/bundle-class-space.png b/src/resources/images/loaders/bundle-class-space.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/bundle-class-space.png rename to src/resources/images/loaders/bundle-class-space.png diff --git a/jonas_doc/src/resources/images/loaders/console-osgi.png b/src/resources/images/loaders/console-osgi.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/console-osgi.png rename to src/resources/images/loaders/console-osgi.png diff --git a/jonas_doc/src/resources/images/loaders/filtering-classloaders.png b/src/resources/images/loaders/filtering-classloaders.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/filtering-classloaders.png rename to src/resources/images/loaders/filtering-classloaders.png diff --git a/jonas_doc/src/resources/images/loaders/jonas-osgi-modules-libext.png b/src/resources/images/loaders/jonas-osgi-modules-libext.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/jonas-osgi-modules-libext.png rename to src/resources/images/loaders/jonas-osgi-modules-libext.png diff --git a/jonas_doc/src/resources/images/loaders/jonas-osgi-modules-ultra-zoom.png b/src/resources/images/loaders/jonas-osgi-modules-ultra-zoom.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/jonas-osgi-modules-ultra-zoom.png rename to src/resources/images/loaders/jonas-osgi-modules-ultra-zoom.png diff --git a/jonas_doc/src/resources/images/loaders/jonas-osgi-modules.png b/src/resources/images/loaders/jonas-osgi-modules.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/jonas-osgi-modules.png rename to src/resources/images/loaders/jonas-osgi-modules.png diff --git a/jonas_doc/src/resources/images/loaders/jonas-round.png b/src/resources/images/loaders/jonas-round.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/jonas-round.png rename to src/resources/images/loaders/jonas-round.png diff --git a/jonas_doc/src/resources/images/loaders/osgi-classloading.gif b/src/resources/images/loaders/osgi-classloading.gif similarity index 100% rename from jonas_doc/src/resources/images/loaders/osgi-classloading.gif rename to src/resources/images/loaders/osgi-classloading.gif diff --git a/jonas_doc/src/resources/images/loaders/system-loaders.png b/src/resources/images/loaders/system-loaders.png similarity index 100% rename from jonas_doc/src/resources/images/loaders/system-loaders.png rename to src/resources/images/loaders/system-loaders.png diff --git a/jonas_doc/src/resources/images/logoow.gif b/src/resources/images/logoow.gif similarity index 100% rename from jonas_doc/src/resources/images/logoow.gif rename to src/resources/images/logoow.gif diff --git a/jonas_doc/src/resources/images/note.png b/src/resources/images/note.png similarity index 100% rename from jonas_doc/src/resources/images/note.png rename to src/resources/images/note.png diff --git a/jonas_doc/src/resources/images/output.gif b/src/resources/images/output.gif similarity index 100% rename from jonas_doc/src/resources/images/output.gif rename to src/resources/images/output.gif diff --git a/jonas_doc/src/resources/images/publish.gif b/src/resources/images/publish.gif similarity index 100% rename from jonas_doc/src/resources/images/publish.gif rename to src/resources/images/publish.gif diff --git a/jonas_doc/src/resources/images/service-dependencies.png b/src/resources/images/service-dependencies.png similarity index 100% rename from jonas_doc/src/resources/images/service-dependencies.png rename to src/resources/images/service-dependencies.png diff --git a/jonas_doc/src/resources/images/versioning-ejb-schema.png b/src/resources/images/versioning-ejb-schema.png similarity index 100% rename from jonas_doc/src/resources/images/versioning-ejb-schema.png rename to src/resources/images/versioning-ejb-schema.png diff --git a/jonas_doc/src/resources/images/versioning-general-schema.png b/src/resources/images/versioning-general-schema.png similarity index 100% rename from jonas_doc/src/resources/images/versioning-general-schema.png rename to src/resources/images/versioning-general-schema.png diff --git a/jonas_doc/src/resources/index.html b/src/resources/index.html similarity index 100% rename from jonas_doc/src/resources/index.html rename to src/resources/index.html diff --git a/jonas_doc/tools/docbook-5.0/ChangeLog b/tools/docbook-5.0/ChangeLog similarity index 100% rename from jonas_doc/tools/docbook-5.0/ChangeLog rename to tools/docbook-5.0/ChangeLog diff --git a/jonas_doc/tools/docbook-5.0/README b/tools/docbook-5.0/README similarity index 100% rename from jonas_doc/tools/docbook-5.0/README rename to tools/docbook-5.0/README diff --git a/jonas_doc/tools/docbook-5.0/VERSION b/tools/docbook-5.0/VERSION similarity index 100% rename from jonas_doc/tools/docbook-5.0/VERSION rename to tools/docbook-5.0/VERSION diff --git a/jonas_doc/tools/docbook-5.0/catalog.xml b/tools/docbook-5.0/catalog.xml similarity index 100% rename from jonas_doc/tools/docbook-5.0/catalog.xml rename to tools/docbook-5.0/catalog.xml diff --git a/jonas_doc/tools/docbook-5.0/docbook.nvdl b/tools/docbook-5.0/docbook.nvdl similarity index 100% rename from jonas_doc/tools/docbook-5.0/docbook.nvdl rename to tools/docbook-5.0/docbook.nvdl diff --git a/jonas_doc/tools/docbook-5.0/dtd/docbook.dtd b/tools/docbook-5.0/dtd/docbook.dtd similarity index 100% rename from jonas_doc/tools/docbook-5.0/dtd/docbook.dtd rename to tools/docbook-5.0/dtd/docbook.dtd diff --git a/jonas_doc/tools/docbook-5.0/rng/docbook.rnc b/tools/docbook-5.0/rng/docbook.rnc similarity index 100% rename from jonas_doc/tools/docbook-5.0/rng/docbook.rnc rename to tools/docbook-5.0/rng/docbook.rnc diff --git a/jonas_doc/tools/docbook-5.0/rng/docbook.rng b/tools/docbook-5.0/rng/docbook.rng similarity index 100% rename from jonas_doc/tools/docbook-5.0/rng/docbook.rng rename to tools/docbook-5.0/rng/docbook.rng diff --git a/jonas_doc/tools/docbook-5.0/rng/docbookxi.rnc b/tools/docbook-5.0/rng/docbookxi.rnc similarity index 100% rename from jonas_doc/tools/docbook-5.0/rng/docbookxi.rnc rename to tools/docbook-5.0/rng/docbookxi.rnc diff --git a/jonas_doc/tools/docbook-5.0/rng/docbookxi.rng b/tools/docbook-5.0/rng/docbookxi.rng similarity index 100% rename from jonas_doc/tools/docbook-5.0/rng/docbookxi.rng rename to tools/docbook-5.0/rng/docbookxi.rng diff --git a/jonas_doc/tools/docbook-5.0/sch/docbook.sch b/tools/docbook-5.0/sch/docbook.sch similarity index 100% rename from jonas_doc/tools/docbook-5.0/sch/docbook.sch rename to tools/docbook-5.0/sch/docbook.sch diff --git a/jonas_doc/tools/docbook-5.0/tools/db4-entities.pl b/tools/docbook-5.0/tools/db4-entities.pl similarity index 100% rename from jonas_doc/tools/docbook-5.0/tools/db4-entities.pl rename to tools/docbook-5.0/tools/db4-entities.pl diff --git a/jonas_doc/tools/docbook-5.0/tools/db4-upgrade.xsl b/tools/docbook-5.0/tools/db4-upgrade.xsl similarity index 100% rename from jonas_doc/tools/docbook-5.0/tools/db4-upgrade.xsl rename to tools/docbook-5.0/tools/db4-upgrade.xsl diff --git a/jonas_doc/tools/docbook-5.0/xsd/docbook.xsd b/tools/docbook-5.0/xsd/docbook.xsd similarity index 100% rename from jonas_doc/tools/docbook-5.0/xsd/docbook.xsd rename to tools/docbook-5.0/xsd/docbook.xsd diff --git a/jonas_doc/tools/docbook-5.0/xsd/xlink.xsd b/tools/docbook-5.0/xsd/xlink.xsd similarity index 100% rename from jonas_doc/tools/docbook-5.0/xsd/xlink.xsd rename to tools/docbook-5.0/xsd/xlink.xsd diff --git a/jonas_doc/tools/docbook-5.0/xsd/xml.xsd b/tools/docbook-5.0/xsd/xml.xsd similarity index 100% rename from jonas_doc/tools/docbook-5.0/xsd/xml.xsd rename to tools/docbook-5.0/xsd/xml.xsd diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/.CatalogManager.properties.example b/tools/docbook-xsl-1.73.2/.CatalogManager.properties.example similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/.CatalogManager.properties.example rename to tools/docbook-xsl-1.73.2/.CatalogManager.properties.example diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/.urilist b/tools/docbook-xsl-1.73.2/.urilist similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/.urilist rename to tools/docbook-xsl-1.73.2/.urilist diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/AUTHORS b/tools/docbook-xsl-1.73.2/AUTHORS similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/AUTHORS rename to tools/docbook-xsl-1.73.2/AUTHORS diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/BUGS b/tools/docbook-xsl-1.73.2/BUGS similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/BUGS rename to tools/docbook-xsl-1.73.2/BUGS diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/COPYING b/tools/docbook-xsl-1.73.2/COPYING similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/COPYING rename to tools/docbook-xsl-1.73.2/COPYING diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/INSTALL b/tools/docbook-xsl-1.73.2/INSTALL similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/INSTALL rename to tools/docbook-xsl-1.73.2/INSTALL diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/NEWS b/tools/docbook-xsl-1.73.2/NEWS similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/NEWS rename to tools/docbook-xsl-1.73.2/NEWS diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/NEWS.html b/tools/docbook-xsl-1.73.2/NEWS.html similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/NEWS.html rename to tools/docbook-xsl-1.73.2/NEWS.html diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/NEWS.xml b/tools/docbook-xsl-1.73.2/NEWS.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/NEWS.xml rename to tools/docbook-xsl-1.73.2/NEWS.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/README b/tools/docbook-xsl-1.73.2/README similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/README rename to tools/docbook-xsl-1.73.2/README diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.html b/tools/docbook-xsl-1.73.2/RELEASE-NOTES.html similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.html rename to tools/docbook-xsl-1.73.2/RELEASE-NOTES.html diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.pdf b/tools/docbook-xsl-1.73.2/RELEASE-NOTES.pdf similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.pdf rename to tools/docbook-xsl-1.73.2/RELEASE-NOTES.pdf diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.txt b/tools/docbook-xsl-1.73.2/RELEASE-NOTES.txt similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.txt rename to tools/docbook-xsl-1.73.2/RELEASE-NOTES.txt diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.xml b/tools/docbook-xsl-1.73.2/RELEASE-NOTES.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/RELEASE-NOTES.xml rename to tools/docbook-xsl-1.73.2/RELEASE-NOTES.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/TODO b/tools/docbook-xsl-1.73.2/TODO similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/TODO rename to tools/docbook-xsl-1.73.2/TODO diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/VERSION b/tools/docbook-xsl-1.73.2/VERSION similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/VERSION rename to tools/docbook-xsl-1.73.2/VERSION diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/catalog.xml b/tools/docbook-xsl-1.73.2/catalog.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/catalog.xml rename to tools/docbook-xsl-1.73.2/catalog.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/af.xml b/tools/docbook-xsl-1.73.2/common/af.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/af.xml rename to tools/docbook-xsl-1.73.2/common/af.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/am.xml b/tools/docbook-xsl-1.73.2/common/am.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/am.xml rename to tools/docbook-xsl-1.73.2/common/am.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ar.xml b/tools/docbook-xsl-1.73.2/common/ar.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ar.xml rename to tools/docbook-xsl-1.73.2/common/ar.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/autoidx-kimber.xsl b/tools/docbook-xsl-1.73.2/common/autoidx-kimber.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/autoidx-kimber.xsl rename to tools/docbook-xsl-1.73.2/common/autoidx-kimber.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/autoidx-kosek.xsl b/tools/docbook-xsl-1.73.2/common/autoidx-kosek.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/autoidx-kosek.xsl rename to tools/docbook-xsl-1.73.2/common/autoidx-kosek.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/az.xml b/tools/docbook-xsl-1.73.2/common/az.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/az.xml rename to tools/docbook-xsl-1.73.2/common/az.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/bg.xml b/tools/docbook-xsl-1.73.2/common/bg.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/bg.xml rename to tools/docbook-xsl-1.73.2/common/bg.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/bn.xml b/tools/docbook-xsl-1.73.2/common/bn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/bn.xml rename to tools/docbook-xsl-1.73.2/common/bn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/bs.xml b/tools/docbook-xsl-1.73.2/common/bs.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/bs.xml rename to tools/docbook-xsl-1.73.2/common/bs.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ca.xml b/tools/docbook-xsl-1.73.2/common/ca.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ca.xml rename to tools/docbook-xsl-1.73.2/common/ca.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/charmap.xml b/tools/docbook-xsl-1.73.2/common/charmap.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/charmap.xml rename to tools/docbook-xsl-1.73.2/common/charmap.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/charmap.xsl b/tools/docbook-xsl-1.73.2/common/charmap.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/charmap.xsl rename to tools/docbook-xsl-1.73.2/common/charmap.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/common.xml b/tools/docbook-xsl-1.73.2/common/common.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/common.xml rename to tools/docbook-xsl-1.73.2/common/common.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/common.xsl b/tools/docbook-xsl-1.73.2/common/common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/common.xsl rename to tools/docbook-xsl-1.73.2/common/common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/cs.xml b/tools/docbook-xsl-1.73.2/common/cs.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/cs.xml rename to tools/docbook-xsl-1.73.2/common/cs.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/cy.xml b/tools/docbook-xsl-1.73.2/common/cy.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/cy.xml rename to tools/docbook-xsl-1.73.2/common/cy.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/da.xml b/tools/docbook-xsl-1.73.2/common/da.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/da.xml rename to tools/docbook-xsl-1.73.2/common/da.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/de.xml b/tools/docbook-xsl-1.73.2/common/de.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/de.xml rename to tools/docbook-xsl-1.73.2/common/de.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/el.xml b/tools/docbook-xsl-1.73.2/common/el.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/el.xml rename to tools/docbook-xsl-1.73.2/common/el.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/en.xml b/tools/docbook-xsl-1.73.2/common/en.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/en.xml rename to tools/docbook-xsl-1.73.2/common/en.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/entities.ent b/tools/docbook-xsl-1.73.2/common/entities.ent similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/entities.ent rename to tools/docbook-xsl-1.73.2/common/entities.ent diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/eo.xml b/tools/docbook-xsl-1.73.2/common/eo.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/eo.xml rename to tools/docbook-xsl-1.73.2/common/eo.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/es.xml b/tools/docbook-xsl-1.73.2/common/es.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/es.xml rename to tools/docbook-xsl-1.73.2/common/es.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/et.xml b/tools/docbook-xsl-1.73.2/common/et.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/et.xml rename to tools/docbook-xsl-1.73.2/common/et.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/eu.xml b/tools/docbook-xsl-1.73.2/common/eu.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/eu.xml rename to tools/docbook-xsl-1.73.2/common/eu.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/fa.xml b/tools/docbook-xsl-1.73.2/common/fa.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/fa.xml rename to tools/docbook-xsl-1.73.2/common/fa.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/fi.xml b/tools/docbook-xsl-1.73.2/common/fi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/fi.xml rename to tools/docbook-xsl-1.73.2/common/fi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/fr.xml b/tools/docbook-xsl-1.73.2/common/fr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/fr.xml rename to tools/docbook-xsl-1.73.2/common/fr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ga.xml b/tools/docbook-xsl-1.73.2/common/ga.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ga.xml rename to tools/docbook-xsl-1.73.2/common/ga.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/gentext.xsl b/tools/docbook-xsl-1.73.2/common/gentext.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/gentext.xsl rename to tools/docbook-xsl-1.73.2/common/gentext.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/gu.xml b/tools/docbook-xsl-1.73.2/common/gu.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/gu.xml rename to tools/docbook-xsl-1.73.2/common/gu.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/he.xml b/tools/docbook-xsl-1.73.2/common/he.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/he.xml rename to tools/docbook-xsl-1.73.2/common/he.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/hi.xml b/tools/docbook-xsl-1.73.2/common/hi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/hi.xml rename to tools/docbook-xsl-1.73.2/common/hi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/hr.xml b/tools/docbook-xsl-1.73.2/common/hr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/hr.xml rename to tools/docbook-xsl-1.73.2/common/hr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/hu.xml b/tools/docbook-xsl-1.73.2/common/hu.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/hu.xml rename to tools/docbook-xsl-1.73.2/common/hu.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/id.xml b/tools/docbook-xsl-1.73.2/common/id.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/id.xml rename to tools/docbook-xsl-1.73.2/common/id.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/insertfile.xsl b/tools/docbook-xsl-1.73.2/common/insertfile.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/insertfile.xsl rename to tools/docbook-xsl-1.73.2/common/insertfile.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/it.xml b/tools/docbook-xsl-1.73.2/common/it.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/it.xml rename to tools/docbook-xsl-1.73.2/common/it.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ja.xml b/tools/docbook-xsl-1.73.2/common/ja.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ja.xml rename to tools/docbook-xsl-1.73.2/common/ja.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/kn.xml b/tools/docbook-xsl-1.73.2/common/kn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/kn.xml rename to tools/docbook-xsl-1.73.2/common/kn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ko.xml b/tools/docbook-xsl-1.73.2/common/ko.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ko.xml rename to tools/docbook-xsl-1.73.2/common/ko.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.dtd b/tools/docbook-xsl-1.73.2/common/l10n.dtd similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.dtd rename to tools/docbook-xsl-1.73.2/common/l10n.dtd diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.xml b/tools/docbook-xsl-1.73.2/common/l10n.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.xml rename to tools/docbook-xsl-1.73.2/common/l10n.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.xsl b/tools/docbook-xsl-1.73.2/common/l10n.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/l10n.xsl rename to tools/docbook-xsl-1.73.2/common/l10n.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/la.xml b/tools/docbook-xsl-1.73.2/common/la.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/la.xml rename to tools/docbook-xsl-1.73.2/common/la.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/labels.xsl b/tools/docbook-xsl-1.73.2/common/labels.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/labels.xsl rename to tools/docbook-xsl-1.73.2/common/labels.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/lt.xml b/tools/docbook-xsl-1.73.2/common/lt.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/lt.xml rename to tools/docbook-xsl-1.73.2/common/lt.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/lv.xml b/tools/docbook-xsl-1.73.2/common/lv.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/lv.xml rename to tools/docbook-xsl-1.73.2/common/lv.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/mn.xml b/tools/docbook-xsl-1.73.2/common/mn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/mn.xml rename to tools/docbook-xsl-1.73.2/common/mn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/nl.xml b/tools/docbook-xsl-1.73.2/common/nl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/nl.xml rename to tools/docbook-xsl-1.73.2/common/nl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/nn.xml b/tools/docbook-xsl-1.73.2/common/nn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/nn.xml rename to tools/docbook-xsl-1.73.2/common/nn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/no.xml b/tools/docbook-xsl-1.73.2/common/no.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/no.xml rename to tools/docbook-xsl-1.73.2/common/no.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/olink.xsl b/tools/docbook-xsl-1.73.2/common/olink.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/olink.xsl rename to tools/docbook-xsl-1.73.2/common/olink.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/or.xml b/tools/docbook-xsl-1.73.2/common/or.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/or.xml rename to tools/docbook-xsl-1.73.2/common/or.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pa.xml b/tools/docbook-xsl-1.73.2/common/pa.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pa.xml rename to tools/docbook-xsl-1.73.2/common/pa.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pi.xml b/tools/docbook-xsl-1.73.2/common/pi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pi.xml rename to tools/docbook-xsl-1.73.2/common/pi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pi.xsl b/tools/docbook-xsl-1.73.2/common/pi.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pi.xsl rename to tools/docbook-xsl-1.73.2/common/pi.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pl.xml b/tools/docbook-xsl-1.73.2/common/pl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pl.xml rename to tools/docbook-xsl-1.73.2/common/pl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pt.xml b/tools/docbook-xsl-1.73.2/common/pt.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pt.xml rename to tools/docbook-xsl-1.73.2/common/pt.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/pt_br.xml b/tools/docbook-xsl-1.73.2/common/pt_br.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/pt_br.xml rename to tools/docbook-xsl-1.73.2/common/pt_br.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/refentry.xml b/tools/docbook-xsl-1.73.2/common/refentry.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/refentry.xml rename to tools/docbook-xsl-1.73.2/common/refentry.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/refentry.xsl b/tools/docbook-xsl-1.73.2/common/refentry.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/refentry.xsl rename to tools/docbook-xsl-1.73.2/common/refentry.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ro.xml b/tools/docbook-xsl-1.73.2/common/ro.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ro.xml rename to tools/docbook-xsl-1.73.2/common/ro.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ru.xml b/tools/docbook-xsl-1.73.2/common/ru.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ru.xml rename to tools/docbook-xsl-1.73.2/common/ru.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sk.xml b/tools/docbook-xsl-1.73.2/common/sk.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sk.xml rename to tools/docbook-xsl-1.73.2/common/sk.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sl.xml b/tools/docbook-xsl-1.73.2/common/sl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sl.xml rename to tools/docbook-xsl-1.73.2/common/sl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sq.xml b/tools/docbook-xsl-1.73.2/common/sq.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sq.xml rename to tools/docbook-xsl-1.73.2/common/sq.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sr.xml b/tools/docbook-xsl-1.73.2/common/sr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sr.xml rename to tools/docbook-xsl-1.73.2/common/sr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sr_Latn.xml b/tools/docbook-xsl-1.73.2/common/sr_Latn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sr_Latn.xml rename to tools/docbook-xsl-1.73.2/common/sr_Latn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/stripns.xsl b/tools/docbook-xsl-1.73.2/common/stripns.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/stripns.xsl rename to tools/docbook-xsl-1.73.2/common/stripns.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/subtitles.xsl b/tools/docbook-xsl-1.73.2/common/subtitles.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/subtitles.xsl rename to tools/docbook-xsl-1.73.2/common/subtitles.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/sv.xml b/tools/docbook-xsl-1.73.2/common/sv.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/sv.xml rename to tools/docbook-xsl-1.73.2/common/sv.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/ta.xml b/tools/docbook-xsl-1.73.2/common/ta.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/ta.xml rename to tools/docbook-xsl-1.73.2/common/ta.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/table.xsl b/tools/docbook-xsl-1.73.2/common/table.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/table.xsl rename to tools/docbook-xsl-1.73.2/common/table.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/targetdatabase.dtd b/tools/docbook-xsl-1.73.2/common/targetdatabase.dtd similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/targetdatabase.dtd rename to tools/docbook-xsl-1.73.2/common/targetdatabase.dtd diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/targets.xsl b/tools/docbook-xsl-1.73.2/common/targets.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/targets.xsl rename to tools/docbook-xsl-1.73.2/common/targets.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/th.xml b/tools/docbook-xsl-1.73.2/common/th.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/th.xml rename to tools/docbook-xsl-1.73.2/common/th.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/titles.xsl b/tools/docbook-xsl-1.73.2/common/titles.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/titles.xsl rename to tools/docbook-xsl-1.73.2/common/titles.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/tl.xml b/tools/docbook-xsl-1.73.2/common/tl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/tl.xml rename to tools/docbook-xsl-1.73.2/common/tl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/tr.xml b/tools/docbook-xsl-1.73.2/common/tr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/tr.xml rename to tools/docbook-xsl-1.73.2/common/tr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/uk.xml b/tools/docbook-xsl-1.73.2/common/uk.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/uk.xml rename to tools/docbook-xsl-1.73.2/common/uk.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/utility.xml b/tools/docbook-xsl-1.73.2/common/utility.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/utility.xml rename to tools/docbook-xsl-1.73.2/common/utility.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/utility.xsl b/tools/docbook-xsl-1.73.2/common/utility.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/utility.xsl rename to tools/docbook-xsl-1.73.2/common/utility.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/vi.xml b/tools/docbook-xsl-1.73.2/common/vi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/vi.xml rename to tools/docbook-xsl-1.73.2/common/vi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/xh.xml b/tools/docbook-xsl-1.73.2/common/xh.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/xh.xml rename to tools/docbook-xsl-1.73.2/common/xh.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/zh_cn.xml b/tools/docbook-xsl-1.73.2/common/zh_cn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/zh_cn.xml rename to tools/docbook-xsl-1.73.2/common/zh_cn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/common/zh_tw.xml b/tools/docbook-xsl-1.73.2/common/zh_tw.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/common/zh_tw.xml rename to tools/docbook-xsl-1.73.2/common/zh_tw.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/authors.xml b/tools/docbook-xsl-1.73.2/docsrc/authors.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/authors.xml rename to tools/docbook-xsl-1.73.2/docsrc/authors.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/copyright.xml b/tools/docbook-xsl-1.73.2/docsrc/copyright.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/copyright.xml rename to tools/docbook-xsl-1.73.2/docsrc/copyright.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/license.xml b/tools/docbook-xsl-1.73.2/docsrc/license.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/license.xml rename to tools/docbook-xsl-1.73.2/docsrc/license.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/page.png b/tools/docbook-xsl-1.73.2/docsrc/page.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/page.png rename to tools/docbook-xsl-1.73.2/docsrc/page.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.css b/tools/docbook-xsl-1.73.2/docsrc/reference.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.css rename to tools/docbook-xsl-1.73.2/docsrc/reference.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.xml b/tools/docbook-xsl-1.73.2/docsrc/reference.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.xml rename to tools/docbook-xsl-1.73.2/docsrc/reference.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.xml.included b/tools/docbook-xsl-1.73.2/docsrc/reference.xml.included similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/reference.xml.included rename to tools/docbook-xsl-1.73.2/docsrc/reference.xml.included diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/docsrc/warranty.xml b/tools/docbook-xsl-1.73.2/docsrc/warranty.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/docsrc/warranty.xml rename to tools/docbook-xsl-1.73.2/docsrc/warranty.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/eclipse/eclipse.xsl b/tools/docbook-xsl-1.73.2/eclipse/eclipse.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/eclipse/eclipse.xsl rename to tools/docbook-xsl-1.73.2/eclipse/eclipse.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/eclipse/profile-eclipse.xsl b/tools/docbook-xsl-1.73.2/eclipse/profile-eclipse.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/eclipse/profile-eclipse.xsl rename to tools/docbook-xsl-1.73.2/eclipse/profile-eclipse.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/extensions/saxon65.jar b/tools/docbook-xsl-1.73.2/extensions/saxon65.jar similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/extensions/saxon65.jar rename to tools/docbook-xsl-1.73.2/extensions/saxon65.jar diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/extensions/xalan27.jar b/tools/docbook-xsl-1.73.2/extensions/xalan27.jar similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/extensions/xalan27.jar rename to tools/docbook-xsl-1.73.2/extensions/xalan27.jar diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/admon.xsl b/tools/docbook-xsl-1.73.2/fo/admon.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/admon.xsl rename to tools/docbook-xsl-1.73.2/fo/admon.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/annotations.xsl b/tools/docbook-xsl-1.73.2/fo/annotations.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/annotations.xsl rename to tools/docbook-xsl-1.73.2/fo/annotations.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-kimber.xsl b/tools/docbook-xsl-1.73.2/fo/autoidx-kimber.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-kimber.xsl rename to tools/docbook-xsl-1.73.2/fo/autoidx-kimber.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-kosek.xsl b/tools/docbook-xsl-1.73.2/fo/autoidx-kosek.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-kosek.xsl rename to tools/docbook-xsl-1.73.2/fo/autoidx-kosek.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-ng.xsl b/tools/docbook-xsl-1.73.2/fo/autoidx-ng.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx-ng.xsl rename to tools/docbook-xsl-1.73.2/fo/autoidx-ng.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx.xsl b/tools/docbook-xsl-1.73.2/fo/autoidx.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/autoidx.xsl rename to tools/docbook-xsl-1.73.2/fo/autoidx.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/autotoc.xsl b/tools/docbook-xsl-1.73.2/fo/autotoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/autotoc.xsl rename to tools/docbook-xsl-1.73.2/fo/autotoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/axf.xsl b/tools/docbook-xsl-1.73.2/fo/axf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/axf.xsl rename to tools/docbook-xsl-1.73.2/fo/axf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/biblio-iso690.xsl b/tools/docbook-xsl-1.73.2/fo/biblio-iso690.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/biblio-iso690.xsl rename to tools/docbook-xsl-1.73.2/fo/biblio-iso690.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/biblio.xsl b/tools/docbook-xsl-1.73.2/fo/biblio.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/biblio.xsl rename to tools/docbook-xsl-1.73.2/fo/biblio.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/block.xsl b/tools/docbook-xsl-1.73.2/fo/block.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/block.xsl rename to tools/docbook-xsl-1.73.2/fo/block.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/callout.xsl b/tools/docbook-xsl-1.73.2/fo/callout.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/callout.xsl rename to tools/docbook-xsl-1.73.2/fo/callout.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/component.xsl b/tools/docbook-xsl-1.73.2/fo/component.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/component.xsl rename to tools/docbook-xsl-1.73.2/fo/component.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/division.xsl b/tools/docbook-xsl-1.73.2/fo/division.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/division.xsl rename to tools/docbook-xsl-1.73.2/fo/division.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/docbook.xsl b/tools/docbook-xsl-1.73.2/fo/docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/docbook.xsl rename to tools/docbook-xsl-1.73.2/fo/docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/ebnf.xsl b/tools/docbook-xsl-1.73.2/fo/ebnf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/ebnf.xsl rename to tools/docbook-xsl-1.73.2/fo/ebnf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/fo-rtf.xsl b/tools/docbook-xsl-1.73.2/fo/fo-rtf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/fo-rtf.xsl rename to tools/docbook-xsl-1.73.2/fo/fo-rtf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/fo.xsl b/tools/docbook-xsl-1.73.2/fo/fo.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/fo.xsl rename to tools/docbook-xsl-1.73.2/fo/fo.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/footnote.xsl b/tools/docbook-xsl-1.73.2/fo/footnote.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/footnote.xsl rename to tools/docbook-xsl-1.73.2/fo/footnote.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/fop.xsl b/tools/docbook-xsl-1.73.2/fo/fop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/fop.xsl rename to tools/docbook-xsl-1.73.2/fo/fop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/fop1.xsl b/tools/docbook-xsl-1.73.2/fo/fop1.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/fop1.xsl rename to tools/docbook-xsl-1.73.2/fo/fop1.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/formal.xsl b/tools/docbook-xsl-1.73.2/fo/formal.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/formal.xsl rename to tools/docbook-xsl-1.73.2/fo/formal.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/glossary.xsl b/tools/docbook-xsl-1.73.2/fo/glossary.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/glossary.xsl rename to tools/docbook-xsl-1.73.2/fo/glossary.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/graphics.xsl b/tools/docbook-xsl-1.73.2/fo/graphics.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/graphics.xsl rename to tools/docbook-xsl-1.73.2/fo/graphics.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/highlight.xsl b/tools/docbook-xsl-1.73.2/fo/highlight.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/highlight.xsl rename to tools/docbook-xsl-1.73.2/fo/highlight.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/htmltbl.xsl b/tools/docbook-xsl-1.73.2/fo/htmltbl.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/htmltbl.xsl rename to tools/docbook-xsl-1.73.2/fo/htmltbl.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/index.xsl b/tools/docbook-xsl-1.73.2/fo/index.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/index.xsl rename to tools/docbook-xsl-1.73.2/fo/index.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/info.xsl b/tools/docbook-xsl-1.73.2/fo/info.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/info.xsl rename to tools/docbook-xsl-1.73.2/fo/info.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/inline.xsl b/tools/docbook-xsl-1.73.2/fo/inline.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/inline.xsl rename to tools/docbook-xsl-1.73.2/fo/inline.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/keywords.xsl b/tools/docbook-xsl-1.73.2/fo/keywords.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/keywords.xsl rename to tools/docbook-xsl-1.73.2/fo/keywords.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/lists.xsl b/tools/docbook-xsl-1.73.2/fo/lists.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/lists.xsl rename to tools/docbook-xsl-1.73.2/fo/lists.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/math.xsl b/tools/docbook-xsl-1.73.2/fo/math.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/math.xsl rename to tools/docbook-xsl-1.73.2/fo/math.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/pagesetup.xsl b/tools/docbook-xsl-1.73.2/fo/pagesetup.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/pagesetup.xsl rename to tools/docbook-xsl-1.73.2/fo/pagesetup.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/param.xml b/tools/docbook-xsl-1.73.2/fo/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/param.xml rename to tools/docbook-xsl-1.73.2/fo/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/param.xsl b/tools/docbook-xsl-1.73.2/fo/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/param.xsl rename to tools/docbook-xsl-1.73.2/fo/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/passivetex.xsl b/tools/docbook-xsl-1.73.2/fo/passivetex.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/passivetex.xsl rename to tools/docbook-xsl-1.73.2/fo/passivetex.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/pdf2index b/tools/docbook-xsl-1.73.2/fo/pdf2index similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/pdf2index rename to tools/docbook-xsl-1.73.2/fo/pdf2index diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/pi.xml b/tools/docbook-xsl-1.73.2/fo/pi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/pi.xml rename to tools/docbook-xsl-1.73.2/fo/pi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/pi.xsl b/tools/docbook-xsl-1.73.2/fo/pi.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/pi.xsl rename to tools/docbook-xsl-1.73.2/fo/pi.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/profile-docbook.xsl b/tools/docbook-xsl-1.73.2/fo/profile-docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/profile-docbook.xsl rename to tools/docbook-xsl-1.73.2/fo/profile-docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/ptc.xsl b/tools/docbook-xsl-1.73.2/fo/ptc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/ptc.xsl rename to tools/docbook-xsl-1.73.2/fo/ptc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/qandaset.xsl b/tools/docbook-xsl-1.73.2/fo/qandaset.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/qandaset.xsl rename to tools/docbook-xsl-1.73.2/fo/qandaset.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/refentry.xsl b/tools/docbook-xsl-1.73.2/fo/refentry.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/refentry.xsl rename to tools/docbook-xsl-1.73.2/fo/refentry.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/sections.xsl b/tools/docbook-xsl-1.73.2/fo/sections.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/sections.xsl rename to tools/docbook-xsl-1.73.2/fo/sections.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/spaces.xsl b/tools/docbook-xsl-1.73.2/fo/spaces.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/spaces.xsl rename to tools/docbook-xsl-1.73.2/fo/spaces.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/synop.xsl b/tools/docbook-xsl-1.73.2/fo/synop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/synop.xsl rename to tools/docbook-xsl-1.73.2/fo/synop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/table.xml b/tools/docbook-xsl-1.73.2/fo/table.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/table.xml rename to tools/docbook-xsl-1.73.2/fo/table.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/table.xsl b/tools/docbook-xsl-1.73.2/fo/table.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/table.xsl rename to tools/docbook-xsl-1.73.2/fo/table.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/task.xsl b/tools/docbook-xsl-1.73.2/fo/task.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/task.xsl rename to tools/docbook-xsl-1.73.2/fo/task.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xml b/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xml rename to tools/docbook-xsl-1.73.2/fo/titlepage.templates.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xsl b/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.templates.xsl rename to tools/docbook-xsl-1.73.2/fo/titlepage.templates.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.xsl b/tools/docbook-xsl-1.73.2/fo/titlepage.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/titlepage.xsl rename to tools/docbook-xsl-1.73.2/fo/titlepage.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/toc.xsl b/tools/docbook-xsl-1.73.2/fo/toc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/toc.xsl rename to tools/docbook-xsl-1.73.2/fo/toc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/verbatim.xsl b/tools/docbook-xsl-1.73.2/fo/verbatim.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/verbatim.xsl rename to tools/docbook-xsl-1.73.2/fo/verbatim.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/xep.xsl b/tools/docbook-xsl-1.73.2/fo/xep.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/xep.xsl rename to tools/docbook-xsl-1.73.2/fo/xep.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/fo/xref.xsl b/tools/docbook-xsl-1.73.2/fo/xref.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/fo/xref.xsl rename to tools/docbook-xsl-1.73.2/fo/xref.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/c-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/c-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/c-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/c-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/common.xsl b/tools/docbook-xsl-1.73.2/highlighting/common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/common.xsl rename to tools/docbook-xsl-1.73.2/highlighting/common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/delphi-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/delphi-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/delphi-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/delphi-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/ini-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/ini-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/ini-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/ini-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/java-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/java-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/java-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/java-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/m2-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/m2-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/m2-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/m2-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/myxml-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/myxml-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/myxml-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/myxml-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/php-hl.xml b/tools/docbook-xsl-1.73.2/highlighting/php-hl.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/php-hl.xml rename to tools/docbook-xsl-1.73.2/highlighting/php-hl.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/highlighting/xslthl-config.xml b/tools/docbook-xsl-1.73.2/highlighting/xslthl-config.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/highlighting/xslthl-config.xml rename to tools/docbook-xsl-1.73.2/highlighting/xslthl-config.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/admon.xsl b/tools/docbook-xsl-1.73.2/html/admon.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/admon.xsl rename to tools/docbook-xsl-1.73.2/html/admon.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/annotations.xsl b/tools/docbook-xsl-1.73.2/html/annotations.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/annotations.xsl rename to tools/docbook-xsl-1.73.2/html/annotations.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-kimber.xsl b/tools/docbook-xsl-1.73.2/html/autoidx-kimber.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-kimber.xsl rename to tools/docbook-xsl-1.73.2/html/autoidx-kimber.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-kosek.xsl b/tools/docbook-xsl-1.73.2/html/autoidx-kosek.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-kosek.xsl rename to tools/docbook-xsl-1.73.2/html/autoidx-kosek.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-ng.xsl b/tools/docbook-xsl-1.73.2/html/autoidx-ng.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx-ng.xsl rename to tools/docbook-xsl-1.73.2/html/autoidx-ng.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx.xsl b/tools/docbook-xsl-1.73.2/html/autoidx.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/autoidx.xsl rename to tools/docbook-xsl-1.73.2/html/autoidx.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/autotoc.xsl b/tools/docbook-xsl-1.73.2/html/autotoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/autotoc.xsl rename to tools/docbook-xsl-1.73.2/html/autotoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/biblio-iso690.xsl b/tools/docbook-xsl-1.73.2/html/biblio-iso690.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/biblio-iso690.xsl rename to tools/docbook-xsl-1.73.2/html/biblio-iso690.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/biblio.xsl b/tools/docbook-xsl-1.73.2/html/biblio.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/biblio.xsl rename to tools/docbook-xsl-1.73.2/html/biblio.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/block.xsl b/tools/docbook-xsl-1.73.2/html/block.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/block.xsl rename to tools/docbook-xsl-1.73.2/html/block.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/callout.xsl b/tools/docbook-xsl-1.73.2/html/callout.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/callout.xsl rename to tools/docbook-xsl-1.73.2/html/callout.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/changebars.xsl b/tools/docbook-xsl-1.73.2/html/changebars.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/changebars.xsl rename to tools/docbook-xsl-1.73.2/html/changebars.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunk-code.xsl b/tools/docbook-xsl-1.73.2/html/chunk-code.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunk-code.xsl rename to tools/docbook-xsl-1.73.2/html/chunk-code.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunk-common.xsl b/tools/docbook-xsl-1.73.2/html/chunk-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunk-common.xsl rename to tools/docbook-xsl-1.73.2/html/chunk-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunk.xsl b/tools/docbook-xsl-1.73.2/html/chunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunk.xsl rename to tools/docbook-xsl-1.73.2/html/chunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunker.xsl b/tools/docbook-xsl-1.73.2/html/chunker.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunker.xsl rename to tools/docbook-xsl-1.73.2/html/chunker.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunkfast.xsl b/tools/docbook-xsl-1.73.2/html/chunkfast.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunkfast.xsl rename to tools/docbook-xsl-1.73.2/html/chunkfast.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/chunktoc.xsl b/tools/docbook-xsl-1.73.2/html/chunktoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/chunktoc.xsl rename to tools/docbook-xsl-1.73.2/html/chunktoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/component.xsl b/tools/docbook-xsl-1.73.2/html/component.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/component.xsl rename to tools/docbook-xsl-1.73.2/html/component.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/division.xsl b/tools/docbook-xsl-1.73.2/html/division.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/division.xsl rename to tools/docbook-xsl-1.73.2/html/division.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/docbook.xsl b/tools/docbook-xsl-1.73.2/html/docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/docbook.xsl rename to tools/docbook-xsl-1.73.2/html/docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/ebnf.xsl b/tools/docbook-xsl-1.73.2/html/ebnf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/ebnf.xsl rename to tools/docbook-xsl-1.73.2/html/ebnf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/footnote.xsl b/tools/docbook-xsl-1.73.2/html/footnote.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/footnote.xsl rename to tools/docbook-xsl-1.73.2/html/footnote.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/formal.xsl b/tools/docbook-xsl-1.73.2/html/formal.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/formal.xsl rename to tools/docbook-xsl-1.73.2/html/formal.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/glossary.xsl b/tools/docbook-xsl-1.73.2/html/glossary.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/glossary.xsl rename to tools/docbook-xsl-1.73.2/html/glossary.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/graphics.xsl b/tools/docbook-xsl-1.73.2/html/graphics.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/graphics.xsl rename to tools/docbook-xsl-1.73.2/html/graphics.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/highlight.xsl b/tools/docbook-xsl-1.73.2/html/highlight.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/highlight.xsl rename to tools/docbook-xsl-1.73.2/html/highlight.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/html-rtf.xsl b/tools/docbook-xsl-1.73.2/html/html-rtf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/html-rtf.xsl rename to tools/docbook-xsl-1.73.2/html/html-rtf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/html.xsl b/tools/docbook-xsl-1.73.2/html/html.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/html.xsl rename to tools/docbook-xsl-1.73.2/html/html.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/htmltbl.xsl b/tools/docbook-xsl-1.73.2/html/htmltbl.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/htmltbl.xsl rename to tools/docbook-xsl-1.73.2/html/htmltbl.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/index.xsl b/tools/docbook-xsl-1.73.2/html/index.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/index.xsl rename to tools/docbook-xsl-1.73.2/html/index.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/info.xsl b/tools/docbook-xsl-1.73.2/html/info.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/info.xsl rename to tools/docbook-xsl-1.73.2/html/info.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/inline.xsl b/tools/docbook-xsl-1.73.2/html/inline.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/inline.xsl rename to tools/docbook-xsl-1.73.2/html/inline.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/keywords.xsl b/tools/docbook-xsl-1.73.2/html/keywords.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/keywords.xsl rename to tools/docbook-xsl-1.73.2/html/keywords.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/lists.xsl b/tools/docbook-xsl-1.73.2/html/lists.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/lists.xsl rename to tools/docbook-xsl-1.73.2/html/lists.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/maketoc.xsl b/tools/docbook-xsl-1.73.2/html/maketoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/maketoc.xsl rename to tools/docbook-xsl-1.73.2/html/maketoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/manifest.xsl b/tools/docbook-xsl-1.73.2/html/manifest.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/manifest.xsl rename to tools/docbook-xsl-1.73.2/html/manifest.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/math.xsl b/tools/docbook-xsl-1.73.2/html/math.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/math.xsl rename to tools/docbook-xsl-1.73.2/html/math.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/oldchunker.xsl b/tools/docbook-xsl-1.73.2/html/oldchunker.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/oldchunker.xsl rename to tools/docbook-xsl-1.73.2/html/oldchunker.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/onechunk.xsl b/tools/docbook-xsl-1.73.2/html/onechunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/onechunk.xsl rename to tools/docbook-xsl-1.73.2/html/onechunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/param.xml b/tools/docbook-xsl-1.73.2/html/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/param.xml rename to tools/docbook-xsl-1.73.2/html/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/param.xsl b/tools/docbook-xsl-1.73.2/html/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/param.xsl rename to tools/docbook-xsl-1.73.2/html/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/pi.xml b/tools/docbook-xsl-1.73.2/html/pi.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/pi.xml rename to tools/docbook-xsl-1.73.2/html/pi.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/pi.xsl b/tools/docbook-xsl-1.73.2/html/pi.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/pi.xsl rename to tools/docbook-xsl-1.73.2/html/pi.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/profile-chunk-code.xsl b/tools/docbook-xsl-1.73.2/html/profile-chunk-code.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/profile-chunk-code.xsl rename to tools/docbook-xsl-1.73.2/html/profile-chunk-code.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/profile-chunk.xsl b/tools/docbook-xsl-1.73.2/html/profile-chunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/profile-chunk.xsl rename to tools/docbook-xsl-1.73.2/html/profile-chunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/profile-docbook.xsl b/tools/docbook-xsl-1.73.2/html/profile-docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/profile-docbook.xsl rename to tools/docbook-xsl-1.73.2/html/profile-docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/profile-onechunk.xsl b/tools/docbook-xsl-1.73.2/html/profile-onechunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/profile-onechunk.xsl rename to tools/docbook-xsl-1.73.2/html/profile-onechunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/qandaset.xsl b/tools/docbook-xsl-1.73.2/html/qandaset.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/qandaset.xsl rename to tools/docbook-xsl-1.73.2/html/qandaset.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/refentry.xsl b/tools/docbook-xsl-1.73.2/html/refentry.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/refentry.xsl rename to tools/docbook-xsl-1.73.2/html/refentry.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/sections.xsl b/tools/docbook-xsl-1.73.2/html/sections.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/sections.xsl rename to tools/docbook-xsl-1.73.2/html/sections.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/synop.xsl b/tools/docbook-xsl-1.73.2/html/synop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/synop.xsl rename to tools/docbook-xsl-1.73.2/html/synop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/table.xsl b/tools/docbook-xsl-1.73.2/html/table.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/table.xsl rename to tools/docbook-xsl-1.73.2/html/table.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/task.xsl b/tools/docbook-xsl-1.73.2/html/task.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/task.xsl rename to tools/docbook-xsl-1.73.2/html/task.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.templates.xml b/tools/docbook-xsl-1.73.2/html/titlepage.templates.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.templates.xml rename to tools/docbook-xsl-1.73.2/html/titlepage.templates.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.templates.xsl b/tools/docbook-xsl-1.73.2/html/titlepage.templates.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.templates.xsl rename to tools/docbook-xsl-1.73.2/html/titlepage.templates.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.xsl b/tools/docbook-xsl-1.73.2/html/titlepage.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/titlepage.xsl rename to tools/docbook-xsl-1.73.2/html/titlepage.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/toc.xsl b/tools/docbook-xsl-1.73.2/html/toc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/toc.xsl rename to tools/docbook-xsl-1.73.2/html/toc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/verbatim.xsl b/tools/docbook-xsl-1.73.2/html/verbatim.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/verbatim.xsl rename to tools/docbook-xsl-1.73.2/html/verbatim.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/html/xref.xsl b/tools/docbook-xsl-1.73.2/html/xref.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/html/xref.xsl rename to tools/docbook-xsl-1.73.2/html/xref.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp-common.xsl b/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp-common.xsl rename to tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl b/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl rename to tools/docbook-xsl-1.73.2/htmlhelp/htmlhelp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp-common.xsl b/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp-common.xsl rename to tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp.xsl b/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp.xsl rename to tools/docbook-xsl-1.73.2/htmlhelp/profile-htmlhelp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/annot-close.png b/tools/docbook-xsl-1.73.2/images/annot-close.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/annot-close.png rename to tools/docbook-xsl-1.73.2/images/annot-close.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/annot-open.png b/tools/docbook-xsl-1.73.2/images/annot-open.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/annot-open.png rename to tools/docbook-xsl-1.73.2/images/annot-open.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/blank.png b/tools/docbook-xsl-1.73.2/images/blank.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/blank.png rename to tools/docbook-xsl-1.73.2/images/blank.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.gif b/tools/docbook-xsl-1.73.2/images/callouts/1.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.gif rename to tools/docbook-xsl-1.73.2/images/callouts/1.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.png b/tools/docbook-xsl-1.73.2/images/callouts/1.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.png rename to tools/docbook-xsl-1.73.2/images/callouts/1.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.svg b/tools/docbook-xsl-1.73.2/images/callouts/1.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/1.svg rename to tools/docbook-xsl-1.73.2/images/callouts/1.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.gif b/tools/docbook-xsl-1.73.2/images/callouts/10.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.gif rename to tools/docbook-xsl-1.73.2/images/callouts/10.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.png b/tools/docbook-xsl-1.73.2/images/callouts/10.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.png rename to tools/docbook-xsl-1.73.2/images/callouts/10.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.svg b/tools/docbook-xsl-1.73.2/images/callouts/10.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/10.svg rename to tools/docbook-xsl-1.73.2/images/callouts/10.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.gif b/tools/docbook-xsl-1.73.2/images/callouts/11.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.gif rename to tools/docbook-xsl-1.73.2/images/callouts/11.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.png b/tools/docbook-xsl-1.73.2/images/callouts/11.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.png rename to tools/docbook-xsl-1.73.2/images/callouts/11.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.svg b/tools/docbook-xsl-1.73.2/images/callouts/11.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/11.svg rename to tools/docbook-xsl-1.73.2/images/callouts/11.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.gif b/tools/docbook-xsl-1.73.2/images/callouts/12.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.gif rename to tools/docbook-xsl-1.73.2/images/callouts/12.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.png b/tools/docbook-xsl-1.73.2/images/callouts/12.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.png rename to tools/docbook-xsl-1.73.2/images/callouts/12.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.svg b/tools/docbook-xsl-1.73.2/images/callouts/12.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/12.svg rename to tools/docbook-xsl-1.73.2/images/callouts/12.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.gif b/tools/docbook-xsl-1.73.2/images/callouts/13.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.gif rename to tools/docbook-xsl-1.73.2/images/callouts/13.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.png b/tools/docbook-xsl-1.73.2/images/callouts/13.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.png rename to tools/docbook-xsl-1.73.2/images/callouts/13.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.svg b/tools/docbook-xsl-1.73.2/images/callouts/13.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/13.svg rename to tools/docbook-xsl-1.73.2/images/callouts/13.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.gif b/tools/docbook-xsl-1.73.2/images/callouts/14.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.gif rename to tools/docbook-xsl-1.73.2/images/callouts/14.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.png b/tools/docbook-xsl-1.73.2/images/callouts/14.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.png rename to tools/docbook-xsl-1.73.2/images/callouts/14.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.svg b/tools/docbook-xsl-1.73.2/images/callouts/14.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/14.svg rename to tools/docbook-xsl-1.73.2/images/callouts/14.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.gif b/tools/docbook-xsl-1.73.2/images/callouts/15.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.gif rename to tools/docbook-xsl-1.73.2/images/callouts/15.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.png b/tools/docbook-xsl-1.73.2/images/callouts/15.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.png rename to tools/docbook-xsl-1.73.2/images/callouts/15.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.svg b/tools/docbook-xsl-1.73.2/images/callouts/15.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/15.svg rename to tools/docbook-xsl-1.73.2/images/callouts/15.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/16.svg b/tools/docbook-xsl-1.73.2/images/callouts/16.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/16.svg rename to tools/docbook-xsl-1.73.2/images/callouts/16.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/17.svg b/tools/docbook-xsl-1.73.2/images/callouts/17.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/17.svg rename to tools/docbook-xsl-1.73.2/images/callouts/17.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/18.svg b/tools/docbook-xsl-1.73.2/images/callouts/18.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/18.svg rename to tools/docbook-xsl-1.73.2/images/callouts/18.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/19.svg b/tools/docbook-xsl-1.73.2/images/callouts/19.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/19.svg rename to tools/docbook-xsl-1.73.2/images/callouts/19.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.gif b/tools/docbook-xsl-1.73.2/images/callouts/2.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.gif rename to tools/docbook-xsl-1.73.2/images/callouts/2.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.png b/tools/docbook-xsl-1.73.2/images/callouts/2.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.png rename to tools/docbook-xsl-1.73.2/images/callouts/2.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.svg b/tools/docbook-xsl-1.73.2/images/callouts/2.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/2.svg rename to tools/docbook-xsl-1.73.2/images/callouts/2.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/20.svg b/tools/docbook-xsl-1.73.2/images/callouts/20.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/20.svg rename to tools/docbook-xsl-1.73.2/images/callouts/20.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/21.svg b/tools/docbook-xsl-1.73.2/images/callouts/21.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/21.svg rename to tools/docbook-xsl-1.73.2/images/callouts/21.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/22.svg b/tools/docbook-xsl-1.73.2/images/callouts/22.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/22.svg rename to tools/docbook-xsl-1.73.2/images/callouts/22.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/23.svg b/tools/docbook-xsl-1.73.2/images/callouts/23.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/23.svg rename to tools/docbook-xsl-1.73.2/images/callouts/23.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/24.svg b/tools/docbook-xsl-1.73.2/images/callouts/24.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/24.svg rename to tools/docbook-xsl-1.73.2/images/callouts/24.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/25.svg b/tools/docbook-xsl-1.73.2/images/callouts/25.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/25.svg rename to tools/docbook-xsl-1.73.2/images/callouts/25.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/26.svg b/tools/docbook-xsl-1.73.2/images/callouts/26.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/26.svg rename to tools/docbook-xsl-1.73.2/images/callouts/26.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/27.svg b/tools/docbook-xsl-1.73.2/images/callouts/27.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/27.svg rename to tools/docbook-xsl-1.73.2/images/callouts/27.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/28.svg b/tools/docbook-xsl-1.73.2/images/callouts/28.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/28.svg rename to tools/docbook-xsl-1.73.2/images/callouts/28.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/29.svg b/tools/docbook-xsl-1.73.2/images/callouts/29.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/29.svg rename to tools/docbook-xsl-1.73.2/images/callouts/29.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.gif b/tools/docbook-xsl-1.73.2/images/callouts/3.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.gif rename to tools/docbook-xsl-1.73.2/images/callouts/3.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.png b/tools/docbook-xsl-1.73.2/images/callouts/3.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.png rename to tools/docbook-xsl-1.73.2/images/callouts/3.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.svg b/tools/docbook-xsl-1.73.2/images/callouts/3.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/3.svg rename to tools/docbook-xsl-1.73.2/images/callouts/3.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/30.svg b/tools/docbook-xsl-1.73.2/images/callouts/30.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/30.svg rename to tools/docbook-xsl-1.73.2/images/callouts/30.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.gif b/tools/docbook-xsl-1.73.2/images/callouts/4.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.gif rename to tools/docbook-xsl-1.73.2/images/callouts/4.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.png b/tools/docbook-xsl-1.73.2/images/callouts/4.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.png rename to tools/docbook-xsl-1.73.2/images/callouts/4.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.svg b/tools/docbook-xsl-1.73.2/images/callouts/4.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/4.svg rename to tools/docbook-xsl-1.73.2/images/callouts/4.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.gif b/tools/docbook-xsl-1.73.2/images/callouts/5.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.gif rename to tools/docbook-xsl-1.73.2/images/callouts/5.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.png b/tools/docbook-xsl-1.73.2/images/callouts/5.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.png rename to tools/docbook-xsl-1.73.2/images/callouts/5.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.svg b/tools/docbook-xsl-1.73.2/images/callouts/5.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/5.svg rename to tools/docbook-xsl-1.73.2/images/callouts/5.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.gif b/tools/docbook-xsl-1.73.2/images/callouts/6.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.gif rename to tools/docbook-xsl-1.73.2/images/callouts/6.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.png b/tools/docbook-xsl-1.73.2/images/callouts/6.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.png rename to tools/docbook-xsl-1.73.2/images/callouts/6.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.svg b/tools/docbook-xsl-1.73.2/images/callouts/6.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/6.svg rename to tools/docbook-xsl-1.73.2/images/callouts/6.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.gif b/tools/docbook-xsl-1.73.2/images/callouts/7.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.gif rename to tools/docbook-xsl-1.73.2/images/callouts/7.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.png b/tools/docbook-xsl-1.73.2/images/callouts/7.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.png rename to tools/docbook-xsl-1.73.2/images/callouts/7.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.svg b/tools/docbook-xsl-1.73.2/images/callouts/7.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/7.svg rename to tools/docbook-xsl-1.73.2/images/callouts/7.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.gif b/tools/docbook-xsl-1.73.2/images/callouts/8.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.gif rename to tools/docbook-xsl-1.73.2/images/callouts/8.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.png b/tools/docbook-xsl-1.73.2/images/callouts/8.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.png rename to tools/docbook-xsl-1.73.2/images/callouts/8.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.svg b/tools/docbook-xsl-1.73.2/images/callouts/8.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/8.svg rename to tools/docbook-xsl-1.73.2/images/callouts/8.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.gif b/tools/docbook-xsl-1.73.2/images/callouts/9.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.gif rename to tools/docbook-xsl-1.73.2/images/callouts/9.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.png b/tools/docbook-xsl-1.73.2/images/callouts/9.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.png rename to tools/docbook-xsl-1.73.2/images/callouts/9.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.svg b/tools/docbook-xsl-1.73.2/images/callouts/9.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/callouts/9.svg rename to tools/docbook-xsl-1.73.2/images/callouts/9.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/caution.gif b/tools/docbook-xsl-1.73.2/images/caution.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/caution.gif rename to tools/docbook-xsl-1.73.2/images/caution.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/caution.png b/tools/docbook-xsl-1.73.2/images/caution.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/caution.png rename to tools/docbook-xsl-1.73.2/images/caution.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/caution.svg b/tools/docbook-xsl-1.73.2/images/caution.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/caution.svg rename to tools/docbook-xsl-1.73.2/images/caution.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/caution.tif b/tools/docbook-xsl-1.73.2/images/caution.tif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/caution.tif rename to tools/docbook-xsl-1.73.2/images/caution.tif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/draft.png b/tools/docbook-xsl-1.73.2/images/draft.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/draft.png rename to tools/docbook-xsl-1.73.2/images/draft.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/home.gif b/tools/docbook-xsl-1.73.2/images/home.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/home.gif rename to tools/docbook-xsl-1.73.2/images/home.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/home.png b/tools/docbook-xsl-1.73.2/images/home.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/home.png rename to tools/docbook-xsl-1.73.2/images/home.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/home.svg b/tools/docbook-xsl-1.73.2/images/home.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/home.svg rename to tools/docbook-xsl-1.73.2/images/home.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/important.gif b/tools/docbook-xsl-1.73.2/images/important.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/important.gif rename to tools/docbook-xsl-1.73.2/images/important.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/important.png b/tools/docbook-xsl-1.73.2/images/important.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/important.png rename to tools/docbook-xsl-1.73.2/images/important.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/important.svg b/tools/docbook-xsl-1.73.2/images/important.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/important.svg rename to tools/docbook-xsl-1.73.2/images/important.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/important.tif b/tools/docbook-xsl-1.73.2/images/important.tif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/important.tif rename to tools/docbook-xsl-1.73.2/images/important.tif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/next.gif b/tools/docbook-xsl-1.73.2/images/next.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/next.gif rename to tools/docbook-xsl-1.73.2/images/next.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/next.png b/tools/docbook-xsl-1.73.2/images/next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/next.png rename to tools/docbook-xsl-1.73.2/images/next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/next.svg b/tools/docbook-xsl-1.73.2/images/next.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/next.svg rename to tools/docbook-xsl-1.73.2/images/next.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/note.gif b/tools/docbook-xsl-1.73.2/images/note.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/note.gif rename to tools/docbook-xsl-1.73.2/images/note.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/note.png b/tools/docbook-xsl-1.73.2/images/note.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/note.png rename to tools/docbook-xsl-1.73.2/images/note.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/note.svg b/tools/docbook-xsl-1.73.2/images/note.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/note.svg rename to tools/docbook-xsl-1.73.2/images/note.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/note.tif b/tools/docbook-xsl-1.73.2/images/note.tif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/note.tif rename to tools/docbook-xsl-1.73.2/images/note.tif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/prev.gif b/tools/docbook-xsl-1.73.2/images/prev.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/prev.gif rename to tools/docbook-xsl-1.73.2/images/prev.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/prev.png b/tools/docbook-xsl-1.73.2/images/prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/prev.png rename to tools/docbook-xsl-1.73.2/images/prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/prev.svg b/tools/docbook-xsl-1.73.2/images/prev.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/prev.svg rename to tools/docbook-xsl-1.73.2/images/prev.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/tip.gif b/tools/docbook-xsl-1.73.2/images/tip.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/tip.gif rename to tools/docbook-xsl-1.73.2/images/tip.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/tip.png b/tools/docbook-xsl-1.73.2/images/tip.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/tip.png rename to tools/docbook-xsl-1.73.2/images/tip.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/tip.svg b/tools/docbook-xsl-1.73.2/images/tip.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/tip.svg rename to tools/docbook-xsl-1.73.2/images/tip.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/tip.tif b/tools/docbook-xsl-1.73.2/images/tip.tif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/tip.tif rename to tools/docbook-xsl-1.73.2/images/tip.tif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/toc-blank.png b/tools/docbook-xsl-1.73.2/images/toc-blank.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/toc-blank.png rename to tools/docbook-xsl-1.73.2/images/toc-blank.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/toc-minus.png b/tools/docbook-xsl-1.73.2/images/toc-minus.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/toc-minus.png rename to tools/docbook-xsl-1.73.2/images/toc-minus.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/toc-plus.png b/tools/docbook-xsl-1.73.2/images/toc-plus.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/toc-plus.png rename to tools/docbook-xsl-1.73.2/images/toc-plus.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/up.gif b/tools/docbook-xsl-1.73.2/images/up.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/up.gif rename to tools/docbook-xsl-1.73.2/images/up.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/up.png b/tools/docbook-xsl-1.73.2/images/up.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/up.png rename to tools/docbook-xsl-1.73.2/images/up.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/up.svg b/tools/docbook-xsl-1.73.2/images/up.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/up.svg rename to tools/docbook-xsl-1.73.2/images/up.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/warning.gif b/tools/docbook-xsl-1.73.2/images/warning.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/warning.gif rename to tools/docbook-xsl-1.73.2/images/warning.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/warning.png b/tools/docbook-xsl-1.73.2/images/warning.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/warning.png rename to tools/docbook-xsl-1.73.2/images/warning.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/warning.svg b/tools/docbook-xsl-1.73.2/images/warning.svg similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/warning.svg rename to tools/docbook-xsl-1.73.2/images/warning.svg diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/images/warning.tif b/tools/docbook-xsl-1.73.2/images/warning.tif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/images/warning.tif rename to tools/docbook-xsl-1.73.2/images/warning.tif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/install.sh b/tools/docbook-xsl-1.73.2/install.sh similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/install.sh rename to tools/docbook-xsl-1.73.2/install.sh diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/javahelp/javahelp.xsl b/tools/docbook-xsl-1.73.2/javahelp/javahelp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/javahelp/javahelp.xsl rename to tools/docbook-xsl-1.73.2/javahelp/javahelp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/javahelp/profile-javahelp.xsl b/tools/docbook-xsl-1.73.2/javahelp/profile-javahelp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/javahelp/profile-javahelp.xsl rename to tools/docbook-xsl-1.73.2/javahelp/profile-javahelp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/lib/lib.xsl b/tools/docbook-xsl-1.73.2/lib/lib.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/lib/lib.xsl rename to tools/docbook-xsl-1.73.2/lib/lib.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/ChangeLog.20020917 b/tools/docbook-xsl-1.73.2/manpages/ChangeLog.20020917 similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/ChangeLog.20020917 rename to tools/docbook-xsl-1.73.2/manpages/ChangeLog.20020917 diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/block.xsl b/tools/docbook-xsl-1.73.2/manpages/block.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/block.xsl rename to tools/docbook-xsl-1.73.2/manpages/block.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/charmap.groff.xsl b/tools/docbook-xsl-1.73.2/manpages/charmap.groff.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/charmap.groff.xsl rename to tools/docbook-xsl-1.73.2/manpages/charmap.groff.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/docbook.xsl b/tools/docbook-xsl-1.73.2/manpages/docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/docbook.xsl rename to tools/docbook-xsl-1.73.2/manpages/docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/endnotes.xsl b/tools/docbook-xsl-1.73.2/manpages/endnotes.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/endnotes.xsl rename to tools/docbook-xsl-1.73.2/manpages/endnotes.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/html-synop.xsl b/tools/docbook-xsl-1.73.2/manpages/html-synop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/html-synop.xsl rename to tools/docbook-xsl-1.73.2/manpages/html-synop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/info.xsl b/tools/docbook-xsl-1.73.2/manpages/info.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/info.xsl rename to tools/docbook-xsl-1.73.2/manpages/info.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/inline.xsl b/tools/docbook-xsl-1.73.2/manpages/inline.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/inline.xsl rename to tools/docbook-xsl-1.73.2/manpages/inline.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/lists.xsl b/tools/docbook-xsl-1.73.2/manpages/lists.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/lists.xsl rename to tools/docbook-xsl-1.73.2/manpages/lists.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/other.xsl b/tools/docbook-xsl-1.73.2/manpages/other.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/other.xsl rename to tools/docbook-xsl-1.73.2/manpages/other.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/param.xml b/tools/docbook-xsl-1.73.2/manpages/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/param.xml rename to tools/docbook-xsl-1.73.2/manpages/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/param.xsl b/tools/docbook-xsl-1.73.2/manpages/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/param.xsl rename to tools/docbook-xsl-1.73.2/manpages/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/profile-docbook.xsl b/tools/docbook-xsl-1.73.2/manpages/profile-docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/profile-docbook.xsl rename to tools/docbook-xsl-1.73.2/manpages/profile-docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/refentry.xsl b/tools/docbook-xsl-1.73.2/manpages/refentry.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/refentry.xsl rename to tools/docbook-xsl-1.73.2/manpages/refentry.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/synop.xsl b/tools/docbook-xsl-1.73.2/manpages/synop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/synop.xsl rename to tools/docbook-xsl-1.73.2/manpages/synop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/table.xsl b/tools/docbook-xsl-1.73.2/manpages/table.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/table.xsl rename to tools/docbook-xsl-1.73.2/manpages/table.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/manpages/utility.xsl b/tools/docbook-xsl-1.73.2/manpages/utility.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/manpages/utility.xsl rename to tools/docbook-xsl-1.73.2/manpages/utility.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.notitle.enabled.xml b/tools/docbook-xsl-1.73.2/params/abstract.notitle.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.notitle.enabled.xml rename to tools/docbook-xsl-1.73.2/params/abstract.notitle.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.properties.xml b/tools/docbook-xsl-1.73.2/params/abstract.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.properties.xml rename to tools/docbook-xsl-1.73.2/params/abstract.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.title.properties.xml b/tools/docbook-xsl-1.73.2/params/abstract.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/abstract.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/abstract.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/active.toc.xml b/tools/docbook-xsl-1.73.2/params/active.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/active.toc.xml rename to tools/docbook-xsl-1.73.2/params/active.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.extension.xml b/tools/docbook-xsl-1.73.2/params/admon.graphics.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.extension.xml rename to tools/docbook-xsl-1.73.2/params/admon.graphics.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.path.xml b/tools/docbook-xsl-1.73.2/params/admon.graphics.path.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.path.xml rename to tools/docbook-xsl-1.73.2/params/admon.graphics.path.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.xml b/tools/docbook-xsl-1.73.2/params/admon.graphics.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admon.graphics.xml rename to tools/docbook-xsl-1.73.2/params/admon.graphics.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admon.style.xml b/tools/docbook-xsl-1.73.2/params/admon.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admon.style.xml rename to tools/docbook-xsl-1.73.2/params/admon.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admon.textlabel.xml b/tools/docbook-xsl-1.73.2/params/admon.textlabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admon.textlabel.xml rename to tools/docbook-xsl-1.73.2/params/admon.textlabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admonition.properties.xml b/tools/docbook-xsl-1.73.2/params/admonition.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admonition.properties.xml rename to tools/docbook-xsl-1.73.2/params/admonition.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/admonition.title.properties.xml b/tools/docbook-xsl-1.73.2/params/admonition.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/admonition.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/admonition.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/alignment.xml b/tools/docbook-xsl-1.73.2/params/alignment.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/alignment.xml rename to tools/docbook-xsl-1.73.2/params/alignment.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotate.toc.xml b/tools/docbook-xsl-1.73.2/params/annotate.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotate.toc.xml rename to tools/docbook-xsl-1.73.2/params/annotate.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.css.xml b/tools/docbook-xsl-1.73.2/params/annotation.css.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.css.xml rename to tools/docbook-xsl-1.73.2/params/annotation.css.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.graphic.close.xml b/tools/docbook-xsl-1.73.2/params/annotation.graphic.close.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.graphic.close.xml rename to tools/docbook-xsl-1.73.2/params/annotation.graphic.close.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.graphic.open.xml b/tools/docbook-xsl-1.73.2/params/annotation.graphic.open.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.graphic.open.xml rename to tools/docbook-xsl-1.73.2/params/annotation.graphic.open.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.js.xml b/tools/docbook-xsl-1.73.2/params/annotation.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.js.xml rename to tools/docbook-xsl-1.73.2/params/annotation.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.support.xml b/tools/docbook-xsl-1.73.2/params/annotation.support.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/annotation.support.xml rename to tools/docbook-xsl-1.73.2/params/annotation.support.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/appendix.autolabel.xml b/tools/docbook-xsl-1.73.2/params/appendix.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/appendix.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/appendix.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/arbortext.extensions.xml b/tools/docbook-xsl-1.73.2/params/arbortext.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/arbortext.extensions.xml rename to tools/docbook-xsl-1.73.2/params/arbortext.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/article.appendix.title.properties.xml b/tools/docbook-xsl-1.73.2/params/article.appendix.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/article.appendix.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/article.appendix.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/author.othername.in.middle.xml b/tools/docbook-xsl-1.73.2/params/author.othername.in.middle.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/author.othername.in.middle.xml rename to tools/docbook-xsl-1.73.2/params/author.othername.in.middle.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/autolayout-file.xml b/tools/docbook-xsl-1.73.2/params/autolayout-file.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/autolayout-file.xml rename to tools/docbook-xsl-1.73.2/params/autolayout-file.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/autotoc.label.in.hyperlink.xml b/tools/docbook-xsl-1.73.2/params/autotoc.label.in.hyperlink.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/autotoc.label.in.hyperlink.xml rename to tools/docbook-xsl-1.73.2/params/autotoc.label.in.hyperlink.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/autotoc.label.separator.xml b/tools/docbook-xsl-1.73.2/params/autotoc.label.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/autotoc.label.separator.xml rename to tools/docbook-xsl-1.73.2/params/autotoc.label.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/axf.extensions.xml b/tools/docbook-xsl-1.73.2/params/axf.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/axf.extensions.xml rename to tools/docbook-xsl-1.73.2/params/axf.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/banner.before.navigation.xml b/tools/docbook-xsl-1.73.2/params/banner.before.navigation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/banner.before.navigation.xml rename to tools/docbook-xsl-1.73.2/params/banner.before.navigation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/base.dir.xml b/tools/docbook-xsl-1.73.2/params/base.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/base.dir.xml rename to tools/docbook-xsl-1.73.2/params/base.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/biblioentry.item.separator.xml b/tools/docbook-xsl-1.73.2/params/biblioentry.item.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/biblioentry.item.separator.xml rename to tools/docbook-xsl-1.73.2/params/biblioentry.item.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/biblioentry.properties.xml b/tools/docbook-xsl-1.73.2/params/biblioentry.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/biblioentry.properties.xml rename to tools/docbook-xsl-1.73.2/params/biblioentry.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.collection.xml b/tools/docbook-xsl-1.73.2/params/bibliography.collection.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.collection.xml rename to tools/docbook-xsl-1.73.2/params/bibliography.collection.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.numbered.xml b/tools/docbook-xsl-1.73.2/params/bibliography.numbered.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.numbered.xml rename to tools/docbook-xsl-1.73.2/params/bibliography.numbered.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.style.xml b/tools/docbook-xsl-1.73.2/params/bibliography.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/bibliography.style.xml rename to tools/docbook-xsl-1.73.2/params/bibliography.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/blockquote.properties.xml b/tools/docbook-xsl-1.73.2/params/blockquote.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/blockquote.properties.xml rename to tools/docbook-xsl-1.73.2/params/blockquote.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/blurb.on.titlepage.enabled.xml b/tools/docbook-xsl-1.73.2/params/blurb.on.titlepage.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/blurb.on.titlepage.enabled.xml rename to tools/docbook-xsl-1.73.2/params/blurb.on.titlepage.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.attributes.xml b/tools/docbook-xsl-1.73.2/params/body.attributes.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.attributes.xml rename to tools/docbook-xsl-1.73.2/params/body.attributes.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.bg.color.xml b/tools/docbook-xsl-1.73.2/params/body.bg.color.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.bg.color.xml rename to tools/docbook-xsl-1.73.2/params/body.bg.color.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.end.indent.xml b/tools/docbook-xsl-1.73.2/params/body.end.indent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.end.indent.xml rename to tools/docbook-xsl-1.73.2/params/body.end.indent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.family.xml b/tools/docbook-xsl-1.73.2/params/body.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.family.xml rename to tools/docbook-xsl-1.73.2/params/body.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.master.xml b/tools/docbook-xsl-1.73.2/params/body.font.master.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.master.xml rename to tools/docbook-xsl-1.73.2/params/body.font.master.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.size.xml b/tools/docbook-xsl-1.73.2/params/body.font.size.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.font.size.xml rename to tools/docbook-xsl-1.73.2/params/body.font.size.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.margin.bottom.xml b/tools/docbook-xsl-1.73.2/params/body.margin.bottom.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.margin.bottom.xml rename to tools/docbook-xsl-1.73.2/params/body.margin.bottom.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.margin.top.xml b/tools/docbook-xsl-1.73.2/params/body.margin.top.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.margin.top.xml rename to tools/docbook-xsl-1.73.2/params/body.margin.top.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/body.start.indent.xml b/tools/docbook-xsl-1.73.2/params/body.start.indent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/body.start.indent.xml rename to tools/docbook-xsl-1.73.2/params/body.start.indent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/bridgehead.in.toc.xml b/tools/docbook-xsl-1.73.2/params/bridgehead.in.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/bridgehead.in.toc.xml rename to tools/docbook-xsl-1.73.2/params/bridgehead.in.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/bullet.image.xml b/tools/docbook-xsl-1.73.2/params/bullet.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/bullet.image.xml rename to tools/docbook-xsl-1.73.2/params/bullet.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.defaultcolumn.xml b/tools/docbook-xsl-1.73.2/params/callout.defaultcolumn.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.defaultcolumn.xml rename to tools/docbook-xsl-1.73.2/params/callout.defaultcolumn.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.extension.xml b/tools/docbook-xsl-1.73.2/params/callout.graphics.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.extension.xml rename to tools/docbook-xsl-1.73.2/params/callout.graphics.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.number.limit.xml b/tools/docbook-xsl-1.73.2/params/callout.graphics.number.limit.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.number.limit.xml rename to tools/docbook-xsl-1.73.2/params/callout.graphics.number.limit.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.path.xml b/tools/docbook-xsl-1.73.2/params/callout.graphics.path.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.path.xml rename to tools/docbook-xsl-1.73.2/params/callout.graphics.path.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.xml b/tools/docbook-xsl-1.73.2/params/callout.graphics.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.graphics.xml rename to tools/docbook-xsl-1.73.2/params/callout.graphics.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.icon.size.xml b/tools/docbook-xsl-1.73.2/params/callout.icon.size.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.icon.size.xml rename to tools/docbook-xsl-1.73.2/params/callout.icon.size.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.list.table.xml b/tools/docbook-xsl-1.73.2/params/callout.list.table.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.list.table.xml rename to tools/docbook-xsl-1.73.2/params/callout.list.table.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.font.xml b/tools/docbook-xsl-1.73.2/params/callout.unicode.font.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.font.xml rename to tools/docbook-xsl-1.73.2/params/callout.unicode.font.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.number.limit.xml b/tools/docbook-xsl-1.73.2/params/callout.unicode.number.limit.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.number.limit.xml rename to tools/docbook-xsl-1.73.2/params/callout.unicode.number.limit.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.start.character.xml b/tools/docbook-xsl-1.73.2/params/callout.unicode.start.character.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.start.character.xml rename to tools/docbook-xsl-1.73.2/params/callout.unicode.start.character.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.xml b/tools/docbook-xsl-1.73.2/params/callout.unicode.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callout.unicode.xml rename to tools/docbook-xsl-1.73.2/params/callout.unicode.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/callouts.extension.xml b/tools/docbook-xsl-1.73.2/params/callouts.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/callouts.extension.xml rename to tools/docbook-xsl-1.73.2/params/callouts.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chapter.autolabel.xml b/tools/docbook-xsl-1.73.2/params/chapter.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chapter.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/chapter.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.append.xml b/tools/docbook-xsl-1.73.2/params/chunk.append.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.append.xml rename to tools/docbook-xsl-1.73.2/params/chunk.append.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.first.sections.xml b/tools/docbook-xsl-1.73.2/params/chunk.first.sections.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.first.sections.xml rename to tools/docbook-xsl-1.73.2/params/chunk.first.sections.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.quietly.xml b/tools/docbook-xsl-1.73.2/params/chunk.quietly.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.quietly.xml rename to tools/docbook-xsl-1.73.2/params/chunk.quietly.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.section.depth.xml b/tools/docbook-xsl-1.73.2/params/chunk.section.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.section.depth.xml rename to tools/docbook-xsl-1.73.2/params/chunk.section.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.sections.xml b/tools/docbook-xsl-1.73.2/params/chunk.sections.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.sections.xml rename to tools/docbook-xsl-1.73.2/params/chunk.sections.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.separate.lots.xml b/tools/docbook-xsl-1.73.2/params/chunk.separate.lots.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.separate.lots.xml rename to tools/docbook-xsl-1.73.2/params/chunk.separate.lots.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.toc.xml b/tools/docbook-xsl-1.73.2/params/chunk.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.toc.xml rename to tools/docbook-xsl-1.73.2/params/chunk.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.has.title.xml b/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.has.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.has.title.xml rename to tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.has.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.xml b/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.xml rename to tools/docbook-xsl-1.73.2/params/chunk.tocs.and.lots.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.cdata-section-elements.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.cdata-section-elements.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.cdata-section-elements.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.cdata-section-elements.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-public.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-public.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-public.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.doctype-public.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-system.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-system.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.doctype-system.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.doctype-system.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.encoding.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.encoding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.encoding.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.encoding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.indent.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.indent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.indent.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.indent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.media-type.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.media-type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.media-type.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.media-type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.method.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.method.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.method.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.method.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.omit-xml-declaration.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.omit-xml-declaration.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.omit-xml-declaration.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.omit-xml-declaration.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.standalone.xml b/tools/docbook-xsl-1.73.2/params/chunker.output.standalone.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/chunker.output.standalone.xml rename to tools/docbook-xsl-1.73.2/params/chunker.output.standalone.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/citerefentry.link.xml b/tools/docbook-xsl-1.73.2/params/citerefentry.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/citerefentry.link.xml rename to tools/docbook-xsl-1.73.2/params/citerefentry.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/collect.xref.targets.xml b/tools/docbook-xsl-1.73.2/params/collect.xref.targets.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/collect.xref.targets.xml rename to tools/docbook-xsl-1.73.2/params/collect.xref.targets.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.back.xml b/tools/docbook-xsl-1.73.2/params/column.count.back.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.back.xml rename to tools/docbook-xsl-1.73.2/params/column.count.back.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.body.xml b/tools/docbook-xsl-1.73.2/params/column.count.body.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.body.xml rename to tools/docbook-xsl-1.73.2/params/column.count.body.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.front.xml b/tools/docbook-xsl-1.73.2/params/column.count.front.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.front.xml rename to tools/docbook-xsl-1.73.2/params/column.count.front.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.index.xml b/tools/docbook-xsl-1.73.2/params/column.count.index.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.index.xml rename to tools/docbook-xsl-1.73.2/params/column.count.index.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.lot.xml b/tools/docbook-xsl-1.73.2/params/column.count.lot.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.lot.xml rename to tools/docbook-xsl-1.73.2/params/column.count.lot.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.titlepage.xml b/tools/docbook-xsl-1.73.2/params/column.count.titlepage.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.count.titlepage.xml rename to tools/docbook-xsl-1.73.2/params/column.count.titlepage.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.back.xml b/tools/docbook-xsl-1.73.2/params/column.gap.back.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.back.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.back.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.body.xml b/tools/docbook-xsl-1.73.2/params/column.gap.body.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.body.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.body.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.front.xml b/tools/docbook-xsl-1.73.2/params/column.gap.front.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.front.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.front.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.index.xml b/tools/docbook-xsl-1.73.2/params/column.gap.index.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.index.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.index.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.lot.xml b/tools/docbook-xsl-1.73.2/params/column.gap.lot.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.lot.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.lot.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.titlepage.xml b/tools/docbook-xsl-1.73.2/params/column.gap.titlepage.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/column.gap.titlepage.xml rename to tools/docbook-xsl-1.73.2/params/column.gap.titlepage.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/compact.list.item.spacing.xml b/tools/docbook-xsl-1.73.2/params/compact.list.item.spacing.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/compact.list.item.spacing.xml rename to tools/docbook-xsl-1.73.2/params/compact.list.item.spacing.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/component.label.includes.part.label.xml b/tools/docbook-xsl-1.73.2/params/component.label.includes.part.label.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/component.label.includes.part.label.xml rename to tools/docbook-xsl-1.73.2/params/component.label.includes.part.label.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/component.title.properties.xml b/tools/docbook-xsl-1.73.2/params/component.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/component.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/component.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/component.titlepage.properties.xml b/tools/docbook-xsl-1.73.2/params/component.titlepage.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/component.titlepage.properties.xml rename to tools/docbook-xsl-1.73.2/params/component.titlepage.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/contrib.inline.enabled.xml b/tools/docbook-xsl-1.73.2/params/contrib.inline.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/contrib.inline.enabled.xml rename to tools/docbook-xsl-1.73.2/params/contrib.inline.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.bleed.xml b/tools/docbook-xsl-1.73.2/params/crop.mark.bleed.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.bleed.xml rename to tools/docbook-xsl-1.73.2/params/crop.mark.bleed.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.offset.xml b/tools/docbook-xsl-1.73.2/params/crop.mark.offset.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.offset.xml rename to tools/docbook-xsl-1.73.2/params/crop.mark.offset.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.width.xml b/tools/docbook-xsl-1.73.2/params/crop.mark.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/crop.mark.width.xml rename to tools/docbook-xsl-1.73.2/params/crop.mark.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/crop.marks.xml b/tools/docbook-xsl-1.73.2/params/crop.marks.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/crop.marks.xml rename to tools/docbook-xsl-1.73.2/params/crop.marks.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/css.decoration.xml b/tools/docbook-xsl-1.73.2/params/css.decoration.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/css.decoration.xml rename to tools/docbook-xsl-1.73.2/params/css.decoration.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/css.stylesheet.dir.xml b/tools/docbook-xsl-1.73.2/params/css.stylesheet.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/css.stylesheet.dir.xml rename to tools/docbook-xsl-1.73.2/params/css.stylesheet.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/css.stylesheet.xml b/tools/docbook-xsl-1.73.2/params/css.stylesheet.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/css.stylesheet.xml rename to tools/docbook-xsl-1.73.2/params/css.stylesheet.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/current.docid.xml b/tools/docbook-xsl-1.73.2/params/current.docid.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/current.docid.xml rename to tools/docbook-xsl-1.73.2/params/current.docid.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/currentpage.marker.xml b/tools/docbook-xsl-1.73.2/params/currentpage.marker.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/currentpage.marker.xml rename to tools/docbook-xsl-1.73.2/params/currentpage.marker.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/default.float.class.xml b/tools/docbook-xsl-1.73.2/params/default.float.class.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/default.float.class.xml rename to tools/docbook-xsl-1.73.2/params/default.float.class.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/default.image.width.xml b/tools/docbook-xsl-1.73.2/params/default.image.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/default.image.width.xml rename to tools/docbook-xsl-1.73.2/params/default.image.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/default.table.frame.xml b/tools/docbook-xsl-1.73.2/params/default.table.frame.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/default.table.frame.xml rename to tools/docbook-xsl-1.73.2/params/default.table.frame.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/default.table.width.xml b/tools/docbook-xsl-1.73.2/params/default.table.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/default.table.width.xml rename to tools/docbook-xsl-1.73.2/params/default.table.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/default.units.xml b/tools/docbook-xsl-1.73.2/params/default.units.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/default.units.xml rename to tools/docbook-xsl-1.73.2/params/default.units.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/dingbat.font.family.xml b/tools/docbook-xsl-1.73.2/params/dingbat.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/dingbat.font.family.xml rename to tools/docbook-xsl-1.73.2/params/dingbat.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/double.sided.xml b/tools/docbook-xsl-1.73.2/params/double.sided.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/double.sided.xml rename to tools/docbook-xsl-1.73.2/params/double.sided.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/draft.mode.xml b/tools/docbook-xsl-1.73.2/params/draft.mode.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/draft.mode.xml rename to tools/docbook-xsl-1.73.2/params/draft.mode.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/draft.watermark.image.xml b/tools/docbook-xsl-1.73.2/params/draft.watermark.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/draft.watermark.image.xml rename to tools/docbook-xsl-1.73.2/params/draft.watermark.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/dry-run.xml b/tools/docbook-xsl-1.73.2/params/dry-run.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/dry-run.xml rename to tools/docbook-xsl-1.73.2/params/dry-run.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/dynamic.toc.xml b/tools/docbook-xsl-1.73.2/params/dynamic.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/dynamic.toc.xml rename to tools/docbook-xsl-1.73.2/params/dynamic.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.assignment.xml b/tools/docbook-xsl-1.73.2/params/ebnf.assignment.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.assignment.xml rename to tools/docbook-xsl-1.73.2/params/ebnf.assignment.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.statement.terminator.xml b/tools/docbook-xsl-1.73.2/params/ebnf.statement.terminator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.statement.terminator.xml rename to tools/docbook-xsl-1.73.2/params/ebnf.statement.terminator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.table.bgcolor.xml b/tools/docbook-xsl-1.73.2/params/ebnf.table.bgcolor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.table.bgcolor.xml rename to tools/docbook-xsl-1.73.2/params/ebnf.table.bgcolor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.table.border.xml b/tools/docbook-xsl-1.73.2/params/ebnf.table.border.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ebnf.table.border.xml rename to tools/docbook-xsl-1.73.2/params/ebnf.table.border.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.autolabel.xml b/tools/docbook-xsl-1.73.2/params/eclipse.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/eclipse.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.id.xml b/tools/docbook-xsl-1.73.2/params/eclipse.plugin.id.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.id.xml rename to tools/docbook-xsl-1.73.2/params/eclipse.plugin.id.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.name.xml b/tools/docbook-xsl-1.73.2/params/eclipse.plugin.name.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.name.xml rename to tools/docbook-xsl-1.73.2/params/eclipse.plugin.name.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.provider.xml b/tools/docbook-xsl-1.73.2/params/eclipse.plugin.provider.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/eclipse.plugin.provider.xml rename to tools/docbook-xsl-1.73.2/params/eclipse.plugin.provider.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/editedby.enabled.xml b/tools/docbook-xsl-1.73.2/params/editedby.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/editedby.enabled.xml rename to tools/docbook-xsl-1.73.2/params/editedby.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/email.delimiters.enabled.xml b/tools/docbook-xsl-1.73.2/params/email.delimiters.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/email.delimiters.enabled.xml rename to tools/docbook-xsl-1.73.2/params/email.delimiters.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/emphasis.propagates.style.xml b/tools/docbook-xsl-1.73.2/params/emphasis.propagates.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/emphasis.propagates.style.xml rename to tools/docbook-xsl-1.73.2/params/emphasis.propagates.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/entry.propagates.style.xml b/tools/docbook-xsl-1.73.2/params/entry.propagates.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/entry.propagates.style.xml rename to tools/docbook-xsl-1.73.2/params/entry.propagates.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/equation.properties.xml b/tools/docbook-xsl-1.73.2/params/equation.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/equation.properties.xml rename to tools/docbook-xsl-1.73.2/params/equation.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/example.properties.xml b/tools/docbook-xsl-1.73.2/params/example.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/example.properties.xml rename to tools/docbook-xsl-1.73.2/params/example.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.href.xml b/tools/docbook-xsl-1.73.2/params/feedback.href.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.href.xml rename to tools/docbook-xsl-1.73.2/params/feedback.href.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.link.text.xml b/tools/docbook-xsl-1.73.2/params/feedback.link.text.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.link.text.xml rename to tools/docbook-xsl-1.73.2/params/feedback.link.text.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.with.ids.xml b/tools/docbook-xsl-1.73.2/params/feedback.with.ids.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/feedback.with.ids.xml rename to tools/docbook-xsl-1.73.2/params/feedback.with.ids.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/figure.properties.xml b/tools/docbook-xsl-1.73.2/params/figure.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/figure.properties.xml rename to tools/docbook-xsl-1.73.2/params/figure.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/filename-prefix.xml b/tools/docbook-xsl-1.73.2/params/filename-prefix.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/filename-prefix.xml rename to tools/docbook-xsl-1.73.2/params/filename-prefix.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/firstterm.only.link.xml b/tools/docbook-xsl-1.73.2/params/firstterm.only.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/firstterm.only.link.xml rename to tools/docbook-xsl-1.73.2/params/firstterm.only.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foil.properties.xml b/tools/docbook-xsl-1.73.2/params/foil.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foil.properties.xml rename to tools/docbook-xsl-1.73.2/params/foil.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foil.subtitle.properties.xml b/tools/docbook-xsl-1.73.2/params/foil.subtitle.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foil.subtitle.properties.xml rename to tools/docbook-xsl-1.73.2/params/foil.subtitle.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foil.title.master.xml b/tools/docbook-xsl-1.73.2/params/foil.title.master.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foil.title.master.xml rename to tools/docbook-xsl-1.73.2/params/foil.title.master.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foil.title.size.xml b/tools/docbook-xsl-1.73.2/params/foil.title.size.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foil.title.size.xml rename to tools/docbook-xsl-1.73.2/params/foil.title.size.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foilgroup.properties.xml b/tools/docbook-xsl-1.73.2/params/foilgroup.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foilgroup.properties.xml rename to tools/docbook-xsl-1.73.2/params/foilgroup.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/foilgroup.toc.xml b/tools/docbook-xsl-1.73.2/params/foilgroup.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/foilgroup.toc.xml rename to tools/docbook-xsl-1.73.2/params/foilgroup.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.column.widths.xml b/tools/docbook-xsl-1.73.2/params/footer.column.widths.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.column.widths.xml rename to tools/docbook-xsl-1.73.2/params/footer.column.widths.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.content.properties.xml b/tools/docbook-xsl-1.73.2/params/footer.content.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.content.properties.xml rename to tools/docbook-xsl-1.73.2/params/footer.content.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.hr.xml b/tools/docbook-xsl-1.73.2/params/footer.hr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.hr.xml rename to tools/docbook-xsl-1.73.2/params/footer.hr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.rule.xml b/tools/docbook-xsl-1.73.2/params/footer.rule.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.rule.xml rename to tools/docbook-xsl-1.73.2/params/footer.rule.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.table.height.xml b/tools/docbook-xsl-1.73.2/params/footer.table.height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.table.height.xml rename to tools/docbook-xsl-1.73.2/params/footer.table.height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footer.table.properties.xml b/tools/docbook-xsl-1.73.2/params/footer.table.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footer.table.properties.xml rename to tools/docbook-xsl-1.73.2/params/footer.table.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footers.on.blank.pages.xml b/tools/docbook-xsl-1.73.2/params/footers.on.blank.pages.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footers.on.blank.pages.xml rename to tools/docbook-xsl-1.73.2/params/footers.on.blank.pages.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.font.size.xml b/tools/docbook-xsl-1.73.2/params/footnote.font.size.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.font.size.xml rename to tools/docbook-xsl-1.73.2/params/footnote.font.size.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.mark.properties.xml b/tools/docbook-xsl-1.73.2/params/footnote.mark.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.mark.properties.xml rename to tools/docbook-xsl-1.73.2/params/footnote.mark.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.number.format.xml b/tools/docbook-xsl-1.73.2/params/footnote.number.format.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.number.format.xml rename to tools/docbook-xsl-1.73.2/params/footnote.number.format.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.number.symbols.xml b/tools/docbook-xsl-1.73.2/params/footnote.number.symbols.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.number.symbols.xml rename to tools/docbook-xsl-1.73.2/params/footnote.number.symbols.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.properties.xml b/tools/docbook-xsl-1.73.2/params/footnote.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.properties.xml rename to tools/docbook-xsl-1.73.2/params/footnote.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.sep.leader.properties.xml b/tools/docbook-xsl-1.73.2/params/footnote.sep.leader.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/footnote.sep.leader.properties.xml rename to tools/docbook-xsl-1.73.2/params/footnote.sep.leader.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/fop.extensions.xml b/tools/docbook-xsl-1.73.2/params/fop.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/fop.extensions.xml rename to tools/docbook-xsl-1.73.2/params/fop.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/fop1.extensions.xml b/tools/docbook-xsl-1.73.2/params/fop1.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/fop1.extensions.xml rename to tools/docbook-xsl-1.73.2/params/fop1.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/formal.object.properties.xml b/tools/docbook-xsl-1.73.2/params/formal.object.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/formal.object.properties.xml rename to tools/docbook-xsl-1.73.2/params/formal.object.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/formal.procedures.xml b/tools/docbook-xsl-1.73.2/params/formal.procedures.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/formal.procedures.xml rename to tools/docbook-xsl-1.73.2/params/formal.procedures.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/formal.title.placement.xml b/tools/docbook-xsl-1.73.2/params/formal.title.placement.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/formal.title.placement.xml rename to tools/docbook-xsl-1.73.2/params/formal.title.placement.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/formal.title.properties.xml b/tools/docbook-xsl-1.73.2/params/formal.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/formal.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/formal.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.decoration.xml b/tools/docbook-xsl-1.73.2/params/funcsynopsis.decoration.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.decoration.xml rename to tools/docbook-xsl-1.73.2/params/funcsynopsis.decoration.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.style.xml b/tools/docbook-xsl-1.73.2/params/funcsynopsis.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.style.xml rename to tools/docbook-xsl-1.73.2/params/funcsynopsis.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.tabular.threshold.xml b/tools/docbook-xsl-1.73.2/params/funcsynopsis.tabular.threshold.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/funcsynopsis.tabular.threshold.xml rename to tools/docbook-xsl-1.73.2/params/funcsynopsis.tabular.threshold.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/function.parens.xml b/tools/docbook-xsl-1.73.2/params/function.parens.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/function.parens.xml rename to tools/docbook-xsl-1.73.2/params/function.parens.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.id.attributes.xml b/tools/docbook-xsl-1.73.2/params/generate.id.attributes.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.id.attributes.xml rename to tools/docbook-xsl-1.73.2/params/generate.id.attributes.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.index.xml b/tools/docbook-xsl-1.73.2/params/generate.index.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.index.xml rename to tools/docbook-xsl-1.73.2/params/generate.index.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.legalnotice.link.xml b/tools/docbook-xsl-1.73.2/params/generate.legalnotice.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.legalnotice.link.xml rename to tools/docbook-xsl-1.73.2/params/generate.legalnotice.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.manifest.xml b/tools/docbook-xsl-1.73.2/params/generate.manifest.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.manifest.xml rename to tools/docbook-xsl-1.73.2/params/generate.manifest.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.meta.abstract.xml b/tools/docbook-xsl-1.73.2/params/generate.meta.abstract.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.meta.abstract.xml rename to tools/docbook-xsl-1.73.2/params/generate.meta.abstract.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.revhistory.link.xml b/tools/docbook-xsl-1.73.2/params/generate.revhistory.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.revhistory.link.xml rename to tools/docbook-xsl-1.73.2/params/generate.revhistory.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.section.toc.level.xml b/tools/docbook-xsl-1.73.2/params/generate.section.toc.level.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.section.toc.level.xml rename to tools/docbook-xsl-1.73.2/params/generate.section.toc.level.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/generate.toc.xml b/tools/docbook-xsl-1.73.2/params/generate.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/generate.toc.xml rename to tools/docbook-xsl-1.73.2/params/generate.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.as.blocks.xml b/tools/docbook-xsl-1.73.2/params/glossary.as.blocks.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.as.blocks.xml rename to tools/docbook-xsl-1.73.2/params/glossary.as.blocks.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.collection.xml b/tools/docbook-xsl-1.73.2/params/glossary.collection.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.collection.xml rename to tools/docbook-xsl-1.73.2/params/glossary.collection.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.sort.xml b/tools/docbook-xsl-1.73.2/params/glossary.sort.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossary.sort.xml rename to tools/docbook-xsl-1.73.2/params/glossary.sort.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossentry.show.acronym.xml b/tools/docbook-xsl-1.73.2/params/glossentry.show.acronym.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossentry.show.acronym.xml rename to tools/docbook-xsl-1.73.2/params/glossentry.show.acronym.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glosslist.as.blocks.xml b/tools/docbook-xsl-1.73.2/params/glosslist.as.blocks.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glosslist.as.blocks.xml rename to tools/docbook-xsl-1.73.2/params/glosslist.as.blocks.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.auto.link.xml b/tools/docbook-xsl-1.73.2/params/glossterm.auto.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.auto.link.xml rename to tools/docbook-xsl-1.73.2/params/glossterm.auto.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.separation.xml b/tools/docbook-xsl-1.73.2/params/glossterm.separation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.separation.xml rename to tools/docbook-xsl-1.73.2/params/glossterm.separation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.width.xml b/tools/docbook-xsl-1.73.2/params/glossterm.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/glossterm.width.xml rename to tools/docbook-xsl-1.73.2/params/glossterm.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/graphic.default.extension.xml b/tools/docbook-xsl-1.73.2/params/graphic.default.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/graphic.default.extension.xml rename to tools/docbook-xsl-1.73.2/params/graphic.default.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/graphical.admonition.properties.xml b/tools/docbook-xsl-1.73.2/params/graphical.admonition.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/graphical.admonition.properties.xml rename to tools/docbook-xsl-1.73.2/params/graphical.admonition.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/graphics.dir.xml b/tools/docbook-xsl-1.73.2/params/graphics.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/graphics.dir.xml rename to tools/docbook-xsl-1.73.2/params/graphics.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/graphicsize.extension.xml b/tools/docbook-xsl-1.73.2/params/graphicsize.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/graphicsize.extension.xml rename to tools/docbook-xsl-1.73.2/params/graphicsize.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/graphicsize.use.img.src.path.xml b/tools/docbook-xsl-1.73.2/params/graphicsize.use.img.src.path.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/graphicsize.use.img.src.path.xml rename to tools/docbook-xsl-1.73.2/params/graphicsize.use.img.src.path.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.column.widths.xml b/tools/docbook-xsl-1.73.2/params/header.column.widths.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.column.widths.xml rename to tools/docbook-xsl-1.73.2/params/header.column.widths.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.content.properties.xml b/tools/docbook-xsl-1.73.2/params/header.content.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.content.properties.xml rename to tools/docbook-xsl-1.73.2/params/header.content.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.hr.xml b/tools/docbook-xsl-1.73.2/params/header.hr.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.hr.xml rename to tools/docbook-xsl-1.73.2/params/header.hr.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.rule.xml b/tools/docbook-xsl-1.73.2/params/header.rule.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.rule.xml rename to tools/docbook-xsl-1.73.2/params/header.rule.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.table.height.xml b/tools/docbook-xsl-1.73.2/params/header.table.height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.table.height.xml rename to tools/docbook-xsl-1.73.2/params/header.table.height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/header.table.properties.xml b/tools/docbook-xsl-1.73.2/params/header.table.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/header.table.properties.xml rename to tools/docbook-xsl-1.73.2/params/header.table.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/headers.on.blank.pages.xml b/tools/docbook-xsl-1.73.2/params/headers.on.blank.pages.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/headers.on.blank.pages.xml rename to tools/docbook-xsl-1.73.2/params/headers.on.blank.pages.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/hidetoc.image.xml b/tools/docbook-xsl-1.73.2/params/hidetoc.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/hidetoc.image.xml rename to tools/docbook-xsl-1.73.2/params/hidetoc.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/highlight.default.language.xml b/tools/docbook-xsl-1.73.2/params/highlight.default.language.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/highlight.default.language.xml rename to tools/docbook-xsl-1.73.2/params/highlight.default.language.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/highlight.source.xml b/tools/docbook-xsl-1.73.2/params/highlight.source.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/highlight.source.xml rename to tools/docbook-xsl-1.73.2/params/highlight.source.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/home.image.xml b/tools/docbook-xsl-1.73.2/params/home.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/home.image.xml rename to tools/docbook-xsl-1.73.2/params/home.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.append.xml b/tools/docbook-xsl-1.73.2/params/html.append.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.append.xml rename to tools/docbook-xsl-1.73.2/params/html.append.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.base.xml b/tools/docbook-xsl-1.73.2/params/html.base.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.base.xml rename to tools/docbook-xsl-1.73.2/params/html.base.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.cellpadding.xml b/tools/docbook-xsl-1.73.2/params/html.cellpadding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.cellpadding.xml rename to tools/docbook-xsl-1.73.2/params/html.cellpadding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.cellspacing.xml b/tools/docbook-xsl-1.73.2/params/html.cellspacing.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.cellspacing.xml rename to tools/docbook-xsl-1.73.2/params/html.cellspacing.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.cleanup.xml b/tools/docbook-xsl-1.73.2/params/html.cleanup.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.cleanup.xml rename to tools/docbook-xsl-1.73.2/params/html.cleanup.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.ext.xml b/tools/docbook-xsl-1.73.2/params/html.ext.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.ext.xml rename to tools/docbook-xsl-1.73.2/params/html.ext.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.extra.head.links.xml b/tools/docbook-xsl-1.73.2/params/html.extra.head.links.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.extra.head.links.xml rename to tools/docbook-xsl-1.73.2/params/html.extra.head.links.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.multiple.xml b/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.multiple.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.multiple.xml rename to tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.multiple.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.types.xml b/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.types.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.types.xml rename to tools/docbook-xsl-1.73.2/params/html.head.legalnotice.link.types.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.longdesc.link.xml b/tools/docbook-xsl-1.73.2/params/html.longdesc.link.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.longdesc.link.xml rename to tools/docbook-xsl-1.73.2/params/html.longdesc.link.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.longdesc.xml b/tools/docbook-xsl-1.73.2/params/html.longdesc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.longdesc.xml rename to tools/docbook-xsl-1.73.2/params/html.longdesc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.stylesheet.type.xml b/tools/docbook-xsl-1.73.2/params/html.stylesheet.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.stylesheet.type.xml rename to tools/docbook-xsl-1.73.2/params/html.stylesheet.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/html.stylesheet.xml b/tools/docbook-xsl-1.73.2/params/html.stylesheet.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/html.stylesheet.xml rename to tools/docbook-xsl-1.73.2/params/html.stylesheet.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.alias.file.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.alias.file.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.alias.file.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.alias.file.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.autolabel.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.back.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.back.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.back.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.back.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.forward.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.forward.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.forward.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.forward.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.hideshow.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.hideshow.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.hideshow.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.hideshow.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.url.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.url.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.url.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.url.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.home.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.title.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.title.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.url.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.url.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.url.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.url.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump1.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.title.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.title.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.url.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.url.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.url.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.url.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.jump2.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.locate.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.locate.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.locate.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.locate.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.next.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.next.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.next.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.next.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.options.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.options.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.options.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.options.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.prev.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.prev.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.prev.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.prev.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.print.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.print.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.print.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.print.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.refresh.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.refresh.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.refresh.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.refresh.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.stop.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.stop.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.stop.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.stop.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.zoom.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.button.zoom.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.button.zoom.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.button.zoom.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.chm.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.chm.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.chm.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.chm.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.default.topic.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.default.topic.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.default.topic.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.default.topic.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.display.progress.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.display.progress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.display.progress.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.display.progress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.encoding.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.encoding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.encoding.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.encoding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.enhanced.decompilation.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.enhanced.decompilation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.enhanced.decompilation.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.enhanced.decompilation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.enumerate.images.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.enumerate.images.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.enumerate.images.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.enumerate.images.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.force.map.and.alias.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.force.map.and.alias.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.force.map.and.alias.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.force.map.and.alias.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.binary.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.binary.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.binary.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.binary.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.folders.instead.books.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.folders.instead.books.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.folders.instead.books.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.folders.instead.books.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.section.depth.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.section.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.section.depth.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.section.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.show.root.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.show.root.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.show.root.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.show.root.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.width.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.width.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhk.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhk.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhk.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhk.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.tail.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.tail.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.tail.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.tail.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.window.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.window.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.window.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.window.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.windows.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.windows.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.windows.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.windows.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.hhp.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.map.file.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.map.file.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.map.file.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.map.file.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.only.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.only.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.only.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.only.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.remember.window.position.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.remember.window.position.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.remember.window.position.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.remember.window.position.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.advanced.search.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.show.advanced.search.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.advanced.search.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.show.advanced.search.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.favorities.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.show.favorities.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.favorities.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.show.favorities.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.menu.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.show.menu.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.menu.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.show.menu.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.toolbar.text.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.show.toolbar.text.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.show.toolbar.text.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.show.toolbar.text.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.title.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.title.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.use.hhk.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.use.hhk.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.use.hhk.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.use.hhk.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.window.geometry.xml b/tools/docbook-xsl-1.73.2/params/htmlhelp.window.geometry.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/htmlhelp.window.geometry.xml rename to tools/docbook-xsl-1.73.2/params/htmlhelp.window.geometry.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.characters.xml b/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.characters.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.characters.xml rename to tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.characters.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.xml b/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.xml rename to tools/docbook-xsl-1.73.2/params/hyphenate.verbatim.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.xml b/tools/docbook-xsl-1.73.2/params/hyphenate.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/hyphenate.xml rename to tools/docbook-xsl-1.73.2/params/hyphenate.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/id.warnings.xml b/tools/docbook-xsl-1.73.2/params/id.warnings.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/id.warnings.xml rename to tools/docbook-xsl-1.73.2/params/id.warnings.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ignore.image.scaling.xml b/tools/docbook-xsl-1.73.2/params/ignore.image.scaling.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ignore.image.scaling.xml rename to tools/docbook-xsl-1.73.2/params/ignore.image.scaling.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/img.src.path.xml b/tools/docbook-xsl-1.73.2/params/img.src.path.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/img.src.path.xml rename to tools/docbook-xsl-1.73.2/params/img.src.path.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.div.title.properties.xml b/tools/docbook-xsl-1.73.2/params/index.div.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.div.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/index.div.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.entry.properties.xml b/tools/docbook-xsl-1.73.2/params/index.entry.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.entry.properties.xml rename to tools/docbook-xsl-1.73.2/params/index.entry.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.method.xml b/tools/docbook-xsl-1.73.2/params/index.method.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.method.xml rename to tools/docbook-xsl-1.73.2/params/index.method.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.number.separator.xml b/tools/docbook-xsl-1.73.2/params/index.number.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.number.separator.xml rename to tools/docbook-xsl-1.73.2/params/index.number.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.on.role.xml b/tools/docbook-xsl-1.73.2/params/index.on.role.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.on.role.xml rename to tools/docbook-xsl-1.73.2/params/index.on.role.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.on.type.xml b/tools/docbook-xsl-1.73.2/params/index.on.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.on.type.xml rename to tools/docbook-xsl-1.73.2/params/index.on.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.page.number.properties.xml b/tools/docbook-xsl-1.73.2/params/index.page.number.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.page.number.properties.xml rename to tools/docbook-xsl-1.73.2/params/index.page.number.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.prefer.titleabbrev.xml b/tools/docbook-xsl-1.73.2/params/index.prefer.titleabbrev.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.prefer.titleabbrev.xml rename to tools/docbook-xsl-1.73.2/params/index.prefer.titleabbrev.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.preferred.page.properties.xml b/tools/docbook-xsl-1.73.2/params/index.preferred.page.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.preferred.page.properties.xml rename to tools/docbook-xsl-1.73.2/params/index.preferred.page.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.range.separator.xml b/tools/docbook-xsl-1.73.2/params/index.range.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.range.separator.xml rename to tools/docbook-xsl-1.73.2/params/index.range.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/index.term.separator.xml b/tools/docbook-xsl-1.73.2/params/index.term.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/index.term.separator.xml rename to tools/docbook-xsl-1.73.2/params/index.term.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/informal.object.properties.xml b/tools/docbook-xsl-1.73.2/params/informal.object.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/informal.object.properties.xml rename to tools/docbook-xsl-1.73.2/params/informal.object.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/informalequation.properties.xml b/tools/docbook-xsl-1.73.2/params/informalequation.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/informalequation.properties.xml rename to tools/docbook-xsl-1.73.2/params/informalequation.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/informalexample.properties.xml b/tools/docbook-xsl-1.73.2/params/informalexample.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/informalexample.properties.xml rename to tools/docbook-xsl-1.73.2/params/informalexample.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/informalfigure.properties.xml b/tools/docbook-xsl-1.73.2/params/informalfigure.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/informalfigure.properties.xml rename to tools/docbook-xsl-1.73.2/params/informalfigure.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/informaltable.properties.xml b/tools/docbook-xsl-1.73.2/params/informaltable.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/informaltable.properties.xml rename to tools/docbook-xsl-1.73.2/params/informaltable.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/inherit.keywords.xml b/tools/docbook-xsl-1.73.2/params/inherit.keywords.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/inherit.keywords.xml rename to tools/docbook-xsl-1.73.2/params/inherit.keywords.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/insert.link.page.number.xml b/tools/docbook-xsl-1.73.2/params/insert.link.page.number.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/insert.link.page.number.xml rename to tools/docbook-xsl-1.73.2/params/insert.link.page.number.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/insert.olink.page.number.xml b/tools/docbook-xsl-1.73.2/params/insert.olink.page.number.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/insert.olink.page.number.xml rename to tools/docbook-xsl-1.73.2/params/insert.olink.page.number.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/insert.olink.pdf.frag.xml b/tools/docbook-xsl-1.73.2/params/insert.olink.pdf.frag.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/insert.olink.pdf.frag.xml rename to tools/docbook-xsl-1.73.2/params/insert.olink.pdf.frag.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/insert.xref.page.number.xml b/tools/docbook-xsl-1.73.2/params/insert.xref.page.number.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/insert.xref.page.number.xml rename to tools/docbook-xsl-1.73.2/params/insert.xref.page.number.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.label.properties.xml b/tools/docbook-xsl-1.73.2/params/itemizedlist.label.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.label.properties.xml rename to tools/docbook-xsl-1.73.2/params/itemizedlist.label.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.label.width.xml b/tools/docbook-xsl-1.73.2/params/itemizedlist.label.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.label.width.xml rename to tools/docbook-xsl-1.73.2/params/itemizedlist.label.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.properties.xml b/tools/docbook-xsl-1.73.2/params/itemizedlist.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/itemizedlist.properties.xml rename to tools/docbook-xsl-1.73.2/params/itemizedlist.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/javahelp.encoding.xml b/tools/docbook-xsl-1.73.2/params/javahelp.encoding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/javahelp.encoding.xml rename to tools/docbook-xsl-1.73.2/params/javahelp.encoding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/keep.relative.image.uris.xml b/tools/docbook-xsl-1.73.2/params/keep.relative.image.uris.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/keep.relative.image.uris.xml rename to tools/docbook-xsl-1.73.2/params/keep.relative.image.uris.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/keyboard.nav.xml b/tools/docbook-xsl-1.73.2/params/keyboard.nav.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/keyboard.nav.xml rename to tools/docbook-xsl-1.73.2/params/keyboard.nav.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.default.language.xml b/tools/docbook-xsl-1.73.2/params/l10n.gentext.default.language.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.default.language.xml rename to tools/docbook-xsl-1.73.2/params/l10n.gentext.default.language.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.language.xml b/tools/docbook-xsl-1.73.2/params/l10n.gentext.language.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.language.xml rename to tools/docbook-xsl-1.73.2/params/l10n.gentext.language.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.use.xref.language.xml b/tools/docbook-xsl-1.73.2/params/l10n.gentext.use.xref.language.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.gentext.use.xref.language.xml rename to tools/docbook-xsl-1.73.2/params/l10n.gentext.use.xref.language.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.lang.value.rfc.compliant.xml b/tools/docbook-xsl-1.73.2/params/l10n.lang.value.rfc.compliant.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/l10n.lang.value.rfc.compliant.xml rename to tools/docbook-xsl-1.73.2/params/l10n.lang.value.rfc.compliant.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/label.from.part.xml b/tools/docbook-xsl-1.73.2/params/label.from.part.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/label.from.part.xml rename to tools/docbook-xsl-1.73.2/params/label.from.part.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/line-height.xml b/tools/docbook-xsl-1.73.2/params/line-height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/line-height.xml rename to tools/docbook-xsl-1.73.2/params/line-height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.everyNth.xml b/tools/docbook-xsl-1.73.2/params/linenumbering.everyNth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.everyNth.xml rename to tools/docbook-xsl-1.73.2/params/linenumbering.everyNth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.extension.xml b/tools/docbook-xsl-1.73.2/params/linenumbering.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.extension.xml rename to tools/docbook-xsl-1.73.2/params/linenumbering.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.separator.xml b/tools/docbook-xsl-1.73.2/params/linenumbering.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.separator.xml rename to tools/docbook-xsl-1.73.2/params/linenumbering.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.width.xml b/tools/docbook-xsl-1.73.2/params/linenumbering.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/linenumbering.width.xml rename to tools/docbook-xsl-1.73.2/params/linenumbering.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/link.mailto.url.xml b/tools/docbook-xsl-1.73.2/params/link.mailto.url.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/link.mailto.url.xml rename to tools/docbook-xsl-1.73.2/params/link.mailto.url.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/list.block.properties.xml b/tools/docbook-xsl-1.73.2/params/list.block.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/list.block.properties.xml rename to tools/docbook-xsl-1.73.2/params/list.block.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/list.block.spacing.xml b/tools/docbook-xsl-1.73.2/params/list.block.spacing.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/list.block.spacing.xml rename to tools/docbook-xsl-1.73.2/params/list.block.spacing.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/list.item.spacing.xml b/tools/docbook-xsl-1.73.2/params/list.item.spacing.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/list.item.spacing.xml rename to tools/docbook-xsl-1.73.2/params/list.item.spacing.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/make.graphic.viewport.xml b/tools/docbook-xsl-1.73.2/params/make.graphic.viewport.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/make.graphic.viewport.xml rename to tools/docbook-xsl-1.73.2/params/make.graphic.viewport.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/make.index.markup.xml b/tools/docbook-xsl-1.73.2/params/make.index.markup.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/make.index.markup.xml rename to tools/docbook-xsl-1.73.2/params/make.index.markup.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/make.single.year.ranges.xml b/tools/docbook-xsl-1.73.2/params/make.single.year.ranges.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/make.single.year.ranges.xml rename to tools/docbook-xsl-1.73.2/params/make.single.year.ranges.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/make.valid.html.xml b/tools/docbook-xsl-1.73.2/params/make.valid.html.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/make.valid.html.xml rename to tools/docbook-xsl-1.73.2/params/make.valid.html.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/make.year.ranges.xml b/tools/docbook-xsl-1.73.2/params/make.year.ranges.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/make.year.ranges.xml rename to tools/docbook-xsl-1.73.2/params/make.year.ranges.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.authors.section.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.authors.section.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.authors.section.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.authors.section.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.break.after.slash.xml b/tools/docbook-xsl-1.73.2/params/man.break.after.slash.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.break.after.slash.xml rename to tools/docbook-xsl-1.73.2/params/man.break.after.slash.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.charmap.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.charmap.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.subset.profile.xml b/tools/docbook-xsl-1.73.2/params/man.charmap.subset.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.subset.profile.xml rename to tools/docbook-xsl-1.73.2/params/man.charmap.subset.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.uri.xml b/tools/docbook-xsl-1.73.2/params/man.charmap.uri.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.uri.xml rename to tools/docbook-xsl-1.73.2/params/man.charmap.uri.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.use.subset.xml b/tools/docbook-xsl-1.73.2/params/man.charmap.use.subset.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.charmap.use.subset.xml rename to tools/docbook-xsl-1.73.2/params/man.charmap.use.subset.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.copyright.section.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.copyright.section.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.copyright.section.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.copyright.section.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.are.numbered.xml b/tools/docbook-xsl-1.73.2/params/man.endnotes.are.numbered.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.are.numbered.xml rename to tools/docbook-xsl-1.73.2/params/man.endnotes.are.numbered.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.list.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.endnotes.list.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.list.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.endnotes.list.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.list.heading.xml b/tools/docbook-xsl-1.73.2/params/man.endnotes.list.heading.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.endnotes.list.heading.xml rename to tools/docbook-xsl-1.73.2/params/man.endnotes.list.heading.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.funcprototype.xml b/tools/docbook-xsl-1.73.2/params/man.font.funcprototype.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.funcprototype.xml rename to tools/docbook-xsl-1.73.2/params/man.font.funcprototype.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.funcsynopsisinfo.xml b/tools/docbook-xsl-1.73.2/params/man.font.funcsynopsisinfo.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.funcsynopsisinfo.xml rename to tools/docbook-xsl-1.73.2/params/man.font.funcsynopsisinfo.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.table.headings.xml b/tools/docbook-xsl-1.73.2/params/man.font.table.headings.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.table.headings.xml rename to tools/docbook-xsl-1.73.2/params/man.font.table.headings.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.table.title.xml b/tools/docbook-xsl-1.73.2/params/man.font.table.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.font.table.title.xml rename to tools/docbook-xsl-1.73.2/params/man.font.table.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.computer.inlines.xml b/tools/docbook-xsl-1.73.2/params/man.hyphenate.computer.inlines.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.computer.inlines.xml rename to tools/docbook-xsl-1.73.2/params/man.hyphenate.computer.inlines.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.filenames.xml b/tools/docbook-xsl-1.73.2/params/man.hyphenate.filenames.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.filenames.xml rename to tools/docbook-xsl-1.73.2/params/man.hyphenate.filenames.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.urls.xml b/tools/docbook-xsl-1.73.2/params/man.hyphenate.urls.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.urls.xml rename to tools/docbook-xsl-1.73.2/params/man.hyphenate.urls.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.xml b/tools/docbook-xsl-1.73.2/params/man.hyphenate.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.hyphenate.xml rename to tools/docbook-xsl-1.73.2/params/man.hyphenate.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.blurbs.xml b/tools/docbook-xsl-1.73.2/params/man.indent.blurbs.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.blurbs.xml rename to tools/docbook-xsl-1.73.2/params/man.indent.blurbs.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.lists.xml b/tools/docbook-xsl-1.73.2/params/man.indent.lists.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.lists.xml rename to tools/docbook-xsl-1.73.2/params/man.indent.lists.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.refsect.xml b/tools/docbook-xsl-1.73.2/params/man.indent.refsect.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.refsect.xml rename to tools/docbook-xsl-1.73.2/params/man.indent.refsect.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.verbatims.xml b/tools/docbook-xsl-1.73.2/params/man.indent.verbatims.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.verbatims.xml rename to tools/docbook-xsl-1.73.2/params/man.indent.verbatims.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.width.xml b/tools/docbook-xsl-1.73.2/params/man.indent.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.indent.width.xml rename to tools/docbook-xsl-1.73.2/params/man.indent.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.justify.xml b/tools/docbook-xsl-1.73.2/params/man.justify.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.justify.xml rename to tools/docbook-xsl-1.73.2/params/man.justify.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.links.are.underlined.xml b/tools/docbook-xsl-1.73.2/params/man.links.are.underlined.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.links.are.underlined.xml rename to tools/docbook-xsl-1.73.2/params/man.links.are.underlined.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.base.dir.xml b/tools/docbook-xsl-1.73.2/params/man.output.base.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.base.dir.xml rename to tools/docbook-xsl-1.73.2/params/man.output.base.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.encoding.xml b/tools/docbook-xsl-1.73.2/params/man.output.encoding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.encoding.xml rename to tools/docbook-xsl-1.73.2/params/man.output.encoding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.in.separate.dir.xml b/tools/docbook-xsl-1.73.2/params/man.output.in.separate.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.in.separate.dir.xml rename to tools/docbook-xsl-1.73.2/params/man.output.in.separate.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.lang.in.name.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.output.lang.in.name.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.lang.in.name.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.output.lang.in.name.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.manifest.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.output.manifest.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.manifest.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.output.manifest.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.manifest.filename.xml b/tools/docbook-xsl-1.73.2/params/man.output.manifest.filename.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.manifest.filename.xml rename to tools/docbook-xsl-1.73.2/params/man.output.manifest.filename.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.quietly.xml b/tools/docbook-xsl-1.73.2/params/man.output.quietly.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.quietly.xml rename to tools/docbook-xsl-1.73.2/params/man.output.quietly.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.subdirs.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.output.subdirs.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.output.subdirs.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.output.subdirs.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.segtitle.suppress.xml b/tools/docbook-xsl-1.73.2/params/man.segtitle.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.segtitle.suppress.xml rename to tools/docbook-xsl-1.73.2/params/man.segtitle.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.post.xml b/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.post.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.post.xml rename to tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.post.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.pre.xml b/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.pre.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.pre.xml rename to tools/docbook-xsl-1.73.2/params/man.string.subst.map.local.pre.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.xml b/tools/docbook-xsl-1.73.2/params/man.string.subst.map.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.string.subst.map.xml rename to tools/docbook-xsl-1.73.2/params/man.string.subst.map.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.subheading.divider.enabled.xml b/tools/docbook-xsl-1.73.2/params/man.subheading.divider.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.subheading.divider.enabled.xml rename to tools/docbook-xsl-1.73.2/params/man.subheading.divider.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.subheading.divider.xml b/tools/docbook-xsl-1.73.2/params/man.subheading.divider.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.subheading.divider.xml rename to tools/docbook-xsl-1.73.2/params/man.subheading.divider.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.table.footnotes.divider.xml b/tools/docbook-xsl-1.73.2/params/man.table.footnotes.divider.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.table.footnotes.divider.xml rename to tools/docbook-xsl-1.73.2/params/man.table.footnotes.divider.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra1.suppress.xml b/tools/docbook-xsl-1.73.2/params/man.th.extra1.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra1.suppress.xml rename to tools/docbook-xsl-1.73.2/params/man.th.extra1.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra2.max.length.xml b/tools/docbook-xsl-1.73.2/params/man.th.extra2.max.length.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra2.max.length.xml rename to tools/docbook-xsl-1.73.2/params/man.th.extra2.max.length.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra2.suppress.xml b/tools/docbook-xsl-1.73.2/params/man.th.extra2.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra2.suppress.xml rename to tools/docbook-xsl-1.73.2/params/man.th.extra2.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra3.max.length.xml b/tools/docbook-xsl-1.73.2/params/man.th.extra3.max.length.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra3.max.length.xml rename to tools/docbook-xsl-1.73.2/params/man.th.extra3.max.length.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra3.suppress.xml b/tools/docbook-xsl-1.73.2/params/man.th.extra3.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.extra3.suppress.xml rename to tools/docbook-xsl-1.73.2/params/man.th.extra3.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.title.max.length.xml b/tools/docbook-xsl-1.73.2/params/man.th.title.max.length.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/man.th.title.max.length.xml rename to tools/docbook-xsl-1.73.2/params/man.th.title.max.length.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/manifest.in.base.dir.xml b/tools/docbook-xsl-1.73.2/params/manifest.in.base.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/manifest.in.base.dir.xml rename to tools/docbook-xsl-1.73.2/params/manifest.in.base.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/manifest.xml b/tools/docbook-xsl-1.73.2/params/manifest.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/manifest.xml rename to tools/docbook-xsl-1.73.2/params/manifest.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/manual.toc.xml b/tools/docbook-xsl-1.73.2/params/manual.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/manual.toc.xml rename to tools/docbook-xsl-1.73.2/params/manual.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.float.type.xml b/tools/docbook-xsl-1.73.2/params/margin.note.float.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.float.type.xml rename to tools/docbook-xsl-1.73.2/params/margin.note.float.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.properties.xml b/tools/docbook-xsl-1.73.2/params/margin.note.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.properties.xml rename to tools/docbook-xsl-1.73.2/params/margin.note.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.title.properties.xml b/tools/docbook-xsl-1.73.2/params/margin.note.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/margin.note.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.width.xml b/tools/docbook-xsl-1.73.2/params/margin.note.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/margin.note.width.xml rename to tools/docbook-xsl-1.73.2/params/margin.note.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/marker.section.level.xml b/tools/docbook-xsl-1.73.2/params/marker.section.level.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/marker.section.level.xml rename to tools/docbook-xsl-1.73.2/params/marker.section.level.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/menuchoice.menu.separator.xml b/tools/docbook-xsl-1.73.2/params/menuchoice.menu.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/menuchoice.menu.separator.xml rename to tools/docbook-xsl-1.73.2/params/menuchoice.menu.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/menuchoice.separator.xml b/tools/docbook-xsl-1.73.2/params/menuchoice.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/menuchoice.separator.xml rename to tools/docbook-xsl-1.73.2/params/menuchoice.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/minus.image.xml b/tools/docbook-xsl-1.73.2/params/minus.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/minus.image.xml rename to tools/docbook-xsl-1.73.2/params/minus.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.font.family.xml b/tools/docbook-xsl-1.73.2/params/monospace.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.font.family.xml rename to tools/docbook-xsl-1.73.2/params/monospace.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.properties.xml b/tools/docbook-xsl-1.73.2/params/monospace.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.properties.xml rename to tools/docbook-xsl-1.73.2/params/monospace.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.verbatim.properties.xml b/tools/docbook-xsl-1.73.2/params/monospace.verbatim.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/monospace.verbatim.properties.xml rename to tools/docbook-xsl-1.73.2/params/monospace.verbatim.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.bottom.bgcolor.xml b/tools/docbook-xsl-1.73.2/params/multiframe.bottom.bgcolor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.bottom.bgcolor.xml rename to tools/docbook-xsl-1.73.2/params/multiframe.bottom.bgcolor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.navigation.height.xml b/tools/docbook-xsl-1.73.2/params/multiframe.navigation.height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.navigation.height.xml rename to tools/docbook-xsl-1.73.2/params/multiframe.navigation.height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.top.bgcolor.xml b/tools/docbook-xsl-1.73.2/params/multiframe.top.bgcolor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.top.bgcolor.xml rename to tools/docbook-xsl-1.73.2/params/multiframe.top.bgcolor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.xml b/tools/docbook-xsl-1.73.2/params/multiframe.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/multiframe.xml rename to tools/docbook-xsl-1.73.2/params/multiframe.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nav.separator.xml b/tools/docbook-xsl-1.73.2/params/nav.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nav.separator.xml rename to tools/docbook-xsl-1.73.2/params/nav.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nav.table.summary.xml b/tools/docbook-xsl-1.73.2/params/nav.table.summary.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nav.table.summary.xml rename to tools/docbook-xsl-1.73.2/params/nav.table.summary.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navbgcolor.xml b/tools/docbook-xsl-1.73.2/params/navbgcolor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navbgcolor.xml rename to tools/docbook-xsl-1.73.2/params/navbgcolor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navbodywidth.xml b/tools/docbook-xsl-1.73.2/params/navbodywidth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navbodywidth.xml rename to tools/docbook-xsl-1.73.2/params/navbodywidth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.extension.xml b/tools/docbook-xsl-1.73.2/params/navig.graphics.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.extension.xml rename to tools/docbook-xsl-1.73.2/params/navig.graphics.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.path.xml b/tools/docbook-xsl-1.73.2/params/navig.graphics.path.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.path.xml rename to tools/docbook-xsl-1.73.2/params/navig.graphics.path.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.xml b/tools/docbook-xsl-1.73.2/params/navig.graphics.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navig.graphics.xml rename to tools/docbook-xsl-1.73.2/params/navig.graphics.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navig.showtitles.xml b/tools/docbook-xsl-1.73.2/params/navig.showtitles.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navig.showtitles.xml rename to tools/docbook-xsl-1.73.2/params/navig.showtitles.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/navtocwidth.xml b/tools/docbook-xsl-1.73.2/params/navtocwidth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/navtocwidth.xml rename to tools/docbook-xsl-1.73.2/params/navtocwidth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/next.image.xml b/tools/docbook-xsl-1.73.2/params/next.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/next.image.xml rename to tools/docbook-xsl-1.73.2/params/next.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/no.home.image.xml b/tools/docbook-xsl-1.73.2/params/no.home.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/no.home.image.xml rename to tools/docbook-xsl-1.73.2/params/no.home.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/no.next.image.xml b/tools/docbook-xsl-1.73.2/params/no.next.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/no.next.image.xml rename to tools/docbook-xsl-1.73.2/params/no.next.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/no.prev.image.xml b/tools/docbook-xsl-1.73.2/params/no.prev.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/no.prev.image.xml rename to tools/docbook-xsl-1.73.2/params/no.prev.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/no.toc.image.xml b/tools/docbook-xsl-1.73.2/params/no.toc.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/no.toc.image.xml rename to tools/docbook-xsl-1.73.2/params/no.toc.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/no.up.image.xml b/tools/docbook-xsl-1.73.2/params/no.up.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/no.up.image.xml rename to tools/docbook-xsl-1.73.2/params/no.up.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.image.depth.xml b/tools/docbook-xsl-1.73.2/params/nominal.image.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.image.depth.xml rename to tools/docbook-xsl-1.73.2/params/nominal.image.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.image.width.xml b/tools/docbook-xsl-1.73.2/params/nominal.image.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.image.width.xml rename to tools/docbook-xsl-1.73.2/params/nominal.image.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.table.width.xml b/tools/docbook-xsl-1.73.2/params/nominal.table.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nominal.table.width.xml rename to tools/docbook-xsl-1.73.2/params/nominal.table.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/nongraphical.admonition.properties.xml b/tools/docbook-xsl-1.73.2/params/nongraphical.admonition.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/nongraphical.admonition.properties.xml rename to tools/docbook-xsl-1.73.2/params/nongraphical.admonition.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/normal.para.spacing.xml b/tools/docbook-xsl-1.73.2/params/normal.para.spacing.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/normal.para.spacing.xml rename to tools/docbook-xsl-1.73.2/params/normal.para.spacing.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.base.uri.xml b/tools/docbook-xsl-1.73.2/params/olink.base.uri.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.base.uri.xml rename to tools/docbook-xsl-1.73.2/params/olink.base.uri.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.debug.xml b/tools/docbook-xsl-1.73.2/params/olink.debug.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.debug.xml rename to tools/docbook-xsl-1.73.2/params/olink.debug.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.doctitle.xml b/tools/docbook-xsl-1.73.2/params/olink.doctitle.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.doctitle.xml rename to tools/docbook-xsl-1.73.2/params/olink.doctitle.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.fragid.xml b/tools/docbook-xsl-1.73.2/params/olink.fragid.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.fragid.xml rename to tools/docbook-xsl-1.73.2/params/olink.fragid.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.lang.fallback.sequence.xml b/tools/docbook-xsl-1.73.2/params/olink.lang.fallback.sequence.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.lang.fallback.sequence.xml rename to tools/docbook-xsl-1.73.2/params/olink.lang.fallback.sequence.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.outline.ext.xml b/tools/docbook-xsl-1.73.2/params/olink.outline.ext.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.outline.ext.xml rename to tools/docbook-xsl-1.73.2/params/olink.outline.ext.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.properties.xml b/tools/docbook-xsl-1.73.2/params/olink.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.properties.xml rename to tools/docbook-xsl-1.73.2/params/olink.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.pubid.xml b/tools/docbook-xsl-1.73.2/params/olink.pubid.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.pubid.xml rename to tools/docbook-xsl-1.73.2/params/olink.pubid.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.resolver.xml b/tools/docbook-xsl-1.73.2/params/olink.resolver.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.resolver.xml rename to tools/docbook-xsl-1.73.2/params/olink.resolver.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/olink.sysid.xml b/tools/docbook-xsl-1.73.2/params/olink.sysid.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/olink.sysid.xml rename to tools/docbook-xsl-1.73.2/params/olink.sysid.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.label.properties.xml b/tools/docbook-xsl-1.73.2/params/orderedlist.label.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.label.properties.xml rename to tools/docbook-xsl-1.73.2/params/orderedlist.label.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.label.width.xml b/tools/docbook-xsl-1.73.2/params/orderedlist.label.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.label.width.xml rename to tools/docbook-xsl-1.73.2/params/orderedlist.label.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.properties.xml b/tools/docbook-xsl-1.73.2/params/orderedlist.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/orderedlist.properties.xml rename to tools/docbook-xsl-1.73.2/params/orderedlist.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/othercredit.like.author.enabled.xml b/tools/docbook-xsl-1.73.2/params/othercredit.like.author.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/othercredit.like.author.enabled.xml rename to tools/docbook-xsl-1.73.2/params/othercredit.like.author.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/output-root.xml b/tools/docbook-xsl-1.73.2/params/output-root.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/output-root.xml rename to tools/docbook-xsl-1.73.2/params/output-root.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/output.indent.xml b/tools/docbook-xsl-1.73.2/params/output.indent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/output.indent.xml rename to tools/docbook-xsl-1.73.2/params/output.indent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.js.xml b/tools/docbook-xsl-1.73.2/params/overlay.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.js.xml rename to tools/docbook-xsl-1.73.2/params/overlay.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.logo.xml b/tools/docbook-xsl-1.73.2/params/overlay.logo.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.logo.xml rename to tools/docbook-xsl-1.73.2/params/overlay.logo.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.xml b/tools/docbook-xsl-1.73.2/params/overlay.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/overlay.xml rename to tools/docbook-xsl-1.73.2/params/overlay.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.height.portrait.xml b/tools/docbook-xsl-1.73.2/params/page.height.portrait.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.height.portrait.xml rename to tools/docbook-xsl-1.73.2/params/page.height.portrait.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.height.xml b/tools/docbook-xsl-1.73.2/params/page.height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.height.xml rename to tools/docbook-xsl-1.73.2/params/page.height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.bottom.xml b/tools/docbook-xsl-1.73.2/params/page.margin.bottom.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.bottom.xml rename to tools/docbook-xsl-1.73.2/params/page.margin.bottom.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.inner.xml b/tools/docbook-xsl-1.73.2/params/page.margin.inner.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.inner.xml rename to tools/docbook-xsl-1.73.2/params/page.margin.inner.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.outer.xml b/tools/docbook-xsl-1.73.2/params/page.margin.outer.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.outer.xml rename to tools/docbook-xsl-1.73.2/params/page.margin.outer.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.top.xml b/tools/docbook-xsl-1.73.2/params/page.margin.top.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.margin.top.xml rename to tools/docbook-xsl-1.73.2/params/page.margin.top.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.orientation.xml b/tools/docbook-xsl-1.73.2/params/page.orientation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.orientation.xml rename to tools/docbook-xsl-1.73.2/params/page.orientation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.width.portrait.xml b/tools/docbook-xsl-1.73.2/params/page.width.portrait.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.width.portrait.xml rename to tools/docbook-xsl-1.73.2/params/page.width.portrait.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/page.width.xml b/tools/docbook-xsl-1.73.2/params/page.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/page.width.xml rename to tools/docbook-xsl-1.73.2/params/page.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/pages.template.xml b/tools/docbook-xsl-1.73.2/params/pages.template.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/pages.template.xml rename to tools/docbook-xsl-1.73.2/params/pages.template.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/paper.type.xml b/tools/docbook-xsl-1.73.2/params/paper.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/paper.type.xml rename to tools/docbook-xsl-1.73.2/params/paper.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/para.propagates.style.xml b/tools/docbook-xsl-1.73.2/params/para.propagates.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/para.propagates.style.xml rename to tools/docbook-xsl-1.73.2/params/para.propagates.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/part.autolabel.xml b/tools/docbook-xsl-1.73.2/params/part.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/part.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/part.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/passivetex.extensions.xml b/tools/docbook-xsl-1.73.2/params/passivetex.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/passivetex.extensions.xml rename to tools/docbook-xsl-1.73.2/params/passivetex.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/pgwide.properties.xml b/tools/docbook-xsl-1.73.2/params/pgwide.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/pgwide.properties.xml rename to tools/docbook-xsl-1.73.2/params/pgwide.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/phrase.propagates.style.xml b/tools/docbook-xsl-1.73.2/params/phrase.propagates.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/phrase.propagates.style.xml rename to tools/docbook-xsl-1.73.2/params/phrase.propagates.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/pixels.per.inch.xml b/tools/docbook-xsl-1.73.2/params/pixels.per.inch.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/pixels.per.inch.xml rename to tools/docbook-xsl-1.73.2/params/pixels.per.inch.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/plus.image.xml b/tools/docbook-xsl-1.73.2/params/plus.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/plus.image.xml rename to tools/docbook-xsl-1.73.2/params/plus.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/points.per.em.xml b/tools/docbook-xsl-1.73.2/params/points.per.em.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/points.per.em.xml rename to tools/docbook-xsl-1.73.2/params/points.per.em.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/preface.autolabel.xml b/tools/docbook-xsl-1.73.2/params/preface.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/preface.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/preface.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/prefer.internal.olink.xml b/tools/docbook-xsl-1.73.2/params/prefer.internal.olink.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/prefer.internal.olink.xml rename to tools/docbook-xsl-1.73.2/params/prefer.internal.olink.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/preferred.mediaobject.role.xml b/tools/docbook-xsl-1.73.2/params/preferred.mediaobject.role.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/preferred.mediaobject.role.xml rename to tools/docbook-xsl-1.73.2/params/preferred.mediaobject.role.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/prev.image.xml b/tools/docbook-xsl-1.73.2/params/prev.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/prev.image.xml rename to tools/docbook-xsl-1.73.2/params/prev.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/procedure.properties.xml b/tools/docbook-xsl-1.73.2/params/procedure.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/procedure.properties.xml rename to tools/docbook-xsl-1.73.2/params/procedure.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/process.empty.source.toc.xml b/tools/docbook-xsl-1.73.2/params/process.empty.source.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/process.empty.source.toc.xml rename to tools/docbook-xsl-1.73.2/params/process.empty.source.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/process.source.toc.xml b/tools/docbook-xsl-1.73.2/params/process.source.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/process.source.toc.xml rename to tools/docbook-xsl-1.73.2/params/process.source.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.arch.xml b/tools/docbook-xsl-1.73.2/params/profile.arch.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.arch.xml rename to tools/docbook-xsl-1.73.2/params/profile.arch.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.attribute.xml b/tools/docbook-xsl-1.73.2/params/profile.attribute.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.attribute.xml rename to tools/docbook-xsl-1.73.2/params/profile.attribute.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.audience.xml b/tools/docbook-xsl-1.73.2/params/profile.audience.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.audience.xml rename to tools/docbook-xsl-1.73.2/params/profile.audience.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.condition.xml b/tools/docbook-xsl-1.73.2/params/profile.condition.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.condition.xml rename to tools/docbook-xsl-1.73.2/params/profile.condition.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.conformance.xml b/tools/docbook-xsl-1.73.2/params/profile.conformance.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.conformance.xml rename to tools/docbook-xsl-1.73.2/params/profile.conformance.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.lang.xml b/tools/docbook-xsl-1.73.2/params/profile.lang.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.lang.xml rename to tools/docbook-xsl-1.73.2/params/profile.lang.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.os.xml b/tools/docbook-xsl-1.73.2/params/profile.os.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.os.xml rename to tools/docbook-xsl-1.73.2/params/profile.os.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.revision.xml b/tools/docbook-xsl-1.73.2/params/profile.revision.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.revision.xml rename to tools/docbook-xsl-1.73.2/params/profile.revision.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.revisionflag.xml b/tools/docbook-xsl-1.73.2/params/profile.revisionflag.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.revisionflag.xml rename to tools/docbook-xsl-1.73.2/params/profile.revisionflag.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.role.xml b/tools/docbook-xsl-1.73.2/params/profile.role.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.role.xml rename to tools/docbook-xsl-1.73.2/params/profile.role.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.security.xml b/tools/docbook-xsl-1.73.2/params/profile.security.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.security.xml rename to tools/docbook-xsl-1.73.2/params/profile.security.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.separator.xml b/tools/docbook-xsl-1.73.2/params/profile.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.separator.xml rename to tools/docbook-xsl-1.73.2/params/profile.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.status.xml b/tools/docbook-xsl-1.73.2/params/profile.status.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.status.xml rename to tools/docbook-xsl-1.73.2/params/profile.status.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.userlevel.xml b/tools/docbook-xsl-1.73.2/params/profile.userlevel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.userlevel.xml rename to tools/docbook-xsl-1.73.2/params/profile.userlevel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.value.xml b/tools/docbook-xsl-1.73.2/params/profile.value.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.value.xml rename to tools/docbook-xsl-1.73.2/params/profile.value.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.vendor.xml b/tools/docbook-xsl-1.73.2/params/profile.vendor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.vendor.xml rename to tools/docbook-xsl-1.73.2/params/profile.vendor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/profile.wordsize.xml b/tools/docbook-xsl-1.73.2/params/profile.wordsize.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/profile.wordsize.xml rename to tools/docbook-xsl-1.73.2/params/profile.wordsize.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/punct.honorific.xml b/tools/docbook-xsl-1.73.2/params/punct.honorific.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/punct.honorific.xml rename to tools/docbook-xsl-1.73.2/params/punct.honorific.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.defaultlabel.xml b/tools/docbook-xsl-1.73.2/params/qanda.defaultlabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.defaultlabel.xml rename to tools/docbook-xsl-1.73.2/params/qanda.defaultlabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.in.toc.xml b/tools/docbook-xsl-1.73.2/params/qanda.in.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.in.toc.xml rename to tools/docbook-xsl-1.73.2/params/qanda.in.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.inherit.numeration.xml b/tools/docbook-xsl-1.73.2/params/qanda.inherit.numeration.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.inherit.numeration.xml rename to tools/docbook-xsl-1.73.2/params/qanda.inherit.numeration.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.nested.in.toc.xml b/tools/docbook-xsl-1.73.2/params/qanda.nested.in.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.nested.in.toc.xml rename to tools/docbook-xsl-1.73.2/params/qanda.nested.in.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level1.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level1.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level1.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level1.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level2.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level2.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level2.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level2.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level3.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level3.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level3.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level3.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level4.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level4.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level4.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level4.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level5.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level5.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level5.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level5.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level6.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.level6.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.level6.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.level6.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.properties.xml b/tools/docbook-xsl-1.73.2/params/qanda.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qanda.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/qanda.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/qandadiv.autolabel.xml b/tools/docbook-xsl-1.73.2/params/qandadiv.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/qandadiv.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/qandadiv.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/rebuild-all.xml b/tools/docbook-xsl-1.73.2/params/rebuild-all.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/rebuild-all.xml rename to tools/docbook-xsl-1.73.2/params/rebuild-all.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refclass.suppress.xml b/tools/docbook-xsl-1.73.2/params/refclass.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refclass.suppress.xml rename to tools/docbook-xsl-1.73.2/params/refclass.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.date.profile.enabled.xml b/tools/docbook-xsl-1.73.2/params/refentry.date.profile.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.date.profile.enabled.xml rename to tools/docbook-xsl-1.73.2/params/refentry.date.profile.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.date.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.date.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.date.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.date.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.generate.name.xml b/tools/docbook-xsl-1.73.2/params/refentry.generate.name.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.generate.name.xml rename to tools/docbook-xsl-1.73.2/params/refentry.generate.name.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.generate.title.xml b/tools/docbook-xsl-1.73.2/params/refentry.generate.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.generate.title.xml rename to tools/docbook-xsl-1.73.2/params/refentry.generate.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.fallback.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.manual.fallback.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.fallback.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.manual.fallback.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.enabled.xml b/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.enabled.xml rename to tools/docbook-xsl-1.73.2/params/refentry.manual.profile.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.manual.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.manual.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.meta.get.quietly.xml b/tools/docbook-xsl-1.73.2/params/refentry.meta.get.quietly.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.meta.get.quietly.xml rename to tools/docbook-xsl-1.73.2/params/refentry.meta.get.quietly.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.pagebreak.xml b/tools/docbook-xsl-1.73.2/params/refentry.pagebreak.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.pagebreak.xml rename to tools/docbook-xsl-1.73.2/params/refentry.pagebreak.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.separator.xml b/tools/docbook-xsl-1.73.2/params/refentry.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.separator.xml rename to tools/docbook-xsl-1.73.2/params/refentry.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.fallback.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.source.fallback.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.fallback.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.source.fallback.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.enabled.xml b/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.enabled.xml rename to tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.source.name.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.suppress.xml b/tools/docbook-xsl-1.73.2/params/refentry.source.name.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.source.name.suppress.xml rename to tools/docbook-xsl-1.73.2/params/refentry.source.name.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.title.properties.xml b/tools/docbook-xsl-1.73.2/params/refentry.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/refentry.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.profile.enabled.xml b/tools/docbook-xsl-1.73.2/params/refentry.version.profile.enabled.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.profile.enabled.xml rename to tools/docbook-xsl-1.73.2/params/refentry.version.profile.enabled.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.profile.xml b/tools/docbook-xsl-1.73.2/params/refentry.version.profile.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.profile.xml rename to tools/docbook-xsl-1.73.2/params/refentry.version.profile.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.suppress.xml b/tools/docbook-xsl-1.73.2/params/refentry.version.suppress.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.version.suppress.xml rename to tools/docbook-xsl-1.73.2/params/refentry.version.suppress.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.xref.manvolnum.xml b/tools/docbook-xsl-1.73.2/params/refentry.xref.manvolnum.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/refentry.xref.manvolnum.xml rename to tools/docbook-xsl-1.73.2/params/refentry.xref.manvolnum.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/reference.autolabel.xml b/tools/docbook-xsl-1.73.2/params/reference.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/reference.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/reference.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/region.after.extent.xml b/tools/docbook-xsl-1.73.2/params/region.after.extent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/region.after.extent.xml rename to tools/docbook-xsl-1.73.2/params/region.after.extent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/region.before.extent.xml b/tools/docbook-xsl-1.73.2/params/region.before.extent.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/region.before.extent.xml rename to tools/docbook-xsl-1.73.2/params/region.before.extent.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.table.cell.properties.xml b/tools/docbook-xsl-1.73.2/params/revhistory.table.cell.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.table.cell.properties.xml rename to tools/docbook-xsl-1.73.2/params/revhistory.table.cell.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.table.properties.xml b/tools/docbook-xsl-1.73.2/params/revhistory.table.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.table.properties.xml rename to tools/docbook-xsl-1.73.2/params/revhistory.table.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.title.properties.xml b/tools/docbook-xsl-1.73.2/params/revhistory.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/revhistory.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/revhistory.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/root.filename.xml b/tools/docbook-xsl-1.73.2/params/root.filename.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/root.filename.xml rename to tools/docbook-xsl-1.73.2/params/root.filename.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/root.properties.xml b/tools/docbook-xsl-1.73.2/params/root.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/root.properties.xml rename to tools/docbook-xsl-1.73.2/params/root.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/rootid.xml b/tools/docbook-xsl-1.73.2/params/rootid.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/rootid.xml rename to tools/docbook-xsl-1.73.2/params/rootid.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/runinhead.default.title.end.punct.xml b/tools/docbook-xsl-1.73.2/params/runinhead.default.title.end.punct.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/runinhead.default.title.end.punct.xml rename to tools/docbook-xsl-1.73.2/params/runinhead.default.title.end.punct.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/runinhead.title.end.punct.xml b/tools/docbook-xsl-1.73.2/params/runinhead.title.end.punct.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/runinhead.title.end.punct.xml rename to tools/docbook-xsl-1.73.2/params/runinhead.title.end.punct.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/running.foot.properties.xml b/tools/docbook-xsl-1.73.2/params/running.foot.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/running.foot.properties.xml rename to tools/docbook-xsl-1.73.2/params/running.foot.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sans.font.family.xml b/tools/docbook-xsl-1.73.2/params/sans.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sans.font.family.xml rename to tools/docbook-xsl-1.73.2/params/sans.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.callouts.xml b/tools/docbook-xsl-1.73.2/params/saxon.callouts.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.callouts.xml rename to tools/docbook-xsl-1.73.2/params/saxon.callouts.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.character.representation.xml b/tools/docbook-xsl-1.73.2/params/saxon.character.representation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.character.representation.xml rename to tools/docbook-xsl-1.73.2/params/saxon.character.representation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.linenumbering.xml b/tools/docbook-xsl-1.73.2/params/saxon.linenumbering.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.linenumbering.xml rename to tools/docbook-xsl-1.73.2/params/saxon.linenumbering.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.tablecolumns.xml b/tools/docbook-xsl-1.73.2/params/saxon.tablecolumns.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/saxon.tablecolumns.xml rename to tools/docbook-xsl-1.73.2/params/saxon.tablecolumns.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/script.dir.xml b/tools/docbook-xsl-1.73.2/params/script.dir.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/script.dir.xml rename to tools/docbook-xsl-1.73.2/params/script.dir.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.autolabel.max.depth.xml b/tools/docbook-xsl-1.73.2/params/section.autolabel.max.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.autolabel.max.depth.xml rename to tools/docbook-xsl-1.73.2/params/section.autolabel.max.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.autolabel.xml b/tools/docbook-xsl-1.73.2/params/section.autolabel.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.autolabel.xml rename to tools/docbook-xsl-1.73.2/params/section.autolabel.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.container.element.xml b/tools/docbook-xsl-1.73.2/params/section.container.element.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.container.element.xml rename to tools/docbook-xsl-1.73.2/params/section.container.element.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.label.includes.component.label.xml b/tools/docbook-xsl-1.73.2/params/section.label.includes.component.label.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.label.includes.component.label.xml rename to tools/docbook-xsl-1.73.2/params/section.label.includes.component.label.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level1.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level1.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level1.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level1.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level2.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level2.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level2.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level2.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level3.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level3.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level3.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level3.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level4.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level4.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level4.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level4.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level5.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level5.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level5.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level5.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.level6.properties.xml b/tools/docbook-xsl-1.73.2/params/section.level6.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.level6.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.level6.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.properties.xml b/tools/docbook-xsl-1.73.2/params/section.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level1.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level1.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level1.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level1.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level2.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level2.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level2.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level2.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level3.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level3.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level3.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level3.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level4.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level4.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level4.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level4.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level5.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level5.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level5.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level5.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level6.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.level6.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.level6.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.level6.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.properties.xml b/tools/docbook-xsl-1.73.2/params/section.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/section.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/section.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/segmentedlist.as.table.xml b/tools/docbook-xsl-1.73.2/params/segmentedlist.as.table.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/segmentedlist.as.table.xml rename to tools/docbook-xsl-1.73.2/params/segmentedlist.as.table.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sequential.links.xml b/tools/docbook-xsl-1.73.2/params/sequential.links.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sequential.links.xml rename to tools/docbook-xsl-1.73.2/params/sequential.links.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/shade.verbatim.style.xml b/tools/docbook-xsl-1.73.2/params/shade.verbatim.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/shade.verbatim.style.xml rename to tools/docbook-xsl-1.73.2/params/shade.verbatim.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/shade.verbatim.xml b/tools/docbook-xsl-1.73.2/params/shade.verbatim.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/shade.verbatim.xml rename to tools/docbook-xsl-1.73.2/params/shade.verbatim.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/show.comments.xml b/tools/docbook-xsl-1.73.2/params/show.comments.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/show.comments.xml rename to tools/docbook-xsl-1.73.2/params/show.comments.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/show.foil.number.xml b/tools/docbook-xsl-1.73.2/params/show.foil.number.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/show.foil.number.xml rename to tools/docbook-xsl-1.73.2/params/show.foil.number.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/show.revisionflag.xml b/tools/docbook-xsl-1.73.2/params/show.revisionflag.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/show.revisionflag.xml rename to tools/docbook-xsl-1.73.2/params/show.revisionflag.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/showtoc.image.xml b/tools/docbook-xsl-1.73.2/params/showtoc.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/showtoc.image.xml rename to tools/docbook-xsl-1.73.2/params/showtoc.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/side.float.properties.xml b/tools/docbook-xsl-1.73.2/params/side.float.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/side.float.properties.xml rename to tools/docbook-xsl-1.73.2/params/side.float.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.float.type.xml b/tools/docbook-xsl-1.73.2/params/sidebar.float.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.float.type.xml rename to tools/docbook-xsl-1.73.2/params/sidebar.float.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.float.width.xml b/tools/docbook-xsl-1.73.2/params/sidebar.float.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.float.width.xml rename to tools/docbook-xsl-1.73.2/params/sidebar.float.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.properties.xml b/tools/docbook-xsl-1.73.2/params/sidebar.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.properties.xml rename to tools/docbook-xsl-1.73.2/params/sidebar.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.title.properties.xml b/tools/docbook-xsl-1.73.2/params/sidebar.title.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/sidebar.title.properties.xml rename to tools/docbook-xsl-1.73.2/params/sidebar.title.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/simplesect.in.toc.xml b/tools/docbook-xsl-1.73.2/params/simplesect.in.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/simplesect.in.toc.xml rename to tools/docbook-xsl-1.73.2/params/simplesect.in.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/slide.font.family.xml b/tools/docbook-xsl-1.73.2/params/slide.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/slide.font.family.xml rename to tools/docbook-xsl-1.73.2/params/slide.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/slide.title.font.family.xml b/tools/docbook-xsl-1.73.2/params/slide.title.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/slide.title.font.family.xml rename to tools/docbook-xsl-1.73.2/params/slide.title.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/slides.js.xml b/tools/docbook-xsl-1.73.2/params/slides.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/slides.js.xml rename to tools/docbook-xsl-1.73.2/params/slides.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/slides.properties.xml b/tools/docbook-xsl-1.73.2/params/slides.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/slides.properties.xml rename to tools/docbook-xsl-1.73.2/params/slides.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/spacing.paras.xml b/tools/docbook-xsl-1.73.2/params/spacing.paras.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/spacing.paras.xml rename to tools/docbook-xsl-1.73.2/params/spacing.paras.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/speakernote.properties.xml b/tools/docbook-xsl-1.73.2/params/speakernote.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/speakernote.properties.xml rename to tools/docbook-xsl-1.73.2/params/speakernote.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/subscript.properties.xml b/tools/docbook-xsl-1.73.2/params/subscript.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/subscript.properties.xml rename to tools/docbook-xsl-1.73.2/params/subscript.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/superscript.properties.xml b/tools/docbook-xsl-1.73.2/params/superscript.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/superscript.properties.xml rename to tools/docbook-xsl-1.73.2/params/superscript.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.footer.navigation.xml b/tools/docbook-xsl-1.73.2/params/suppress.footer.navigation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.footer.navigation.xml rename to tools/docbook-xsl-1.73.2/params/suppress.footer.navigation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.header.navigation.xml b/tools/docbook-xsl-1.73.2/params/suppress.header.navigation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.header.navigation.xml rename to tools/docbook-xsl-1.73.2/params/suppress.header.navigation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.homepage.title.xml b/tools/docbook-xsl-1.73.2/params/suppress.homepage.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.homepage.title.xml rename to tools/docbook-xsl-1.73.2/params/suppress.homepage.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.navigation.xml b/tools/docbook-xsl-1.73.2/params/suppress.navigation.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/suppress.navigation.xml rename to tools/docbook-xsl-1.73.2/params/suppress.navigation.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/symbol.font.family.xml b/tools/docbook-xsl-1.73.2/params/symbol.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/symbol.font.family.xml rename to tools/docbook-xsl-1.73.2/params/symbol.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.borders.with.css.xml b/tools/docbook-xsl-1.73.2/params/table.borders.with.css.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.borders.with.css.xml rename to tools/docbook-xsl-1.73.2/params/table.borders.with.css.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.color.xml b/tools/docbook-xsl-1.73.2/params/table.cell.border.color.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.color.xml rename to tools/docbook-xsl-1.73.2/params/table.cell.border.color.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.style.xml b/tools/docbook-xsl-1.73.2/params/table.cell.border.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.style.xml rename to tools/docbook-xsl-1.73.2/params/table.cell.border.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.thickness.xml b/tools/docbook-xsl-1.73.2/params/table.cell.border.thickness.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.border.thickness.xml rename to tools/docbook-xsl-1.73.2/params/table.cell.border.thickness.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.padding.xml b/tools/docbook-xsl-1.73.2/params/table.cell.padding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.cell.padding.xml rename to tools/docbook-xsl-1.73.2/params/table.cell.padding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.entry.padding.xml b/tools/docbook-xsl-1.73.2/params/table.entry.padding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.entry.padding.xml rename to tools/docbook-xsl-1.73.2/params/table.entry.padding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.number.format.xml b/tools/docbook-xsl-1.73.2/params/table.footnote.number.format.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.number.format.xml rename to tools/docbook-xsl-1.73.2/params/table.footnote.number.format.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.number.symbols.xml b/tools/docbook-xsl-1.73.2/params/table.footnote.number.symbols.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.number.symbols.xml rename to tools/docbook-xsl-1.73.2/params/table.footnote.number.symbols.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.properties.xml b/tools/docbook-xsl-1.73.2/params/table.footnote.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.footnote.properties.xml rename to tools/docbook-xsl-1.73.2/params/table.footnote.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.color.xml b/tools/docbook-xsl-1.73.2/params/table.frame.border.color.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.color.xml rename to tools/docbook-xsl-1.73.2/params/table.frame.border.color.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.style.xml b/tools/docbook-xsl-1.73.2/params/table.frame.border.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.style.xml rename to tools/docbook-xsl-1.73.2/params/table.frame.border.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.thickness.xml b/tools/docbook-xsl-1.73.2/params/table.frame.border.thickness.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.frame.border.thickness.xml rename to tools/docbook-xsl-1.73.2/params/table.frame.border.thickness.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.properties.xml b/tools/docbook-xsl-1.73.2/params/table.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.properties.xml rename to tools/docbook-xsl-1.73.2/params/table.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.spacer.image.xml b/tools/docbook-xsl-1.73.2/params/table.spacer.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.spacer.image.xml rename to tools/docbook-xsl-1.73.2/params/table.spacer.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/table.table.properties.xml b/tools/docbook-xsl-1.73.2/params/table.table.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/table.table.properties.xml rename to tools/docbook-xsl-1.73.2/params/table.table.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/tablecolumns.extension.xml b/tools/docbook-xsl-1.73.2/params/tablecolumns.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/tablecolumns.extension.xml rename to tools/docbook-xsl-1.73.2/params/tablecolumns.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/target.database.document.xml b/tools/docbook-xsl-1.73.2/params/target.database.document.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/target.database.document.xml rename to tools/docbook-xsl-1.73.2/params/target.database.document.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/targets.filename.xml b/tools/docbook-xsl-1.73.2/params/targets.filename.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/targets.filename.xml rename to tools/docbook-xsl-1.73.2/params/targets.filename.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/template.xml b/tools/docbook-xsl-1.73.2/params/template.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/template.xml rename to tools/docbook-xsl-1.73.2/params/template.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.delims.xml b/tools/docbook-xsl-1.73.2/params/tex.math.delims.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.delims.xml rename to tools/docbook-xsl-1.73.2/params/tex.math.delims.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.file.xml b/tools/docbook-xsl-1.73.2/params/tex.math.file.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.file.xml rename to tools/docbook-xsl-1.73.2/params/tex.math.file.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.in.alt.xml b/tools/docbook-xsl-1.73.2/params/tex.math.in.alt.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/tex.math.in.alt.xml rename to tools/docbook-xsl-1.73.2/params/tex.math.in.alt.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/text.home.xml b/tools/docbook-xsl-1.73.2/params/text.home.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/text.home.xml rename to tools/docbook-xsl-1.73.2/params/text.home.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/text.next.xml b/tools/docbook-xsl-1.73.2/params/text.next.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/text.next.xml rename to tools/docbook-xsl-1.73.2/params/text.next.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/text.prev.xml b/tools/docbook-xsl-1.73.2/params/text.prev.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/text.prev.xml rename to tools/docbook-xsl-1.73.2/params/text.prev.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/text.toc.xml b/tools/docbook-xsl-1.73.2/params/text.toc.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/text.toc.xml rename to tools/docbook-xsl-1.73.2/params/text.toc.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/text.up.xml b/tools/docbook-xsl-1.73.2/params/text.up.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/text.up.xml rename to tools/docbook-xsl-1.73.2/params/text.up.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/textbgcolor.xml b/tools/docbook-xsl-1.73.2/params/textbgcolor.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/textbgcolor.xml rename to tools/docbook-xsl-1.73.2/params/textbgcolor.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/textdata.default.encoding.xml b/tools/docbook-xsl-1.73.2/params/textdata.default.encoding.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/textdata.default.encoding.xml rename to tools/docbook-xsl-1.73.2/params/textdata.default.encoding.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/textinsert.extension.xml b/tools/docbook-xsl-1.73.2/params/textinsert.extension.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/textinsert.extension.xml rename to tools/docbook-xsl-1.73.2/params/textinsert.extension.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/title.font.family.xml b/tools/docbook-xsl-1.73.2/params/title.font.family.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/title.font.family.xml rename to tools/docbook-xsl-1.73.2/params/title.font.family.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/title.margin.left.xml b/tools/docbook-xsl-1.73.2/params/title.margin.left.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/title.margin.left.xml rename to tools/docbook-xsl-1.73.2/params/title.margin.left.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/titlefoil.html.xml b/tools/docbook-xsl-1.73.2/params/titlefoil.html.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/titlefoil.html.xml rename to tools/docbook-xsl-1.73.2/params/titlefoil.html.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.bg.color.xml b/tools/docbook-xsl-1.73.2/params/toc.bg.color.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.bg.color.xml rename to tools/docbook-xsl-1.73.2/params/toc.bg.color.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.graphic.xml b/tools/docbook-xsl-1.73.2/params/toc.blank.graphic.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.graphic.xml rename to tools/docbook-xsl-1.73.2/params/toc.blank.graphic.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.image.xml b/tools/docbook-xsl-1.73.2/params/toc.blank.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.image.xml rename to tools/docbook-xsl-1.73.2/params/toc.blank.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.text.xml b/tools/docbook-xsl-1.73.2/params/toc.blank.text.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.blank.text.xml rename to tools/docbook-xsl-1.73.2/params/toc.blank.text.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.hide.show.xml b/tools/docbook-xsl-1.73.2/params/toc.hide.show.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.hide.show.xml rename to tools/docbook-xsl-1.73.2/params/toc.hide.show.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.html.xml b/tools/docbook-xsl-1.73.2/params/toc.html.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.html.xml rename to tools/docbook-xsl-1.73.2/params/toc.html.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.image.xml b/tools/docbook-xsl-1.73.2/params/toc.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.image.xml rename to tools/docbook-xsl-1.73.2/params/toc.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.indent.width.xml b/tools/docbook-xsl-1.73.2/params/toc.indent.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.indent.width.xml rename to tools/docbook-xsl-1.73.2/params/toc.indent.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.line.properties.xml b/tools/docbook-xsl-1.73.2/params/toc.line.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.line.properties.xml rename to tools/docbook-xsl-1.73.2/params/toc.line.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.list.type.xml b/tools/docbook-xsl-1.73.2/params/toc.list.type.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.list.type.xml rename to tools/docbook-xsl-1.73.2/params/toc.list.type.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.margin.properties.xml b/tools/docbook-xsl-1.73.2/params/toc.margin.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.margin.properties.xml rename to tools/docbook-xsl-1.73.2/params/toc.margin.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.max.depth.xml b/tools/docbook-xsl-1.73.2/params/toc.max.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.max.depth.xml rename to tools/docbook-xsl-1.73.2/params/toc.max.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.graphic.xml b/tools/docbook-xsl-1.73.2/params/toc.pointer.graphic.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.graphic.xml rename to tools/docbook-xsl-1.73.2/params/toc.pointer.graphic.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.image.xml b/tools/docbook-xsl-1.73.2/params/toc.pointer.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.image.xml rename to tools/docbook-xsl-1.73.2/params/toc.pointer.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.text.xml b/tools/docbook-xsl-1.73.2/params/toc.pointer.text.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.pointer.text.xml rename to tools/docbook-xsl-1.73.2/params/toc.pointer.text.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.row.height.xml b/tools/docbook-xsl-1.73.2/params/toc.row.height.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.row.height.xml rename to tools/docbook-xsl-1.73.2/params/toc.row.height.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.section.depth.xml b/tools/docbook-xsl-1.73.2/params/toc.section.depth.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.section.depth.xml rename to tools/docbook-xsl-1.73.2/params/toc.section.depth.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.graphic.xml b/tools/docbook-xsl-1.73.2/params/toc.spacer.graphic.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.graphic.xml rename to tools/docbook-xsl-1.73.2/params/toc.spacer.graphic.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.image.xml b/tools/docbook-xsl-1.73.2/params/toc.spacer.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.image.xml rename to tools/docbook-xsl-1.73.2/params/toc.spacer.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.text.xml b/tools/docbook-xsl-1.73.2/params/toc.spacer.text.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.spacer.text.xml rename to tools/docbook-xsl-1.73.2/params/toc.spacer.text.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/toc.width.xml b/tools/docbook-xsl-1.73.2/params/toc.width.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/toc.width.xml rename to tools/docbook-xsl-1.73.2/params/toc.width.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ua.js.xml b/tools/docbook-xsl-1.73.2/params/ua.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ua.js.xml rename to tools/docbook-xsl-1.73.2/params/ua.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.footnotes.xml b/tools/docbook-xsl-1.73.2/params/ulink.footnotes.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.footnotes.xml rename to tools/docbook-xsl-1.73.2/params/ulink.footnotes.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.chars.xml b/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.chars.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.chars.xml rename to tools/docbook-xsl-1.73.2/params/ulink.hyphenate.chars.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.xml b/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.hyphenate.xml rename to tools/docbook-xsl-1.73.2/params/ulink.hyphenate.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.show.xml b/tools/docbook-xsl-1.73.2/params/ulink.show.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.show.xml rename to tools/docbook-xsl-1.73.2/params/ulink.show.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.target.xml b/tools/docbook-xsl-1.73.2/params/ulink.target.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/ulink.target.xml rename to tools/docbook-xsl-1.73.2/params/ulink.target.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/up.image.xml b/tools/docbook-xsl-1.73.2/params/up.image.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/up.image.xml rename to tools/docbook-xsl-1.73.2/params/up.image.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.embed.for.svg.xml b/tools/docbook-xsl-1.73.2/params/use.embed.for.svg.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.embed.for.svg.xml rename to tools/docbook-xsl-1.73.2/params/use.embed.for.svg.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.extensions.xml b/tools/docbook-xsl-1.73.2/params/use.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.extensions.xml rename to tools/docbook-xsl-1.73.2/params/use.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.id.as.filename.xml b/tools/docbook-xsl-1.73.2/params/use.id.as.filename.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.id.as.filename.xml rename to tools/docbook-xsl-1.73.2/params/use.id.as.filename.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.id.function.xml b/tools/docbook-xsl-1.73.2/params/use.id.function.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.id.function.xml rename to tools/docbook-xsl-1.73.2/params/use.id.function.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.local.olink.style.xml b/tools/docbook-xsl-1.73.2/params/use.local.olink.style.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.local.olink.style.xml rename to tools/docbook-xsl-1.73.2/params/use.local.olink.style.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.role.as.xrefstyle.xml b/tools/docbook-xsl-1.73.2/params/use.role.as.xrefstyle.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.role.as.xrefstyle.xml rename to tools/docbook-xsl-1.73.2/params/use.role.as.xrefstyle.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.role.for.mediaobject.xml b/tools/docbook-xsl-1.73.2/params/use.role.for.mediaobject.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.role.for.mediaobject.xml rename to tools/docbook-xsl-1.73.2/params/use.role.for.mediaobject.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/use.svg.xml b/tools/docbook-xsl-1.73.2/params/use.svg.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/use.svg.xml rename to tools/docbook-xsl-1.73.2/params/use.svg.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.as.blocks.xml b/tools/docbook-xsl-1.73.2/params/variablelist.as.blocks.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.as.blocks.xml rename to tools/docbook-xsl-1.73.2/params/variablelist.as.blocks.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.as.table.xml b/tools/docbook-xsl-1.73.2/params/variablelist.as.table.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.as.table.xml rename to tools/docbook-xsl-1.73.2/params/variablelist.as.table.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.max.termlength.xml b/tools/docbook-xsl-1.73.2/params/variablelist.max.termlength.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.max.termlength.xml rename to tools/docbook-xsl-1.73.2/params/variablelist.max.termlength.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.term.break.after.xml b/tools/docbook-xsl-1.73.2/params/variablelist.term.break.after.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.term.break.after.xml rename to tools/docbook-xsl-1.73.2/params/variablelist.term.break.after.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.term.separator.xml b/tools/docbook-xsl-1.73.2/params/variablelist.term.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/variablelist.term.separator.xml rename to tools/docbook-xsl-1.73.2/params/variablelist.term.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/verbatim.properties.xml b/tools/docbook-xsl-1.73.2/params/verbatim.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/verbatim.properties.xml rename to tools/docbook-xsl-1.73.2/params/verbatim.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/wordml.template.xml b/tools/docbook-xsl-1.73.2/params/wordml.template.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/wordml.template.xml rename to tools/docbook-xsl-1.73.2/params/wordml.template.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xbCollapsibleLists.js.xml b/tools/docbook-xsl-1.73.2/params/xbCollapsibleLists.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xbCollapsibleLists.js.xml rename to tools/docbook-xsl-1.73.2/params/xbCollapsibleLists.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xbDOM.js.xml b/tools/docbook-xsl-1.73.2/params/xbDOM.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xbDOM.js.xml rename to tools/docbook-xsl-1.73.2/params/xbDOM.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xbLibrary.js.xml b/tools/docbook-xsl-1.73.2/params/xbLibrary.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xbLibrary.js.xml rename to tools/docbook-xsl-1.73.2/params/xbLibrary.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xbStyle.js.xml b/tools/docbook-xsl-1.73.2/params/xbStyle.js.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xbStyle.js.xml rename to tools/docbook-xsl-1.73.2/params/xbStyle.js.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xep.extensions.xml b/tools/docbook-xsl-1.73.2/params/xep.extensions.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xep.extensions.xml rename to tools/docbook-xsl-1.73.2/params/xep.extensions.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xep.index.item.properties.xml b/tools/docbook-xsl-1.73.2/params/xep.index.item.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xep.index.item.properties.xml rename to tools/docbook-xsl-1.73.2/params/xep.index.item.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xref.label-page.separator.xml b/tools/docbook-xsl-1.73.2/params/xref.label-page.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xref.label-page.separator.xml rename to tools/docbook-xsl-1.73.2/params/xref.label-page.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xref.label-title.separator.xml b/tools/docbook-xsl-1.73.2/params/xref.label-title.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xref.label-title.separator.xml rename to tools/docbook-xsl-1.73.2/params/xref.label-title.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xref.properties.xml b/tools/docbook-xsl-1.73.2/params/xref.properties.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xref.properties.xml rename to tools/docbook-xsl-1.73.2/params/xref.properties.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xref.title-page.separator.xml b/tools/docbook-xsl-1.73.2/params/xref.title-page.separator.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xref.title-page.separator.xml rename to tools/docbook-xsl-1.73.2/params/xref.title-page.separator.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/params/xref.with.number.and.title.xml b/tools/docbook-xsl-1.73.2/params/xref.with.number.and.title.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/params/xref.with.number.and.title.xml rename to tools/docbook-xsl-1.73.2/params/xref.with.number.and.title.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/profiling/profile-mode.xsl b/tools/docbook-xsl-1.73.2/profiling/profile-mode.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/profiling/profile-mode.xsl rename to tools/docbook-xsl-1.73.2/profiling/profile-mode.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/profiling/profile.xsl b/tools/docbook-xsl-1.73.2/profiling/profile.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/profiling/profile.xsl rename to tools/docbook-xsl-1.73.2/profiling/profile.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/profiling/strip-attributes.xsl b/tools/docbook-xsl-1.73.2/profiling/strip-attributes.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/profiling/strip-attributes.xsl rename to tools/docbook-xsl-1.73.2/profiling/strip-attributes.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/profiling/xsl2profile.xsl b/tools/docbook-xsl-1.73.2/profiling/xsl2profile.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/profiling/xsl2profile.xsl rename to tools/docbook-xsl-1.73.2/profiling/xsl2profile.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks-spec.xml b/tools/docbook-xsl-1.73.2/roundtrip/blocks-spec.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks-spec.xml rename to tools/docbook-xsl-1.73.2/roundtrip/blocks-spec.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.dtd b/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.dtd similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.dtd rename to tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.dtd diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.xsl b/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/blocks2dbk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl b/tools/docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/dbk2ooo.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2pages.xsl b/tools/docbook-xsl-1.73.2/roundtrip/dbk2pages.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2pages.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/dbk2pages.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2wordml.xsl b/tools/docbook-xsl-1.73.2/roundtrip/dbk2wordml.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2wordml.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/dbk2wordml.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl b/tools/docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/dbk2wp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/docbook-pages.xsl b/tools/docbook-xsl-1.73.2/roundtrip/docbook-pages.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/docbook-pages.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/docbook-pages.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/docbook.xsl b/tools/docbook-xsl-1.73.2/roundtrip/docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/docbook.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/normalise2sections.xsl b/tools/docbook-xsl-1.73.2/roundtrip/normalise2sections.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/normalise2sections.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/normalise2sections.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/pages-normalise.xsl b/tools/docbook-xsl-1.73.2/roundtrip/pages-normalise.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/pages-normalise.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/pages-normalise.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/pages2normalise.xsl b/tools/docbook-xsl-1.73.2/roundtrip/pages2normalise.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/pages2normalise.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/pages2normalise.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/param.xml b/tools/docbook-xsl-1.73.2/roundtrip/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/param.xml rename to tools/docbook-xsl-1.73.2/roundtrip/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/param.xsl b/tools/docbook-xsl-1.73.2/roundtrip/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/param.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/sections-spec.xml b/tools/docbook-xsl-1.73.2/roundtrip/sections-spec.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/sections-spec.xml rename to tools/docbook-xsl-1.73.2/roundtrip/sections-spec.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/sections2blocks.xsl b/tools/docbook-xsl-1.73.2/roundtrip/sections2blocks.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/sections2blocks.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/sections2blocks.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/specifications.xml b/tools/docbook-xsl-1.73.2/roundtrip/specifications.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/specifications.xml rename to tools/docbook-xsl-1.73.2/roundtrip/specifications.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/supported.xml b/tools/docbook-xsl-1.73.2/roundtrip/supported.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/supported.xml rename to tools/docbook-xsl-1.73.2/roundtrip/supported.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template-pages.xml b/tools/docbook-xsl-1.73.2/roundtrip/template-pages.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template-pages.xml rename to tools/docbook-xsl-1.73.2/roundtrip/template-pages.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template.dot b/tools/docbook-xsl-1.73.2/roundtrip/template.dot similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template.dot rename to tools/docbook-xsl-1.73.2/roundtrip/template.dot diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template.xml b/tools/docbook-xsl-1.73.2/roundtrip/template.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/template.xml rename to tools/docbook-xsl-1.73.2/roundtrip/template.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-blocks.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml-blocks.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-blocks.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml-blocks.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-final.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml-final.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-final.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml-final.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-normalise.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml-normalise.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-normalise.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml-normalise.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-sections.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml-sections.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml-sections.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml-sections.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml2normalise.xsl b/tools/docbook-xsl-1.73.2/roundtrip/wordml2normalise.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/roundtrip/wordml2normalise.xsl rename to tools/docbook-xsl-1.73.2/roundtrip/wordml2normalise.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/CTOCWidget.js b/tools/docbook-xsl-1.73.2/slides/browser/CTOCWidget.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/CTOCWidget.js rename to tools/docbook-xsl-1.73.2/slides/browser/CTOCWidget.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/overlay.js b/tools/docbook-xsl-1.73.2/slides/browser/overlay.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/overlay.js rename to tools/docbook-xsl-1.73.2/slides/browser/overlay.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-default.css b/tools/docbook-xsl-1.73.2/slides/browser/slides-default.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-default.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides-default.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-frames.css b/tools/docbook-xsl-1.73.2/slides/browser/slides-frames.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-frames.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides-frames.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-plain.css b/tools/docbook-xsl-1.73.2/slides/browser/slides-plain.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-plain.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides-plain.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-table.css b/tools/docbook-xsl-1.73.2/slides/browser/slides-table.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-table.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides-table.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-w3c.css b/tools/docbook-xsl-1.73.2/slides/browser/slides-w3c.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides-w3c.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides-w3c.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides.css b/tools/docbook-xsl-1.73.2/slides/browser/slides.css similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides.css rename to tools/docbook-xsl-1.73.2/slides/browser/slides.css diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides.js b/tools/docbook-xsl-1.73.2/slides/browser/slides.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/slides.js rename to tools/docbook-xsl-1.73.2/slides/browser/slides.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/ua.js b/tools/docbook-xsl-1.73.2/slides/browser/ua.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/ua.js rename to tools/docbook-xsl-1.73.2/slides/browser/ua.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbCollapsibleLists.js b/tools/docbook-xsl-1.73.2/slides/browser/xbCollapsibleLists.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbCollapsibleLists.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbCollapsibleLists.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbDOM.js b/tools/docbook-xsl-1.73.2/slides/browser/xbDOM.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbDOM.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbDOM.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbDebug.js b/tools/docbook-xsl-1.73.2/slides/browser/xbDebug.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbDebug.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbDebug.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbLibrary.js b/tools/docbook-xsl-1.73.2/slides/browser/xbLibrary.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbLibrary.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbLibrary.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-css.js b/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-css.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-css.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbStyle-css.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-nn4.js b/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-nn4.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-nn4.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbStyle-nn4.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-not-supported.js b/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-not-supported.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle-not-supported.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbStyle-not-supported.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle.js b/tools/docbook-xsl-1.73.2/slides/browser/xbStyle.js similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/browser/xbStyle.js rename to tools/docbook-xsl-1.73.2/slides/browser/xbStyle.js diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/param.xml b/tools/docbook-xsl-1.73.2/slides/fo/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/param.xml rename to tools/docbook-xsl-1.73.2/slides/fo/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/param.xsl b/tools/docbook-xsl-1.73.2/slides/fo/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/param.xsl rename to tools/docbook-xsl-1.73.2/slides/fo/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xml b/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xml rename to tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xsl b/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xsl rename to tools/docbook-xsl-1.73.2/slides/fo/plain-titlepage.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain.xsl b/tools/docbook-xsl-1.73.2/slides/fo/plain.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/fo/plain.xsl rename to tools/docbook-xsl-1.73.2/slides/fo/plain.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/arr-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/arr-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/arr-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-fforward.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/but-fforward.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-fforward.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/but-fforward.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-info.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/but-info.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-info.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/but-info.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/but-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/but-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/but-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/but-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-rewind.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/but-rewind.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/but-rewind.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/but-rewind.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-home.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-home.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-home.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/nav-home.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/nav-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/nav-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-toc.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-toc.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-toc.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/nav-toc.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-up.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-up.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/nav-up.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/nav-up.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-toc.png b/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-toc.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-toc.png rename to tools/docbook-xsl-1.73.2/slides/graphics/active/w3c-toc.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/arrow.gif b/tools/docbook-xsl-1.73.2/slides/graphics/arrow.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/arrow.gif rename to tools/docbook-xsl-1.73.2/slides/graphics/arrow.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/blank.gif b/tools/docbook-xsl-1.73.2/slides/graphics/blank.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/blank.gif rename to tools/docbook-xsl-1.73.2/slides/graphics/blank.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/blank.png b/tools/docbook-xsl-1.73.2/slides/graphics/blank.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/blank.png rename to tools/docbook-xsl-1.73.2/slides/graphics/blank.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/hidetoc.gif b/tools/docbook-xsl-1.73.2/slides/graphics/hidetoc.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/hidetoc.gif rename to tools/docbook-xsl-1.73.2/slides/graphics/hidetoc.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-fforward.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-fforward.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-fforward.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-fforward.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-info.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-info.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-info.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-info.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-rewind.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-rewind.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-rewind.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/but-rewind.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-home.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-home.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-home.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-home.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-toc.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-toc.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-toc.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-toc.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-up.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-up.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-up.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/nav-up.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-next.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-next.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-next.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-next.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-prev.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-prev.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-prev.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-prev.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-toc.png b/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-toc.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-toc.png rename to tools/docbook-xsl-1.73.2/slides/graphics/inactive/w3c-toc.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/plus.gif b/tools/docbook-xsl-1.73.2/slides/graphics/plus.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/plus.gif rename to tools/docbook-xsl-1.73.2/slides/graphics/plus.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/pointer.png b/tools/docbook-xsl-1.73.2/slides/graphics/pointer.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/pointer.png rename to tools/docbook-xsl-1.73.2/slides/graphics/pointer.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/showtoc.gif b/tools/docbook-xsl-1.73.2/slides/graphics/showtoc.gif similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/showtoc.gif rename to tools/docbook-xsl-1.73.2/slides/graphics/showtoc.gif diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/bullet.png b/tools/docbook-xsl-1.73.2/slides/graphics/toc/bullet.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/bullet.png rename to tools/docbook-xsl-1.73.2/slides/graphics/toc/bullet.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/closed.png b/tools/docbook-xsl-1.73.2/slides/graphics/toc/closed.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/closed.png rename to tools/docbook-xsl-1.73.2/slides/graphics/toc/closed.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/open.png b/tools/docbook-xsl-1.73.2/slides/graphics/toc/open.png similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/graphics/toc/open.png rename to tools/docbook-xsl-1.73.2/slides/graphics/toc/open.png diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/css.xsl b/tools/docbook-xsl-1.73.2/slides/html/css.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/css.xsl rename to tools/docbook-xsl-1.73.2/slides/html/css.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/default.xsl b/tools/docbook-xsl-1.73.2/slides/html/default.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/default.xsl rename to tools/docbook-xsl-1.73.2/slides/html/default.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/flat.xsl b/tools/docbook-xsl-1.73.2/slides/html/flat.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/flat.xsl rename to tools/docbook-xsl-1.73.2/slides/html/flat.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/frames.xsl b/tools/docbook-xsl-1.73.2/slides/html/frames.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/frames.xsl rename to tools/docbook-xsl-1.73.2/slides/html/frames.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/graphics.xsl b/tools/docbook-xsl-1.73.2/slides/html/graphics.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/graphics.xsl rename to tools/docbook-xsl-1.73.2/slides/html/graphics.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/jscript.xsl b/tools/docbook-xsl-1.73.2/slides/html/jscript.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/jscript.xsl rename to tools/docbook-xsl-1.73.2/slides/html/jscript.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/param.xml b/tools/docbook-xsl-1.73.2/slides/html/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/param.xml rename to tools/docbook-xsl-1.73.2/slides/html/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/param.xsl b/tools/docbook-xsl-1.73.2/slides/html/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/param.xsl rename to tools/docbook-xsl-1.73.2/slides/html/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/plain.xsl b/tools/docbook-xsl-1.73.2/slides/html/plain.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/plain.xsl rename to tools/docbook-xsl-1.73.2/slides/html/plain.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/slides-common.xsl b/tools/docbook-xsl-1.73.2/slides/html/slides-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/slides-common.xsl rename to tools/docbook-xsl-1.73.2/slides/html/slides-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/tables.xsl b/tools/docbook-xsl-1.73.2/slides/html/tables.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/tables.xsl rename to tools/docbook-xsl-1.73.2/slides/html/tables.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/vslides.xsl b/tools/docbook-xsl-1.73.2/slides/html/vslides.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/vslides.xsl rename to tools/docbook-xsl-1.73.2/slides/html/vslides.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/html/w3c.xsl b/tools/docbook-xsl-1.73.2/slides/html/w3c.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/html/w3c.xsl rename to tools/docbook-xsl-1.73.2/slides/html/w3c.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/htmlhelp/htmlhelp.xsl b/tools/docbook-xsl-1.73.2/slides/htmlhelp/htmlhelp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/htmlhelp/htmlhelp.xsl rename to tools/docbook-xsl-1.73.2/slides/htmlhelp/htmlhelp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/default.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/default.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/default.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/default.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/cmp.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/cmp.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/cmp.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/cmp.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/date-time.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/date-time.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/date-time.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/date-time.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/example.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/example.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/example.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/example.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/markup.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/markup.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/markup.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/markup.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/math.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/math.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/math.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/math.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/node.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/node.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/node.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/node.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/stdlib.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/stdlib.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/stdlib.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/stdlib.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/string.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/string.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/string.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/string.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/svg.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/svg.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/svg.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/svg.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/uri.xsl b/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/uri.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/uri.xsl rename to tools/docbook-xsl-1.73.2/slides/keynote/xsltsl/uri.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/svg/default.xsl b/tools/docbook-xsl-1.73.2/slides/svg/default.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/svg/default.xsl rename to tools/docbook-xsl-1.73.2/slides/svg/default.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/css.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/css.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/css.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/css.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/default.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/default.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/default.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/default.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/flat.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/flat.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/flat.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/flat.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/frames.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/frames.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/frames.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/frames.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/graphics.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/graphics.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/graphics.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/graphics.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/jscript.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/jscript.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/jscript.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/jscript.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/param.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/param.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/plain.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/plain.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/plain.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/plain.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/slides-common.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/slides-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/slides-common.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/slides-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/tables.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/tables.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/tables.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/tables.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/vslides.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/vslides.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/vslides.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/vslides.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/w3c.xsl b/tools/docbook-xsl-1.73.2/slides/xhtml/w3c.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/slides/xhtml/w3c.xsl rename to tools/docbook-xsl-1.73.2/slides/xhtml/w3c.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/template/titlepage.xml b/tools/docbook-xsl-1.73.2/template/titlepage.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/template/titlepage.xml rename to tools/docbook-xsl-1.73.2/template/titlepage.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/template/titlepage.xsl b/tools/docbook-xsl-1.73.2/template/titlepage.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/template/titlepage.xsl rename to tools/docbook-xsl-1.73.2/template/titlepage.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/tools/bin/docbook-xsl-update b/tools/docbook-xsl-1.73.2/tools/bin/docbook-xsl-update similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/tools/bin/docbook-xsl-update rename to tools/docbook-xsl-1.73.2/tools/bin/docbook-xsl-update diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.DocBook b/tools/docbook-xsl-1.73.2/tools/make/Makefile.DocBook similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.DocBook rename to tools/docbook-xsl-1.73.2/tools/make/Makefile.DocBook diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.combine b/tools/docbook-xsl-1.73.2/tools/make/Makefile.combine similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.combine rename to tools/docbook-xsl-1.73.2/tools/make/Makefile.combine diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.docParam b/tools/docbook-xsl-1.73.2/tools/make/Makefile.docParam similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/tools/make/Makefile.docParam rename to tools/docbook-xsl-1.73.2/tools/make/Makefile.docParam diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/autolayout.xsl b/tools/docbook-xsl-1.73.2/website/autolayout.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/autolayout.xsl rename to tools/docbook-xsl-1.73.2/website/autolayout.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-common.xsl b/tools/docbook-xsl-1.73.2/website/chunk-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-common.xsl rename to tools/docbook-xsl-1.73.2/website/chunk-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-tabular.xsl b/tools/docbook-xsl-1.73.2/website/chunk-tabular.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-tabular.xsl rename to tools/docbook-xsl-1.73.2/website/chunk-tabular.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-website.xsl b/tools/docbook-xsl-1.73.2/website/chunk-website.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/chunk-website.xsl rename to tools/docbook-xsl-1.73.2/website/chunk-website.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/head.xsl b/tools/docbook-xsl-1.73.2/website/head.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/head.xsl rename to tools/docbook-xsl-1.73.2/website/head.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/makefile-dep.xsl b/tools/docbook-xsl-1.73.2/website/makefile-dep.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/makefile-dep.xsl rename to tools/docbook-xsl-1.73.2/website/makefile-dep.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/olink.xsl b/tools/docbook-xsl-1.73.2/website/olink.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/olink.xsl rename to tools/docbook-xsl-1.73.2/website/olink.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/param.xml b/tools/docbook-xsl-1.73.2/website/param.xml similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/param.xml rename to tools/docbook-xsl-1.73.2/website/param.xml diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/param.xsl b/tools/docbook-xsl-1.73.2/website/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/param.xsl rename to tools/docbook-xsl-1.73.2/website/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/rss.xsl b/tools/docbook-xsl-1.73.2/website/rss.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/rss.xsl rename to tools/docbook-xsl-1.73.2/website/rss.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/tabular.xsl b/tools/docbook-xsl-1.73.2/website/tabular.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/tabular.xsl rename to tools/docbook-xsl-1.73.2/website/tabular.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/toc-tabular.xsl b/tools/docbook-xsl-1.73.2/website/toc-tabular.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/toc-tabular.xsl rename to tools/docbook-xsl-1.73.2/website/toc-tabular.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/toc.xsl b/tools/docbook-xsl-1.73.2/website/toc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/toc.xsl rename to tools/docbook-xsl-1.73.2/website/toc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/website-common.xsl b/tools/docbook-xsl-1.73.2/website/website-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/website-common.xsl rename to tools/docbook-xsl-1.73.2/website/website-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/website-targets.xsl b/tools/docbook-xsl-1.73.2/website/website-targets.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/website-targets.xsl rename to tools/docbook-xsl-1.73.2/website/website-targets.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/website.xsl b/tools/docbook-xsl-1.73.2/website/website.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/website.xsl rename to tools/docbook-xsl-1.73.2/website/website.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/website/xbel.xsl b/tools/docbook-xsl-1.73.2/website/xbel.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/website/xbel.xsl rename to tools/docbook-xsl-1.73.2/website/xbel.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/admon.xsl b/tools/docbook-xsl-1.73.2/xhtml/admon.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/admon.xsl rename to tools/docbook-xsl-1.73.2/xhtml/admon.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/annotations.xsl b/tools/docbook-xsl-1.73.2/xhtml/annotations.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/annotations.xsl rename to tools/docbook-xsl-1.73.2/xhtml/annotations.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-kimber.xsl b/tools/docbook-xsl-1.73.2/xhtml/autoidx-kimber.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-kimber.xsl rename to tools/docbook-xsl-1.73.2/xhtml/autoidx-kimber.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-kosek.xsl b/tools/docbook-xsl-1.73.2/xhtml/autoidx-kosek.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-kosek.xsl rename to tools/docbook-xsl-1.73.2/xhtml/autoidx-kosek.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl b/tools/docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl rename to tools/docbook-xsl-1.73.2/xhtml/autoidx-ng.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx.xsl b/tools/docbook-xsl-1.73.2/xhtml/autoidx.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autoidx.xsl rename to tools/docbook-xsl-1.73.2/xhtml/autoidx.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autotoc.xsl b/tools/docbook-xsl-1.73.2/xhtml/autotoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/autotoc.xsl rename to tools/docbook-xsl-1.73.2/xhtml/autotoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/biblio-iso690.xsl b/tools/docbook-xsl-1.73.2/xhtml/biblio-iso690.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/biblio-iso690.xsl rename to tools/docbook-xsl-1.73.2/xhtml/biblio-iso690.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/biblio.xsl b/tools/docbook-xsl-1.73.2/xhtml/biblio.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/biblio.xsl rename to tools/docbook-xsl-1.73.2/xhtml/biblio.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/block.xsl b/tools/docbook-xsl-1.73.2/xhtml/block.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/block.xsl rename to tools/docbook-xsl-1.73.2/xhtml/block.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/callout.xsl b/tools/docbook-xsl-1.73.2/xhtml/callout.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/callout.xsl rename to tools/docbook-xsl-1.73.2/xhtml/callout.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/changebars.xsl b/tools/docbook-xsl-1.73.2/xhtml/changebars.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/changebars.xsl rename to tools/docbook-xsl-1.73.2/xhtml/changebars.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk-code.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunk-code.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk-code.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunk-code.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk-common.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunk-common.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk-common.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunk-common.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunk.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunker.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunker.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunker.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunker.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunkfast.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunkfast.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunkfast.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunkfast.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunktoc.xsl b/tools/docbook-xsl-1.73.2/xhtml/chunktoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/chunktoc.xsl rename to tools/docbook-xsl-1.73.2/xhtml/chunktoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/component.xsl b/tools/docbook-xsl-1.73.2/xhtml/component.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/component.xsl rename to tools/docbook-xsl-1.73.2/xhtml/component.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/division.xsl b/tools/docbook-xsl-1.73.2/xhtml/division.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/division.xsl rename to tools/docbook-xsl-1.73.2/xhtml/division.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/docbook.xsl b/tools/docbook-xsl-1.73.2/xhtml/docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/docbook.xsl rename to tools/docbook-xsl-1.73.2/xhtml/docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/ebnf.xsl b/tools/docbook-xsl-1.73.2/xhtml/ebnf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/ebnf.xsl rename to tools/docbook-xsl-1.73.2/xhtml/ebnf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/footnote.xsl b/tools/docbook-xsl-1.73.2/xhtml/footnote.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/footnote.xsl rename to tools/docbook-xsl-1.73.2/xhtml/footnote.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/formal.xsl b/tools/docbook-xsl-1.73.2/xhtml/formal.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/formal.xsl rename to tools/docbook-xsl-1.73.2/xhtml/formal.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/glossary.xsl b/tools/docbook-xsl-1.73.2/xhtml/glossary.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/glossary.xsl rename to tools/docbook-xsl-1.73.2/xhtml/glossary.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/graphics.xsl b/tools/docbook-xsl-1.73.2/xhtml/graphics.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/graphics.xsl rename to tools/docbook-xsl-1.73.2/xhtml/graphics.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/highlight.xsl b/tools/docbook-xsl-1.73.2/xhtml/highlight.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/highlight.xsl rename to tools/docbook-xsl-1.73.2/xhtml/highlight.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/html-rtf.xsl b/tools/docbook-xsl-1.73.2/xhtml/html-rtf.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/html-rtf.xsl rename to tools/docbook-xsl-1.73.2/xhtml/html-rtf.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/html.xsl b/tools/docbook-xsl-1.73.2/xhtml/html.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/html.xsl rename to tools/docbook-xsl-1.73.2/xhtml/html.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/htmltbl.xsl b/tools/docbook-xsl-1.73.2/xhtml/htmltbl.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/htmltbl.xsl rename to tools/docbook-xsl-1.73.2/xhtml/htmltbl.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/index.xsl b/tools/docbook-xsl-1.73.2/xhtml/index.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/index.xsl rename to tools/docbook-xsl-1.73.2/xhtml/index.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/info.xsl b/tools/docbook-xsl-1.73.2/xhtml/info.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/info.xsl rename to tools/docbook-xsl-1.73.2/xhtml/info.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/inline.xsl b/tools/docbook-xsl-1.73.2/xhtml/inline.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/inline.xsl rename to tools/docbook-xsl-1.73.2/xhtml/inline.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/keywords.xsl b/tools/docbook-xsl-1.73.2/xhtml/keywords.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/keywords.xsl rename to tools/docbook-xsl-1.73.2/xhtml/keywords.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/lists.xsl b/tools/docbook-xsl-1.73.2/xhtml/lists.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/lists.xsl rename to tools/docbook-xsl-1.73.2/xhtml/lists.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/maketoc.xsl b/tools/docbook-xsl-1.73.2/xhtml/maketoc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/maketoc.xsl rename to tools/docbook-xsl-1.73.2/xhtml/maketoc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/manifest.xsl b/tools/docbook-xsl-1.73.2/xhtml/manifest.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/manifest.xsl rename to tools/docbook-xsl-1.73.2/xhtml/manifest.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/math.xsl b/tools/docbook-xsl-1.73.2/xhtml/math.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/math.xsl rename to tools/docbook-xsl-1.73.2/xhtml/math.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/oldchunker.xsl b/tools/docbook-xsl-1.73.2/xhtml/oldchunker.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/oldchunker.xsl rename to tools/docbook-xsl-1.73.2/xhtml/oldchunker.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/onechunk.xsl b/tools/docbook-xsl-1.73.2/xhtml/onechunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/onechunk.xsl rename to tools/docbook-xsl-1.73.2/xhtml/onechunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/param.xsl b/tools/docbook-xsl-1.73.2/xhtml/param.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/param.xsl rename to tools/docbook-xsl-1.73.2/xhtml/param.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/pi.xsl b/tools/docbook-xsl-1.73.2/xhtml/pi.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/pi.xsl rename to tools/docbook-xsl-1.73.2/xhtml/pi.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-chunk-code.xsl b/tools/docbook-xsl-1.73.2/xhtml/profile-chunk-code.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-chunk-code.xsl rename to tools/docbook-xsl-1.73.2/xhtml/profile-chunk-code.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-chunk.xsl b/tools/docbook-xsl-1.73.2/xhtml/profile-chunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-chunk.xsl rename to tools/docbook-xsl-1.73.2/xhtml/profile-chunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-docbook.xsl b/tools/docbook-xsl-1.73.2/xhtml/profile-docbook.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-docbook.xsl rename to tools/docbook-xsl-1.73.2/xhtml/profile-docbook.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-onechunk.xsl b/tools/docbook-xsl-1.73.2/xhtml/profile-onechunk.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/profile-onechunk.xsl rename to tools/docbook-xsl-1.73.2/xhtml/profile-onechunk.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/qandaset.xsl b/tools/docbook-xsl-1.73.2/xhtml/qandaset.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/qandaset.xsl rename to tools/docbook-xsl-1.73.2/xhtml/qandaset.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/refentry.xsl b/tools/docbook-xsl-1.73.2/xhtml/refentry.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/refentry.xsl rename to tools/docbook-xsl-1.73.2/xhtml/refentry.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/sections.xsl b/tools/docbook-xsl-1.73.2/xhtml/sections.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/sections.xsl rename to tools/docbook-xsl-1.73.2/xhtml/sections.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/synop.xsl b/tools/docbook-xsl-1.73.2/xhtml/synop.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/synop.xsl rename to tools/docbook-xsl-1.73.2/xhtml/synop.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/table.xsl b/tools/docbook-xsl-1.73.2/xhtml/table.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/table.xsl rename to tools/docbook-xsl-1.73.2/xhtml/table.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/task.xsl b/tools/docbook-xsl-1.73.2/xhtml/task.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/task.xsl rename to tools/docbook-xsl-1.73.2/xhtml/task.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/titlepage.templates.xsl b/tools/docbook-xsl-1.73.2/xhtml/titlepage.templates.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/titlepage.templates.xsl rename to tools/docbook-xsl-1.73.2/xhtml/titlepage.templates.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/titlepage.xsl b/tools/docbook-xsl-1.73.2/xhtml/titlepage.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/titlepage.xsl rename to tools/docbook-xsl-1.73.2/xhtml/titlepage.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/toc.xsl b/tools/docbook-xsl-1.73.2/xhtml/toc.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/toc.xsl rename to tools/docbook-xsl-1.73.2/xhtml/toc.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/verbatim.xsl b/tools/docbook-xsl-1.73.2/xhtml/verbatim.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/verbatim.xsl rename to tools/docbook-xsl-1.73.2/xhtml/verbatim.xsl diff --git a/jonas_doc/tools/docbook-xsl-1.73.2/xhtml/xref.xsl b/tools/docbook-xsl-1.73.2/xhtml/xref.xsl similarity index 100% rename from jonas_doc/tools/docbook-xsl-1.73.2/xhtml/xref.xsl rename to tools/docbook-xsl-1.73.2/xhtml/xref.xsl diff --git a/jonas_doc/tools/fop-0.95/KEYS b/tools/fop-0.95/KEYS similarity index 100% rename from jonas_doc/tools/fop-0.95/KEYS rename to tools/fop-0.95/KEYS diff --git a/jonas_doc/tools/fop-0.95/LICENSE b/tools/fop-0.95/LICENSE similarity index 100% rename from jonas_doc/tools/fop-0.95/LICENSE rename to tools/fop-0.95/LICENSE diff --git a/jonas_doc/tools/fop-0.95/NOTICE b/tools/fop-0.95/NOTICE similarity index 100% rename from jonas_doc/tools/fop-0.95/NOTICE rename to tools/fop-0.95/NOTICE diff --git a/jonas_doc/tools/fop-0.95/README b/tools/fop-0.95/README similarity index 100% rename from jonas_doc/tools/fop-0.95/README rename to tools/fop-0.95/README diff --git a/jonas_doc/tools/fop-0.95/build/fop.jar b/tools/fop-0.95/build/fop.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/build/fop.jar rename to tools/fop-0.95/build/fop.jar diff --git a/jonas_doc/tools/fop-0.95/conf/fop.xconf b/tools/fop-0.95/conf/fop.xconf similarity index 100% rename from jonas_doc/tools/fop-0.95/conf/fop.xconf rename to tools/fop-0.95/conf/fop.xconf diff --git a/jonas_doc/tools/fop-0.95/fop b/tools/fop-0.95/fop similarity index 100% rename from jonas_doc/tools/fop-0.95/fop rename to tools/fop-0.95/fop diff --git a/jonas_doc/tools/fop-0.95/fop.bat b/tools/fop-0.95/fop.bat similarity index 100% rename from jonas_doc/tools/fop-0.95/fop.bat rename to tools/fop-0.95/fop.bat diff --git a/jonas_doc/tools/fop-0.95/lib/README.txt b/tools/fop-0.95/lib/README.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/README.txt rename to tools/fop-0.95/lib/README.txt diff --git a/jonas_doc/tools/fop-0.95/lib/avalon-framework-4.2.0.jar b/tools/fop-0.95/lib/avalon-framework-4.2.0.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/avalon-framework-4.2.0.jar rename to tools/fop-0.95/lib/avalon-framework-4.2.0.jar diff --git a/jonas_doc/tools/fop-0.95/lib/avalon-framework.LICENSE.txt b/tools/fop-0.95/lib/avalon-framework.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/avalon-framework.LICENSE.txt rename to tools/fop-0.95/lib/avalon-framework.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/avalon-framework.NOTICE.TXT b/tools/fop-0.95/lib/avalon-framework.NOTICE.TXT similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/avalon-framework.NOTICE.TXT rename to tools/fop-0.95/lib/avalon-framework.NOTICE.TXT diff --git a/jonas_doc/tools/fop-0.95/lib/batik-all-1.7.jar b/tools/fop-0.95/lib/batik-all-1.7.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/batik-all-1.7.jar rename to tools/fop-0.95/lib/batik-all-1.7.jar diff --git a/jonas_doc/tools/fop-0.95/lib/batik.LICENSE.txt b/tools/fop-0.95/lib/batik.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/batik.LICENSE.txt rename to tools/fop-0.95/lib/batik.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/batik.NOTICE.txt b/tools/fop-0.95/lib/batik.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/batik.NOTICE.txt rename to tools/fop-0.95/lib/batik.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/commons-io-1.3.1.jar b/tools/fop-0.95/lib/commons-io-1.3.1.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-io-1.3.1.jar rename to tools/fop-0.95/lib/commons-io-1.3.1.jar diff --git a/jonas_doc/tools/fop-0.95/lib/commons-io.LICENSE.txt b/tools/fop-0.95/lib/commons-io.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-io.LICENSE.txt rename to tools/fop-0.95/lib/commons-io.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/commons-io.NOTICE.txt b/tools/fop-0.95/lib/commons-io.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-io.NOTICE.txt rename to tools/fop-0.95/lib/commons-io.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/commons-logging-1.0.4.jar b/tools/fop-0.95/lib/commons-logging-1.0.4.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-logging-1.0.4.jar rename to tools/fop-0.95/lib/commons-logging-1.0.4.jar diff --git a/jonas_doc/tools/fop-0.95/lib/commons-logging.LICENSE.txt b/tools/fop-0.95/lib/commons-logging.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-logging.LICENSE.txt rename to tools/fop-0.95/lib/commons-logging.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/commons-logging.NOTICE.txt b/tools/fop-0.95/lib/commons-logging.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/commons-logging.NOTICE.txt rename to tools/fop-0.95/lib/commons-logging.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/serializer-2.7.0.jar b/tools/fop-0.95/lib/serializer-2.7.0.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/serializer-2.7.0.jar rename to tools/fop-0.95/lib/serializer-2.7.0.jar diff --git a/jonas_doc/tools/fop-0.95/lib/serializer.LICENSE.txt b/tools/fop-0.95/lib/serializer.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/serializer.LICENSE.txt rename to tools/fop-0.95/lib/serializer.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/serializer.NOTICE.txt b/tools/fop-0.95/lib/serializer.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/serializer.NOTICE.txt rename to tools/fop-0.95/lib/serializer.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xalan-2.7.0.jar b/tools/fop-0.95/lib/xalan-2.7.0.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan-2.7.0.jar rename to tools/fop-0.95/lib/xalan-2.7.0.jar diff --git a/jonas_doc/tools/fop-0.95/lib/xalan.BCEL.LICENSE.txt b/tools/fop-0.95/lib/xalan.BCEL.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan.BCEL.LICENSE.txt rename to tools/fop-0.95/lib/xalan.BCEL.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xalan.LICENSE.txt b/tools/fop-0.95/lib/xalan.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan.LICENSE.txt rename to tools/fop-0.95/lib/xalan.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xalan.NOTICE.txt b/tools/fop-0.95/lib/xalan.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan.NOTICE.txt rename to tools/fop-0.95/lib/xalan.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xalan.regexp.LICENSE.txt b/tools/fop-0.95/lib/xalan.regexp.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan.regexp.LICENSE.txt rename to tools/fop-0.95/lib/xalan.regexp.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xalan.runtime.LICENSE.txt b/tools/fop-0.95/lib/xalan.runtime.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xalan.runtime.LICENSE.txt rename to tools/fop-0.95/lib/xalan.runtime.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xerces.LICENSE.txt b/tools/fop-0.95/lib/xerces.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xerces.LICENSE.txt rename to tools/fop-0.95/lib/xerces.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xercesImpl-2.7.1.jar b/tools/fop-0.95/lib/xercesImpl-2.7.1.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xercesImpl-2.7.1.jar rename to tools/fop-0.95/lib/xercesImpl-2.7.1.jar diff --git a/jonas_doc/tools/fop-0.95/lib/xercesImpl.LICENSE.txt b/tools/fop-0.95/lib/xercesImpl.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xercesImpl.LICENSE.txt rename to tools/fop-0.95/lib/xercesImpl.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xercesImpl.NOTICE.txt b/tools/fop-0.95/lib/xercesImpl.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xercesImpl.NOTICE.txt rename to tools/fop-0.95/lib/xercesImpl.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-1.3.04.jar b/tools/fop-0.95/lib/xml-apis-1.3.04.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-1.3.04.jar rename to tools/fop-0.95/lib/xml-apis-1.3.04.jar diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext-1.3.04.jar b/tools/fop-0.95/lib/xml-apis-ext-1.3.04.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext-1.3.04.jar rename to tools/fop-0.95/lib/xml-apis-ext-1.3.04.jar diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-documentation.txt b/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-documentation.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-documentation.txt rename to tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-documentation.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-software.txt b/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-software.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-software.txt rename to tools/fop-0.95/lib/xml-apis-ext.LICENSE.dom-software.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.sac.html b/tools/fop-0.95/lib/xml-apis-ext.LICENSE.sac.html similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.sac.html rename to tools/fop-0.95/lib/xml-apis-ext.LICENSE.sac.html diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.txt b/tools/fop-0.95/lib/xml-apis-ext.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.LICENSE.txt rename to tools/fop-0.95/lib/xml-apis-ext.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.NOTICE.txt b/tools/fop-0.95/lib/xml-apis-ext.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.NOTICE.txt rename to tools/fop-0.95/lib/xml-apis-ext.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis-ext.README.dom.txt b/tools/fop-0.95/lib/xml-apis-ext.README.dom.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis-ext.README.dom.txt rename to tools/fop-0.95/lib/xml-apis-ext.README.dom.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE-SAX.html b/tools/fop-0.95/lib/xml-apis.LICENSE-SAX.html similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE-SAX.html rename to tools/fop-0.95/lib/xml-apis.LICENSE-SAX.html diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-documentation.html b/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-documentation.html similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-documentation.html rename to tools/fop-0.95/lib/xml-apis.LICENSE.DOM-documentation.html diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-software.html b/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-software.html similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.DOM-software.html rename to tools/fop-0.95/lib/xml-apis.LICENSE.DOM-software.html diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.txt b/tools/fop-0.95/lib/xml-apis.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis.LICENSE.txt rename to tools/fop-0.95/lib/xml-apis.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xml-apis.NOTICE.txt b/tools/fop-0.95/lib/xml-apis.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xml-apis.NOTICE.txt rename to tools/fop-0.95/lib/xml-apis.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons-1.3.1.jar b/tools/fop-0.95/lib/xmlgraphics-commons-1.3.1.jar similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons-1.3.1.jar rename to tools/fop-0.95/lib/xmlgraphics-commons-1.3.1.jar diff --git a/jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons.LICENSE.txt b/tools/fop-0.95/lib/xmlgraphics-commons.LICENSE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons.LICENSE.txt rename to tools/fop-0.95/lib/xmlgraphics-commons.LICENSE.txt diff --git a/jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons.NOTICE.txt b/tools/fop-0.95/lib/xmlgraphics-commons.NOTICE.txt similarity index 100% rename from jonas_doc/tools/fop-0.95/lib/xmlgraphics-commons.NOTICE.txt rename to tools/fop-0.95/lib/xmlgraphics-commons.NOTICE.txt diff --git a/jonas_doc/tools/fop-0.95/status.xml b/tools/fop-0.95/status.xml similarity index 100% rename from jonas_doc/tools/fop-0.95/status.xml rename to tools/fop-0.95/status.xml diff --git a/jonas_doc/tools/maven-ant-tasks-2.0.9.jar b/tools/maven-ant-tasks-2.0.9.jar similarity index 100% rename from jonas_doc/tools/maven-ant-tasks-2.0.9.jar rename to tools/maven-ant-tasks-2.0.9.jar diff --git a/jonas_doc/tools/win32/iconv.dll b/tools/win32/iconv.dll similarity index 100% rename from jonas_doc/tools/win32/iconv.dll rename to tools/win32/iconv.dll diff --git a/jonas_doc/tools/win32/libexslt.dll b/tools/win32/libexslt.dll similarity index 100% rename from jonas_doc/tools/win32/libexslt.dll rename to tools/win32/libexslt.dll diff --git a/jonas_doc/tools/win32/libxml2.dll b/tools/win32/libxml2.dll similarity index 100% rename from jonas_doc/tools/win32/libxml2.dll rename to tools/win32/libxml2.dll diff --git a/jonas_doc/tools/win32/libxslt.dll b/tools/win32/libxslt.dll similarity index 100% rename from jonas_doc/tools/win32/libxslt.dll rename to tools/win32/libxslt.dll diff --git a/jonas_doc/tools/win32/xsltproc.exe b/tools/win32/xsltproc.exe similarity index 100% rename from jonas_doc/tools/win32/xsltproc.exe rename to tools/win32/xsltproc.exe diff --git a/jonas_doc/tools/win32/zlib1.dll b/tools/win32/zlib1.dll similarity index 100% rename from jonas_doc/tools/win32/zlib1.dll rename to tools/win32/zlib1.dll -- GitLab
  • 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𝔱^h#H@i2vbxBnYlc#m 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%0DIF~5Z)ZkBM9sh*r6ookB; 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