Pravidla pro psaní zdrojových textů v projektu RedSys:
- používat @author na třídách které přidávají či editují
- tabulátory konvertovat na mezery, odsazování o dvě mezery
- dodržovat obecně platné konvence psaní kódu v Javě, pouze rozhraní stylem
IMojeRozhrani?
- standardní hlavička zdrojových souborů, viz níže
/**
* Web KIV modul NNNN.
*
* Copyright (c) 2007-2010 Department of Computer Science,
* University of West Bohemia, Pilsen, CZ
*
* This software and this file is available under the Creative Commons
* Attribution-Noncommercial-Share Alike license. You may obtain a copy
* of the License at http://creativecommons.org/licenses/ .
*
* This software is provided 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.
*/
Struktura adresářů v Subversion
TBD dopsat (trunk/tags/branches samozřejmě, v trunk/ potom module/, frontend/ a build/, pod module/ std struktura viz níže, pod build/ jsou vyexportovaná .zip hotových modulů)
Viz https://forge.kiv.zcu.cz/bugs/index.php?do=details&task_id=1057 .
Moduly a aplikace v OpenCms
Struktura modulu
- Držet se OpenCms konvencí
- Podadresáře
resources
, pages
, lib
, classes
atd. (viz třeba org.opencms.frontend.photoalbum
nebo org.opencms.frontend.layoutpage
).
- pro vývoj: na lokálním opencms může být do modulu zařazen i adresář src/ apod, ale v pravidlech exportu modulu musí být že se exportují (tj. do vybuildovaného modulu uloží) pouze relevantní adresáře dle opencms konvencí
- Název
- Musí mít ve VFS předponu
cz.zcu.kiv
následovanou inteligentním jménem modulu.
- JSP stránky
- V adresáři
pages
(ne v templates, aby se nevypisovaly v seznamu šablon při zakládání libovolné HTML stránky)
- Properties soubory (resource bundles)
- Ukládány do adresáře
classes
modulu. Používat názvy module.properties
pro základní nastavení, l10n.properties
pro L10N? hlášky, atd dle stejného mustru (xyz.properties
pro oblast nastavení XYZ).
Aplikační JSP stránky
- Název
- Buďto (preferovaná varianta)
.../adresar/seznam.jsp
resp. .../detail.jsp
resp. .../edit.jsp
(např. .../osoby/seznam.jsp
, nebo případně (nouzová varianta když je víc editačních apod. v jednom adresáři) .../adresar/funkce-edit.jsp
(např. .../osoby/kategorie-edit.jsp
) -- tedy nikoli funkceEdit.jsp
nebo editFunkce.jsp
nebo funkce_edit.jsp
a podobně.
- Vazba na modul
- Přes
<cms:include>
příslušné modulové JSP stránky
- Výkonný kód (scriptlety)
- CO NEJMÉNĚ, používat JSTL a POJO. Zejména nezpracovávát výjimky - to musí udělat aplikační objekty, a nastavit request atribut který řekne "byly chyby" a který JSP otestuje a chyby zobrazí.
- URL zobrazovaných stránek
- Pozor na to, že na beta.kiv.zcu.cz a www.kiv.zcu.cz je díky předsazenému proxy serveru odstraněn URL prefix
/opencms/opencms
. Proto je třeba mít tento prefix možnost snadno odstranit v JSP a Java kódu při přenosu z lokální vývojového prostředí na provozní servery. Zejména důležité u form action handlerů.
Výkonný kód
- V JSP stránkách
- CO NEJMÉNĚ, snažit se využít POJO a JSTL pro JSP stránky. Vlastní značky (taglib) vytvářet jen v odůvodněných případech a po schválení vedením projektu.
- Zdrojové Java třídy
- Musí být dobře pojmenovaném v balíku (dle názvu modulu do kterého patří) umístěném pod
cz.zcu.kiv.opencms
.
- Přístup do DB
- Používat Spring JDBC, třídy v balíku pod
cz.zcu.kiv.db
, podle ArchitekturaDaoVrstvy.
- Zachytávání výjimek
- Ve všech XyzFormHandler? mít
catch (Exception e)
na konci try-catch bloku, aby nevyhřezlo klientovi 500 Service unavailable při obecné (např. SQL) výjimce.
Lokalizace (L10N?)
Používá se standardní přístup s resource bundles (viz Java Internationalization: An Overview a Localization with ResourceBundles).
- Kam L10N? řetězce
- (1) Využívat možností OpenCms (properties VFS objektu, jazykové mutace XML strukturovaných dat), (2) používat standardní konvence. Pro JSP použít
<c:if>
nebo <c:switch>
-- pokud je v JSP málo textů závislých na jazyce -- nebo .properties
lokalizační bundly v modulu, primárně pokud jsou to texty které jdou do template.
- Podoba klíčů v resource bundles
- Používat prefixy
label
pro popisky, url
a email
pro adresy (např. label.kiv.abbr = KIV
nebo url.image.logo = ../resources/logo-kiv.png
).
- Editační JSP stránky
- Pro vlastní KIV aplikace budou vždy pouze v CZ (prezentační stránky jsou česky a/nebo anglicky).
- Jak se zjistí aktuální locale
- TBD
Příklad použití v JSP stránce:
<% request.setAttribute("locale", request.getLocale()); %>
<fmt:setLocale value="${locale}" />
<fmt:bundle basename="cz/zcu/kiv/produkty/produkty">
<h1><fmt:message key="produkty.seznam" /></h1>
Zabezpečení, autentikace a autorizace
- Celková bezpečnost
- Viz typy útoků na webové aplikace a jak jim předcházet
- Autentikace
- (ověření jména/hesla) Zatím (3/2008) přes OpenCms, v budoucnu přes Kerberos (viz ZabezpecenePrihlaseni).
- Autorizace
- (kdo kam může) Řešit prostředky OpenCms (Permissions na VFS objektu) nikoli v aplikační logice.
- Zjištění aktuálně přihlášeného uživatele
- Pro potřeby JSP aplikačních stránek - TBD.
Zpět na PravidlaProVyvojare