Topia-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
June 2012
- 4 participants
- 21 discussions
Author: tchemit
Date: 2012-06-11 16:47:19 +0200 (Mon, 11 Jun 2012)
New Revision: 2581
Url: http://nuiton.org/repositories/revision/topia/2581
Log:
remove old branches
Removed:
branches/codelutin/
branches/from2.2.2-eugene2-beta/
branches/generators-refactoring/
branches/hibernate_to_jpa_migration/
branches/poussin/
branches/topia-2.6.x/
branches/topia1-trunk/
1
0
Author: tchemit
Date: 2012-06-11 16:43:24 +0200 (Mon, 11 Jun 2012)
New Revision: 2580
Url: http://nuiton.org/repositories/revision/topia/2580
Log:
remove old branches
Removed:
branches/2.6.x-jta/
1
0
Author: tchemit
Date: 2012-06-11 16:43:11 +0200 (Mon, 11 Jun 2012)
New Revision: 2579
Url: http://nuiton.org/repositories/revision/topia/2579
Log:
remove old branches
Removed:
branches/2.1.6.x/
1
0
Author: tchemit
Date: 2012-06-11 16:42:56 +0200 (Mon, 11 Jun 2012)
New Revision: 2578
Url: http://nuiton.org/repositories/revision/topia/2578
Log:
remove old branches
Removed:
branches/2.0.28.1/
1
0
Author: tchemit
Date: 2012-06-11 15:41:18 +0200 (Mon, 11 Jun 2012)
New Revision: 2577
Url: http://nuiton.org/repositories/revision/topia/2577
Log:
updates to nuiton-utils 2.5
Modified:
branches/topia-2.6-maintenance/pom.xml
Modified: branches/topia-2.6-maintenance/pom.xml
===================================================================
--- branches/topia-2.6-maintenance/pom.xml 2012-06-11 07:04:58 UTC (rev 2576)
+++ branches/topia-2.6-maintenance/pom.xml 2012-06-11 13:41:18 UTC (rev 2577)
@@ -68,7 +68,7 @@
<!-- libs version -->
<eugeneVersion>2.4.2</eugeneVersion>
- <nuitonUtilsVersion>2.4.8</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.5</nuitonUtilsVersion>
<processorPluginVersion>1.2.2</processorPluginVersion>
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
<xmlrpcVersion>3.1.2</xmlrpcVersion>
1
0
Author: tchemit
Date: 2012-06-11 09:04:58 +0200 (Mon, 11 Jun 2012)
New Revision: 2576
Url: http://nuiton.org/repositories/revision/topia/2576
Log:
updates to mavenpom 3.3.3
Modified:
branches/topia-2.6-maintenance/pom.xml
Modified: branches/topia-2.6-maintenance/pom.xml
===================================================================
--- branches/topia-2.6-maintenance/pom.xml 2012-06-06 15:37:46 UTC (rev 2575)
+++ branches/topia-2.6-maintenance/pom.xml 2012-06-11 07:04:58 UTC (rev 2576)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmineAndCentral</artifactId>
- <version>3.3.2</version>
+ <version>3.3.3</version>
</parent>
<artifactId>topia</artifactId>
1
0
r2575 - in trunk/topia-persistence-tck/src: main/java/org/nuiton/topia/tck test/java/org/nuiton/topia/tck
by fdesbois@users.nuiton.org 06 Jun '12
by fdesbois@users.nuiton.org 06 Jun '12
06 Jun '12
Author: fdesbois
Date: 2012-06-06 17:37:46 +0200 (Wed, 06 Jun 2012)
New Revision: 2575
Url: http://nuiton.org/repositories/revision/topia/2575
Log:
Move TopiaDatabase to src folder
Added:
trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/tck/TopiaDatabase.java
Removed:
trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/TopiaDatabase.java
Copied: trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/tck/TopiaDatabase.java (from rev 2574, trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/TopiaDatabase.java)
===================================================================
--- trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/tck/TopiaDatabase.java (rev 0)
+++ trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/tck/TopiaDatabase.java 2012-06-06 15:37:46 UTC (rev 2575)
@@ -0,0 +1,239 @@
+/*
+ * #%L
+ * ToPIA :: Persistence
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2012 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.topia.tck;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaContextFactory;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Properties;
+
+/**
+ * Put this class as a Rule in test to obtain a new isolated db for each test.
+ * <p/>
+ * Here is a simple example of usage :
+ * <pre>
+ * public class MyTest {
+ *
+ * \@Rule
+ * public final TopiaDatabase db = new TopiaDatabase();
+ *
+ * \@Test
+ * public void testMethod() throws TopiaException {
+ *
+ * TopiaContext tx = db.beginTransaction();
+ * ...
+ * }
+ * </pre>
+ * The db created will be unique for each test method (and for each build also).
+ * <p/>
+ * You don't need to close any transaction, it will be done for you and the end
+ * of each method test.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.6.8
+ */
+public abstract class TopiaDatabase extends TestWatcher {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TopiaDatabase.class);
+
+ /** A time-stamp, allow to make multiple build and keep the tests data. */
+ public static final String TIMESTAMP = String.valueOf(System.nanoTime());
+
+ private File testBasedir;
+
+ private Properties dbConfiguration;
+
+ private TopiaContext rootCtxt;
+
+ private Description description;
+
+ private final String configurationPath;
+
+ private final String classifier;
+
+ protected TopiaDatabase(String configurationPath, String classifier) {
+ this.configurationPath = configurationPath;
+ this.classifier = classifier;
+ }
+
+ public TopiaDatabase(String configurationPath) {
+ this(configurationPath, "");
+ }
+
+ /**
+ * Obtain all types persisted in this db.
+ *
+ * @return all persisted types in this db.
+ * @since 3.0
+ */
+ protected abstract Class<? extends TopiaEntity>[] getImplementationClasses();
+
+ @Override
+ protected void starting(Description description) {
+
+ this.description=description;
+
+ // get test directory
+ testBasedir = getTestSpecificDirectory(
+ description.getTestClass(),
+ description.getMethodName(),
+ classifier);
+
+ if (log.isDebugEnabled()) {
+ log.debug("testBasedir = " + testBasedir);
+ }
+
+ // create the root context
+ try {
+
+ dbConfiguration = new Properties();
+ InputStream stream =
+ getClass().getResourceAsStream(configurationPath);
+
+ try {
+ dbConfiguration.load(stream);
+ } finally {
+ stream.close();
+ }
+ dbConfiguration.setProperty(
+ TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES,
+ getImplementationClassesAsString());
+
+ // make sure we always use a different directory
+
+ String dbPath = new File(testBasedir, "db").getAbsolutePath();
+
+ String jdbcUrl = "jdbc:h2:file:" + dbPath;
+
+ if (log.isInfoEnabled()) {
+ log.info("Use " + jdbcUrl);
+ }
+
+ dbConfiguration.setProperty(
+ TopiaContextFactory.CONFIG_URL, jdbcUrl);
+
+ onDbConfigurationCreate(dbConfiguration, testBasedir, dbPath);
+
+ rootCtxt = TopiaContextFactory.getContext(dbConfiguration);
+ } catch (Exception e) {
+ throw new IllegalStateException(
+ "Could not start db at " + testBasedir, e);
+ }
+ }
+
+ @Override
+ public void finished(Description description) {
+
+ if (rootCtxt != null && !rootCtxt.isClosed()) {
+ try {
+ rootCtxt.closeContext();
+ } catch (TopiaException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not close topia root context", e);
+ }
+ }
+ }
+ rootCtxt = null;
+ dbConfiguration = null;
+ }
+
+ public File getTestBasedir() {
+ return testBasedir;
+ }
+
+ public TopiaContext getRootCtxt() {
+ return rootCtxt;
+ }
+
+ public Properties getDbConfiguration() {
+ return dbConfiguration;
+ }
+
+ public TopiaContext beginTransaction() throws TopiaException {
+ return rootCtxt.beginTransaction();
+ }
+
+ public Description getDescription() {
+ return description;
+ }
+
+ protected void onDbConfigurationCreate(Properties configuration,
+ File testDir,
+ String dbPath) {
+
+ }
+
+ protected final String getImplementationClassesAsString() {
+ StringBuilder buffer = new StringBuilder();
+ for (Class<? extends TopiaEntity> aClass : getImplementationClasses()) {
+ buffer.append(',').append(aClass.getName());
+ }
+ return buffer.substring(1);
+ }
+
+ public static File getTestSpecificDirectory(Class<?> testClassName,
+ String methodName) {
+ return getTestSpecificDirectory(testClassName, methodName, "");
+ }
+
+ public static File getTestSpecificDirectory(Class<?> testClassName,
+ String methodName,
+ String classifier) {
+ // Trying to look for the temporary folder to store data for the test
+ String tempDirPath = System.getProperty("java.io.tmpdir");
+ if (tempDirPath == null) {
+ // can this really occur ?
+ tempDirPath = "";
+ if (log.isWarnEnabled()) {
+ log.warn("'\"java.io.tmpdir\" not defined");
+ }
+ }
+ File tempDirFile = new File(tempDirPath);
+
+ // create the directory to store database data
+ String dataBasePath = testClassName.getName()
+ + File.separator // a directory with the test class name
+ + methodName; // a sub-directory with the method name
+
+ if (StringUtils.isNotBlank(classifier)) {
+ dataBasePath += classifier;
+ }
+ dataBasePath += '_'
+ + TIMESTAMP; // and a timestamp
+ File databaseFile = new File(tempDirFile, dataBasePath);
+ return databaseFile;
+ }
+}
+
Property changes on: trunk/topia-persistence-tck/src/main/java/org/nuiton/topia/tck/TopiaDatabase.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/TopiaDatabase.java
===================================================================
--- trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/TopiaDatabase.java 2012-06-01 16:02:06 UTC (rev 2574)
+++ trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/TopiaDatabase.java 2012-06-06 15:37:46 UTC (rev 2575)
@@ -1,239 +0,0 @@
-/*
- * #%L
- * ToPIA :: Persistence
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2004 - 2012 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.topia.tck;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaContextFactory;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
- * Put this class as a Rule in test to obtain a new isolated db for each test.
- * <p/>
- * Here is a simple example of usage :
- * <pre>
- * public class MyTest {
- *
- * \@Rule
- * public final TopiaDatabase db = new TopiaDatabase();
- *
- * \@Test
- * public void testMethod() throws TopiaException {
- *
- * TopiaContext tx = db.beginTransaction();
- * ...
- * }
- * </pre>
- * The db created will be unique for each test method (and for each build also).
- * <p/>
- * You don't need to close any transaction, it will be done for you and the end
- * of each method test.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.6.8
- */
-public abstract class TopiaDatabase extends TestWatcher {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(TopiaDatabase.class);
-
- /** A time-stamp, allow to make multiple build and keep the tests data. */
- public static final String TIMESTAMP = String.valueOf(System.nanoTime());
-
- private File testBasedir;
-
- private Properties dbConfiguration;
-
- private TopiaContext rootCtxt;
-
- private Description description;
-
- private final String configurationPath;
-
- private final String classifier;
-
- protected TopiaDatabase(String configurationPath, String classifier) {
- this.configurationPath = configurationPath;
- this.classifier = classifier;
- }
-
- public TopiaDatabase(String configurationPath) {
- this(configurationPath, "");
- }
-
- /**
- * Obtain all types persisted in this db.
- *
- * @return all persisted types in this db.
- * @since 3.0
- */
- protected abstract Class<? extends TopiaEntity>[] getImplementationClasses();
-
- @Override
- protected void starting(Description description) {
-
- this.description=description;
-
- // get test directory
- testBasedir = getTestSpecificDirectory(
- description.getTestClass(),
- description.getMethodName(),
- classifier);
-
- if (log.isDebugEnabled()) {
- log.debug("testBasedir = " + testBasedir);
- }
-
- // create the root context
- try {
-
- dbConfiguration = new Properties();
- InputStream stream =
- getClass().getResourceAsStream(configurationPath);
-
- try {
- dbConfiguration.load(stream);
- } finally {
- stream.close();
- }
- dbConfiguration.setProperty(
- TopiaContextFactory.CONFIG_PERSISTENCE_CLASSES,
- getImplementationClassesAsString());
-
- // make sure we always use a different directory
-
- String dbPath = new File(testBasedir, "db").getAbsolutePath();
-
- String jdbcUrl = "jdbc:h2:file:" + dbPath;
-
- if (log.isInfoEnabled()) {
- log.info("Use " + jdbcUrl);
- }
-
- dbConfiguration.setProperty(
- TopiaContextFactory.CONFIG_URL, jdbcUrl);
-
- onDbConfigurationCreate(dbConfiguration, testBasedir, dbPath);
-
- rootCtxt = TopiaContextFactory.getContext(dbConfiguration);
- } catch (Exception e) {
- throw new IllegalStateException(
- "Could not start db at " + testBasedir, e);
- }
- }
-
- @Override
- public void finished(Description description) {
-
- if (rootCtxt != null && !rootCtxt.isClosed()) {
- try {
- rootCtxt.closeContext();
- } catch (TopiaException e) {
- if (log.isErrorEnabled()) {
- log.error("Could not close topia root context", e);
- }
- }
- }
- rootCtxt = null;
- dbConfiguration = null;
- }
-
- public File getTestBasedir() {
- return testBasedir;
- }
-
- public TopiaContext getRootCtxt() {
- return rootCtxt;
- }
-
- public Properties getDbConfiguration() {
- return dbConfiguration;
- }
-
- public TopiaContext beginTransaction() throws TopiaException {
- return rootCtxt.beginTransaction();
- }
-
- public Description getDescription() {
- return description;
- }
-
- protected void onDbConfigurationCreate(Properties configuration,
- File testDir,
- String dbPath) {
-
- }
-
- protected final String getImplementationClassesAsString() {
- StringBuilder buffer = new StringBuilder();
- for (Class<? extends TopiaEntity> aClass : getImplementationClasses()) {
- buffer.append(',').append(aClass.getName());
- }
- return buffer.substring(1);
- }
-
- public static File getTestSpecificDirectory(Class<?> testClassName,
- String methodName) {
- return getTestSpecificDirectory(testClassName, methodName, "");
- }
-
- public static File getTestSpecificDirectory(Class<?> testClassName,
- String methodName,
- String classifier) {
- // Trying to look for the temporary folder to store data for the test
- String tempDirPath = System.getProperty("java.io.tmpdir");
- if (tempDirPath == null) {
- // can this really occur ?
- tempDirPath = "";
- if (log.isWarnEnabled()) {
- log.warn("'\"java.io.tmpdir\" not defined");
- }
- }
- File tempDirFile = new File(tempDirPath);
-
- // create the directory to store database data
- String dataBasePath = testClassName.getName()
- + File.separator // a directory with the test class name
- + methodName; // a sub-directory with the method name
-
- if (StringUtils.isNotBlank(classifier)) {
- dataBasePath += classifier;
- }
- dataBasePath += '_'
- + TIMESTAMP; // and a timestamp
- File databaseFile = new File(tempDirFile, dataBasePath);
- return databaseFile;
- }
-}
-
1
0
r2574 - in trunk: topia-persistence/src/main/java/org/nuiton/topia topia-persistence/src/main/java/org/nuiton/topia/framework topia-persistence/src/main/java/org/nuiton/topia/persistence topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence
by athimel@users.nuiton.org 01 Jun '12
by athimel@users.nuiton.org 01 Jun '12
01 Jun '12
Author: athimel
Date: 2012-06-01 18:02:06 +0200 (Fri, 01 Jun 2012)
New Revision: 2574
Url: http://nuiton.org/repositories/revision/topia/2574
Log:
fixes #2119 for ToPIA3 : Add TopiaContext#findUnique and its tests
Added:
trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence/TopiaContextFindTest.java
Modified:
trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceException.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2012-06-01 15:53:41 UTC (rev 2573)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2012-06-01 16:02:06 UTC (rev 2574)
@@ -37,6 +37,7 @@
import org.nuiton.topia.framework.TopiaSQLWork;
import org.nuiton.topia.framework.TopiaService;
import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.TopiaPersistenceException;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -388,6 +389,25 @@
throws TopiaException;
/**
+ * Allow to do some JPA-QL query and return an unique result. If nothing if
+ * found by the query, will return null. If more than one result is found,
+ * will throw an exception.
+ * <p/>
+ * WARNING : Depending on the registered service, this method may not
+ * support something else than queries on TopiaEntity
+ *
+ * @param jpaql the JPA-QL query to execute
+ * @param paramNamesAndValues an array of query parameters based on
+ * [key,value,key,value,...]
+ * @return The result instance or null
+ * @throws TopiaException for any error during querying
+ * @throws TopiaPersistenceException if the the query returns more than one
+ * result.
+ */
+ Object findUnique(String jpaql, Object... paramNamesAndValues)
+ throws TopiaException;
+
+ /**
* Execute JPA-QL operation on data (Update, Delete).
*
* @param jpaql the JPA-QL query to execute
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 15:53:41 UTC (rev 2573)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 16:02:06 UTC (rev 2574)
@@ -42,6 +42,7 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaContextFactory;
import org.nuiton.topia.TopiaContextIllegalStateException;
+import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaImportExportException;
import org.nuiton.topia.TopiaMisconfigurationException;
import org.nuiton.topia.TopiaNotFoundException;
@@ -889,8 +890,7 @@
}
@Override
- public List<?> find(String jpaql, int startIndex, int endIndex, Object... paramNamesAndValues)
- {
+ public List<?> find(String jpaql, int startIndex, int endIndex, Object... paramNamesAndValues) {
checkClosed("find");
try {
@@ -920,6 +920,27 @@
}
@Override
+ public Object findUnique(String jpaql, Object... paramNamesAndValues) {
+ checkClosed("findUnique");
+
+ List<?> results = find(jpaql, 0, 1, paramNamesAndValues);
+
+ // If there is more than 1 result, throw an exception
+ if (results.size() > 1) {
+ String message = String.format(
+ "Query '%s' returns more than 1 unique result", jpaql);
+ throw new TopiaPersistenceException(message);
+ }
+
+ // otherwise return the first one, or null
+ Object result = null;
+ if (!results.isEmpty()) {
+ result = results.get(0);
+ }
+ return result;
+ }
+
+ @Override
public int execute(String jpaql, Object... paramNamesAndValues) {
checkClosed("execute");
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceException.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceException.java 2012-06-01 15:53:41 UTC (rev 2573)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaPersistenceException.java 2012-06-01 16:02:06 UTC (rev 2574)
@@ -38,6 +38,10 @@
private static final long serialVersionUID = 7431698657423221049L;
+ public TopiaPersistenceException(String message) {
+ super(message);
+ }
+
public TopiaPersistenceException(String message, PersistenceException cause) {
super(message, cause);
}
Added: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence/TopiaContextFindTest.java
===================================================================
--- trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence/TopiaContextFindTest.java (rev 0)
+++ trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence/TopiaContextFindTest.java 2012-06-01 16:02:06 UTC (rev 2574)
@@ -0,0 +1,162 @@
+/*
+ * #%L
+ * ToPIA :: Persistence :: Test Compatibility Kit
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2012 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.topia.tck.it.persistence;
+
+import junit.framework.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.persistence.TopiaPersistenceException;
+import org.nuiton.topia.tck.TopiaDatabase;
+import org.nuiton.topia.tck.it.Address;
+import org.nuiton.topia.tck.it.AddressDAO;
+import org.nuiton.topia.tck.it.Gender;
+import org.nuiton.topia.tck.it.Personne;
+import org.nuiton.topia.tck.it.PersonneDAO;
+import org.nuiton.topia.tck.it.TopiaDatabaseIt;
+import org.nuiton.topia.tck.it.TopiaTckItDAOHelper;
+
+import java.util.List;
+
+/**
+ * Tests the TopiaContext#find|findAll|findUnique methods
+ *
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
+ */
+public class TopiaContextFindTest {
+
+ @Rule
+ public final TopiaDatabase db = new TopiaDatabaseIt();
+
+ protected TopiaContext context;
+ protected AddressDAO addressDAO;
+ protected PersonneDAO personneDAO;
+ protected Address address;
+
+ @Before
+ public void createCompanies() {
+ context = db.beginTransaction();
+ personneDAO = TopiaTckItDAOHelper.getPersonneDAO(context);
+ addressDAO = TopiaTckItDAOHelper.getAddressDAO(context);
+
+ address = addressDAO.create(
+ Address.PROPERTY_ADRESS, "17 rue de la Pote Gellée, 44200 NANTES");
+
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Arnaud",
+ Personne.PROPERTY_GENDER, Gender.MALE);
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Charlotte",
+ Personne.PROPERTY_GENDER, Gender.FEMALE);
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Hortense",
+ Personne.PROPERTY_GENDER, Gender.FEMALE);
+ context.commitTransaction();
+ }
+
+ @Test
+ public void testFindDAO() {
+ Assert.assertEquals(3, personneDAO.count());
+
+ Assert.assertEquals(2, personneDAO.findAllByGender(Gender.FEMALE).size());
+ Assert.assertNotNull(personneDAO.findByGender(Gender.FEMALE));
+ Assert.assertNotNull(personneDAO.findByGender(Gender.MALE));
+ Assert.assertNull(personneDAO.findByGender(null));
+
+ Assert.assertEquals(0, personneDAO.findAllByName("nobody").size());
+ }
+
+ @Test
+ public void testFindAll() {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ List females = context.findAll(query, "g", Gender.FEMALE);
+ Assert.assertEquals(2, females.size());
+
+ List males = context.findAll(query, "g", Gender.MALE);
+ Assert.assertEquals(1, males.size());
+
+ List all = context.findAll("from " + Personne.class.getName());
+ Assert.assertEquals(3, all.size());
+
+ List none = context.findAll("from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_NAME + "=:pax", "pax", "nobody");
+ Assert.assertEquals(0, none.size());
+ }
+
+ @Test
+ public void testFind() {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ List females = context.find(query, 0, 100, "g", Gender.FEMALE);
+ Assert.assertEquals(2, females.size());
+
+ females = context.find(query, 0, 0, "g", Gender.FEMALE);
+ Assert.assertEquals(1, females.size());
+ Personne charlotte = (Personne)females.get(0);
+
+ females = context.find(query, 1, 1, "g", Gender.FEMALE);
+ Assert.assertEquals(1, females.size());
+ Personne hortense = (Personne)females.get(0);
+
+ Assert.assertFalse(hortense.equals(charlotte));
+
+ females = context.find(query, 0, -1, "g", Gender.FEMALE);
+ Assert.assertEquals(2, females.size());
+ }
+
+ @Test
+ public void testFindUnique() {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ Object male = context.findUnique(query, "g", Gender.MALE);
+ Assert.assertNotNull(male);
+
+ Object none = context.findUnique("from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_NAME + "=:pax", "pax", "nobody");
+ Assert.assertNull(none);
+ }
+
+ @Test(expected = TopiaPersistenceException.class)
+ public void testFindUniqueOutOfBounds() {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ Object female = context.findUnique(query, "g", Gender.FEMALE);
+ Assert.assertNotNull(female);
+ }
+
+}
Property changes on: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/persistence/TopiaContextFindTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r2573 - in branches/topia-2.6-maintenance/topia-persistence/src: main/java/org/nuiton/topia main/java/org/nuiton/topia/framework test/java/org/nuiton/topia/persistence
by athimel@users.nuiton.org 01 Jun '12
by athimel@users.nuiton.org 01 Jun '12
01 Jun '12
Author: athimel
Date: 2012-06-01 17:53:41 +0200 (Fri, 01 Jun 2012)
New Revision: 2573
Url: http://nuiton.org/repositories/revision/topia/2573
Log:
fixes #2119 Add TopiaContext#findUnique and its tests
Added:
branches/topia-2.6-maintenance/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaContextFindTest.java
Modified:
branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java
branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
Modified: branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java
===================================================================
--- branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2012-06-01 14:20:08 UTC (rev 2572)
+++ branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/TopiaContext.java 2012-06-01 15:53:41 UTC (rev 2573)
@@ -221,6 +221,24 @@
throws TopiaException;
/**
+ * Allow to do some HQL query and return an unique result. If nothing if
+ * found by the query, will return null. If more than one result is found,
+ * will throw an exception.
+ * <p/>
+ * WARNING : Depending on the registered service, this method may not
+ * support something else than queries on TopiaEntity
+ *
+ * @param jpaql the JPA-QL query to execute
+ * @param paramNamesAndValues an array of query parameters based on
+ * [key,value,key,value,...]
+ * @return The result instance or null
+ * @throws TopiaException for any error during querying or if the the query
+ * returns more than one result.
+ */
+ Object findUnique(String jpaql, Object... paramNamesAndValues)
+ throws TopiaException;
+
+ /**
* Execute HQL operation on data (Update, Delete).
*
* @param hql la requete a faire
Modified: branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
===================================================================
--- branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 14:20:08 UTC (rev 2572)
+++ branches/topia-2.6-maintenance/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 15:53:41 UTC (rev 2573)
@@ -1050,6 +1050,29 @@
}
}
+ @Override
+ public Object findUnique(String hql, Object... paramNamesAndValues)
+ throws TopiaException {
+ checkClosed(_("topia.persistence.error.unsupported.operation.on.closed.context",
+ "findUnique"));
+
+ List<?> results = find(hql, 0, 1, paramNamesAndValues);
+
+ // If there is more than 1 result, throw an exception
+ if (results.size() > 1) {
+ String message = String.format(
+ "Query '%s' returns more than 1 unique result", hql);
+ throw new TopiaException(message);
+ }
+
+ // otherwise return the first one, or null
+ Object result = null;
+ if (!results.isEmpty()) {
+ result = results.get(0);
+ }
+ return result;
+ }
+
/**
* Execute HQL operation on data (Update, Delete)
*
Added: branches/topia-2.6-maintenance/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaContextFindTest.java
===================================================================
--- branches/topia-2.6-maintenance/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaContextFindTest.java (rev 0)
+++ branches/topia-2.6-maintenance/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaContextFindTest.java 2012-06-01 15:53:41 UTC (rev 2573)
@@ -0,0 +1,162 @@
+/*
+ * #%L
+ * ToPIA :: Persistence :: Test Compatibility Kit
+ * $Id: IsPersistentTest.java 2570 2012-05-31 10:46:40Z athimel $
+ * $HeadURL: http://svn.nuiton.org/svn/topia/trunk/topia-persistence-tck/src/test/java/o… $
+ * %%
+ * Copyright (C) 2004 - 2012 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.topia.persistence;
+
+import junit.framework.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaDatabase;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaTestDAOHelper;
+import org.nuiton.topiatest.Address;
+import org.nuiton.topiatest.AddressDAO;
+import org.nuiton.topiatest.Gender;
+import org.nuiton.topiatest.Personne;
+import org.nuiton.topiatest.PersonneDAO;
+
+import java.util.List;
+
+/**
+ * Tests the TopiaContext#find|findAll|findUnique methods
+ *
+ * @author Arnaud Thimel <thimel(a)codelutin.com>
+ */
+public class TopiaContextFindTest {
+
+ @Rule
+ public final TopiaDatabase db = new TopiaDatabase();
+
+ protected TopiaContext context;
+ protected AddressDAO addressDAO;
+ protected PersonneDAO personneDAO;
+ protected Address address;
+
+ @Before
+ public void createCompanies() throws TopiaException {
+ context = db.beginTransaction();
+ personneDAO = TopiaTestDAOHelper.getPersonneDAO(context);
+ addressDAO = TopiaTestDAOHelper.getAddressDAO(context);
+
+ address = addressDAO.create(
+ Address.PROPERTY_ADRESS, "17 rue de la Pote Gellée, 44200 NANTES");
+
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Arnaud",
+ Personne.PROPERTY_GENDER, Gender.MALE);
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Charlotte",
+ Personne.PROPERTY_GENDER, Gender.FEMALE);
+ personneDAO.create(
+ Personne.PROPERTY_NAME, "Hortense",
+ Personne.PROPERTY_GENDER, Gender.FEMALE);
+ context.commitTransaction();
+ }
+
+ @Test
+ public void testFindDAO() throws TopiaException {
+ Assert.assertEquals(3, personneDAO.count());
+
+ Assert.assertEquals(2, personneDAO.findAllByGender(Gender.FEMALE).size());
+ Assert.assertNotNull(personneDAO.findByGender(Gender.FEMALE));
+ Assert.assertNotNull(personneDAO.findByGender(Gender.MALE));
+ Assert.assertNull(personneDAO.findByGender(null));
+
+ Assert.assertEquals(0, personneDAO.findAllByName("nobody").size());
+ }
+
+ @Test
+ public void testFindAll() throws TopiaException {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ List females = context.findAll(query, "g", Gender.FEMALE);
+ Assert.assertEquals(2, females.size());
+
+ List males = context.findAll(query, "g", Gender.MALE);
+ Assert.assertEquals(1, males.size());
+
+ List all = context.findAll("from " + Personne.class.getName());
+ Assert.assertEquals(3, all.size());
+
+ List none = context.findAll("from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_NAME + "=:pax", "pax", "nobody");
+ Assert.assertEquals(0, none.size());
+ }
+
+ @Test
+ public void testFind() throws TopiaException {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ List females = context.find(query, 0, 100, "g", Gender.FEMALE);
+ Assert.assertEquals(2, females.size());
+
+ females = context.find(query, 0, 0, "g", Gender.FEMALE);
+ Assert.assertEquals(1, females.size());
+ Personne charlotte = (Personne)females.get(0);
+
+ females = context.find(query, 1, 1, "g", Gender.FEMALE);
+ Assert.assertEquals(1, females.size());
+ Personne hortense = (Personne)females.get(0);
+
+ Assert.assertFalse(hortense.equals(charlotte));
+
+ // endIndex = -1 not supported in ToPIA 2.6, wait for 3.0
+// females = context.find(query, 0, -1, "g", Gender.FEMALE);
+// Assert.assertEquals(2, females.size());
+ }
+
+ @Test
+ public void testFindUnique() throws TopiaException {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ Object male = context.findUnique(query, "g", Gender.MALE);
+ Assert.assertNotNull(male);
+
+ Object none = context.findUnique("from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_NAME + "=:pax", "pax", "nobody");
+ Assert.assertNull(none);
+ }
+
+ @Test(expected = TopiaException.class)
+ public void testFindUniqueOutOfBounds() throws TopiaException {
+ Assert.assertEquals(3, personneDAO.count());
+
+ String query = "from " + Personne.class.getName() +
+ " where " + Personne.PROPERTY_GENDER + "=:g";
+
+ Object female = context.findUnique(query, "g", Gender.FEMALE);
+ Assert.assertNotNull(female);
+ }
+
+}
1
0
01 Jun '12
Author: athimel
Date: 2012-06-01 16:20:08 +0200 (Fri, 01 Jun 2012)
New Revision: 2572
Url: http://nuiton.org/repositories/revision/topia/2572
Log:
fixes #2078 Remove the TopiaContext from TopiaEntityAbstract.
Use a tag-value on an entity (not yet model) : contextable=true
EntityTransformer will generate TopiaContext relevant methods impl in XXXAbstract.
XXXEntity#getComposite() was already deprecated, but now throws an UnsupportedOperationException is the entity is not TopiaEntityContextable.
Unfortunatly, there is no other way to get the TopiaContext if the entity is not TopiaEntityContextable, thus TopiaFiresSupport may throw an exception if the entity is not assignable from it.
Apply Eugene#107 : Remove attribute and use enum modifiers.
Modified:
trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java
trunk/topia-persistence-tck/src/main/xmi/topia-tck-it.zargo
trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/events/VetoableEventTest.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BinderHelperTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DTOTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ServiceTransformer.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java
trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java
trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaContextImpl.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -754,7 +754,7 @@
@Override
public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) {
- getFiresSupport().addTopiaEntityVetoable(TopiaEntity.class, vetoable);
+ getFiresSupport().addTopiaEntityVetoable(vetoable);
}
@Override
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaFiresSupport.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -42,7 +42,7 @@
import org.nuiton.topia.event.TopiaTransactionListener;
import org.nuiton.topia.event.TopiaTransactionVetoable;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaEntityAbstract;
+import org.nuiton.topia.persistence.TopiaEntityContextable;
import org.nuiton.util.CategorisedListenerSet;
import org.nuiton.util.ListenerSet;
@@ -576,23 +576,22 @@
return result;
}
- private void attachContext(Object entity,
- TopiaContextImplementor context) {
- if (entity instanceof TopiaEntityAbstract) {
- TopiaEntityAbstract entityAbstract = (TopiaEntityAbstract) entity;
- if (entityAbstract.getTopiaContext() == null) {
- try {
- entityAbstract.setTopiaContext(context);
- } catch (TopiaException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Impossible d'initialiser le TopiaContext"
- + " sur cette entité : " + entityAbstract,
- eee);
- }
- }
- }
- }
- }
+// private void attachContext(Object entity,
+// TopiaContextImplementor context) {
+// if (entity instanceof TopiaEntityContextable) {
+// TopiaEntityContextable contextable = (TopiaEntityContextable)entity;
+// if (contextable.getTopiaContext() == null) {
+// try {
+// contextable.setTopiaContext(context);
+// } catch (TopiaException eee) {
+// if (log.isWarnEnabled()) {
+// log.warn("Impossible d'initialiser le TopiaContext"
+// + " sur cette entité : " + entity, eee);
+// }
+// }
+// }
+// }
+// }
/* Création */
//
@@ -913,12 +912,21 @@
/* Adders */
public void addTopiaEntityListener(TopiaEntityListener listener) {
- addTopiaEntityListener(TopiaEntity.class, listener);
+// addTopiaEntityListener(TopiaEntity.class, listener);
+ // XXX AThimel 01/06/2012 Throw exception on runtime for the moment to avoid breaking signatures
+ // XXX AThimel 01/06/2012 This is because the underlying implementation cannot get the TopiaContext when the entity is not contextable
+ throw new UnsupportedOperationException("Method is not supported in this version, please use #addTopiaEntityListener(TopiaEntityContextable.class, listener);");
}
public void addTopiaEntityListener(
Class<? extends TopiaEntity> entityClass,
TopiaEntityListener listener) {
+ // XXX AThimel 01/06/2012 Throw exception on runtime for the moment to avoid breaking signatures
+ // XXX AThimel 01/06/2012 This is because the underlying implementation cannot get the TopiaContext when the entity is not contextable
+ if (!TopiaEntityContextable.class.isAssignableFrom(entityClass)) {
+ throw new IllegalStateException(
+ "Entity is not a TopiaEntityContextable : " + entityClass.getName());
+ }
if (listener == null) {
throw new NullPointerException("Listener can not be null.");
}
@@ -926,12 +934,21 @@
}
public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) {
- addTopiaEntityVetoable(TopiaEntity.class, vetoable);
+// addTopiaEntityVetoable(TopiaEntity.class, vetoable);
+ // XXX AThimel 01/06/2012 Throw exception on runtime for the moment to avoid breaking signatures
+ // XXX AThimel 01/06/2012 This is because the underlying implementation cannot get the TopiaContext when the entity is not contextable
+ throw new UnsupportedOperationException("Method is not supported in this version, please use #addTopiaEntityVetoable(TopiaEntityContextable.class, vetoable);");
}
public void addTopiaEntityVetoable(
Class<? extends TopiaEntity> entityClass,
TopiaEntityVetoable vetoable) {
+ // XXX AThimel 01/06/2012 Throw exception on runtime for the moment to avoid breaking signatures
+ // XXX AThimel 01/06/2012 This is because the underlying implementation cannot get the TopiaContext when the entity is not contextable
+ if (!TopiaEntityContextable.class.isAssignableFrom(entityClass)) {
+ throw new IllegalStateException(
+ "Entity is not a TopiaEntityContextable : " + entityClass.getName());
+ }
if (vetoable == null) {
throw new NullPointerException("Listener can not be null.");
}
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BinderHelperTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BinderHelperTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BinderHelperTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -93,8 +93,8 @@
op = addOperation(resultClass,
"getTopiaBinder",
"<E extends TopiaEntity> TopiaEntityBinder<E>",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "Class<E>", "entityClass");
addParameter(op, "String", "contextName");
setOperationBody(op, ""
@@ -106,8 +106,8 @@
op = addOperation(resultClass,
"getSimpleTopiaBinder",
"<E extends TopiaEntity> TopiaEntityBinder<E>",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "Class<E>", "entityClass");
setOperationBody(op, ""
/*{
@@ -118,8 +118,8 @@
op = addOperation(resultClass,
"registerTopiaBinder",
"void",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "BinderModelBuilder", "builder");
addParameter(op, "String", "contextName");
setOperationBody(op, ""
@@ -131,8 +131,8 @@
op = addOperation(resultClass,
"registerTopiaBinder",
"<E extends TopiaEntity> TopiaEntityBinder<E>",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "Class<E>", "entityClass");
addParameter(op, "BinderModelBuilder", "builder");
addParameter(op, "String", "contextName");
@@ -146,8 +146,8 @@
op = addOperation(resultClass,
"copy",
"<E extends TopiaEntity> void",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "String", "contextName");
addParameter(op, "E", "source");
addParameter(op, "E", "target");
@@ -166,8 +166,8 @@
op = addOperation(resultClass,
"simpleCopy",
"<E extends TopiaEntity> void",
- ObjectModelModifier.PUBLIC,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC,
+ ObjectModelJavaModifier.STATIC);
addParameter(op, "E", "source");
addParameter(op, "E", "target");
addParameter(op, "boolean", "tech");
@@ -202,10 +202,10 @@
}
- op = addOperation(resultClass, "initBinders", "void", ObjectModelModifier.PROTECTED, ObjectModelModifier.STATIC);
+ op = addOperation(resultClass, "initBinders", "void", ObjectModelJavaModifier.PROTECTED, ObjectModelJavaModifier.STATIC);
setOperationBody(op, initCode.toString());
- op = addOperation(resultClass, null, (String) null, ObjectModelModifier.STATIC);
+ op = addOperation(resultClass, null, (String) null, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
initBinders();
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -156,13 +156,13 @@
// add non public constructor
ObjectModelOperation constructor =
- addConstructor(daoHelper, ObjectModelModifier.PROTECTED);
+ addConstructor(daoHelper, ObjectModelJavaModifier.PROTECTED);
setOperationBody(constructor," ");
ObjectModelOperation op;
// getModelVersion method
- op = addOperation(daoHelper, "getModelVersion", "String", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getModelVersion", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
return "<%=modelVersion%>";
@@ -170,7 +170,7 @@
);
// getModelName method
- op = addOperation(daoHelper, "getModelName", "String", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getModelName", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
return "<%=modelName%>";
@@ -183,7 +183,7 @@
String daoClazzName = clazzName + "DAO";
// specialized getXXXDao method
- op = addOperation(daoHelper, "get" + daoClazzName, clazz.getPackageName() + '.' + daoClazzName, ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "get" + daoClazzName, clazz.getPackageName() + '.' + daoClazzName, ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op, TopiaContext.class, "context");
addImport(daoHelper, clazz);
addException(op, TopiaException.class);
@@ -198,7 +198,7 @@
}
// generic getDao method
- op = addOperation(daoHelper, "getDAO", "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getDAO", "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op, TopiaContext.class, "context");
addParameter(op, "Class<T>", "klass");
addException(op, TopiaException.class);
@@ -211,7 +211,7 @@
}*/
);
- op = addOperation(daoHelper, "getDAO", "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getDAO", "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op, TopiaContext.class, "context");
addParameter(op, "T", "entity");
addException(op, TopiaException.class);
@@ -225,7 +225,7 @@
);
// getContractClass method
- op = addOperation(daoHelper, "getContractClass", "<T extends TopiaEntity> Class<T>", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getContractClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
@@ -235,7 +235,7 @@
);
// getImplementationClass method
- op = addOperation(daoHelper, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getImplementationClass", "<T extends TopiaEntity> Class<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op, "Class<T>", "klass");
setOperationBody(op, ""
/*{
@@ -245,7 +245,7 @@
);
// getContractClasses method
- op = addOperation(daoHelper, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getContractClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
<%=entityEnumName%>[] values = <%=entityEnumName%>.values();
@@ -258,7 +258,7 @@
);
// getImplementationClasses method
- op = addOperation(daoHelper, "getImplementationClasses", "Class<? extends TopiaEntity>[]", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getImplementationClasses", "Class<? extends TopiaEntity>[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
<%=entityEnumName%>[] values = <%=entityEnumName%>.values();
@@ -271,7 +271,7 @@
);
// getImplementationClassesAsString method
- op = addOperation(daoHelper, "getImplementationClassesAsString", "String", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getImplementationClassesAsString", "String", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
StringBuilder buffer = new StringBuilder();
@@ -283,7 +283,7 @@
);
// getContracts method
- op = addOperation(daoHelper, "getContracts", entityEnumName+"[]", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getContracts", entityEnumName+"[]", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(op, ""
/*{
return <%=entityEnumName%>.values();
@@ -292,7 +292,7 @@
if (generateOperator) {
// getOperator method
- op = addOperation(daoHelper, "getOperator", "<T extends TopiaEntity> EntityOperator<T>", ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ op = addOperation(daoHelper, "getOperator", "<T extends TopiaEntity> EntityOperator<T>", ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(op,"Class<T>","klass");
setOperationBody(op, ""
/*{
@@ -367,7 +367,7 @@
attr.setDocumentation("The array of not null properties of the entity.");
// constructor
- op = addConstructor(entityEnum, ObjectModelModifier.PACKAGE);
+ op = addConstructor(entityEnum, ObjectModelJavaModifier.PACKAGE);
addParameter(op,"Class<? extends TopiaEntity >","contract");
addParameter(op,"String[]","notNulls");
addParameter(op,"String...","naturalIds");
@@ -381,7 +381,7 @@
);
// getContract method
- op = addOperation(entityEnum, "getContract", "Class<? extends TopiaEntity>", ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "getContract", "Class<? extends TopiaEntity>", ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -390,7 +390,7 @@
);
// getNaturalIds method
- op = addOperation(entityEnum, "getNaturalIds", "String[]", ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "getNaturalIds", "String[]", ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -399,7 +399,7 @@
);
// isUseNaturalIds method
- op = addOperation(entityEnum, "isUseNaturalIds", "boolean", ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "isUseNaturalIds", "boolean", ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -408,7 +408,7 @@
);
// getNotNulls method
- op = addOperation(entityEnum, "getNotNulls", "String[]", ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "getNotNulls", "String[]", ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -417,7 +417,7 @@
);
// isUseNotNulls method
- op = addOperation(entityEnum, "isUseNotNulls", "boolean", ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "isUseNotNulls", "boolean", ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -426,7 +426,7 @@
);
// getImplementationFQN method
- op = addOperation(entityEnum, "getImplementationFQN","String",ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "getImplementationFQN","String",ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -435,7 +435,7 @@
);
// setImplementationFQN method
- op = addOperation(entityEnum, "setImplementationFQN","void",ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "setImplementationFQN","void",ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
addParameter(op,"String","implementationFQN");
if (generateOperator) {
@@ -457,7 +457,7 @@
}
// accept method
- op = addOperation(entityEnum, "accept","boolean",ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "accept","boolean",ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
addParameter(op,"Class<? extends TopiaEntity>","klass");
setOperationBody(op, ""
@@ -467,7 +467,7 @@
);
// getImplementation method
- op = addOperation(entityEnum, "getImplementation","Class<? extends TopiaEntity>",ObjectModelModifier.PUBLIC);
+ op = addOperation(entityEnum, "getImplementation","Class<? extends TopiaEntity>",ObjectModelJavaModifier.PUBLIC);
addAnnotation(entityEnum,op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -483,7 +483,7 @@
);
// valueOf method
- op = addOperation(entityEnum, "valueOf", entityEnumName, ObjectModelModifier.PUBLIC,ObjectModelModifier.STATIC);
+ op = addOperation(entityEnum, "valueOf", entityEnumName, ObjectModelJavaModifier.PUBLIC,ObjectModelJavaModifier.STATIC);
addParameter(op,"TopiaEntity","entity");
setOperationBody(op, ""
/*{
@@ -492,7 +492,7 @@
);
// valueOf method
- op = addOperation(entityEnum, "valueOf", entityEnumName, ObjectModelModifier.PUBLIC,ObjectModelModifier.STATIC);
+ op = addOperation(entityEnum, "valueOf", entityEnumName, ObjectModelJavaModifier.PUBLIC,ObjectModelJavaModifier.STATIC);
addParameter(op,"Class<?>","klass");
setOperationBody(op, ""
/*{
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DTOTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DTOTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DTOTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -102,10 +102,10 @@
String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model);
if (StringUtils.isNotEmpty(svUID)) {
- addAttribute(result, "serialVersionUID", long.class, svUID, ObjectModelModifier.FINAL, ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ addAttribute(result, "serialVersionUID", long.class, svUID, ObjectModelJavaModifier.FINAL, ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
}
- addAttribute(result, "p", PropertyChangeSupport.class, null, ObjectModelModifier.PROTECTED);
+ addAttribute(result, "p", PropertyChangeSupport.class, null, ObjectModelJavaModifier.PROTECTED);
/*
* Définition des attributs
@@ -171,7 +171,7 @@
}
}
- attr2 = addAttribute(result, attributeName, attributeType, null, ObjectModelModifier.PROTECTED);
+ attr2 = addAttribute(result, attributeName, attributeType, null, ObjectModelJavaModifier.PROTECTED);
if (attr2 != null) {
if (TopiaGeneratorUtil.hasDocumentation(attr)) {
@@ -204,7 +204,7 @@
protected void addOperations(ObjectModelClass result, ObjectModelClass clazz) {
ObjectModelOperation op;
- op = addOperation(result, "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "addPropertyChangeListener", "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, PropertyChangeListener.class, "listener");
setOperationBody(op, ""
/*{
@@ -212,7 +212,7 @@
}*/
);
- op = addOperation(result, "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "addPropertyChangeListener", "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, String.class, "propertyName");
addParameter(op, PropertyChangeListener.class, "listener");
setOperationBody(op, ""
@@ -221,7 +221,7 @@
}*/
);
- op = addOperation(result, "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "removePropertyChangeListener", "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, PropertyChangeListener.class, "listener");
setOperationBody(op, ""
/*{
@@ -229,7 +229,7 @@
}*/
);
- op = addOperation(result, "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "removePropertyChangeListener", "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, String.class, "propertyName");
addParameter(op, PropertyChangeListener.class, "listener");
setOperationBody(op, ""
@@ -258,7 +258,7 @@
if (!GeneratorUtil.isNMultiplicity(attr)) {
if (!attr.hasAssociationClass()) {
- op = addOperation(result, "set" + StringUtils.capitalize(attrName), "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "set" + StringUtils.capitalize(attrName), "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, attrTypeDTO, "value");
setOperationBody(op, ""
/*{
@@ -268,7 +268,7 @@
}*/
);
- op = addOperation(result, "get" + StringUtils.capitalize(attrName), attrTypeDTO, ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "get" + StringUtils.capitalize(attrName), attrTypeDTO, ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return <%=attrName%>;
@@ -281,7 +281,7 @@
if (log.isTraceEnabled()) {
log.trace("assocAttrName: " + assocAttrName);
}
- op = addOperation(result, "set" + StringUtils.capitalize(assocAttrName), "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "set" + StringUtils.capitalize(assocAttrName), "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, assocClassFQN + "DTO", "association");
setOperationBody(op, ""
/*{
@@ -291,7 +291,7 @@
}*/
);
- op = addOperation(result, "get" + StringUtils.capitalize(assocAttrName), assocClassFQN + "DTO", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "get" + StringUtils.capitalize(assocAttrName), assocClassFQN + "DTO", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>;
@@ -307,7 +307,7 @@
} else {
nMultType = Collection.class.getName() + "<" + attrTypeDTO + ">";
}
- op = addOperation(result, "set" + StringUtils.capitalize(attrName), "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "set" + StringUtils.capitalize(attrName), "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, nMultType, "values");
setOperationBody(op, ""
/*{
@@ -317,7 +317,7 @@
}*/
);
- op = addOperation(result, "addChild" + StringUtils.capitalize(attrName), attrTypeDTO, ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "addChild" + StringUtils.capitalize(attrName), attrTypeDTO, ObjectModelJavaModifier.PUBLIC);
addParameter(op, attrTypeDTO, attrName);
StringBuilder buffercode = new StringBuilder();
@@ -416,7 +416,7 @@
}
}
- op = addOperation(result, "toString", String.class, ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "toString", String.class, ObjectModelJavaModifier.PUBLIC);
StringBuilder buffer = new StringBuilder();
buffer.append(""
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -42,7 +42,7 @@
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelDependency;
import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
@@ -388,7 +388,7 @@
op = addOperation(daoAbstractClass,
"getEntityClass",
"Class<E>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addAnnotation(daoAbstractClass, op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -401,7 +401,7 @@
op = addOperation(daoAbstractClass,
"getTopiaEntityEnum",
entityEnumName,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addAnnotation(daoAbstractClass, op,Override.class.getSimpleName());
setOperationBody(op, ""
/*{
@@ -454,7 +454,7 @@
op = addOperation(daoAbstractClass,
"getRequestPermission",
"List<Permission>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
// setDocumentation(op, "Retourne les permissions a verifier pour " +
// "l'acces a l'entite pour le service Taas");
addException(op, TopiaException.class);
@@ -510,7 +510,7 @@
op = addOperation(daoAbstractClass,
"getRequestPermission",
"List<Permission>",
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
addParameter(op, String.class, "topiaId");
addParameter(op, int.class, "actions");
addParameter(op, String.class, "query");
@@ -662,7 +662,7 @@
if (body.length()>0) {
// something specific was done, need to generate the method
ObjectModelOperation op;
- op = addOperation(result, "delete", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "delete", "void", ObjectModelJavaModifier.PUBLIC);
addAnnotation(result, op,Override.class.getSimpleName());
addException(op, TopiaException.class);
addParameter(op, "E", "entity");
@@ -695,7 +695,7 @@
operation = addOperation(result,
"findUsages",
"<U extends TopiaEntity> List<U>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addParameter(operation, "Class<U>", "type");
addParameter(operation, "E", "entity");
@@ -710,7 +710,7 @@
operation = addOperation(result,
"findAllUsages",
"Map<Class<? extends TopiaEntity>, List<? extends TopiaEntity>>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addParameter(operation, "E", "entity");
addException(operation, TopiaException.class);
@@ -738,7 +738,7 @@
operation = addOperation(result,
"findUsages",
"<U extends TopiaEntity> List<U>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addParameter(operation, "Class<U>", "type");
addParameter(operation, "E", "entity");
@@ -821,7 +821,7 @@
operation = addOperation(result,
"findAllUsages",
"Map<Class<? extends TopiaEntity>, List<? extends TopiaEntity>>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addParameter(operation, "E", "entity");
addException(operation, TopiaException.class);
@@ -883,8 +883,8 @@
cloneOperation(op,
result,
true,
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.toValue(op.getVisibility())
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.fromVisibility(op.getVisibility())
);
}
}
@@ -956,7 +956,7 @@
op = addOperation(result,
getJavaBeanMethodName("findBy", attrName),
"E",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, attrType, "v");
setOperationBody(op, ""
@@ -969,7 +969,7 @@
op = addOperation(result,
getJavaBeanMethodName("findAllBy", attrName),
"List<E>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, attrType, "v");
setOperationBody(op, ""
@@ -985,7 +985,7 @@
op = addOperation(result,
getJavaBeanMethodName("findBy", assocClassName),
"E",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, assocClassFQN, "value");
setOperationBody(op, ""
@@ -998,7 +998,7 @@
op = addOperation(result,
getJavaBeanMethodName("findAllBy", assocClassName),
"List<E>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, assocClassFQN, "value");
setOperationBody(op, ""
@@ -1024,7 +1024,7 @@
op = addOperation(result,
getJavaBeanMethodName("findContains", attrName),
"E",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, attrType, "v");
setOperationBody(op, ""
@@ -1037,7 +1037,7 @@
op = addOperation(result,
getJavaBeanMethodName("findAllContains", attrName),
"List<E>",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
addParameter(op, attrType, "v");
setOperationBody(op, ""
@@ -1094,15 +1094,15 @@
log.debug("generateNaturalId for " + props);
}
ObjectModelOperation findByNaturalId = addOperation(result,
- "findByNaturalId", "E", ObjectModelModifier.PUBLIC);
+ "findByNaturalId", "E", ObjectModelJavaModifier.PUBLIC);
addException(findByNaturalId, TopiaException.class);
ObjectModelOperation existByNaturalId = addOperation(result,
- "existByNaturalId", "boolean", ObjectModelModifier.PUBLIC);
+ "existByNaturalId", "boolean", ObjectModelJavaModifier.PUBLIC);
addException(existByNaturalId, TopiaException.class);
ObjectModelOperation createByNaturalId = addOperation(result,
- "createByNaturalId", "E", ObjectModelModifier.PUBLIC);
+ "createByNaturalId", "E", ObjectModelJavaModifier.PUBLIC);
addException(createByNaturalId, TopiaException.class);
@@ -1159,7 +1159,7 @@
}
ObjectModelOperation createByNotNull = addOperation(result,
- "createByNotNull", "E", ObjectModelModifier.PUBLIC);
+ "createByNotNull", "E", ObjectModelJavaModifier.PUBLIC);
addException(createByNotNull, TopiaException.class);
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -33,7 +33,7 @@
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import java.beans.PropertyChangeListener;
@@ -100,7 +100,7 @@
String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model);
if (svUID != null) {
- addAttribute(result, "serialVersionUID", "long", svUID, ObjectModelModifier.FINAL, ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ addAttribute(result, "serialVersionUID", "long", svUID, ObjectModelJavaModifier.FINAL, ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
}
boolean generateDTOId = shouldGenerateDTOTopiaIdTagValue(clazz, model);
@@ -122,7 +122,7 @@
}
String attrVisibility = attr.getVisibility();
- ObjectModelModifier modifier = ObjectModelModifier.toValue(attrVisibility);
+ ObjectModelJavaModifier modifier = ObjectModelJavaModifier.fromVisibility(attrVisibility);
if (!attr.hasAssociationClass()) {
String attrType = attr.getType();
String attrName = attr.getName();
@@ -161,7 +161,7 @@
for (ObjectModelAttribute attr : assoc.getParticipantsAttributes()) {
if (attr != null) {
String attrVisibility = attr.getVisibility();
- ObjectModelModifier modifier = ObjectModelModifier.toValue(attrVisibility);
+ ObjectModelJavaModifier modifier = ObjectModelJavaModifier.fromVisibility(attrVisibility);
String attrType = attr.getType();
String attrName = attr.getName();
if (isEntity(attrType)) {
@@ -172,7 +172,7 @@
}
}
- addAttribute(result,"p", PropertyChangeSupport.class,"new PropertyChangeSupport(this)",ObjectModelModifier.PROTECTED,ObjectModelModifier.FINAL);
+ addAttribute(result,"p", PropertyChangeSupport.class,"new PropertyChangeSupport(this)",ObjectModelJavaModifier.PROTECTED,ObjectModelJavaModifier.FINAL);
}
protected void addOperations(ObjectModelClass result,ObjectModelClass clazz) {
@@ -180,7 +180,7 @@
boolean generateDTOId = shouldGenerateDTOTopiaIdTagValue(clazz, model);
ObjectModelOperation op;
if (generateDTOId) {
- op = addOperation(result, "setTopiaId", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "setTopiaId", "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, "String", "topiaId");
setOperationBody(op, ""
/*{
@@ -188,7 +188,7 @@
}*/
);
- op = addOperation(result, "getTopiaId", "String", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, "getTopiaId", "String", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return topiaId;
@@ -248,7 +248,7 @@
String setterName = getJavaBeanMethodName("set", attrName);
String getterName = getJavaBeanMethodName("get", attrName);
if (!GeneratorUtil.isNMultiplicity(attr)) {
- op = addOperation(result, setterName, "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, setterName, "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, attrType, "value");
setOperationBody(op, ""
/*{
@@ -258,7 +258,7 @@
}*/
);
- op = addOperation(result, getterName, attrType, ObjectModelModifier.PUBLIC);
+ op = addOperation(result, getterName, attrType, ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return <%=attrName%>;
@@ -267,7 +267,7 @@
} else {
- op = addOperation(result, setterName, "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, setterName, "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, attrType+"[]", "values");
setOperationBody(op, ""
/*{
@@ -277,7 +277,7 @@
}*/
);
- op = addOperation(result, getterName, attrType+"[]", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, getterName, attrType+"[]", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return <%=attrName%>;
@@ -291,7 +291,7 @@
String setterName = getJavaBeanMethodName("set", assocAttrName);
String getterName = getJavaBeanMethodName("get", assocAttrName);
if (!GeneratorUtil.isNMultiplicity(attr)) {
- op = addOperation(result, setterName, "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, setterName, "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, assocClassFQN + "DTO", "association");
setOperationBody(op, ""
/*{
@@ -301,7 +301,7 @@
}*/
);
- op = addOperation(result, getterName, assocClassFQN + "DTO", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, getterName, assocClassFQN + "DTO", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return <%=propertyName%>;
@@ -309,7 +309,7 @@
);
} else {
- op = addOperation(result, setterName, "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, setterName, "void", ObjectModelJavaModifier.PUBLIC);
addParameter(op, assocClassFQN + "DTO[]", "values");
setOperationBody(op, ""
/*{
@@ -319,7 +319,7 @@
}*/
);
- op = addOperation(result, getterName, assocClassFQN + "DTO[]", ObjectModelModifier.PUBLIC);
+ op = addOperation(result, getterName, assocClassFQN + "DTO[]", ObjectModelJavaModifier.PUBLIC);
setOperationBody(op, ""
/*{
return this.<%=propertyName%>;
@@ -329,7 +329,7 @@
}
}
- op = addOperation(result,"toString",String.class, ObjectModelModifier.PUBLIC);
+ op = addOperation(result,"toString",String.class, ObjectModelJavaModifier.PUBLIC);
StringBuilder buffer = new StringBuilder();
buffer.append(""
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -35,9 +35,10 @@
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaContextImplementor;
import org.nuiton.topia.framework.TopiaUtil;
@@ -309,10 +310,17 @@
if (TopiaGeneratorUtil.isContextable(input)) {
interfaze = TopiaEntityContextable.class;
}
-
+
addInterface(interfaceAlreadyDone,
outputInterface,
interfaze);
+
+ } else if (TopiaGeneratorUtil.isContextable(input)) {
+ // Even if there is no need to implement TopiaEntity, it might be
+ // necessary to implement TopiaEntityContextable
+ addInterface(interfaceAlreadyDone,
+ outputInterface,
+ TopiaEntityContextable.class);
}
}
@@ -385,7 +393,7 @@
svUID = TopiaGeneratorUtil.generateSerialVersionUID(ouput) + "L";
}
addConstant(ouput, TopiaGeneratorUtil.SERIAL_VERSION_UID, long.class, svUID,
- ObjectModelModifier.PRIVATE);
+ ObjectModelJavaModifier.PRIVATE);
}
protected boolean isGenerateInterface(ObjectModelClass input) {
@@ -450,7 +458,7 @@
ObjectModelAttribute attribute = addAttribute(
outputAbstract,
naturalIdFieldName, naturalIdClassName, "new " + naturalIdClassName + "()",
- ObjectModelModifier.PROTECTED,ObjectModelModifier.FINAL
+ ObjectModelJavaModifier.PROTECTED, ObjectModelJavaModifier.FINAL
);
setDocumentation(attribute, "Clef métier de l'entité.");
@@ -459,7 +467,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, naturalIdGetterName,
- naturalIdClassName, ObjectModelModifier.PUBLIC);
+ naturalIdClassName, ObjectModelJavaModifier.PUBLIC);
// Implementation
ObjectModelOperation implOperation =
@@ -484,27 +492,67 @@
if (TopiaGeneratorUtil.isContextable(input)) {
+ addImport(outputAbstract, TopiaContext.class);
addImport(outputAbstract, TopiaContextImplementor.class);
- ObjectModelOperation op = addOperation(outputAbstract, "update", "void",
- ObjectModelModifier.PUBLIC);
+ // topiaContext attribute
+ ObjectModelAttribute topiaContextAttribute = addAttribute(
+ outputAbstract, "topiaContext", TopiaContext.class, null,
+ ObjectModelJavaModifier.PROTECTED, ObjectModelJavaModifier.TRANSIENT);
+ setDocumentation(topiaContextAttribute,
+ "TopiaContext instance associated with the current \n" +
+ "instance. For internal usage only");
+
+ ObjectModelOperation op = addOperation(outputAbstract,
+ "getTopiaContext", TopiaContext.class,
+ ObjectModelJavaModifier.PUBLIC);
+ setDocumentation(op,"@since 3.0");
+ addAnnotation(outputAbstract, op, Override.class.getSimpleName());
+ setOperationBody(op, ""
+/*{
+ return topiaContext;
+ }*/
+ );
+
+ op = addOperation(outputAbstract,
+ "setTopiaContext", "void",
+ ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
+ addParameter(op, TopiaContext.class, "context");
+ setDocumentation(op,
+// "@param context The context to set.\n" +
+// "@throws TopiaException if trying to replace a context\n" +
+ "@since 3.0");
+ addAnnotation(outputAbstract, op, Override.class.getSimpleName());
+ setOperationBody(op, ""
+/*{
+ if (topiaContext == null) {
+ topiaContext = context;
+// } else {
+// throw new TopiaRuntimeException("TopiaContext replacement is forbidden");
+ }
+ }*/
+ );
+
+ op = addOperation(outputAbstract, "update", "void",
+ ObjectModelJavaModifier.PUBLIC);
+ addException(op, TopiaException.class);
// setDocumentation(op,"@since 2.5.3");
addAnnotation(outputAbstract, op, Override.class.getSimpleName());
setOperationBody(op, ""
/*{
((TopiaContextImplementor)getTopiaContext()).getDAO(<%=input.getName()%>.class).update(this);
-}*/
+ }*/
);
- op = addOperation(outputAbstract, "delete", "void", ObjectModelModifier.PUBLIC);
+ op = addOperation(outputAbstract, "delete", "void", ObjectModelJavaModifier.PUBLIC);
addException(op, TopiaException.class);
// setDocumentation(op,"@since 2.5.3");
addAnnotation(outputAbstract, op, Override.class.getSimpleName());
setOperationBody(op, ""
/*{
((TopiaContextImplementor)getTopiaContext()).getDAO(<%=input.getName()%>.class).delete(this);
-}*/
+ }*/
);
}
}
@@ -547,8 +595,8 @@
String opName = operation.getName();
String opType = operation.getReturnType();
- ObjectModelModifier visibility =
- ObjectModelModifier.toValue(operation.getVisibility());
+ ObjectModelJavaModifier visibility =
+ ObjectModelJavaModifier.fromVisibility(operation.getVisibility());
if (log.isDebugEnabled()) {
log.debug("Extra operation for : " + input.getQualifiedName() +
@@ -559,9 +607,9 @@
// Generate entity methods which have not a public visibility.
// Only in abstract entity class as abstract operation.
- if (!visibility.equals(ObjectModelModifier.PUBLIC)) {
+ if (!visibility.equals(ObjectModelJavaModifier.PUBLIC)) {
addOperation(outputAbstract, opName, opType, visibility,
- ObjectModelModifier.ABSTRACT);
+ ObjectModelJavaModifier.ABSTRACT);
// Other operations, only in entity interface, implementations
// need to be done in implementation class created by developper
@@ -651,7 +699,7 @@
ObjectModelAttribute property =
addAttribute(isNaturalId ? outputNaturalIdEmbedded : outputAbstract,
attrName, attrType, null,
- ObjectModelModifier.PROTECTED
+ ObjectModelJavaModifier.PROTECTED
);
// Documentation
@@ -816,7 +864,7 @@
// add also a setter in the natural id class
implOperation =
cloneOperationSignature(interfaceOperation, outputNaturalIdEmbedded, false,
- ObjectModelModifier.PUBLIC );
+ ObjectModelJavaModifier.PUBLIC );
setOperationBody(implOperation, ""
/*{
@@ -854,7 +902,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName(operationPrefix, attrName),
- attrType, ObjectModelModifier.PACKAGE);
+ attrType, ObjectModelJavaModifier.PACKAGE);
// Implementation
ObjectModelOperation implOperation =
@@ -876,7 +924,7 @@
// add also a getter in the natural id class
implOperation =
cloneOperationSignature(interfaceOperation, outputNaturalIdEmbedded, false,
- ObjectModelModifier.PUBLIC );
+ ObjectModelJavaModifier.PUBLIC );
setOperationBody(implOperation, ""
/*{
@@ -904,7 +952,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("add", attrName),
- void.class, ObjectModelModifier.PACKAGE);
+ void.class, ObjectModelJavaModifier.PACKAGE);
ObjectModelParameter param =
addParameter(interfaceOperation, attrType, attrName);
@@ -974,7 +1022,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("addAll", attrName),
- void.class, ObjectModelModifier.PACKAGE);
+ void.class, ObjectModelJavaModifier.PACKAGE);
ObjectModelParameter param =
addParameter(interfaceOperation, collectionInterface + "<" + attrType + ">", attrName);
@@ -1059,7 +1107,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("remove" , attrName),
- void.class, ObjectModelModifier.PACKAGE);
+ void.class, ObjectModelJavaModifier.PACKAGE);
ObjectModelParameter param =
addParameter(interfaceOperation, attrType, attrName);
@@ -1125,7 +1173,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("clear" , attrName),
- void.class, ObjectModelModifier.PACKAGE);
+ void.class, ObjectModelJavaModifier.PACKAGE);
// Implementation
ObjectModelOperation implOperation = createImplOperation(interfaceOperation);
@@ -1194,7 +1242,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("get" , attrName),
- attrType, ObjectModelModifier.PACKAGE);
+ attrType, ObjectModelJavaModifier.PACKAGE);
// Implementation
ObjectModelOperation implOperation = createImplOperation(interfaceOperation);
@@ -1220,7 +1268,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("get", attrName) + "ByTopiaId",
- attrType, ObjectModelModifier.PACKAGE);
+ attrType, ObjectModelJavaModifier.PACKAGE);
ObjectModelParameter param =
addParameter(interfaceOperation, String.class, "topiaId");
@@ -1293,7 +1341,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("size", attrName),
- int.class, ObjectModelModifier.PACKAGE);
+ int.class, ObjectModelJavaModifier.PACKAGE);
// Implementation
ObjectModelOperation implOperation = createImplOperation(interfaceOperation);
@@ -1320,7 +1368,7 @@
// Interface operation
ObjectModelOperation interfaceOperation =
addOperation(outputInterface, getJavaBeanMethodName("is", attrName)+ "Empty",
- boolean.class, ObjectModelModifier.PACKAGE);
+ boolean.class, ObjectModelJavaModifier.PACKAGE);
// Implementation
ObjectModelOperation implOperation = createImplOperation(interfaceOperation);
@@ -1452,69 +1500,77 @@
addAnnotation(outputAbstract, operation, Override.class.getSimpleName());
addAnnotation(outputAbstract, operation, Deprecated.class.getSimpleName());
- addImport(outputAbstract, ArrayList.class);
- addImport(outputAbstract, List.class);
+ StringBuilder body;
+ if (!TopiaGeneratorUtil.isContextable(input)) {
+ body = new StringBuilder(""
+/*{
+ throw new UnsupportedOperationException("Since ToPIA 3.0, 'getComposite' is only available for contextable entities");
+ }*/
+ );
+ } else {
+ addImport(outputAbstract, ArrayList.class);
+ addImport(outputAbstract, List.class);
- StringBuilder body = new StringBuilder(""
+ body = new StringBuilder(""
/*{
List<TopiaEntity> tmp = new ArrayList<TopiaEntity>();
// pour tous les attributs rechecher les composites et les class d'asso
// on les ajoute dans tmp
}*/
- );
- for (ObjectModelAttribute attr : input.getAttributes()) {
+ );
+ for (ObjectModelAttribute attr : input.getAttributes()) {
- if (attr.referenceClassifier() &&
- TopiaGeneratorUtil.isEntity(attr.getClassifier())) {
+ if (attr.referenceClassifier() &&
+ TopiaGeneratorUtil.isEntity(attr.getClassifier())) {
- if (attr.isComposite()) {
- String attrName = attr.getName();
- String getterName = getJavaBeanMethodName("get", attrName);
- if (TopiaGeneratorUtil.isNMultiplicity(attr)) {
- body.append(""
+ if (attr.isComposite()) {
+ String attrName = attr.getName();
+ String getterName = getJavaBeanMethodName("get", attrName);
+ if (TopiaGeneratorUtil.isNMultiplicity(attr)) {
+ body.append(""
/*{ if (<%=getterName%>() != null) {
tmp.addAll(<%=getterName%>());
}
}*/
- );
- } else {
- body.append(""
+ );
+ } else {
+ body.append(""
/*{ tmp.add(<%=getterName%>());
}*/
- );
- }
- } else if (attr.hasAssociationClass()) {
- String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(
- attr);
- String assocClassFQN = TopiaGeneratorUtil.getSimpleName(
- attr.getAssociationClass().getQualifiedName());
- String ref = "this." + TopiaGeneratorUtil.toLowerCaseFirstLetter(
- assocAttrName);
- if (!TopiaGeneratorUtil.isNMultiplicity(attr)) {
- body.append(""
+ );
+ }
+ } else if (attr.hasAssociationClass()) {
+ String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(
+ attr);
+ String assocClassFQN = TopiaGeneratorUtil.getSimpleName(
+ attr.getAssociationClass().getQualifiedName());
+ String ref = "this." + TopiaGeneratorUtil.toLowerCaseFirstLetter(
+ assocAttrName);
+ if (!TopiaGeneratorUtil.isNMultiplicity(attr)) {
+ body.append(""
/*{
if (<%=ref%> != null) {
tmp.add(<%=ref%>);
}
}*/
- );
- } else {
- ObjectModelAttribute reverse = attr.getReverseAttribute();
- String reverseAttrName = reverse.getName();
- // On utilise pas l'attribut car il est potentiellement
- // pas a jour, car pour les asso avec cardinalité
- // personne ne fait de add. Ce qui est normal, mais
- // pour pouvoir faire tout de meme des delete en cascade
- // sur les asso, le champs est dans le mapping
- // hibernate et donc il le faut aussi dans la classe
- // sinon hibernate rale lorsqu'il charge l'objet
+ );
+ } else {
+ ObjectModelAttribute reverse = attr.getReverseAttribute();
+ String reverseAttrName = reverse.getName();
+ // On utilise pas l'attribut car il est potentiellement
+ // pas a jour, car pour les asso avec cardinalité
+ // personne ne fait de add. Ce qui est normal, mais
+ // pour pouvoir faire tout de meme des delete en cascade
+ // sur les asso, le champs est dans le mapping
+ // hibernate et donc il le faut aussi dans la classe
+ // sinon hibernate rale lorsqu'il charge l'objet
// if (<%=ref%> != null) {
// tmp.addAll(<%=ref%>);
// }
- addImport(outputAbstract, TopiaContextImplementor.class);
- body.append(""
+ addImport(outputAbstract, TopiaContextImplementor.class);
+ body.append(""
/*{
{
org.nuiton.topia.persistence.TopiaDAO<<%=assocClassFQN%>> dao = ((TopiaContextImplementor) getTopiaContext()).getDAO(<%=assocClassFQN%>.class);
@@ -1524,12 +1580,12 @@
}
}
}*/
- );
+ );
+ }
}
}
}
- }
- body.append(""
+ body.append(""
/*{
// on refait un tour sur chaque entity de tmp pour recuperer leur
// composite
@@ -1542,7 +1598,8 @@
}
return result;
}*/
- );
+ );
+ }
setOperationBody(operation, body.length() == 0 ? " " : body.toString());
}
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -36,7 +36,7 @@
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.eugene.models.object.ObjectModelType;
import org.nuiton.topia.framework.TopiaQuery;
@@ -106,26 +106,26 @@
abstractEntityPropertyClass = (ObjectModelClass)addInnerClassifier(helperClass,
ObjectModelType.OBJECT_MODEL_CLASS,
ENTITY_PROPERTY_CLASS_NAME + ENTITY_PROPERTY_GENERIC_TYPE,
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.STATIC);
addImport(helperClass, HashMap.class);
addImport(helperClass, Map.class);
addAttribute(abstractEntityPropertyClass, "alias",
String.class, null,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
addAttribute(abstractEntityPropertyClass, "propertiesCache",
"Map<String, String>", null,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
// Constructor
// FIXME-fdesbois-2010-06-23 : need to take care of generic case in JavaBuilder in EUGene
// ObjectModelOperation constructor =
-// addConstructor(abstractEntityPropertyClass, ObjectModelModifier.PUBLIC);
+// addConstructor(abstractEntityPropertyClass, ObjectModelJavaModifier.PUBLIC);
ObjectModelOperation constructor =
- builder.addOperation(abstractEntityPropertyClass, ENTITY_PROPERTY_CLASS_NAME, null, ObjectModelModifier.PUBLIC);
+ builder.addOperation(abstractEntityPropertyClass, ENTITY_PROPERTY_CLASS_NAME, null, ObjectModelJavaModifier.PUBLIC);
setOperationBody(constructor, ""
/*{
@@ -136,7 +136,7 @@
// Getter and setter for alias
ObjectModelOperation setAlias =
addOperation(abstractEntityPropertyClass, "setAlias", "void",
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
addParameter(setAlias, String.class, "alias");
@@ -148,7 +148,7 @@
ObjectModelOperation getAlias =
addOperation(abstractEntityPropertyClass, "$alias", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
setOperationBody(getAlias, ""
@@ -160,7 +160,7 @@
// Getter for properties
ObjectModelOperation getProperty =
addOperation(abstractEntityPropertyClass, "$property", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addParameter(getProperty, String.class, "propertyName");
@@ -177,7 +177,7 @@
ObjectModelOperation topiaCreateDate =
addOperation(abstractEntityPropertyClass, "topiaCreateDate", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
setOperationBody(topiaCreateDate, ""
/*{
@@ -187,7 +187,7 @@
ObjectModelOperation topiaId =
addOperation(abstractEntityPropertyClass, "topiaId", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
setOperationBody(topiaId, ""
/*{
@@ -197,7 +197,7 @@
ObjectModelOperation topiaVersion =
addOperation(abstractEntityPropertyClass, "topiaVersion", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
setOperationBody(topiaVersion, ""
/*{
@@ -208,10 +208,10 @@
// Abstract methods
addOperation(abstractEntityPropertyClass, "getEntityClass",
"Class" + ENTITY_PROPERTY_GENERIC_TYPE,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.ABSTRACT);
addOperation(abstractEntityPropertyClass, "defaultAlias", String.class,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.ABSTRACT);
}
protected void createUtilOperations() {
@@ -219,7 +219,7 @@
// createQuery method with EntityProperty in argument
ObjectModelOperation createQuery =
addOperation(helperClass, "createQuery", TopiaQuery.class,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(createQuery, ENTITY_PROPERTY_CLASS_NAME, "property");
setOperationBody(createQuery, ""
@@ -231,7 +231,7 @@
// format method to format statement using $1, $2 corresponding to property names
ObjectModelOperation format =
addOperation(helperClass, "format", String.class,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(format, String.class, "statement");
addParameter(format, "String...", "propertyNames");
@@ -248,7 +248,7 @@
String genericType = "<P extends " + ENTITY_PROPERTY_CLASS_NAME + "> P";
ObjectModelOperation newEntityProperty1 =
addOperation(helperClass, "newEntityProperty", genericType,
- ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PRIVATE, ObjectModelJavaModifier.STATIC);
addParameter(newEntityProperty1, "Class<P>", "propertyClass");
setOperationBody(newEntityProperty1, ""
@@ -258,7 +258,7 @@
);
ObjectModelOperation newEntityProperty2 =
addOperation(helperClass, "newEntityProperty", genericType,
- ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PRIVATE, ObjectModelJavaModifier.STATIC);
addParameter(newEntityProperty2, "Class<P>", "propertyClass");
addParameter(newEntityProperty2, String.class, "alias");
@@ -355,7 +355,7 @@
aliases.put(alias, aliasPropertyName);
addAttribute(helperClass, aliasPropertyName, String.class, "\"" + alias + "\"",
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC, ObjectModelModifier.FINAL);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC, ObjectModelJavaModifier.FINAL);
return aliasPropertyName;
}
@@ -367,7 +367,7 @@
addInnerClassifier(helperClass,
ObjectModelType.OBJECT_MODEL_CLASS,
className,
- ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.STATIC);
if (log.isDebugEnabled()) {
log.debug("Generate for entity : " + input.getQualifiedName());
@@ -383,7 +383,7 @@
setSuperClass(propertyClass, superClassQualifiedName);
ObjectModelOperation constructor =
- addConstructor(propertyClass, ObjectModelModifier.PROTECTED);
+ addConstructor(propertyClass, ObjectModelJavaModifier.PROTECTED);
setOperationBody(constructor, ""
/*{
@@ -392,7 +392,7 @@
ObjectModelOperation getEntityClass =
addOperation(propertyClass, "getEntityClass", "Class<" + input.getName() + ">",
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addAnnotation(propertyClass, getEntityClass, "Override");
@@ -404,7 +404,7 @@
ObjectModelOperation defaultAlias =
addOperation(propertyClass, "defaultAlias", String.class,
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addAnnotation(propertyClass, defaultAlias, "Override");
@@ -461,7 +461,7 @@
protected ObjectModelOperation createGetPropertyNameOperation(ObjectModelClass output, String attrName, String entityClassName) {
ObjectModelOperation result =
- addOperation(output, attrName, String.class, ObjectModelModifier.PUBLIC);
+ addOperation(output, attrName, String.class, ObjectModelJavaModifier.PUBLIC);
String constantName =
entityClassName + "." + getConstantName(attrName);
@@ -523,7 +523,7 @@
ObjectModelOperation newEntityProperty1 =
addOperation(helperClass, "new" + className, className,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
setOperationBody(newEntityProperty1, ""
/*{
@@ -533,7 +533,7 @@
ObjectModelOperation newEntityProperty2 =
addOperation(helperClass, "new" + className, className,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
addParameter(newEntityProperty2, String.class, "alias");
setOperationBody(newEntityProperty2, ""
@@ -557,7 +557,7 @@
ObjectModelOperation newEntityProperty =
addOperation(helperClass, "new" + subEntityName + "Property", propertyClassName,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC);
+ ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC);
String callMethodName = "new" + propertyClassName;
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ServiceTransformer.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ServiceTransformer.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/ServiceTransformer.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -33,7 +33,7 @@
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelInterface;
-import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.eugene.models.object.ObjectModelParameter;
import org.nuiton.i18n.I18n;
@@ -279,8 +279,8 @@
ObjectModelOperation operation =
addOperation(serviceAbstract, OP_NAME_BEGIN_TRANSACTION,
TopiaContext.class,
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.PROTECTED);
addException(operation, TopiaException.class);
}
@@ -289,7 +289,7 @@
addOperation(serviceAbstract,
OP_NAME_COMMIT_TRANSACTION,
"void",
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
addParameter(operation, TopiaContext.class, PARAMETER_TRANSACTION);
addException(operation, TopiaException.class);
setOperationBody(operation,""
@@ -307,8 +307,8 @@
addOperation(serviceAbstract,
OP_NAME_CLOSE_TRANSACTION,
"void",
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.PROTECTED);
addParameter(operation, TopiaContext.class, PARAMETER_TRANSACTION);
addException(operation, TopiaException.class);
}
@@ -322,8 +322,8 @@
addOperation(serviceAbstract,
OP_NAME_TREATE_ERROR,
"void",
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.PROTECTED);
if (needTransaction) {
addParameter(treateError1, TopiaContext.class, PARAMETER_TRANSACTION);
}
@@ -337,7 +337,7 @@
if (needTransaction) {
ObjectModelOperation treateError2 =
addOperation(serviceAbstract, OP_NAME_TREATE_ERROR, "void",
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.PROTECTED);
addParameter(treateError2, Exception.class, "eee");
addParameter(treateError2, String.class, "message");
addParameter(treateError2, "Object...", "args");
@@ -457,8 +457,8 @@
ObjectModelOperation executeOperation =
addOperation(serviceAbstract, "execute" + opName,
source.getReturnType(),
- ObjectModelModifier.ABSTRACT,
- ObjectModelModifier.PROTECTED);
+ ObjectModelJavaModifier.ABSTRACT,
+ ObjectModelJavaModifier.PROTECTED);
// Throw all exception from abstract method
// They will be catched by interface method to use treateError
@@ -518,7 +518,7 @@
addOperation(serviceAbstract,
source.getName(),
source.getReturnType(),
- ObjectModelModifier.PUBLIC);
+ ObjectModelJavaModifier.PUBLIC);
addAnnotation(serviceAbstract, implOp, Override.class.getSimpleName());
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -199,7 +199,9 @@
E result = newInstance();
TopiaEntityAbstract entity = (TopiaEntityAbstract) result;
- entity.setTopiaContext(getContext());
+ if (entity instanceof TopiaEntityContextable) {
+ ((TopiaEntityContextable)entity).setTopiaContext(getContext());
+ }
try {
for (Map.Entry<String, Object> e : properties.entrySet()) {
Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java
===================================================================
--- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaEntityAbstract.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -27,8 +27,8 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaRuntimeException;
import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.framework.TopiaFiresSupport;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
@@ -59,7 +59,7 @@
transient protected boolean deleted = false;
- transient protected TopiaContext topiaContext;
+ transient protected TopiaFiresSupport fireSupport;
transient protected VetoableChangeSupport readVetoables;
@@ -161,31 +161,16 @@
deleted = true;
}
- public TopiaContext getTopiaContext() {
- return topiaContext;
- }
-
- /**
- * @param context The context to set.
- * @throws TopiaException if trying to replace a context
- */
- public void setTopiaContext(TopiaContext context) throws TopiaException {
- if (topiaContext == null) {
- topiaContext = context;
- } else {
- // XXX AThimel 30/05/2012 Use deprecated TopiaRruntimeException because this will be removed with http://nuiton.org/issues/2078
- throw new TopiaRuntimeException("Remplacement du contexte interdit");
- }
- }
-
@Override
public List<TopiaEntity> getComposite() throws TopiaException {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException(
+ "#getComposite() is supposed to be overridden");
}
@Override
public List<TopiaEntity> getAggregate() throws TopiaException {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException(
+ "#getAggregate() is supposed to be overridden");
}
/**
@@ -224,62 +209,73 @@
return result;
}
+ protected TopiaFiresSupport getFireSupportOrNull() {
+ if (fireSupport == null) {
+ if (this instanceof TopiaEntityContextable) {
+ TopiaEntityContextable contextable = (TopiaEntityContextable) this;
+ TopiaContext context = contextable.getTopiaContext();
+ if (context instanceof TopiaContextImplementor) {
+ TopiaContextImplementor contextImpl = (TopiaContextImplementor) context;
+ fireSupport = contextImpl.getFiresSupport();
+ }
+ }
+ }
+ return fireSupport;
+ }
+
protected void fireOnPreRead(String propertyName, Object value) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPreRead(getReadVetoableChangeSupport(),
- this, propertyName, value);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPreRead(
+ getReadVetoableChangeSupport(), this, propertyName, value);
}
}
protected void fireOnPostRead(String propertyName, Object value) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPostRead(getReadPropertyChangeSupport(),
- this, propertyName, value);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPostRead(
+ getReadPropertyChangeSupport(), this, propertyName, value);
}
}
protected void fireOnPostRead(String propertyName, int index,
Object value) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPostRead(getReadPropertyChangeSupport(),
- this, propertyName, index, value);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPostRead(
+ getReadPropertyChangeSupport(), this, propertyName,
+ index, value);
}
}
protected void fireOnPreWrite(String propertyName, Object oldValue,
Object newValue) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPreWrite(getWriteVetoableChangeSupport(),
- this, propertyName, oldValue, newValue);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPreWrite(
+ getWriteVetoableChangeSupport(), this, propertyName,
+ oldValue, newValue);
}
}
protected void fireOnPostWrite(String propertyName, Object oldValue,
Object newValue) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPostWrite(
- getWritePropertyChangeSupport(), this, propertyName, oldValue, newValue);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPostWrite(
+ getWritePropertyChangeSupport(), this, propertyName,
+ oldValue, newValue);
}
}
protected void fireOnPostWrite(String propertyName, int index,
Object oldValue, Object newValue) {
- TopiaContextImplementor contextImplementor =
- (TopiaContextImplementor) getTopiaContext();
- if (contextImplementor != null) {
- contextImplementor.getFiresSupport().fireOnPostWrite(
- getWritePropertyChangeSupport(), this, propertyName, index, oldValue,
- newValue);
+ TopiaFiresSupport firesSupport = getFireSupportOrNull();
+ if (firesSupport != null) {
+ firesSupport.fireOnPostWrite(
+ getWritePropertyChangeSupport(), this, propertyName,
+ index, oldValue, newValue);
}
}
Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java
===================================================================
--- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -44,9 +44,7 @@
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaEntityAbstract;
-import org.nuiton.topia.persistence.TopiaId;
-import org.nuiton.topia.persistence.TopiaPersistenceUtil;
+import org.nuiton.topia.persistence.TopiaEntityContextable;
/**
* @author Arnaud Thimel <thimel(a)codelutin.com>
@@ -113,20 +111,23 @@
protected void attachContext(TopiaEntity entity,
TopiaContextImplementor context) {
- // FIXME AThimel 14/05/2012 http://nuiton.org/issues/2078
- if (entity instanceof TopiaEntityAbstract) {
- TopiaEntityAbstract entityAbstract = (TopiaEntityAbstract) entity;
- if (entityAbstract.getTopiaContext() == null) {
+ // FIXME AThimel 14/05/2012 Find another way to get the TopiaContext and/or TopiaFireSupport
+ if (entity instanceof TopiaEntityContextable) {
+ TopiaEntityContextable contextable = (TopiaEntityContextable)entity;
+ if (contextable.getTopiaContext() == null) {
try {
- entityAbstract.setTopiaContext(context);
+ contextable.setTopiaContext(context);
} catch (TopiaException eee) {
if (log.isWarnEnabled()) {
log.warn("Impossible d'initialiser le TopiaContext"
- + " sur cette entité : " + entityAbstract,
+ + " sur cette entité : " + contextable,
eee);
}
}
}
+ } else {
+ throw new IllegalStateException(
+ "Entity is not a TopiaEntityContextable : " + entity.getClass().getName());
}
}
@@ -136,13 +137,12 @@
// return result;
// }
- // FIXME AThimel 15/05/2012 I don't like it, but I haven't found a better way
protected TopiaContextImplementor findContext(TopiaEntity entity) {
TopiaContextImplementor result = null;
- // FIXME AThimel 14/05/2012 http://nuiton.org/issues/2078
- if (entity instanceof TopiaEntityAbstract) {
+ // FIXME AThimel 14/05/2012 Find another way to get the TopiaContext and/or TopiaFireSupport
+ if (entity instanceof TopiaEntityContextable) {
TopiaContext entityContext =
- ((TopiaEntityAbstract) entity).getTopiaContext();
+ ((TopiaEntityContextable) entity).getTopiaContext();
if (entityContext instanceof TopiaContextImplementor) {
result = (TopiaContextImplementor) entityContext;
}
Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-it.zargo
===================================================================
(Binary files differ)
Modified: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/events/VetoableEventTest.java
===================================================================
--- trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/events/VetoableEventTest.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/it/events/VetoableEventTest.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -32,6 +32,7 @@
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.event.TopiaEntityEvent;
import org.nuiton.topia.event.TopiaEntityVetoable;
+import org.nuiton.topia.persistence.TopiaEntityContextable;
import org.nuiton.topia.tck.TopiaDatabase;
import org.nuiton.topia.tck.it.Address;
import org.nuiton.topia.tck.it.AddressDAO;
@@ -132,7 +133,7 @@
TopiaContext transaction = db.beginTransaction();
transaction.addTopiaEntityVetoable(Personne.class, personneCounter);
- transaction.addTopiaEntityVetoable(allCounter);
+ transaction.addTopiaEntityVetoable(TopiaEntityContextable.class, allCounter);
log.debug("DAO : PersonneDAO");
PersonneDAO personneDAO = TopiaTckItDAOHelper.getPersonneDAO(transaction);
Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java
===================================================================
--- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2012-06-01 09:29:47 UTC (rev 2571)
+++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/TaasService.java 2012-06-01 14:20:08 UTC (rev 2572)
@@ -49,7 +49,7 @@
import org.nuiton.topia.framework.TopiaService;
import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaEntityAbstract;
+import org.nuiton.topia.persistence.TopiaEntityContextable;
import org.nuiton.topia.persistence.TopiaIdUtil;
import org.nuiton.topia.taas.entities.TaasAuthorizationImpl;
import org.nuiton.topia.taas.entities.TaasPrincipalImpl;
@@ -457,7 +457,7 @@
List<Permission> permissions;
try {
TopiaContextImplementor transaction = (TopiaContextImplementor)
- ((TopiaEntityAbstract)entity).getTopiaContext();
+ ((TopiaEntityContextable)entity).getTopiaContext();
TopiaDAO<?> dao = transaction.getDAO(klass);
permissions = dao.getRequestPermission(topiaId, actions);
} catch (TopiaException e) {
1
0