diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..393434f1706f5e3240b8924cb2a01152cec33783 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,5 @@ +/target/ +/.settings/ +/.metadata/ +.classpath +.project \ No newline at end of file diff --git a/bin/README.md b/bin/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9ae9e86b7bd6cb1472d9373702d8249973da0832 --- /dev/null +++ b/bin/README.md @@ -0,0 +1 @@ +ab \ No newline at end of file diff --git a/bin/azure-pipelines.yml b/bin/azure-pipelines.yml new file mode 100644 index 0000000000000000000000000000000000000000..bbe87cb0fbb384e929911a4e4b4a81401c5446d0 --- /dev/null +++ b/bin/azure-pipelines.yml @@ -0,0 +1,31 @@ +# Maven +# Build your Java project and run tests with Apache Maven. +# Add steps that analyze code, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/java + +trigger: +- master + +pool: + vmImage: 'ubuntu-latest' + +steps: +- task: Maven@3 + inputs: + mavenPomFile: 'pom.xml' + mavenOptions: '-Xmx3072m' + javaHomeOption: 'JDKVersion' + jdkVersionOption: '1.8' + jdkArchitectureOption: 'x64' + publishJUnitResults: true + testResultsFiles: '**/surefire-reports/TEST-*.xml' + goals: 'package' + +- task: AzureRmWebAppDeployment@4 + inputs: + ConnectionType: 'AzureRM' + azureSubscription: 'Azure for Students (d67e4eff-f95b-4837-b21e-2daef7374625)' + appType: 'webAppLinux' + WebAppName: 'tech-recruiting' + packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.war' + RuntimeStack: 'WILDFLY|14-jre8' diff --git a/bin/pom.xml b/bin/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..0cb5aa5a9b663e37fc79f1add8d84121e5dc185e --- /dev/null +++ b/bin/pom.xml @@ -0,0 +1,48 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>de.dpunkt</groupId> + <artifactId>my-aktion</artifactId> + <version>0.0.1</version> + <packaging>war</packaging> + + <dependencies> + <dependency> + <groupId>jakarta.platform</groupId> + <artifactId>jakarta.jakartaee-api</artifactId> + <version>8.0.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.eclipse.microprofile</groupId> + <artifactId>microprofile</artifactId> + <version>3.0</version> + <type>pom</type> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.primefaces</groupId> + <artifactId>primefaces</artifactId> + <version>8.0</version> + </dependency> + </dependencies> + + <build> + <finalName>my-aktion</finalName> + <plugins> + <plugin> + <groupId>org.wildfly.plugins</groupId> + <artifactId>wildfly-maven-plugin</artifactId> + <version>2.0.2.Final</version> + </plugin> + </plugins> + </build> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + <failOnMissingWebXml>false</failOnMissingWebXml> + </properties> +</project> \ No newline at end of file diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class new file mode 100644 index 0000000000000000000000000000000000000000..0139d27612bbd3745352d2684725c81b3563c90a Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/DonateMoneyController.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class new file mode 100644 index 0000000000000000000000000000000000000000..98a98e86f79354ec86eec0488b81fd92e40489ad Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/EditCampaignController.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class new file mode 100644 index 0000000000000000000000000000000000000000..9a971bb0e85c15b2f52f60cca6190f9e53afd478 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/EditDonationFormController.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class new file mode 100644 index 0000000000000000000000000000000000000000..25efcfb44fc620e81001d9d668aeee574518ff7e Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/ListCampaignsController.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class b/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class new file mode 100644 index 0000000000000000000000000000000000000000..54dac8bfbbff773e4685ebb5859376cb04efb919 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/ListDonationsController.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class b/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class new file mode 100644 index 0000000000000000000000000000000000000000..8f57b945cb4a1a75a73b833d27977b208d910158 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/controller/Pages.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class new file mode 100644 index 0000000000000000000000000000000000000000..8d832d75f2b4e3af716427764f18f80db14965c3 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignListProducer.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class new file mode 100644 index 0000000000000000000000000000000000000000..4ef4b260264a2aea455e6609b7ee576882708bb0 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer$Mode.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class new file mode 100644 index 0000000000000000000000000000000000000000..3e85a4d05b3bec8f8f9a09f7d3f2b0eea3228324 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/data/CampaignProducer.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Account.class b/bin/src/main/java/de/dpunkt/myaktion/model/Account.class new file mode 100644 index 0000000000000000000000000000000000000000..dfe9a53daa28b1269b05072fbf8f60c46b818ebf Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Account.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class b/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class new file mode 100644 index 0000000000000000000000000000000000000000..472d6ce0793c7aad9619c2d80e9ac9080f2e20f8 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Campaign.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class b/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class new file mode 100644 index 0000000000000000000000000000000000000000..942f08992d2d41687b398220a8f826f67b182683 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Donation$Status.class differ diff --git a/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class b/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class new file mode 100644 index 0000000000000000000000000000000000000000..b68f89894d2b81abb326868d781b7b9d9af05993 Binary files /dev/null and b/bin/src/main/java/de/dpunkt/myaktion/model/Donation.class differ diff --git a/bin/src/main/resources/messages_de.properties b/bin/src/main/resources/messages_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..07544ff2deb2fd43d5e72f642c02f19a8e7c5384 --- /dev/null +++ b/bin/src/main/resources/messages_de.properties @@ -0,0 +1,66 @@ +# index.xhtml +welcome.title= Workshop Java EE 7 +welcome.text=Java EE 7: Willkommen zu unserem Workshop! + +# listCampaigns.xhtml +listCampaigns.my_campaigns=Meine Aktionen +listCampaigns.name=Name +listCampaigns.target_amount=Spendenziel +listCampaigns.donated_so_far=bisher gespendet +listCampaigns.edit=Editieren +listCampaigns.list_donations=Spendenliste +listCampaigns.form=Formular +listCampaigns.add_campaign=Aktion hinzufügen + +# editCampaign.xhtml +editCampaign.add_new_campaign=Neue Aktion anlegen +editCampaign.edit_campaign=Aktionsdaten editieren +editCampaign.general=Allgemein +editCampaign.name=Name +editCampaign.campaign_name_validation=Der Name einer Aktion muss min. 4 und darf max. 30 Zeichen lang sein. +editCampaign.name_of_the_campaign=Name der Spendenaktion +editCampaign.target_amount=Spendenziel +editCampaign.target_amount_validation=Das Spendenziel für die Aktion muss min. 10 Euro sein. +editCampaign.donation_amount=Spendenbetrag +editCampaign.donation_amount_validation=Der Spendenbetrag muss min. 1 Euro sein. +editCampaign.bank_account=Bankverbindung +editCampaign.iban=IBAN +editCampaign.name_of_bank=Name der Bank +editCampaign.save=Speichern +editCampaign.cancel=Abbrechen + +# listDonations.xhtml +listDonations.donation_list=Spenderliste +listDonations.beneficiary_account=Empfängerkonto +listDonations.iban=IBAN +listDonations.name=Name +listDonations.name_of_bank=Name der Bank +listDonations.donation_amount=Spendenbetrag +listDonations.receipt=Quittung +listDonations.yes=ja +listDonations.no=nein +listDonations.status=Status +listDonations.status.TRANSFERRED=überwiesen +listDonations.status.IN_PROCESS=in Bearbeitung + +# editDonationForm.xhtml +editDonationForm.edit_donation_form=Spendenformular bearbeiten +editDonationForm.background_color=Hintergrundfarbe +editDonationForm.text_color=Textfarbe +editDonationForm.form_url=URL des Formulars +editDonationForm.update_url=Aktualisieren der URL + +# donateMoney.xhtml +donateMoney.donate_money=Geld spenden +donateMoney.name=Name +donateMoney.iban=IBAN +donateMoney.name_of_bank=Name der Bank +donateMoney.donation_amount=Spendenbetrag +donateMoney.i_want_a_receipt=Ja, ich möchte eine Spendenquittung +donateMoney.donate=Spenden +donateMoney.thank_you=Vielen Dank für die Spende! + +listCampaigns.ask_delete_campaign=Aktion wirklich löschen? +listCampaigns.delete_campaign=Aktion löschen +listCampaigns.yes=Ja +listCampaigns.no=Nein \ No newline at end of file diff --git a/bin/src/main/resources/messages_en.properties b/bin/src/main/resources/messages_en.properties new file mode 100644 index 0000000000000000000000000000000000000000..5df0b5aed6b0df2809e2ae1ef2f080db8dc8f6ad --- /dev/null +++ b/bin/src/main/resources/messages_en.properties @@ -0,0 +1,66 @@ +# index.xhtml +welcome.title=Workshop Java EE 7 +welcome.text=Java EE 7: Welcome to our Workshop! + +# listCampaigns.xhtml +listCampaigns.my_campaigns=My campaigns +listCampaigns.name=Name +listCampaigns.target_amount=Target amount +listCampaigns.donated_so_far=Donated so far +listCampaigns.edit=Edit +listCampaigns.list_donations=List donations +listCampaigns.form=Form +listCampaigns.add_campaign=Add campaign + +# editCampaign.xhtml +editCampaign.add_new_campaign=Add a new campaign +editCampaign.edit_campaign=Edit campaign +editCampaign.general=General +editCampaign.name=Name +editCampaign.campaign_name_validation=The name of a campaign must be at least 4 and max. 30 characters long. +editCampaign.name_of_the_campaign=Name of the campaign +editCampaign.target_amount=Target amount +editCampaign.target_amount_validation=The target amount for the campaign must be at least 10 Euro. +editCampaign.donation_amount=Donation amount +editCampaign.donation_amount_validation=The donation amount must be at least 1 Euro. +editCampaign.bank_account=Bank account +editCampaign.iban=IBAN +editCampaign.name_of_bank=Name of Bank +editCampaign.save=Save +editCampaign.cancel=Cancel + +# listDonations.xhtml +listDonations.donation_list=List of donations +listDonations.beneficiary_account=Beneficiary account +listDonations.iban=IBAN +listDonations.name=Name +listDonations.name_of_bank=Name of Bank +listDonations.donation_amount=Donation amount +listDonations.receipt=Receipt +listDonations.yes=yes +listDonations.no=no +listDonations.status=Status +listDonations.status.TRANSFERRED=transferred +listDonations.status.IN_PROCESS=in process + +# editDonationForm.xhtml +editDonationForm.edit_donation_form=Edit donation form +editDonationForm.background_color=Background color +editDonationForm.text_color=Text color +editDonationForm.form_url=Form URL +editDonationForm.update_url=Update URL + +# donateMoney.xhtml +donateMoney.donate_money=Donate money +donateMoney.name=Name +donateMoney.iban=IBAN +donateMoney.name_of_bank=Name of bank +donateMoney.donation_amount=Donation amount +donateMoney.i_want_a_receipt=Yes, I would like a donation receipt +donateMoney.donate=Donate +donateMoney.thank_you=Thank you for your donation! + +listCampaigns.ask_delete_campaign=Really delete campaign? +listCampaigns.delete_campaign=Delete campaign +listCampaigns.yes=Yes +listCampaigns.no=No \ No newline at end of file diff --git a/bin/src/main/webapp/WEB-INF/beans.xml b/bin/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000000000000000000000000000000000000..51e8caf9f902ed321518e45954efa637170d9c12 --- /dev/null +++ b/bin/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd" + bean-discovery-mode="all" version="2.0"> +</beans> \ No newline at end of file diff --git a/bin/src/main/webapp/WEB-INF/faces-config.xml b/bin/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5fd52797c166b4e7de1919e28f8e37996ef8453 --- /dev/null +++ b/bin/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<faces-config version="2.3" + xmlns="http://xmlns.jcp.org/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee + http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"> + <application> + <locale-config> + <default-locale>de</default-locale> + <supported-locale>en</supported-locale> + <supported-locale>de</supported-locale> + </locale-config> + <resource-bundle> + <base-name>messages</base-name> + <var>msg</var> + </resource-bundle> + </application> +</faces-config> \ No newline at end of file diff --git a/bin/src/main/webapp/contracts/de/screen.css b/bin/src/main/webapp/contracts/de/screen.css new file mode 100644 index 0000000000000000000000000000000000000000..fd7253dd9842d160bd4c35fc55fe499db947d679 --- /dev/null +++ b/bin/src/main/webapp/contracts/de/screen.css @@ -0,0 +1,35 @@ +body { + margin: 0; + padding: 0; + background-color: #EAECEE; + font-family: Verdana, sans-serif; + font-size: 0.9em; +} + +#container { + margin: 0 auto; + padding: 0 20px 10px 20px; + border: 1px solid #666666; + width: 865px; + padding-top: 10px; +} + +#header { + font-size: 1.3em; + border: 1px solid #666666; + background: #EAECEE; + padding: 0 15px 5px 15px; + margin-bottom: 50px; +} + +#footer { + clear: both; + text-align: center; + color: #666666; + font-size: 0.85em; + padding: 3em 0 0 0; +} + +h2 { + font-size: 1.2em; +} \ No newline at end of file diff --git a/bin/src/main/webapp/contracts/de/template.xhtml b/bin/src/main/webapp/contracts/de/template.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..17cdc03c4046c20d800b054bf0109c724d7ff40f --- /dev/null +++ b/bin/src/main/webapp/contracts/de/template.xhtml @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://xmlns.jcp.org/jsf/html" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> +<h:head> + <title>My-Aktion</title> + <meta charset="utf-8" /> + <h:outputStylesheet name="/screen.css" /> +</h:head> +<h:body> + <div id="container"> + <div id="header"> + <p> + Beispielanwendung <b>My-Aktion</b> – Workshop Java EE 7 + </p> + </div> + <div id="content"> + <ui:insert name="content"> + [Template content will be inserted here] + </ui:insert> + </div> + <div id="footer"> + <p>(C) 2013-2014 dpunkt.verlag GmbH, MIT Lizenz</p> + </div> + </div> +</h:body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/contracts/en/screen.css b/bin/src/main/webapp/contracts/en/screen.css new file mode 100644 index 0000000000000000000000000000000000000000..fd7253dd9842d160bd4c35fc55fe499db947d679 --- /dev/null +++ b/bin/src/main/webapp/contracts/en/screen.css @@ -0,0 +1,35 @@ +body { + margin: 0; + padding: 0; + background-color: #EAECEE; + font-family: Verdana, sans-serif; + font-size: 0.9em; +} + +#container { + margin: 0 auto; + padding: 0 20px 10px 20px; + border: 1px solid #666666; + width: 865px; + padding-top: 10px; +} + +#header { + font-size: 1.3em; + border: 1px solid #666666; + background: #EAECEE; + padding: 0 15px 5px 15px; + margin-bottom: 50px; +} + +#footer { + clear: both; + text-align: center; + color: #666666; + font-size: 0.85em; + padding: 3em 0 0 0; +} + +h2 { + font-size: 1.2em; +} \ No newline at end of file diff --git a/bin/src/main/webapp/contracts/en/template.xhtml b/bin/src/main/webapp/contracts/en/template.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..56e9c61261d8ad66f8fe814fe8ff1da3daed7c8b --- /dev/null +++ b/bin/src/main/webapp/contracts/en/template.xhtml @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://xmlns.jcp.org/jsf/html" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> +<h:head> + <title>My-Aktion</title> + <meta charset="utf-8" /> + <h:outputStylesheet name="/screen.css" /> +</h:head> +<h:body> + <div id="container"> + <div id="header"> + <p> + Example application <b>My-Aktion</b> – Workshop Java EE 7 + </p> + </div> + <div id="content"> + <ui:insert name="content"> + [Template content will be inserted here] + </ui:insert> + </div> + <div id="footer"> + <p>(C) 2013-2014 dpunkt.verlag GmbH, MIT license</p> + </div> + </div> +</h:body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/donateMoney.xhtml b/bin/src/main/webapp/donateMoney.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..000a55a956c65678382e8183d17ccdd0970e7959 --- /dev/null +++ b/bin/src/main/webapp/donateMoney.xhtml @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> +<h:head> + <title>#{msg['donateMoney.donate_money']}</title> + <meta charset="utf-8" /> + <f:metadata> + <f:viewParam id="bgColor" name="bgColor" + value="#{donateMoneyController.bgColor}"> + <f:validateRegex pattern="[A-Fa-f0-9]{6}" /> + </f:viewParam> + <f:viewParam id="textColor" name="textColor" + value="#{donateMoneyController.textColor}"> + <f:validateRegex pattern="[A-Fa-f0-9]{6}" /> + </f:viewParam> + <f:viewParam id="campaignId" name="campaignId" + converter="javax.faces.Long" + value="#{donateMoneyController.campaignId}"> + </f:viewParam> + </f:metadata> +</h:head> +<h:body style="margin:0; font-family: Verdana, sans-serif; font-size: 0.9em; + background-color: ##{donateMoneyController.bgColor}; + color: ##{donateMoneyController.textColor}"> + <h1>#{msg['donateMoney.donate_money']}</h1> + <p:messages globalOnly="true" /> + <p:message for="bgColor" style="color: red;" /> + <p:message for="textColor" style="color: red;" /> + <p:message for="campaignId" style="color: red;" /> + <h:form> + <h:panelGrid columns="3"> + <h:outputLabel value="#{msg['donateMoney.name']}:"> + </h:outputLabel> + <p:inputText id="name" + value="#{donateMoneyController.donation.donorName}"> + <f:validateRequired /> + </p:inputText> + <p:message for="name" style="color: red;" /> + <h:outputLabel value="#{msg['donateMoney.iban']}:"> + </h:outputLabel> + <p:inputText id="iban" + value="#{donateMoneyController.donation.account.iban}"> + <f:validateRequired /> + </p:inputText> + <p:message for="iban" style="color: red;" /> + <h:outputLabel value="#{msg['donateMoney.name_of_bank']}:"> + </h:outputLabel> + <p:inputText id="name_bank" + value="#{donateMoneyController.donation.account.nameOfBank}"> + <f:validateRequired /> + </p:inputText> + <p:message for="name_bank" style="color: red;" /> + <h:outputLabel value="#{msg['donateMoney.donation_amount']}:"> + </h:outputLabel> + <h:panelGroup> + <p:inputText id="donationAmount" + value="#{donateMoneyController.donation.amount}"> + <f:validateRequired /> + <f:convertNumber maxFractionDigits="2" minFractionDigits="2" /> + </p:inputText> EUR + </h:panelGroup> + <p:message for="donationAmount" style="color: red;" /> + </h:panelGrid> + <p:selectBooleanCheckbox + value="#{donateMoneyController.donation.receiptRequested}" /> + #{msg['donateMoney.i_want_a_receipt']}<br /> + <p:commandButton value="#{msg['donateMoney.donate']}" ajax="false" + action="#{donateMoneyController.doDonation}" /> + </h:form> +</h:body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/editCampaign.xhtml b/bin/src/main/webapp/editCampaign.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..456c7edb72920f484433ce1ff3b62309b8619664 --- /dev/null +++ b/bin/src/main/webapp/editCampaign.xhtml @@ -0,0 +1,99 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> +<body> + <f:view contracts="#{view.locale.language}"> + <ui:composition template="/template.xhtml"> + <ui:define name="content"> + <h1>#{campaignProducer.addMode ? + msg['editCampaign.add_new_campaign'] : + msg['editCampaign.edit_campaign']}</h1> + <h:form> + <p:messages closable="true" /> + <p:tabView id="tabView"> + <p:tab title="#{msg['editCampaign.general']}"> + <h:panelGrid columns="3"> + <h:outputLabel + value="#{msg['editCampaign.name']}:"> + </h:outputLabel> + <p:inputText id="a_name" + value="#{campaignProducer.selectedCampaign.name}" + validatorMessage="#{msg['editCampaign.campaign_name_validation']}"> + <f:passThroughAttribute name="placeholder" + value="#{msg['editCampaign.name_of_the_campaign']}" /> + <f:validateRequired /> + <f:validateLength minimum="4" maximum="30" /> + </p:inputText> + <p:message for="a_name" /> + <h:outputLabel + value="#{msg['editCampaign.target_amount']}:"> + </h:outputLabel> + <h:panelGroup> + <p:inputText id="a_targetAmount" + value="#{campaignProducer.selectedCampaign.targetAmount}" + validatorMessage="#{msg['editCampaign.target_amount_validation']}"> + <f:convertNumber maxFractionDigits="2" + minFractionDigits="2" /> + <f:validateRequired /> + <f:validateDoubleRange minimum="10.0" /> + </p:inputText> EUR + </h:panelGroup> + <p:message for="a_targetAmount" /> + <h:outputLabel + value="#{msg['editCampaign.donation_amount']}:"> + </h:outputLabel> + <h:panelGroup> + <p:inputText id="a_donationMinimum" + value="#{campaignProducer.selectedCampaign.donationMinimum}" + validatorMessage="#{msg['editCampaign.donation_amount_validation']}"> + <f:convertNumber maxFractionDigits="2" + minFractionDigits="2" /> + <f:validateRequired /> + <f:validateDoubleRange minimum="1.0" /> + </p:inputText> EUR + </h:panelGroup> + <p:message for="a_donationMinimum" /> + </h:panelGrid> + </p:tab> + <p:tab title="#{msg['editCampaign.bank_account']}"> + <h:panelGrid columns="3"> + <h:outputLabel + value="#{msg['editCampaign.name']}:"> + </h:outputLabel> + <p:inputText id="b_name" + value="#{campaignProducer.selectedCampaign.account.name}"> + <f:validateRequired /> + </p:inputText> + <p:message for="b_name" /> + <h:outputLabel + value="#{msg['editCampaign.iban']}:"> + </h:outputLabel> + <p:inputText id="b_iban" + value="#{campaignProducer.selectedCampaign.account.iban}"> + <f:validateRequired /> + </p:inputText> + <p:message for="b_iban" /> + <h:outputLabel + value="#{msg['editCampaign.name_of_bank']}:"> + </h:outputLabel> + <p:inputText id="b_name_bank" + value="#{campaignProducer.selectedCampaign.account.nameOfBank}"> + <f:validateRequired /> + </p:inputText> + <p:message for="b_name_bank" /> + </h:panelGrid> + </p:tab> + </p:tabView> + <p:commandButton value="#{msg['editCampaign.save']}" + ajax="false" action="#{editCampaignController.doSave}" /> + <p:commandButton value="#{msg['editCampaign.cancel']}" + immediate="true" ajax="false" + action="#{editCampaignController.doCancel}" /> + </h:form> + </ui:define> + </ui:composition> + </f:view> +</body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/editDonationForm.xhtml b/bin/src/main/webapp/editDonationForm.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..78107ac48573b1f613b85243eda4fd3756d0584a --- /dev/null +++ b/bin/src/main/webapp/editDonationForm.xhtml @@ -0,0 +1,41 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> +<body> + <f:view contracts="#{view.locale.language}"> + <ui:composition template="/template.xhtml"> + <ui:define name="content"> + <h1>#{msg['editDonationForm.edit_donation_form']}</h1> + <h:form> + <h:panelGrid columns="2"> + <h:outputLabel + value="#{msg['editDonationForm.background_color']}:"> + </h:outputLabel> + <p:colorPicker id="bgColor" + value="#{editDonationFormController.bgColor}" + widgetVar="bgPicker"> + </p:colorPicker> + <h:outputLabel + value="#{msg['editDonationForm.text_color']}:"> + </h:outputLabel> + <p:colorPicker id="textColor" + value="#{editDonationFormController.textColor}" + widgetVar="textPicker"> + </p:colorPicker> + <h:outputLabel + value="#{msg['editDonationForm.form_url']}:"> + </h:outputLabel> + <p:inputTextarea id="url" rows="6" cols="30" + readonly="true" + value="#{editDonationFormController.url}" /> + </h:panelGrid> + <p:commandButton value="#{msg['editDonationForm.update_url']}" update="url" /> + <p:commandButton value="OK" + action="#{editDonationFormController.doOk}" ajax="false" /> + </h:form> + </ui:define> + </ui:composition> + </f:view> +</body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/index.html b/bin/src/main/webapp/index.html new file mode 100644 index 0000000000000000000000000000000000000000..7949e11f636d8973651adaa9597085e3236e53af --- /dev/null +++ b/bin/src/main/webapp/index.html @@ -0,0 +1,5 @@ +<html> +<head> + <meta http-equiv="Refresh" content="0; URL=listCampaigns.jsf"> +</head> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/index.xhtml b/bin/src/main/webapp/index.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..79287a7ebc57a54cc3e2b4366027e227903a4a55 --- /dev/null +++ b/bin/src/main/webapp/index.xhtml @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> +<body> + <f:view contract="#{view.locale.language}"> + <ui:composition template="/template.xhtml"> + <ui:define name="content"> + <h1>#{msg['welcome.text']}</h1> + </ui:define> + </ui:composition> + </f:view> +</body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/listCampaigns.xhtml b/bin/src/main/webapp/listCampaigns.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..f1b4fccdea0ea781a15c81b660767ef452e7c348 --- /dev/null +++ b/bin/src/main/webapp/listCampaigns.xhtml @@ -0,0 +1,79 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> +<body> + <f:view contracts="#{view.locale.language}"> + <ui:composition template="/template.xhtml"> + <ui:define name="content"> + <h1>#{msg['listCampaigns.my_campaigns']}</h1> + <h:form> + <p:dataTable value="#{campaignListProducer.campaigns}" + var="campaign"> + <p:column> + <p:commandButton onclick="PF('confirmation').show()" + actionListener="#{listCampaignsController.doDeleteCampaign(campaign)}" + icon="ui-icon-close" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listCampaigns.name']} + </f:facet> + <h:outputText value="#{campaign.name}" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listCampaigns.target_amount']} + </f:facet> + <h:outputText value="#{campaign.targetAmount}"> + <f:convertNumber type="currency" + currencyCode="EUR" /> + </h:outputText> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listCampaigns.donated_so_far']} + </f:facet> + <h:outputText value="#{campaign.amountDonatedSoFar}"> + <f:convertNumber type="currency" + currencyCode="EUR" /> + </h:outputText> + </p:column> + <p:column> + <p:commandLink value="#{msg['listCampaigns.edit']}" + ajax="false" + action="#{listCampaignsController.doEditCampaign(campaign)}" /> + </p:column> + <p:column> + <p:commandLink + value="#{msg['listCampaigns.list_donations']}" + ajax="false" + action="#{listCampaignsController.doListDonations(campaign)}" /> + </p:column> + <p:column> + <p:commandLink value="#{msg['listCampaigns.form']}" + ajax="false" + action="#{listCampaignsController.doEditDonationForm(campaign)}" /> + </p:column> + </p:dataTable> + <p:commandButton + value="#{msg['listCampaigns.add_campaign']}" + ajax="false" + action="#{listCampaignsController.doAddCampaign}" /> + <p:confirmDialog + message="#{msg['listCampaigns.ask_delete_campaign']}" + header="#{msg['listCampaigns.delete_campaign']}" + severity="alert" widgetVar="confirmation"> + <p:commandButton value="#{msg['listCampaigns.yes']}" + oncomplete="confirmation.hide()" ajax="false" + actionListener="#{listCampaignsController.commitDeleteCampaign}" /> + <p:commandButton value="#{msg['listCampaigns.no']}" + onclick="confirmation.hide()" /> + </p:confirmDialog> + </h:form> + </ui:define> + </ui:composition> + </f:view> +</body> +</html> \ No newline at end of file diff --git a/bin/src/main/webapp/listDonations.xhtml b/bin/src/main/webapp/listDonations.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..768c1d438275e387dcf400a80b30dd5cfa94c0c4 --- /dev/null +++ b/bin/src/main/webapp/listDonations.xhtml @@ -0,0 +1,76 @@ +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:f="http://xmlns.jcp.org/jsf/core" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://xmlns.jcp.org/jsf/html"> +<body> + <f:view contracts="#{view.locale.language}"> + <ui:composition template="/template.xhtml"> + <ui:define name="content"> + <h1>#{msg['listDonations.donation_list']} + '#{campaignProducer.selectedCampaign.name}'</h1> + <h2>#{msg['listDonations.beneficiary_account']}: + #{campaignProducer.selectedCampaign.account.name}, + #{msg['listDonations.iban']}: + #{campaignProducer.selectedCampaign.account.iban}, + #{campaignProducer .selectedCampaign.account.nameOfBank}</h2> + <h:form> + <p:dataTable value="#{campaignProducer.selectedCampaign.donations}" + var="donation"> + <p:column> + <f:facet name="header"> + #{msg['listDonations.name']} + </f:facet> + <h:outputText value="#{donation.donorName}" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listDonations.iban']} + </f:facet> + <h:outputText value="#{donation.account.iban}" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listDonations.name_of_bank']} + </f:facet> + <h:outputText value="#{donation.account.nameOfBank}" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listDonations.donation_amount']} + </f:facet> + <h:outputText value="#{donation.amount}"> + <f:convertNumber type="currency" + currencyCode="EUR" /> + </h:outputText> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listDonations.receipt']} + </f:facet> + <h:outputText + value="#{donation.receiptRequested ? + msg['listDonations.yes'] + : msg['listDonations.no']}" /> + </p:column> + <p:column> + <f:facet name="header"> + #{msg['listDonations.status']} + </f:facet> + <h:outputText + value="#{msg['listDonations.status.TRANSFERRED']}" + rendered="#{donation.status == 'TRANSFERRED'}" /> + <h:outputText + value="#{msg['listDonations.status.IN_PROCESS']}" + rendered="#{donation.status == 'IN_PROCESS'}" /> + </p:column> + </p:dataTable> + <p:commandButton value="OK" + ajax="false" + action="#{listDonationsController.doOk}" /> + </h:form> + </ui:define> + </ui:composition> + </f:view> +</body> +</html> \ No newline at end of file diff --git a/src/main/java/de/dpunkt/myaktion/model/Donation.java b/src/main/java/de/dpunkt/myaktion/model/Donation.java index c72e126e6b776fa7569ff2ae9ccd46d746ce8522..b7b2a5da2c3fb314dd711dfb3f8bd9fd40d7d4fc 100644 --- a/src/main/java/de/dpunkt/myaktion/model/Donation.java +++ b/src/main/java/de/dpunkt/myaktion/model/Donation.java @@ -12,6 +12,8 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.validation.constraints.DecimalMin; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -20,9 +22,15 @@ import javax.validation.constraints.Size; * @author Julian */ @Entity +@NamedQueries({ @NamedQuery(name = Donation.findByStatus, + query = "SELECT d FROM Donation d WHERE d.status = :status") }) public class Donation { //---------------------------------------------------------------------------------------------- + public static final String findByStatus = "Donation.findByStatus"; + + //============================================================================================== + @GeneratedValue @Id private Long id; @@ -30,21 +38,21 @@ public class Donation { @NotNull(message = "{donation.amount.notNull}") @DecimalMin(value = "1.00", message = "{donation.amount.decimalMin}") private BigDecimal amount; - + @NotNull @Size(min = 5, max = 40, message = "{donation.donorName.size}") private String donorName; @NotNull private Boolean receiptRequested; - + @NotNull private Status status; - + @NotNull @Embedded private Account account; - + @NotNull @ManyToOne private Campaign campaign; diff --git a/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java b/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java new file mode 100644 index 0000000000000000000000000000000000000000..85d55717c867511aeab7125010d40378cb5f768e --- /dev/null +++ b/src/main/java/de/dpunkt/myaktion/scheduler/SchedulerBean.java @@ -0,0 +1,26 @@ +/* + * Copyright 2019 (C) by Julian Horner. + * All Rights Reserved. + */ + +package de.dpunkt.myaktion.scheduler; + +import javax.ejb.Schedule; +import javax.ejb.Singleton; +import javax.inject.Inject; + +import de.dpunkt.myaktion.services.DonationService; + +/** + * @author Julian + */ +@Singleton +public class SchedulerBean { + @Inject + private DonationService donationService; + + @Schedule(hour = "*", minute = "*/5", persistent = false) + public void doTransferDonations() { + donationService.transferDonations(); + } +} \ No newline at end of file diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java index 67d778282c88dd4af8f1568f1eea09306a1e100f..06ffe969258b81eee77cc7f6b6d03bf412237765 100644 --- a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java +++ b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java @@ -13,27 +13,22 @@ import java.util.logging.Logger; import javax.annotation.Resource; import javax.annotation.security.RolesAllowed; import javax.ejb.SessionContext; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; +import javax.ejb.Stateless; import javax.inject.Inject; -import javax.interceptor.Interceptors; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; -import javax.transaction.UserTransaction; import de.dpunkt.myaktion.model.Campaign; import de.dpunkt.myaktion.model.Organizer; import de.dpunkt.myaktion.util.Log.TecLog; -import de.dpunkt.myaktion.util.TransactionInterceptor; /** * @author Julian */ @RolesAllowed("Organizer") -@TransactionManagement(TransactionManagementType.BEAN) -@Interceptors(TransactionInterceptor.class) +@Stateless public class CampaignServiceBean implements CampaignService { - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- @Inject @TecLog @@ -45,7 +40,7 @@ public class CampaignServiceBean implements CampaignService { @Resource private SessionContext sessionContext; - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- @Override public List<Campaign> getAllCampaigns() { @@ -62,24 +57,22 @@ public class CampaignServiceBean implements CampaignService { return campaigns; } - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- @Override public void addCampaign(Campaign campaign) { Organizer organizer = getLoggedinOrganizer(); campaign.setOrganizer(organizer); - entityManager.persist(campaign); } - - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- @Override public void updateCampaign(Campaign campaign) { entityManager.merge(campaign); } - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- @Override public void deleteCampaign(Campaign campaign) { @@ -87,7 +80,7 @@ public class CampaignServiceBean implements CampaignService { entityManager.remove(managedCampaign); } - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- private BigDecimal getAmountDonatedSoFar(Campaign campaign) { TypedQuery<BigDecimal> query = @@ -101,7 +94,7 @@ public class CampaignServiceBean implements CampaignService { return result; } - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- private Organizer getLoggedinOrganizer() { String organizerEmail = sessionContext.getCallerPrincipal().getName(); @@ -110,5 +103,5 @@ public class CampaignServiceBean implements CampaignService { return organizer; } - //---------------------------------------------------------------------------------------------- + // ---------------------------------------------------------------------------------------------- } \ No newline at end of file diff --git a/src/main/java/de/dpunkt/myaktion/services/DonationService.java b/src/main/java/de/dpunkt/myaktion/services/DonationService.java index bf72371fcf1630896bf0ee8574c243d9fa58532c..9815011543c29bf2e0424ac878b28f6847b62549 100644 --- a/src/main/java/de/dpunkt/myaktion/services/DonationService.java +++ b/src/main/java/de/dpunkt/myaktion/services/DonationService.java @@ -19,5 +19,7 @@ public interface DonationService { void addDonation(Long campaignId, Donation donation); + void transferDonations(); + //---------------------------------------------------------------------------------------------- } \ No newline at end of file diff --git a/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java index a884bcc66023049f718f07249a8aea7f2f4f7545..836c64b0ac28cca2f9c51d27c6c8ee5cded06f17 100644 --- a/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java +++ b/src/main/java/de/dpunkt/myaktion/services/DonationServiceBean.java @@ -6,15 +6,20 @@ package de.dpunkt.myaktion.services; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import javax.ejb.Stateless; import javax.inject.Inject; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; import de.dpunkt.myaktion.model.Campaign; import de.dpunkt.myaktion.model.Donation; +import de.dpunkt.myaktion.model.Donation.Status; +import de.dpunkt.myaktion.util.Log.TecLog; /** * @author Julian @@ -26,6 +31,10 @@ public class DonationServiceBean implements DonationService { @Inject EntityManager entityManager; + @Inject + @TecLog + private Logger logger; + //---------------------------------------------------------------------------------------------- @RolesAllowed("Organizer") @@ -33,7 +42,7 @@ public class DonationServiceBean implements DonationService { public List<Donation> getDonationList(Long campaignId) { Campaign managedCampaign = entityManager.find(Campaign.class, campaignId); List<Donation> donations = managedCampaign.getDonations(); - + donations.size(); // To avoid Lazy loading exception return donations; @@ -44,9 +53,24 @@ public class DonationServiceBean implements DonationService { public void addDonation(Long campaignId, Donation donation) { Campaign managedCampaign = entityManager.find(Campaign.class, campaignId); donation.setCampaign(managedCampaign); - + entityManager.persist(donation); } - + + @Override + @PermitAll + public void transferDonations() { + logger.log(Level.INFO, "log.transferDonation.start"); + + TypedQuery<Donation> query = + entityManager.createNamedQuery(Donation.findByStatus, Donation.class); + query.setParameter("status", Status.IN_PROCESS); + + List<Donation> donations = query.getResultList(); + donations.forEach(donation -> donation.setStatus(Status.TRANSFERRED)); + + logger.log(Level.INFO, "log.transferDonation.done", new Object[] { donations.size() }); + } + //---------------------------------------------------------------------------------------------- } diff --git a/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties index f120b422261903551a5b097f82b2a441c458f7c6..1059e8d85b74e9ed7f11baa8ba041ae483c80b4f 100644 --- a/src/main/resources/messages_de.properties +++ b/src/main/resources/messages_de.properties @@ -63,9 +63,12 @@ donateMoney.thank_you=Vielen Dank f # logger log.donateMoney.thank_you={0} hat {1} Euro gespendet. +log.transferDonation.start=Zu bearbeitende Spenden werden überwiesen. +log.transferDonation.done=Es wurden {0} Spenden überwiesen. # login.xhtml login.email=E-Mail login.password=Passwort login.login=Anmelden -login.errorMsg=Passwort oder User sind falsch \ No newline at end of file +login.errorMsg=Passwort oder User sind falsch + diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index c9a4483c94d77e2452c7682fd65287549615a7cb..7ab66a6ba41d41e7916f892b0d2731a741309a2f 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -63,6 +63,8 @@ donateMoney.thank_you=Thank you for your donation! # logger log.donateMoney.thank_you={0} has donated {1} Euro. +log.transferDonation.start=Starting transfering donations. +log.transferDonation.done={0} donations have been transfered. # login.xhtml login.email=Email diff --git a/src/main/webapp/WEB-INF/jboss-ejb3.xml b/src/main/webapp/WEB-INF/jboss-ejb3.xml index 3abda74651b0f82c9e754665d9a68cd13bc14273..c4f882b7d3b3e354029360648118faed70135b4d 100644 --- a/src/main/webapp/WEB-INF/jboss-ejb3.xml +++ b/src/main/webapp/WEB-INF/jboss-ejb3.xml @@ -5,9 +5,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:security" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee -http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd -http://java.sun.com/xml/ns/javaee -http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" + http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd + http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1" impl-version="2.0"> <assembly-descriptor> <s:security>