You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2014/06/24 15:25:21 UTC

svn commit: r1605077 [2/5] - in /syncope/trunk: ./ common/src/main/java/org/apache/syncope/common/services/ common/src/main/java/org/apache/syncope/common/to/ common/src/main/java/org/apache/syncope/common/types/ common/src/test/java/org/apache/syncope...

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_it.properties Tue Jun 24 13:25:18 2014
@@ -17,7 +17,6 @@
 tab1=Elenco
 tab2=Ricerca
 search=Cerca
-create_user=Crea nuovo utente
 search_results_title=Risultati ricerca:
 search_noResults=Nessuna corrispondenza trovata.
 search_error=Errore:il formato di ricerca non \u00e8 valido

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Users_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -17,7 +17,6 @@
 tab1=Lista
 tab2=Buscar
 search=Buscar
-create_user=Criar novo usu\u00e1rio
 search_results_title=Resultados de pesquisa\:
 search_noResults=Nenhum resultado encontrado
 search_error=Erro\: formato de busca incorreto.

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage.properties Tue Jun 24 13:25:18 2014
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-create_attribute=Create new attribute
 required_alert=All form fields are required.
 existing_schemas=Existing Schemas:
 edit_attribute=Edit attribute

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_it.properties Tue Jun 24 13:25:18 2014
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-create_attribute=Crea nuovo attributo
 required_alert=Tutti i campi sono richiesti.
 existing_schemas=Schemi presenti:
 edit_attribute=Modifica attributo

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/VirSchemaModalPage_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -14,8 +14,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-create_attribute=Criar novo atributo
-required_alert=Todos os campos do formul\u00E1rio s\u00E3o obrigat\u00F3rios
+required_alert=Todos os campos do formul\u00e1rio s\u00e3o obrigat\u00f3rios
 existing_schemas=Esquemas Existentes\:
 edit_attribute=Editar Atributo
 attributes=Atributos Virtuais

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.html?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.html Tue Jun 24 13:25:18 2014
@@ -35,7 +35,7 @@ under the License.
     </div>
     <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
        wicket:id="createLink">
-      <wicket:message key="create_task"/>
+      <wicket:message key="create"/>
     </a>
   </wicket:panel>
 </html>
\ No newline at end of file

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel.properties Tue Jun 24 13:25:18 2014
@@ -20,7 +20,6 @@ type=Type
 title=Account Policies
 delete=Delete
 edit=Edit
-create=Create
 displayRows=Rows per page
 
 #-----------------------------

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_it.properties Tue Jun 24 13:25:18 2014
@@ -20,7 +20,6 @@ type=Tipo
 title=Account Policy
 delete=Rimuovi
 edit=Modifica
-create=Crea
 displayRows=Righe per pagina
 
 #-----------------------------

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PoliciesPanel_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -15,21 +15,20 @@
 # specific language governing permissions and limitations
 # under the License.
 id=Identificador
-description=Descri\u00E7\u00E3o
+description=Descri\u00e7\u00e3o
 type=Tipo
-title=Pol\u00EDticas de Conta
+title=Pol\u00edticas de Conta
 delete=Excluir
 edit=Modificar
-create=Criar
-displayRows=Linhas por p\u00E1gina
+displayRows=Linhas por p\u00e1gina
 
 #-----------------------------
 # Policy Type
 #-----------------------------
-ACCOUNT=Pol\u00EDtica de Conta
-GLOBAL_ACCOUNT=Pol\u00EDtica Global de Conta
-PASSWORD=Pol\u00EDtica de Senha
-GLOBAL_PASSWORD=Pol\u00EDtica Global de Senha
-SYNC=Pol\u00EDtica de Sincroniza\u00E7\u00E3o
-GLOBAL_SYNC=Pol\u00EDtica Global de Sincroniza\u00E7\u00E3o
+ACCOUNT=Pol\u00edtica de Conta
+GLOBAL_ACCOUNT=Pol\u00edtica Global de Conta
+PASSWORD=Pol\u00edtica de Senha
+GLOBAL_PASSWORD=Pol\u00edtica Global de Senha
+SYNC=Pol\u00edtica de Sincroniza\u00e7\u00e3o
+GLOBAL_SYNC=Pol\u00edtica Global de Sincroniza\u00e7\u00e3o
 #-----------------------------
\ No newline at end of file

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel.properties Tue Jun 24 13:25:18 2014
@@ -25,6 +25,5 @@ delete=Delete
 edit=Edit
 execute=Execute
 executeDryRun=Dry run
-create_task=Create new task
 userTemplate=User template
 latestExecStatus=Last status

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_it.properties Tue Jun 24 13:25:18 2014
@@ -25,6 +25,5 @@ delete=Rimuovi
 edit=Modifica
 execute=Esegui
 executeDryRun=Esecuzione simulata
-create_task=Crea nuovo task
 userTemplate=Modello utente
 latestExecStatus=Ultimo stato

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -16,15 +16,14 @@
 # under the License.
 id=Identificador
 name=Nome
-description=Descri\u00E7\u00E3o
+description=Descri\u00e7\u00e3o
 resourceName=Nome do Recurso
-lastExec=\u00DAltima Execu\u00E7\u00E3o
-nextExec=Pr\u00F3xima Execu\u00E7\u00E3o
+lastExec=\u00daltima Execu\u00e7\u00e3o
+nextExec=Pr\u00f3xima Execu\u00e7\u00e3o
 detail=Detalhe
 delete=Remove
 edit=Alterar
 execute=Executar
 executeDryRun=Executar (Ensaio)
-create_task=Criar Nova Tarefa
 userTemplate=Usar Template
-latestExecStatus=\u00DAltimo Estatus
+latestExecStatus=\u00daltimo Estatus

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.html?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.html Tue Jun 24 13:25:18 2014
@@ -36,7 +36,7 @@ under the License.
     </div>
     <a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
        wicket:id="createLink">
-      <wicket:message key="create_task"/>
+      <wicket:message key="create"/>
     </a>
   </wicket:panel>
 </html>
\ No newline at end of file

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks.properties Tue Jun 24 13:25:18 2014
@@ -25,5 +25,4 @@ delete=Delete
 edit=Edit
 execute=Execute
 executeDryRun=Dry run
-create_task=Create new task
 latestExecStatus=Last status

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_it.properties Tue Jun 24 13:25:18 2014
@@ -25,5 +25,4 @@ delete=Rimuovi
 edit=Modifica
 execute=Esegui
 executeDryRun=Esecuzione simulata
-create_task=Crea nuovo task
 latestExecStatus=Ultimo stato

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SchedTasks_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -16,14 +16,13 @@
 # under the License.
 id=Identificador
 name=Nome
-description=Descri\u00E7\u00E3o
+description=Descri\u00e7\u00e3o
 class=Classe
-lastExec=\u00DAltima Execu\u00E7\u00E3o
-nextExec=Pr\u00F3xima Execu\u00E7\u00E3o
+lastExec=\u00daltima Execu\u00e7\u00e3o
+nextExec=Pr\u00f3xima Execu\u00e7\u00e3o
 detail=Detalhe
 delete=Remover
 edit=Editar
 execute=Executar
 executeDryRun=Executar (Ensaio)
-create_task=Criar Nova Tarefa
-latestExecStatus=\u00DAltimo Estatus
+latestExecStatus=\u00daltimo Estatus

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel.properties Tue Jun 24 13:25:18 2014
@@ -25,6 +25,5 @@ delete=Delete
 edit=Edit
 execute=Execute
 executeDryRun=Dry run
-create_task=Create new task
 userTemplate=User template
 latestExecStatus=Last status

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_it.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_it.properties Tue Jun 24 13:25:18 2014
@@ -25,6 +25,5 @@ delete=Rimuovi
 edit=Modifica
 execute=Esegui
 executeDryRun=Esecuzione simulata
-create_task=Crea nuovo task
 userTemplate=Modello utente
 latestExecStatus=Ultimo stato

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_pt_BR.properties?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_pt_BR.properties Tue Jun 24 13:25:18 2014
@@ -16,15 +16,14 @@
 # under the License.
 id=Identificador
 name=Nome
-description=Descri\u00E7\u00E3o
+description=Descri\u00e7\u00e3o
 resourceName=Nome do Recurso
-lastExec=\u00DAltima Execu\u00E7\u00E3o
-nextExec=Pr\u00F3xima Execu\u00E7\u00E3o
+lastExec=\u00daltima Execu\u00e7\u00e3o
+nextExec=Pr\u00f3xima Execu\u00e7\u00e3o
 detail=Detalhe
 delete=Remove
 edit=Alterar
 execute=Executar
 executeDryRun=Executar (Ensaio)
-create_task=Criar Nova Tarefa
 userTemplate=Usar Template
-latestExecStatus=\u00DAltimo Estatus
+latestExecStatus=\u00daltimo Estatus

Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/AccessTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/AccessTestITCase.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/test/java/org/apache/syncope/console/AccessTestITCase.java (original)
+++ syncope/trunk/console/src/test/java/org/apache/syncope/console/AccessTestITCase.java Tue Jun 24 13:25:18 2014
@@ -27,18 +27,19 @@ public class AccessTestITCase extends Ab
         selenium.click("css=img[alt=\"Schema\"]");
         selenium.waitForPageToLoad("30000");
 
+        selenium.click("//div[@id='tabs']/ul/li[2]/a");
         selenium.waitForCondition("selenium.isElementPresent(\"xpath=//div[@id='uschema']/div/div/span/ul/li[2]/a\");",
                 "30000");
 
         selenium.click("//div[@id='uschema']/div/div/span/ul/li[2]/a");
         selenium.click("//div[@id='uschema']/div/div/span/ul/li[3]/a");
 
-        selenium.click("//div[@id='tabs']/ul/li[2]/a");
+        selenium.click("//div[@id='tabs']/ul/li[3]/a");
 
         selenium.click("//div[@id='mschema']/div/div/span/ul/li[2]/a");
         selenium.click("//div[@id='mschema']/div/div/span/ul/li[3]/a");
 
-        selenium.click("//div[@id='tabs']/ul/li[3]/a");
+        selenium.click("//div[@id='tabs']/ul/li[4]/a");
 
         selenium.click("//div[@id='rschema']/div/div/span/ul/li[2]/a");
         selenium.click("//div[@id='rschema']/div/div/span/ul/li[3]/a");

Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java (original)
+++ syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java Tue Jun 24 13:25:18 2014
@@ -23,43 +23,18 @@ import org.junit.Test;
 public class ConfigurationTestITCase extends AbstractTest {
 
     @Test
-    public void browseCreateModal() {
+    public void editParameters() {
         selenium.click("css=img[alt=\"Configuration\"]");
 
         selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
 
-        selenium.click("//a[contains(text(),'Create new configuration')]");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//input[@name='key:textField']\");", "30000");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//iframe\");", "30000");
-        selenium.selectFrame("index=0");
-
-        selenium.type("name=key:textField", "test1");
-        selenium.type("name=value:textField", "value1");
-        selenium.click("name=apply");
-
-        seleniumDriver.switchTo().defaultContent();
+        selenium.click("//span[contains(text(), 'log.lastlogindate')]/../../div[2]/span/input");
+        selenium.click("//div[@id='parameters']/form/a");
 
         selenium.waitForCondition("selenium.isTextPresent(\"Operation executed successfully\");", "30000");
     }
 
     @Test
-    public void browseEditModal() {
-        selenium.click("css=img[alt=\"Configuration\"]");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
-
-        selenium.click("//tr/td[3]/div/span[12]/a");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//input[@name='key:textField']\");", "30000");
-
-        assertEquals("authentication.statuses", selenium.getAttribute("//input[@name='key:textField']@value"));
-
-        selenium.click("css=a.w_close");
-    }
-
-    @Test
     public void browsePasswordPolicy() {
         selenium.click("css=img[alt=\"Configuration\"]");
 
@@ -93,19 +68,6 @@ public class ConfigurationTestITCase ext
     }
 
     @Test
-    public void delete() {
-        selenium.click("css=img[alt=\"Configuration\"]");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
-
-        selenium.click("//tr[3]/td[3]/div/span[14]/a");
-
-        assertTrue(selenium.getConfirmation().equals("Do you really want to delete the selected item(s)?"));
-
-        selenium.waitForCondition("selenium.isTextPresent(" + "\"Operation executed successfully\");", "30000");
-    }
-
-    @Test
     public void setLogLevel() {
         selenium.click("css=img[alt=\"Configuration\"]");
 
@@ -126,7 +88,7 @@ public class ConfigurationTestITCase ext
 
         selenium.click("//div[@id='tabs']/ul/li[3]/a");
 
-        selenium.click("//a[contains(text(),'Create new notification')]");
+        selenium.click("//div[@id='notifications']/a");
 
         selenium.waitForCondition("selenium.isElementPresent("
                 + "\"//div[2]/form/div[3]/div/div/div/div/label\");", "30000");
@@ -211,7 +173,7 @@ public class ConfigurationTestITCase ext
 
         selenium.click("//div[@id='tabs']/ul/li[3]/a");
 
-        selenium.click("//a[contains(text(),'Create new notification')]");
+        selenium.click("//div[@id='notifications']/a");
 
         selenium.waitForCondition("selenium.isElementPresent("
                 + "\"//div[2]/form/div[3]/div/div/div/div/label\");", "30000");
@@ -292,24 +254,6 @@ public class ConfigurationTestITCase ext
     }
 
     @Test
-    public void issueSYNCOPE189() {
-        selenium.click("css=img[alt=\"Configuration\"]");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
-
-        selenium.click("//a[contains(text(),'Create new configuration')]");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//input[@name='key:textField']\");", "30000");
-
-        selenium.waitForCondition("selenium.isElementPresent(\"//iframe\");", "30000");
-        selenium.selectFrame("index=0");
-
-        selenium.keyPressNative("27");
-
-        seleniumDriver.switchTo().defaultContent();
-    }
-
-    @Test
     public void issueSYNCOPE446() {
         selenium.click("css=img[alt=\"Configuration\"]");
 
@@ -317,7 +261,7 @@ public class ConfigurationTestITCase ext
 
         selenium.click("//div[@id='tabs']/ul/li[3]/a");
 
-        selenium.click("//a[contains(text(),'Create new notification')]");
+        selenium.click("//div[@id='notifications']/a");
 
         selenium.waitForCondition("selenium.isElementPresent("
                 + "\"//div[2]/form/div[3]/div/div/div/div/label\");", "30000");
@@ -390,9 +334,9 @@ public class ConfigurationTestITCase ext
         selenium.select(
                 "//select[@name='aboutContainer:roleAbout:searchFormContainer:searchView:0:property']",
                 "label=ROLE_CREATE");
-        
+
         selenium.click("//div[2]/form/div[3]/ul/li[4]/a/span");
-        
+
         selenium.click("//input[@name='recipientsContainer:checkRecipients:checkboxField']");
 
         selenium.type(

Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java (original)
+++ syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java Tue Jun 24 13:25:18 2014
@@ -28,7 +28,7 @@ public class SchemaTestITCase extends Ab
 
         selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
 
-        selenium.click("//div[@id='tabs']/ul/li[3]/a");
+        selenium.click("//div[@id='tabs']/ul/li[4]/a");
         selenium.click("//div[@id='rschema']/div/div/div/a");
 
         selenium.waitForCondition("selenium.isElementPresent(" + "\"//*[@id='_wicket_window_0']\");", "30000");

Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java (original)
+++ syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java Tue Jun 24 13:25:18 2014
@@ -79,7 +79,7 @@ public class TaskTestITCase extends Abst
         selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
 
         selenium.click("//div[@id='tabs']/ul/li[3]/a/span");
-        selenium.click("//a[contains(text(),'Create new task')]");
+        selenium.click("//a[contains(text(),'Create')]");
 
         selenium.waitForCondition(
                 "selenium.isElementPresent(\"//div[2]/form/div[2]/div/div/span/div/div[2]/div/label\");", "30000");
@@ -102,8 +102,7 @@ public class TaskTestITCase extends Abst
         selenium.click("//div[@id='tabs']/ul/li[5]/a/span");
         selenium.click("//div[5]/span/a");
 
-        selenium.waitForCondition(
-                "selenium.isElementPresent(\"//iframe\");", "30000");
+        selenium.waitForCondition("selenium.isElementPresent(\"//iframe\");", "30000");
 
         selenium.selectFrame("index=0");
 

Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java (original)
+++ syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java Tue Jun 24 13:25:18 2014
@@ -29,7 +29,7 @@ public class UserTestITCase extends Abst
 
         selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000");
 
-        selenium.click("//a[contains(text(),'Create new user')]");
+        selenium.click("//div[@id='tabs-1']/a");
 
         selenium.waitForCondition("selenium.isElementPresent(\"//iframe\");", "30000");
         selenium.selectFrame("index=0");

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ContentUpgrader.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ContentUpgrader.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ContentUpgrader.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/init/ContentUpgrader.java Tue Jun 24 13:25:18 2014
@@ -34,7 +34,7 @@ import org.apache.syncope.core.persisten
 import org.apache.syncope.core.persistence.beans.ExternalResource;
 import org.apache.syncope.core.persistence.beans.Policy;
 import org.apache.syncope.core.persistence.beans.SyncTask;
-import org.apache.syncope.core.persistence.beans.SyncopeConf;
+import org.apache.syncope.core.persistence.beans.conf.CAttr;
 import org.apache.syncope.core.persistence.dao.ConfDAO;
 import org.apache.syncope.core.persistence.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.dao.NotificationDAO;
@@ -110,9 +110,9 @@ public class ContentUpgrader extends Abs
             throw new IllegalArgumentException("No local ConnId location was found, aborting");
         }
 
-        SyncopeConf cipher = confDAO.find("password.cipher.algorithm");
-        if ("MD5".equals(cipher.getValue())) {
-            cipher.setValue(CipherAlgorithm.SMD5.name());
+        CAttr cipher = confDAO.find("password.cipher.algorithm", CipherAlgorithm.AES.name());
+        if ("MD5".equals(cipher.getValuesAsStrings().get(0))) {
+            cipher.getValues().get(0).setStringValue(CipherAlgorithm.SMD5.name());
         }
 
         return localConnIdLocation.toString();

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/init/JobInstanceLoader.java Tue Jun 24 13:25:18 2014
@@ -33,6 +33,7 @@ import org.apache.syncope.core.persisten
 import org.apache.syncope.core.persistence.beans.SchedTask;
 import org.apache.syncope.core.persistence.beans.SyncTask;
 import org.apache.syncope.core.persistence.beans.Task;
+import org.apache.syncope.core.persistence.beans.conf.CAttr;
 import org.apache.syncope.core.persistence.dao.ConfDAO;
 import org.apache.syncope.core.persistence.dao.NotFoundException;
 import org.apache.syncope.core.persistence.dao.ReportDAO;
@@ -259,16 +260,15 @@ public class JobInstanceLoader {
         }
 
         // 2. NotificationJob
-        final String notificationJobCronExp =
-                confDAO.find("notificationjob.cronExpression", NotificationJob.DEFAULT_CRON_EXP).getValue();
-        if (StringUtils.isBlank(notificationJobCronExp)) {
+        CAttr notificationJobCronExp = confDAO.find("notificationjob.cronExpression", NotificationJob.DEFAULT_CRON_EXP);
+        if (StringUtils.isBlank(notificationJobCronExp.getValuesAsStrings().get(0))) {
             LOG.debug("Empty value provided for NotificationJob's cron, not registering anything on Quartz");
         } else {
             LOG.debug("NotificationJob's cron expression: {} - registering Quartz job and trigger",
                     notificationJobCronExp);
 
             try {
-                registerJob(null, NotificationJob.class.getName(), notificationJobCronExp);
+                registerJob(null, NotificationJob.class.getName(), notificationJobCronExp.getValuesAsStrings().get(0));
             } catch (Exception e) {
                 LOG.error("While loading NotificationJob instance", e);
             }

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationJob.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationJob.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationJob.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationJob.java Tue Jun 24 13:25:18 2014
@@ -89,7 +89,7 @@ public class NotificationJob implements 
 
     private void init() {
         try {
-            maxRetries = Long.valueOf(confDAO.find("notification.maxRetries", "0").getValue());
+            maxRetries = confDAO.find("notification.maxRetries", "0").getValues().get(0).getLongValue();
         } catch (NumberFormatException e) {
             LOG.error("Invalid maximum number of retries, retries disabled", e);
             maxRetries = 0;
@@ -106,7 +106,7 @@ public class NotificationJob implements 
         boolean retryPossible = true;
 
         if (StringUtils.isBlank(task.getSubject()) || task.getRecipients().isEmpty()
-            || StringUtils.isBlank(task.getHtmlBody()) || StringUtils.isBlank(task.getTextBody())) {
+                || StringUtils.isBlank(task.getHtmlBody()) || StringUtils.isBlank(task.getTextBody())) {
 
             String message = "Could not fetch all required information for sending e-mails:\n"
                     + task.getRecipients() + "\n"
@@ -149,10 +149,10 @@ public class NotificationJob implements 
                     switch (task.getTraceLevel()) {
                         case ALL:
                             report.append("FROM: ").append(task.getSender()).append('\n').
-                                append("TO: ").append(to).append('\n').
-                                append("SUBJECT: ").append(task.getSubject()).append('\n').append('\n').
-                                append(task.getTextBody()).append('\n').append('\n').
-                                append(task.getHtmlBody()).append('\n');
+                                    append("TO: ").append(to).append('\n').
+                                    append("SUBJECT: ").append(task.getSubject()).append('\n').append('\n').
+                                    append(task.getTextBody()).append('\n').append('\n').
+                                    append(task.getHtmlBody()).append('\n');
                             break;
 
                         case SUMMARY:

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java Tue Jun 24 13:25:18 2014
@@ -26,7 +26,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.syncope.common.SyncopeConstants;
 import org.apache.syncope.common.to.RoleTO;
 import org.apache.syncope.common.to.UserTO;
@@ -34,23 +33,25 @@ import org.apache.syncope.common.types.A
 import org.apache.syncope.common.types.AuditElements;
 import org.apache.syncope.common.types.AuditElements.Result;
 import org.apache.syncope.common.types.IntMappingType;
+import org.apache.syncope.common.types.SubjectType;
 import org.apache.syncope.common.util.LoggerEventUtils;
 import org.apache.syncope.core.connid.ConnObjectUtil;
+import org.apache.syncope.core.persistence.beans.AbstractAttr;
 import org.apache.syncope.core.persistence.beans.AbstractAttributable;
+import org.apache.syncope.core.persistence.beans.AbstractSubject;
 import org.apache.syncope.core.persistence.beans.Notification;
 import org.apache.syncope.core.persistence.beans.NotificationTask;
-import org.apache.syncope.core.persistence.beans.SyncopeConf;
 import org.apache.syncope.core.persistence.beans.TaskExec;
 import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
 import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
 import org.apache.syncope.core.persistence.beans.user.UAttr;
 import org.apache.syncope.core.persistence.beans.user.UDerAttr;
 import org.apache.syncope.core.persistence.beans.user.UVirAttr;
-import org.apache.syncope.core.persistence.dao.AttributableSearchDAO;
 import org.apache.syncope.core.persistence.dao.ConfDAO;
 import org.apache.syncope.core.persistence.dao.EntitlementDAO;
 import org.apache.syncope.core.persistence.dao.NotificationDAO;
 import org.apache.syncope.core.persistence.dao.RoleDAO;
+import org.apache.syncope.core.persistence.dao.SubjectSearchDAO;
 import org.apache.syncope.core.persistence.dao.TaskDAO;
 import org.apache.syncope.core.persistence.dao.UserDAO;
 import org.apache.syncope.core.persistence.dao.search.OrderByClause;
@@ -74,7 +75,7 @@ import org.springframework.transaction.a
  *
  * @see NotificationTask
  */
-@Transactional(rollbackFor = {Throwable.class})
+@Transactional(rollbackFor = { Throwable.class })
 public class NotificationManager {
 
     /**
@@ -122,7 +123,7 @@ public class NotificationManager {
      * User Search DAO.
      */
     @Autowired
-    private AttributableSearchDAO searchDAO;
+    private SubjectSearchDAO searchDAO;
 
     /**
      * Task DAO.
@@ -172,7 +173,7 @@ public class NotificationManager {
         if (notification.getRecipients() != null) {
             recipients.addAll(searchDAO.<SyncopeUser>search(EntitlementUtil.getRoleIds(entitlementDAO.findAll()),
                     SearchCondConverter.convert(notification.getRecipients()),
-                    Collections.<OrderByClause>emptyList(), AttributableUtil.getInstance(AttributableType.USER)));
+                    Collections.<OrderByClause>emptyList(), SubjectType.USER));
         }
 
         if (notification.isSelfAsRecipient() && attributable instanceof SyncopeUser) {
@@ -258,24 +259,24 @@ public class NotificationManager {
             final Object output,
             final Object... input) {
 
-        AttributableType attributableType = null;
-        AbstractAttributable attributable = null;
+        SubjectType subjectType = null;
+        AbstractSubject subject = null;
 
         if (before instanceof UserTO) {
-            attributableType = AttributableType.USER;
-            attributable = userDAO.find(((UserTO) before).getId());
+            subjectType = SubjectType.USER;
+            subject = userDAO.find(((UserTO) before).getId());
         } else if (output instanceof UserTO) {
-            attributableType = AttributableType.USER;
-            attributable = userDAO.find(((UserTO) output).getId());
+            subjectType = SubjectType.USER;
+            subject = userDAO.find(((UserTO) output).getId());
         } else if (before instanceof RoleTO) {
-            attributableType = AttributableType.ROLE;
-            attributable = roleDAO.find(((RoleTO) before).getId());
+            subjectType = SubjectType.ROLE;
+            subject = roleDAO.find(((RoleTO) before).getId());
         } else if (output instanceof RoleTO) {
-            attributableType = AttributableType.ROLE;
-            attributable = roleDAO.find(((RoleTO) output).getId());
+            subjectType = SubjectType.ROLE;
+            subject = roleDAO.find(((RoleTO) output).getId());
         }
 
-        LOG.debug("Search notification for [{}]{}", attributableType, attributable);
+        LOG.debug("Search notification for [{}]{}", subjectType, subject);
 
         for (Notification notification : notificationDAO.findAll()) {
             LOG.debug("Notification available user about {}", notification.getUserAbout());
@@ -287,17 +288,15 @@ public class NotificationManager {
                         type, category, subcategory, event, condition)));
 
                 if (events.isEmpty()) {
-                    LOG.debug("No events found about {}", attributable);
-                } else if (attributableType == null || attributable == null
+                    LOG.debug("No events found about {}", subject);
+                } else if (subjectType == null || subject == null
                         || notification.getUserAbout() == null || notification.getRoleAbout() == null
-                        || searchDAO.matches(attributable,
-                                SearchCondConverter.convert(notification.getUserAbout()),
-                                AttributableUtil.getInstance(attributableType))
-                        || searchDAO.matches(attributable,
-                                SearchCondConverter.convert(notification.getRoleAbout()),
-                                AttributableUtil.getInstance(attributableType))) {
+                        || searchDAO.matches(subject,
+                                SearchCondConverter.convert(notification.getUserAbout()), subjectType)
+                        || searchDAO.matches(subject,
+                                SearchCondConverter.convert(notification.getRoleAbout()), subjectType)) {
 
-                    LOG.debug("Creating notification task for events {} about {}", events, attributable);
+                    LOG.debug("Creating notification task for events {} about {}", events, subject);
 
                     final Map<String, Object> model = new HashMap<String, Object>();
                     model.put("type", type);
@@ -309,13 +308,13 @@ public class NotificationManager {
                     model.put("output", output);
                     model.put("input", input);
 
-                    if (attributable instanceof SyncopeUser) {
-                        model.put("user", userDataBinder.getUserTO((SyncopeUser) attributable));
-                    } else if (attributable instanceof SyncopeRole) {
-                        model.put("role", roleDataBinder.getRoleTO((SyncopeRole) attributable));
+                    if (subject instanceof SyncopeUser) {
+                        model.put("user", userDataBinder.getUserTO((SyncopeUser) subject));
+                    } else if (subject instanceof SyncopeRole) {
+                        model.put("role", roleDataBinder.getRoleTO((SyncopeRole) subject));
                     }
 
-                    taskDAO.save(getNotificationTask(notification, attributable, model));
+                    taskDAO.save(getNotificationTask(notification, subject, model));
                 }
             } else {
                 LOG.debug("Notification {}, userAbout {}, roleAbout {} is deactivated, "
@@ -414,8 +413,8 @@ public class NotificationManager {
 
     protected Map<String, String> findAllSyncopeConfs() {
         Map<String, String> syncopeConfMap = new HashMap<String, String>();
-        for (SyncopeConf conf : confDAO.findAll()) {
-            syncopeConfMap.put(conf.getKey(), conf.getValue());
+        for (AbstractAttr attr : confDAO.get().getAttrs()) {
+            syncopeConfMap.put(attr.getSchema().getName(), attr.getValuesAsStrings().get(0));
         }
         return syncopeConfMap;
     }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttr.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttr.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttr.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttr.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttr.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttr.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttr.java Tue Jun 24 13:25:18 2014
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.core.persistence.beans.user;
+package org.apache.syncope.core.persistence.beans.conf;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -38,7 +38,7 @@ import org.apache.syncope.core.persisten
  * User attribute.
  */
 @Entity
-public class UAttr extends AbstractAttr {
+public class CAttr extends AbstractAttr {
 
     private static final long serialVersionUID = 6333601983691157406L;
 
@@ -52,35 +52,35 @@ public class UAttr extends AbstractAttr 
      * The owner of this attribute.
      */
     @ManyToOne(fetch = FetchType.EAGER)
-    private SyncopeUser owner;
+    private SyncopeConf owner;
 
     /**
      * The schema of this attribute.
      */
     @ManyToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "schema_name")
-    private USchema schema;
+    private CSchema schema;
 
     /**
      * Values of this attribute (if schema is not UNIQUE).
      */
     @OneToMany(cascade = CascadeType.MERGE, orphanRemoval = true, mappedBy = "attribute")
     @Valid
-    private List<UAttrValue> values;
+    private List<CAttrValue> values;
 
     /**
      * Value of this attribute (if schema is UNIQUE).
      */
     @OneToOne(cascade = CascadeType.ALL, mappedBy = "attribute")
     @Valid
-    private UAttrUniqueValue uniqueValue;
+    private CAttrUniqueValue uniqueValue;
 
     /**
      * Default constructor.
      */
-    public UAttr() {
+    public CAttr() {
         super();
-        values = new ArrayList<UAttrValue>();
+        values = new ArrayList<CAttrValue>();
     }
 
     @Override
@@ -96,10 +96,10 @@ public class UAttr extends AbstractAttr 
 
     @Override
     public <T extends AbstractAttributable> void setOwner(final T owner) {
-        if (!(owner instanceof SyncopeUser)) {
-            throw new ClassCastException("owner is expected to be typed SyncopeUser: " + owner.getClass().getName());
+        if (!(owner instanceof SyncopeConf)) {
+            throw new ClassCastException("owner is expected to be typed SyncopeConf: " + owner.getClass().getName());
         }
-        this.owner = (SyncopeUser) owner;
+        this.owner = (SyncopeConf) owner;
     }
 
     @SuppressWarnings("unchecked")
@@ -108,26 +108,26 @@ public class UAttr extends AbstractAttr 
         return (T) schema;
     }
 
-    public void setSchema(final USchema schema) {
+    public void setSchema(final CSchema schema) {
         this.schema = schema;
     }
 
     @Override
     public <T extends AbstractAttrValue> boolean addValue(final T attributeValue) {
-        if (!(attributeValue instanceof UAttrValue)) {
-            throw new ClassCastException("attributeValue is expected to be typed UAttrValue: " + attributeValue.
+        if (!(attributeValue instanceof CAttrValue)) {
+            throw new ClassCastException("attributeValue is expected to be typed CAttrValue: " + attributeValue.
                     getClass().getName());
         }
-        return values.add((UAttrValue) attributeValue);
+        return values.add((CAttrValue) attributeValue);
     }
 
     @Override
     public <T extends AbstractAttrValue> boolean removeValue(final T attributeValue) {
-        if (!(attributeValue instanceof UAttrValue)) {
+        if (!(attributeValue instanceof CAttrValue)) {
             throw new ClassCastException("attributeValue is expected to be typed UAttrValue: " + attributeValue.
                     getClass().getName());
         }
-        return values.remove((UAttrValue) attributeValue);
+        return values.remove((CAttrValue) attributeValue);
     }
 
     @SuppressWarnings("unchecked")
@@ -144,10 +144,10 @@ public class UAttr extends AbstractAttr 
 
     @Override
     public <T extends AbstractAttrValue> void setUniqueValue(final T uniqueAttributeValue) {
-        if (!(uniqueAttributeValue instanceof UAttrUniqueValue)) {
-            throw new ClassCastException("uniqueAttributeValue is expected to be typed UAttrUniqueValue: "
+        if (!(uniqueAttributeValue instanceof CAttrUniqueValue)) {
+            throw new ClassCastException("uniqueAttributeValue is expected to be typed CAttrUniqueValue: "
                     + uniqueAttributeValue.getClass().getName());
         }
-        this.uniqueValue = (UAttrUniqueValue) uniqueAttributeValue;
+        this.uniqueValue = (CAttrUniqueValue) uniqueAttributeValue;
     }
 }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrUniqueValue.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrUniqueValue.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrUniqueValue.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrUniqueValue.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrUniqueValue.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrUniqueValue.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrUniqueValue.java Tue Jun 24 13:25:18 2014
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.core.persistence.beans.user;
+package org.apache.syncope.core.persistence.beans.conf;
 
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -28,7 +28,7 @@ import org.apache.syncope.core.persisten
 import org.apache.syncope.core.persistence.beans.AbstractNormalSchema;
 
 @Entity
-public class UAttrUniqueValue extends AbstractAttrUniqueValue {
+public class CAttrUniqueValue extends AbstractAttrUniqueValue {
 
     private static final long serialVersionUID = -64080804563305387L;
 
@@ -36,11 +36,11 @@ public class UAttrUniqueValue extends Ab
     private Long id;
 
     @OneToOne(optional = false)
-    private UAttr attribute;
+    private CAttr attribute;
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "schema_name")
-    private USchema schema;
+    private CSchema schema;
 
     @Override
     public Long getId() {
@@ -55,10 +55,10 @@ public class UAttrUniqueValue extends Ab
 
     @Override
     public <T extends AbstractAttr> void setAttribute(final T attribute) {
-        if (!(attribute instanceof UAttr)) {
-            throw new ClassCastException("expected type UAttr, found: " + attribute.getClass().getName());
+        if (!(attribute instanceof CAttr)) {
+            throw new ClassCastException("expected type CAttr, found: " + attribute.getClass().getName());
         }
-        this.attribute = (UAttr) attribute;
+        this.attribute = (CAttr) attribute;
     }
 
     @SuppressWarnings("unchecked")
@@ -69,9 +69,9 @@ public class UAttrUniqueValue extends Ab
 
     @Override
     public <T extends AbstractNormalSchema> void setSchema(final T schema) {
-        if (!(schema instanceof USchema)) {
-            throw new ClassCastException("expected type USchema, found: " + schema.getClass().getName());
+        if (!(schema instanceof CSchema)) {
+            throw new ClassCastException("expected type CSchema, found: " + schema.getClass().getName());
         }
-        this.schema = (USchema) schema;
+        this.schema = (CSchema) schema;
     }
 }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrValue.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrValue.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrValue.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrValue.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrValue.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UAttrValue.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CAttrValue.java Tue Jun 24 13:25:18 2014
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.core.persistence.beans.user;
+package org.apache.syncope.core.persistence.beans.conf;
 
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -29,7 +29,7 @@ import org.apache.syncope.core.persisten
 
 @Entity
 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
-public class UAttrValue extends AbstractAttrValue {
+public class CAttrValue extends AbstractAttrValue {
 
     private static final long serialVersionUID = -6259576015647897446L;
 
@@ -38,7 +38,7 @@ public class UAttrValue extends Abstract
 
     @ManyToOne
     @NotNull
-    private UAttr attribute;
+    private CAttr attribute;
 
     @Override
     public Long getId() {
@@ -54,9 +54,9 @@ public class UAttrValue extends Abstract
     @SuppressWarnings("unchecked")
     @Override
     public <T extends AbstractAttr> void setAttribute(final T attribute) {
-        if (!(attribute instanceof UAttr)) {
-            throw new ClassCastException("expected type UAttr, found: " + attribute.getClass().getName());
+        if (!(attribute instanceof CAttr)) {
+            throw new ClassCastException("expected type CAttr, found: " + attribute.getClass().getName());
         }
-        this.attribute = (UAttr) attribute;
+        this.attribute = (CAttr) attribute;
     }
 }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CSchema.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CSchema.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CSchema.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/CSchema.java Tue Jun 24 13:25:18 2014
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.core.persistence.beans.user;
+package org.apache.syncope.core.persistence.beans.conf;
 
 import javax.persistence.Cacheable;
 import javax.persistence.Entity;
@@ -24,8 +24,8 @@ import org.apache.syncope.core.persisten
 
 @Entity
 @Cacheable
-public class USchema extends AbstractNormalSchema {
+public class CSchema extends AbstractNormalSchema {
 
-    private static final long serialVersionUID = -2776513645999914610L;
+    private static final long serialVersionUID = 3363019039331594433L;
 
 }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/SyncopeConf.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/SyncopeConf.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/SyncopeConf.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/conf/SyncopeConf.java Tue Jun 24 13:25:18 2014
@@ -16,195 +16,39 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.core.persistence.beans.role;
+package org.apache.syncope.core.persistence.beans.conf;
 
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.Collections;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.persistence.Basic;
 import javax.persistence.Cacheable;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
 import javax.validation.Valid;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
 import org.apache.syncope.core.persistence.beans.AbstractAttr;
-import org.apache.syncope.core.persistence.beans.AbstractAttrTemplate;
+import org.apache.syncope.core.persistence.beans.AbstractAttributable;
 import org.apache.syncope.core.persistence.beans.AbstractDerAttr;
-import org.apache.syncope.core.persistence.beans.AbstractDerSchema;
-import org.apache.syncope.core.persistence.beans.AbstractNormalSchema;
-import org.apache.syncope.core.persistence.beans.AbstractSchema;
-import org.apache.syncope.core.persistence.beans.AbstractSubject;
 import org.apache.syncope.core.persistence.beans.AbstractVirAttr;
-import org.apache.syncope.core.persistence.beans.AbstractVirSchema;
-import org.apache.syncope.core.persistence.beans.AccountPolicy;
-import org.apache.syncope.core.persistence.beans.Entitlement;
-import org.apache.syncope.core.persistence.beans.ExternalResource;
-import org.apache.syncope.core.persistence.beans.PasswordPolicy;
-import org.apache.syncope.core.persistence.beans.membership.MAttrTemplate;
-import org.apache.syncope.core.persistence.beans.membership.MDerAttrTemplate;
-import org.apache.syncope.core.persistence.beans.membership.MVirAttrTemplate;
-import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
-import org.apache.syncope.core.persistence.validation.entity.SyncopeRoleCheck;
 
 @Entity
-@Table(uniqueConstraints =
-        @UniqueConstraint(columnNames = { "name", "parent_id" }))
 @Cacheable
-@SyncopeRoleCheck
-public class SyncopeRole extends AbstractSubject {
+public class SyncopeConf extends AbstractAttributable {
 
     private static final long serialVersionUID = -5281258853142421875L;
 
     @Id
     private Long id;
 
-    @NotNull
-    private String name;
-
-    @ManyToOne(optional = true)
-    private SyncopeRole parent;
-
-    @ManyToOne(optional = true)
-    private SyncopeUser userOwner;
-
-    @ManyToOne(optional = true)
-    private SyncopeRole roleOwner;
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    @JoinTable(joinColumns =
-            @JoinColumn(name = "role_id"),
-            inverseJoinColumns =
-            @JoinColumn(name = "entitlement_name"))
-    private Set<Entitlement> entitlements;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RAttrTemplate> rAttrTemplates;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RDerAttrTemplate> rDerAttrTemplates;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RVirAttrTemplate> rVirAttrTemplates;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<MAttrTemplate> mAttrTemplates;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<MDerAttrTemplate> mDerAttrTemplates;
-
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
     @Valid
-    private List<MVirAttrTemplate> mVirAttrTemplates;
+    private List<CAttr> attrs;
 
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RAttr> attrs;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RDerAttr> derAttrs;
-
-    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
-    @Valid
-    private List<RVirAttr> virAttrs;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritOwner;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritTemplates;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritAttrs;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritDerAttrs;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritVirAttrs;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritPasswordPolicy;
-
-    @Basic(optional = true)
-    @Min(0)
-    @Max(1)
-    private Integer inheritAccountPolicy;
-
-    @ManyToOne(fetch = FetchType.EAGER, optional = true)
-    private PasswordPolicy passwordPolicy;
-
-    @ManyToOne(fetch = FetchType.EAGER, optional = true)
-    private AccountPolicy accountPolicy;
-
-    /**
-     * Provisioning external resources.
-     */
-    @ManyToMany(fetch = FetchType.EAGER)
-    @JoinTable(joinColumns =
-            @JoinColumn(name = "role_id"),
-            inverseJoinColumns =
-            @JoinColumn(name = "resource_name"))
-    @Valid
-    private Set<ExternalResource> resources;
-
-    public SyncopeRole() {
+    public SyncopeConf() {
         super();
 
-        entitlements = new HashSet<Entitlement>();
-
-        rAttrTemplates = new ArrayList<RAttrTemplate>();
-        rDerAttrTemplates = new ArrayList<RDerAttrTemplate>();
-        rVirAttrTemplates = new ArrayList<RVirAttrTemplate>();
-        mAttrTemplates = new ArrayList<MAttrTemplate>();
-        mDerAttrTemplates = new ArrayList<MDerAttrTemplate>();
-        mVirAttrTemplates = new ArrayList<MVirAttrTemplate>();
-
-        attrs = new ArrayList<RAttr>();
-        derAttrs = new ArrayList<RDerAttr>();
-        virAttrs = new ArrayList<RVirAttr>();
-
-        inheritOwner = getBooleanAsInteger(false);
-        inheritTemplates = getBooleanAsInteger(false);
-        inheritAttrs = getBooleanAsInteger(false);
-        inheritDerAttrs = getBooleanAsInteger(false);
-        inheritVirAttrs = getBooleanAsInteger(false);
-        inheritPasswordPolicy = getBooleanAsInteger(false);
-        inheritAccountPolicy = getBooleanAsInteger(false);
-
-        resources = new HashSet<ExternalResource>();
+        attrs = new ArrayList<CAttr>();
     }
 
     @Override
@@ -212,152 +56,24 @@ public class SyncopeRole extends Abstrac
         return id;
     }
 
-    @Override
-    protected Set<ExternalResource> internalGetResources() {
-        return resources;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public SyncopeRole getParent() {
-        return parent;
-    }
-
-    public void setParent(final SyncopeRole parent) {
-        this.parent = parent;
-    }
-
-    public boolean isInheritOwner() {
-        return isBooleanAsInteger(inheritOwner);
-    }
-
-    public void setInheritOwner(final boolean inheritOwner) {
-        this.inheritOwner = getBooleanAsInteger(inheritOwner);
-    }
-
-    public SyncopeUser getUserOwner() {
-        return userOwner;
-    }
-
-    public void setUserOwner(final SyncopeUser userOwner) {
-        this.userOwner = userOwner;
-    }
-
-    public SyncopeRole getRoleOwner() {
-        return roleOwner;
-    }
-
-    public void setRoleOwner(final SyncopeRole roleOwner) {
-        this.roleOwner = roleOwner;
-    }
-
-    public boolean addEntitlement(final Entitlement entitlement) {
-        return entitlements.add(entitlement);
-    }
-
-    public boolean removeEntitlement(final Entitlement entitlement) {
-        return entitlements.remove(entitlement);
-    }
-
-    public Set<Entitlement> getEntitlements() {
-        return entitlements;
-    }
-
-    public void setEntitlements(final List<Entitlement> entitlements) {
-        this.entitlements.clear();
-        if (entitlements != null && !entitlements.isEmpty()) {
-            this.entitlements.addAll(entitlements);
-        }
-    }
-
-    public boolean isInheritTemplates() {
-        return isBooleanAsInteger(inheritTemplates);
-    }
-
-    public void setInheritTemplates(final boolean inheritAttrTemplates) {
-        this.inheritTemplates = getBooleanAsInteger(inheritAttrTemplates);
-    }
-
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    public <T extends AbstractAttrTemplate> List<T> getAttrTemplates(final Class<T> reference) {
-        List<T> result = null;
-
-        if (reference.equals(RAttrTemplate.class)) {
-            result = (List<T>) rAttrTemplates;
-        } else if (reference.equals(RDerAttrTemplate.class)) {
-            result = (List<T>) rDerAttrTemplates;
-        } else if (reference.equals(RVirAttrTemplate.class)) {
-            result = (List<T>) rVirAttrTemplates;
-        } else if (reference.equals(MAttrTemplate.class)) {
-            result = (List<T>) mAttrTemplates;
-        } else if (reference.equals(MDerAttrTemplate.class)) {
-            result = (List<T>) mDerAttrTemplates;
-        } else if (reference.equals(MVirAttrTemplate.class)) {
-            result = (List<T>) mVirAttrTemplates;
-        }
-
-        return result;
-    }
-
-    public <T extends AbstractAttrTemplate<K>, K extends AbstractSchema> T getAttrTemplate(
-            final Class<T> reference, final String schemaName) {
-
-        T result = null;
-
-        for (T template : findInheritedTemplates(reference)) {
-            if (schemaName.equals(template.getSchema().getName())) {
-                result = template;
-            }
-        }
-
-        return result;
-    }
-
-    public <T extends AbstractAttrTemplate<K>, K extends AbstractSchema> List<K> getAttrTemplateSchemas(
-            final Class<T> reference) {
-
-        final List<K> result = new ArrayList<K>();
-
-        for (T template : findInheritedTemplates(reference)) {
-            result.add(template.getSchema());
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T extends AbstractAttrTemplate<K>, K extends AbstractSchema> List<T> findInheritedTemplates(
-            final Class<T> reference) {
-
-        final List<T> result = new ArrayList<T>(getAttrTemplates(reference));
-
-        if (isInheritTemplates() && getParent() != null) {
-            result.addAll(getParent().findInheritedTemplates(reference));
-        }
-
-        return result;
+    public void setId(final Long id) {
+        this.id = id;
     }
 
     @Override
     public <T extends AbstractAttr> boolean addAttr(final T attr) {
-        if (!(attr instanceof RAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RAttr: " + attr.getClass().getName());
+        if (!(attr instanceof CAttr)) {
+            throw new ClassCastException("attribute is expected to be typed CAttr: " + attr.getClass().getName());
         }
-        return attrs.add((RAttr) attr);
+        return attrs.add((CAttr) attr);
     }
 
     @Override
     public <T extends AbstractAttr> boolean removeAttr(final T attr) {
-        if (!(attr instanceof RAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RAttr: " + attr.getClass().getName());
+        if (!(attr instanceof CAttr)) {
+            throw new ClassCastException("attribute is expected to be typed CAttr: " + attr.getClass().getName());
         }
-        return attrs.remove((RAttr) attr);
+        return attrs.remove((CAttr) attr);
     }
 
     @Override
@@ -370,235 +86,48 @@ public class SyncopeRole extends Abstrac
     public void setAttrs(final List<? extends AbstractAttr> attrs) {
         this.attrs.clear();
         if (attrs != null && !attrs.isEmpty()) {
-            this.attrs.addAll((List<RAttr>) attrs);
+            this.attrs.addAll((List<CAttr>) attrs);
         }
     }
 
     @Override
     public <T extends AbstractDerAttr> boolean addDerAttr(final T derAttr) {
-        if (!(derAttr instanceof RDerAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RDerAttr: " + derAttr.getClass().getName());
-        }
-        return derAttrs.add((RDerAttr) derAttr);
+        return false;
     }
 
     @Override
     public <T extends AbstractDerAttr> boolean removeDerAttr(final T derAttr) {
-        if (!(derAttr instanceof RDerAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RDerAttr: " + derAttr.getClass().getName());
-        }
-        return derAttrs.remove((RDerAttr) derAttr);
+        return false;
     }
 
     @Override
     public List<? extends AbstractDerAttr> getDerAttrs() {
-        return derAttrs;
+        return Collections.emptyList();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public void setDerAttrs(final List<? extends AbstractDerAttr> derAttrs) {
-        this.derAttrs.clear();
-        if (derAttrs != null && !derAttrs.isEmpty()) {
-            this.derAttrs.addAll((List<RDerAttr>) derAttrs);
-        }
+        // no support for derived attributes
     }
 
     @Override
     public <T extends AbstractVirAttr> boolean addVirAttr(final T virAttr) {
-        if (!(virAttr instanceof RVirAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RVirAttr: " + virAttr.getClass().getName());
-        }
-        return virAttrs.add((RVirAttr) virAttr);
+        return false;
     }
 
     @Override
     public <T extends AbstractVirAttr> boolean removeVirAttr(final T virAttr) {
-        if (!(virAttr instanceof RVirAttr)) {
-            throw new ClassCastException("attribute is expected to be typed RVirAttr: " + virAttr.getClass().getName());
-        }
-        return virAttrs.remove((RVirAttr) virAttr);
+        return false;
     }
 
     @Override
     public List<? extends AbstractVirAttr> getVirAttrs() {
-        return virAttrs;
+        return Collections.emptyList();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public void setVirAttrs(final List<? extends AbstractVirAttr> virAttrs) {
-        this.virAttrs.clear();
-        if (virAttrs != null && !virAttrs.isEmpty()) {
-            this.virAttrs.addAll((List<RVirAttr>) virAttrs);
-        }
-    }
-
-    public boolean isInheritAttrs() {
-        return isBooleanAsInteger(inheritAttrs);
-    }
-
-    public void setInheritAttrs(final boolean inheritAttrs) {
-        this.inheritAttrs = getBooleanAsInteger(inheritAttrs);
-    }
-
-    /**
-     * Get all inherited attributes from the ancestors.
-     *
-     * @return a list of inherited and only inherited attributes.
-     */
-    @SuppressWarnings("unchecked")
-    public List<RAttr> findInheritedAttrs() {
-        final Map<RSchema, RAttr> result = new HashMap<RSchema, RAttr>();
-
-        if (isInheritAttrs() && getParent() != null) {
-            final Map<AbstractNormalSchema, AbstractAttr> attrMap = getAttrMap();
-
-            // Add attributes not specialized
-            for (RAttr attr : (Collection<RAttr>) getParent().getAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema())) {
-                    result.put((RSchema) attr.getSchema(), attr);
-                }
-            }
-
-            // Add attributes not specialized and not already added
-            for (RAttr attr : getParent().findInheritedAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema()) && !result.containsKey((RSchema) attr.getSchema())) {
-                    result.put((RSchema) attr.getSchema(), attr);
-                }
-            }
-        }
-
-        return new ArrayList<RAttr>(result.values());
-    }
-
-    public boolean isInheritDerAttrs() {
-        return isBooleanAsInteger(inheritDerAttrs);
+        // no support for virtual attributes
     }
 
-    public void setInheritDerAttrs(final boolean inheritDerAttrs) {
-        this.inheritDerAttrs = getBooleanAsInteger(inheritDerAttrs);
-
-    }
-
-    /**
-     * Get all inherited derived attributes from the ancestors.
-     *
-     * @return a list of inherited and only inherited attributes.
-     */
-    @SuppressWarnings("unchecked")
-    public List<RDerAttr> findInheritedDerAttrs() {
-        final Map<RDerSchema, RDerAttr> result = new HashMap<RDerSchema, RDerAttr>();
-
-        if (isInheritDerAttrs() && getParent() != null) {
-            final Map<AbstractDerSchema, AbstractDerAttr> attrMap = getDerAttrMap();
-
-            // Add attributes not specialized
-            for (RDerAttr attr : (Collection<RDerAttr>) getParent().getDerAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema())) {
-                    result.put((RDerSchema) attr.getSchema(), attr);
-                }
-            }
-
-            // Add attributes not specialized and not already added
-            for (RDerAttr attr : getParent().findInheritedDerAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema())
-                        && !result.containsKey((RDerSchema) attr.getSchema())) {
-
-                    result.put((RDerSchema) attr.getSchema(), attr);
-                }
-            }
-        }
-
-        return new ArrayList<RDerAttr>(result.values());
-    }
-
-    public boolean isInheritVirAttrs() {
-        return isBooleanAsInteger(inheritVirAttrs);
-    }
-
-    public void setInheritVirAttrs(final boolean inheritVirAttrs) {
-        this.inheritVirAttrs = getBooleanAsInteger(inheritVirAttrs);
-
-    }
-
-    /**
-     * Get all inherited virtual attributes from the ancestors.
-     *
-     * @return a list of inherited and only inherited attributes.
-     */
-    @SuppressWarnings("unchecked")
-    public List<RVirAttr> findInheritedVirAttrs() {
-        final Map<RVirSchema, RVirAttr> result = new HashMap<RVirSchema, RVirAttr>();
-
-        if (isInheritVirAttrs() && getParent() != null) {
-            final Map<AbstractVirSchema, AbstractVirAttr> attrMap = getVirAttrMap();
-
-            // Add attributes not specialized
-            for (RVirAttr attr : (Collection<RVirAttr>) getParent().getVirAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema())) {
-                    result.put((RVirSchema) attr.getSchema(), attr);
-                }
-            }
-
-            // Add attributes not specialized and not already added
-            for (RVirAttr attr : getParent().findInheritedVirAttrs()) {
-                if (!attrMap.containsKey(attr.getSchema())
-                        && !result.containsKey((RVirSchema) attr.getSchema())) {
-
-                    result.put((RVirSchema) attr.getSchema(), attr);
-                }
-            }
-        }
-
-        return new ArrayList<RVirAttr>(result.values());
-    }
-
-    /**
-     * Get first valid password policy.
-     *
-     * @return parent password policy if isInheritPasswordPolicy is 'true' and parent is not null, local password policy
-     * otherwise
-     */
-    public PasswordPolicy getPasswordPolicy() {
-        return isInheritPasswordPolicy() && getParent() != null
-                ? getParent().getPasswordPolicy()
-                : passwordPolicy;
-    }
-
-    public void setPasswordPolicy(final PasswordPolicy passwordPolicy) {
-        this.passwordPolicy = passwordPolicy;
-    }
-
-    public boolean isInheritPasswordPolicy() {
-        return isBooleanAsInteger(inheritPasswordPolicy);
-    }
-
-    public void setInheritPasswordPolicy(final boolean inheritPasswordPolicy) {
-        this.inheritPasswordPolicy = getBooleanAsInteger(inheritPasswordPolicy);
-    }
-
-    /**
-     * Get first valid account policy.
-     *
-     * @return parent account policy if isInheritAccountPolicy is 'true' and parent is not null, local account policy
-     * otherwise.
-     */
-    public AccountPolicy getAccountPolicy() {
-        return isInheritAccountPolicy() && getParent() != null
-                ? getParent().getAccountPolicy()
-                : accountPolicy;
-    }
-
-    public void setAccountPolicy(final AccountPolicy accountPolicy) {
-        this.accountPolicy = accountPolicy;
-    }
-
-    public boolean isInheritAccountPolicy() {
-        return isBooleanAsInteger(inheritAccountPolicy);
-    }
-
-    public void setInheritAccountPolicy(boolean inheritAccountPolicy) {
-        this.inheritAccountPolicy = getBooleanAsInteger(inheritAccountPolicy);
-    }
 }

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/ConfDAO.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/ConfDAO.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/ConfDAO.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/ConfDAO.java Tue Jun 24 13:25:18 2014
@@ -18,20 +18,18 @@
  */
 package org.apache.syncope.core.persistence.dao;
 
-import java.util.List;
-
-import org.apache.syncope.core.persistence.beans.SyncopeConf;
-import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
+import org.apache.syncope.core.persistence.beans.conf.CAttr;
+import org.apache.syncope.core.persistence.beans.conf.SyncopeConf;
 
 public interface ConfDAO extends DAO {
 
-    SyncopeConf find(String name) throws MissingConfKeyException;
+    CAttr find(String key);
 
-    SyncopeConf find(String name, String defaultValue);
+    CAttr find(String key, String defaultValue);
 
-    List<SyncopeConf> findAll();
+    SyncopeConf get();
 
-    SyncopeConf save(SyncopeConf syncopeConfiguration) throws InvalidEntityException;
+    SyncopeConf save(CAttr attr);
 
-    void delete(String name);
+    SyncopeConf delete(String key);
 }

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java Tue Jun 24 13:25:18 2014
@@ -30,7 +30,7 @@ import org.apache.syncope.core.persisten
 import org.apache.syncope.core.persistence.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
 
-public interface RoleDAO extends AttributableDAO {
+public interface RoleDAO extends SubjectDAO {
 
     SyncopeRole find(Long id);
 

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectDAO.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableDAO.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectDAO.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectDAO.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableDAO.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableDAO.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectDAO.java Tue Jun 24 13:25:18 2014
@@ -21,20 +21,20 @@ package org.apache.syncope.core.persiste
 import java.util.List;
 
 import org.apache.syncope.core.persistence.beans.AbstractAttrValue;
-import org.apache.syncope.core.persistence.beans.AbstractAttributable;
+import org.apache.syncope.core.persistence.beans.AbstractSubject;
 import org.apache.syncope.core.persistence.beans.ExternalResource;
 import org.apache.syncope.core.util.AttributableUtil;
 
-public interface AttributableDAO extends DAO {
+public interface SubjectDAO extends DAO {
 
-    <T extends AbstractAttributable> List<T> findByAttrValue(String schemaName,
+    <T extends AbstractSubject> List<T> findByAttrValue(String schemaName,
             AbstractAttrValue attrValue, AttributableUtil attrUtil);
 
-    <T extends AbstractAttributable> AbstractAttributable findByAttrUniqueValue(String schemaName,
+    <T extends AbstractSubject> T findByAttrUniqueValue(String schemaName,
             AbstractAttrValue attrUniqueValue, AttributableUtil attrUtil);
 
-    <T extends AbstractAttributable> List<T> findByDerAttrValue(String schemaName, String value,
+    <T extends AbstractSubject> List<T> findByDerAttrValue(String schemaName, String value,
             AttributableUtil attrUtil);
 
-    <T extends AbstractAttributable> List<T> findByResource(ExternalResource resource, Class<T> reference);
+    <T extends AbstractSubject> List<T> findByResource(ExternalResource resource, Class<T> reference);
 }

Copied: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectSearchDAO.java (from r1603867, syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableSearchDAO.java)
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectSearchDAO.java?p2=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectSearchDAO.java&p1=syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableSearchDAO.java&r1=1603867&r2=1605077&rev=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/AttributableSearchDAO.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/SubjectSearchDAO.java Tue Jun 24 13:25:18 2014
@@ -20,42 +20,40 @@ package org.apache.syncope.core.persiste
 
 import java.util.List;
 import java.util.Set;
-
-import org.apache.syncope.core.persistence.dao.search.SearchCond;
-import org.apache.syncope.core.persistence.beans.AbstractAttributable;
+import org.apache.syncope.common.types.SubjectType;
+import org.apache.syncope.core.persistence.beans.AbstractSubject;
 import org.apache.syncope.core.persistence.dao.search.OrderByClause;
-import org.apache.syncope.core.util.AttributableUtil;
+import org.apache.syncope.core.persistence.dao.search.SearchCond;
 
-public interface AttributableSearchDAO extends DAO {
+public interface SubjectSearchDAO extends DAO {
 
     /**
      * @param adminRoles the set of admin roles owned by the caller
      * @param searchCondition the search condition
-     * @param attrUtil AttributeUtil
+     * @param type user or role
      * @return size of search result
      */
-    int count(Set<Long> adminRoles, SearchCond searchCondition, AttributableUtil attrUtil);
+    int count(Set<Long> adminRoles, SearchCond searchCondition, SubjectType type);
 
     /**
      * @param adminRoles the set of admin roles owned by the caller
      * @param searchCondition the search condition
-     * @param attrUtil AttributeUtil
+     * @param type user or role
      * @param <T> user/role
      * @return the list of users/roles matching the given search condition
      */
-    <T extends AbstractAttributable> List<T> search(Set<Long> adminRoles, SearchCond searchCondition,
-            AttributableUtil attrUtil);
+    <T extends AbstractSubject> List<T> search(Set<Long> adminRoles, SearchCond searchCondition, SubjectType type);
 
     /**
      * @param adminRoles the set of admin roles owned by the caller
      * @param searchCondition the search condition
      * @param orderBy list of ordering clauses
-     * @param attrUtil AttributeUtil
+     * @param type user or role
      * @param <T> user/role
      * @return the list of users/roles matching the given search condition
      */
-    <T extends AbstractAttributable> List<T> search(Set<Long> adminRoles, SearchCond searchCondition,
-            List<OrderByClause> orderBy, AttributableUtil attrUtil);
+    <T extends AbstractSubject> List<T> search(Set<Long> adminRoles, SearchCond searchCondition,
+            List<OrderByClause> orderBy, SubjectType type);
 
     /**
      * @param adminRoles the set of admin roles owned by the caller
@@ -63,21 +61,21 @@ public interface AttributableSearchDAO e
      * @param page position of the first result, start from 1
      * @param itemsPerPage number of results per page
      * @param orderBy list of ordering clauses
-     * @param attrUtil AttributeUtil
+     * @param type user or role
      * @param <T> user/role
      * @return the list of users/roles matching the given search condition (in the given page)
      */
-    <T extends AbstractAttributable> List<T> search(Set<Long> adminRoles, SearchCond searchCondition,
-            int page, int itemsPerPage, List<OrderByClause> orderBy, AttributableUtil attrUtil);
+    <T extends AbstractSubject> List<T> search(Set<Long> adminRoles, SearchCond searchCondition,
+            int page, int itemsPerPage, List<OrderByClause> orderBy, SubjectType type);
 
     /**
      * Verify if user/role matches the given search condition.
      *
      * @param subject to be checked
      * @param searchCondition to be verified
-     * @param attrUtil AttributeUtil
+     * @param type user or role
      * @param <T> user/role
      * @return true if user/role matches searchCondition
      */
-    <T extends AbstractAttributable> boolean matches(T subject, SearchCond searchCondition, AttributableUtil attrUtil);
+    <T extends AbstractSubject> boolean matches(T subject, SearchCond searchCondition, SubjectType type);
 }

Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/UserDAO.java
URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/UserDAO.java?rev=1605077&r1=1605076&r2=1605077&view=diff
==============================================================================
--- syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/UserDAO.java (original)
+++ syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/dao/UserDAO.java Tue Jun 24 13:25:18 2014
@@ -27,7 +27,7 @@ import org.apache.syncope.core.persisten
 import org.apache.syncope.core.persistence.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
 
-public interface UserDAO extends AttributableDAO {
+public interface UserDAO extends SubjectDAO {
 
     SyncopeUser find(Long id);