Author: tchemit
Date: 2009-04-06 01:20:29 +0000 (Mon, 06 Apr 2009)
New Revision: 1409
Modified:
topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java
Log:
generics + Override annotation
Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java
===================================================================
--- topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-03-26 17:47:01 UTC (rev 1408)
+++ topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-04-06 01:20:29 UTC (rev 1409)
@@ -169,7 +169,7 @@
/**
* cache des DAO deja chargé pour ce context
*/
- protected Map<Class, TopiaDAO> daoCache = new HashMap<Class, TopiaDAO>();
+ protected Map<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>> daoCache = new HashMap<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>>();
/**
* Set des sous context creer avec un beginTransaction et donc sur lequel
@@ -204,9 +204,8 @@
protected Map<String, TopiaService> loadServices(Properties config) {
Map<String, TopiaService> result = new HashMap<String, TopiaService>();
// recherche des services present dans la config
- for (Enumeration<String> e = (Enumeration<String>) config
- .propertyNames(); e.hasMoreElements();) {
- String key = e.nextElement();
+ for (Enumeration e = config.propertyNames(); e.hasMoreElements();) {
+ String key = (String) e.nextElement();
if (key.matches("^topia\\.service\\.\\w+$")) {
String classService = config.getProperty(key);
try {
@@ -256,6 +255,7 @@
}
}
+ @Override
public Map<String, TopiaService> getServices() {
TopiaContextImplementor parent = getParentContext();
@@ -278,6 +278,7 @@
return result;
}
+ @Override
public <E extends TopiaService> boolean serviceEnabled(
Class<E> interfaceService) {
boolean result = false;
@@ -302,6 +303,7 @@
* @param <E>
* @throws TopiaNotFoundException
*/
+ @Override
public <E extends TopiaService> E getService(Class<E> interfaceService)
throws TopiaNotFoundException {
try {
@@ -322,6 +324,7 @@
/* (non-Javadoc)
* @see org.codelutin.topia.framework.TopiaContextImplementor#getAllServices()
*/
+ @Override
public Collection<TopiaService> getAllServices() {
Collection<TopiaService> result = getServices().values();
return result;
@@ -339,6 +342,7 @@
this.parentContext = parentContext;
}
+ @Override
public Set<TopiaContextImplementor> getChildContext() {
return this.childContext;
}
@@ -347,6 +351,7 @@
childContext.add(child);
}
+ @Override
public void removeChildContext(TopiaContextImplementor child) {
//On ne retire les fils que si ce contexte n'est pas deja ferme. Permet d'eviter les acces concurrentiels
if (!closed) {
@@ -359,6 +364,7 @@
*
* @see org.codelutin.topia.framework.TopiaContextImplementor#getParentContext()
*/
+ @Override
public TopiaContextImplementor getParentContext() {
return parentContext;
}
@@ -368,6 +374,7 @@
*
* @see org.codelutin.topia.framework.TopiaContextImplementor#getRootContext()
*/
+ @Override
public TopiaContextImplementor getRootContext() {
TopiaContextImplementor result = this;
if (getParentContext() != null) {
@@ -381,6 +388,7 @@
*
* @see org.codelutin.topia.framework.TopiaContextImplementor#getConfig()
*/
+ @Override
public Properties getConfig() {
if (config == null && getParentContext() != null) {
config = getParentContext().getConfig();
@@ -391,6 +399,7 @@
/* (non-Javadoc)
* @see org.codelutin.topia.TopiaContext#createSchema()
*/
+ @Override
public void createSchema() throws TopiaException {
try {
boolean showSchema = false;
@@ -409,6 +418,7 @@
/* (non-Javadoc)
* @see org.codelutin.topia.TopiaContext#createSchema()
*/
+ @Override
public void updateSchema() throws TopiaException {
try {
boolean showSchema = false;
@@ -429,6 +439,7 @@
*
* @see org.codelutin.topia.framework.TopiaContextImplementor#getHibernate()
*/
+ @Override
public Session getHibernate() throws TopiaException {
if (hibernate == null) {
throw new TopiaException(
@@ -442,6 +453,7 @@
*
* @see org.codelutin.topia.framework.TopiaContextImplementor#getHibernateFactory()
*/
+ @Override
public SessionFactory getHibernateFactory() throws TopiaNotFoundException {
if (hibernateFactory == null) {
if (getParentContext() != null) {
@@ -454,6 +466,7 @@
return hibernateFactory;
}
+ @Override
public Configuration getHibernateConfiguration()
throws TopiaNotFoundException {
if (hibernateConfiguration == null) {
@@ -579,6 +592,7 @@
* @see org.codelutin.topia.framework.TopiaContextImplementor#getDAO(java.lang.Class)
*/
@SuppressWarnings("unchecked")
+ @Override
public <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityClass)
throws TopiaException {
if (entityClass == null) {
@@ -603,7 +617,7 @@
+ " doute oublié d'ajouter son mapping");
}
- TopiaDAO<E> result = daoCache.get(entityClass);
+ TopiaDAO<E> result = (TopiaDAO<E>) daoCache.get(entityClass);
if (result == null) {
// recherche du type de DAO a instancier pour cette entity
String defaultDAOClassname = getConfig().getProperty(
@@ -656,6 +670,7 @@
*
* @see org.codelutin.topia.TopiaContext#beginTransaction()
*/
+ @Override
public TopiaContext beginTransaction() throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible de commencer une transaction");
TopiaContextImpl result = new TopiaContextImpl(this);
@@ -690,6 +705,7 @@
*
* @see org.codelutin.topia.TopiaContext#commitTransaction()
*/
+ @Override
public void commitTransaction() throws TopiaException {
if (getRootContext() == this) {
throw new TopiaException(
@@ -697,7 +713,7 @@
}
checkClosed("Ce contexte a ete ferme, impossible de faire un commit");
try {
- for (TopiaDAO<TopiaEntity> dao : daoCache.values()) {
+ for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) {
dao.commitTransaction();
}
Transaction tx = hibernate.getTransaction();
@@ -726,6 +742,7 @@
*
* @see org.codelutin.topia.TopiaContext#rollbackTransaction()
*/
+ @Override
public void rollbackTransaction() throws TopiaException {
if (getRootContext() == this) {
throw new TopiaException(
@@ -733,7 +750,7 @@
}
checkClosed("Ce contexte a ete ferme, impossible de faire un rollback");
try {
- for (TopiaDAO<TopiaEntity> dao : daoCache.values()) {
+ for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) {
dao.rollbackTransaction();
}
Transaction tx = hibernate.getTransaction();
@@ -759,6 +776,7 @@
}
}
+ @Override
public void closeContext() throws TopiaException {
// 20060926 poussin: Si si on peut, ca ferme en fait tous les enfants et c tout
// if (getRootContext() == this) {
@@ -812,6 +830,7 @@
}
}
+ @Override
public boolean isClosed() {
return closed;
}
@@ -825,6 +844,7 @@
/* (non-Javadoc)
* @see org.codelutin.topia.TopiaContext#findByTopiaId(java.lang.String)
*/
+ @Override
public TopiaEntity findByTopiaId(String topiaId) throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible de faire une recherche");
TopiaEntity result;
@@ -839,6 +859,7 @@
* (non-Javadoc)
* @see org.codelutin.topia.TopiaContext#find(java.lang.String, java.lang.Object[])
*/
+ @Override
public List find(String hql, Object... args) throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible de faire une recherche");
try {
@@ -861,6 +882,7 @@
}
}
+ @Override
public List find(String hql, int startIndex, int endIndex, Object... args)
throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible de faire une recherche");
@@ -893,6 +915,7 @@
* @return The number of entities updated or deleted.
* @throws TopiaException
*/
+ @Override
public int execute(String hql, Object... args) throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible de faire une recherche");
try {
@@ -911,11 +934,12 @@
/* (non-Javadoc)
* @see org.codelutin.topia.TopiaContext#add(org.codelutin.topia.persistence.TopiaEntity)
*/
+ @Override
public void add(TopiaEntity e) throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible d'ajouter une entite");
String id = e.getTopiaId();
- Class entityClass = TopiaId.getClassName(id);
- TopiaDAO dao = getDAO(entityClass);
+ Class<TopiaEntity> entityClass = TopiaId.getClassName(id);
+ TopiaDAO<TopiaEntity> dao = getDAO(entityClass);
dao.update(e);
}
@@ -1036,7 +1060,7 @@
}
// acquire data to replicate
List entities = find(query);
- replicate0(dstContextImpl,entities.toArray());
+ replicate0(dstContextImpl,entities.toArray());
if (log.isDebugEnabled()) {
log.debug("replication of entities " + query + " was sucessfully done.");
}
@@ -1047,8 +1071,8 @@
}
@Override
- public <T extends TopiaEntity> void replicateEntity(TopiaContext dstCtxt, T entity) throws TopiaException, IllegalArgumentException {
- checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export");
+ public <T extends TopiaEntity> void replicateEntity(TopiaContext dstCtxt, T entity) throws TopiaException, IllegalArgumentException {
+ checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export");
TopiaContextImpl dstContextImpl = (TopiaContextImpl) dstCtxt;
dstContextImpl.checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export");
if (getRootContext().equals(dstContextImpl.getRootContext())) {
@@ -1082,6 +1106,7 @@
*
* @see TopiaContext#backup(java.io.File,boolean)
*/
+ @Override
public void backup(File file, boolean compress) throws TopiaException {
checkClosed("Ce contexte a ete ferme, impossible d'effectuer le backup");
try {
@@ -1137,6 +1162,7 @@
*
* @see org.codelutin.topia.TopiaContext#restore(java.io.File)
*/
+ @Override
public void restore(File file) throws TopiaException {
// send event
getFiresSupport().firePreRestoreSchema(this);
@@ -1150,7 +1176,8 @@
// read header to see if is compressed file
int b = in.read();
- int magic = ((int) in.read() << 8) | b;
+ // redundant cast : int magic = ((int) in.read() << 8) | b;
+ int magic = (in.read() << 8) | b;
in.reset();
String options = "";
@@ -1225,6 +1252,7 @@
* Only h2 supported for now
* @see org.codelutin.topia.TopiaContext#clear(boolean)
*/
+ @Override
public void clear(boolean dropDatabase) throws TopiaException {
try {
TopiaContextImpl root = (TopiaContextImpl) getRootContext();
@@ -1243,90 +1271,109 @@
}
}
+ @Override
public List<Class> getPersistenceClasses() {
return persistenceClasses;
}
/* Adders */
+ @Override
public void addTopiaEntityListener(TopiaEntityListener listener) {
getFiresSupport().addTopiaEntityListener(listener);
}
+ @Override
public void addTopiaEntityListener(
Class<? extends TopiaEntity> entityClass,
TopiaEntityListener listener) {
getFiresSupport().addTopiaEntityListener(entityClass, listener);
}
+ @Override
public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) {
getFiresSupport().addTopiaEntityVetoable(TopiaEntity.class, vetoable);
}
+ @Override
public void addTopiaEntityVetoable(
Class<? extends TopiaEntity> entityClass,
TopiaEntityVetoable vetoable) {
getFiresSupport().addTopiaEntityVetoable(entityClass, vetoable);
}
+ @Override
public void addTopiaTransactionListener(TopiaTransactionListener listener) {
getFiresSupport().addTopiaTransactionListener(listener);
}
+ @Override
public void addTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) {
getFiresSupport().addTopiaTransactionVetoable(vetoable);
}
+ @Override
public void addPropertyChangeListener(PropertyChangeListener listener) {
getFiresSupport().addPropertyChangeListener(listener);
}
+ @Override
public void addTopiaContextListener(TopiaContextListener listener) {
getFiresSupport().addTopiaContextListener(listener);
}
/* Removers */
+ @Override
public void removeTopiaEntityListener(TopiaEntityListener listener) {
getFiresSupport()
.removeTopiaEntityListener(TopiaEntity.class, listener);
}
+ @Override
public void removeTopiaEntityListener(
Class<? extends TopiaEntity> entityClass,
TopiaEntityListener listener) {
getFiresSupport().removeTopiaEntityListener(entityClass, listener);
}
+ @Override
public void removeTopiaEntityVetoable(TopiaEntityVetoable vetoable) {
getFiresSupport()
.removeTopiaEntityVetoable(TopiaEntity.class, vetoable);
}
+ @Override
public void removeTopiaEntityVetoable(
Class<? extends TopiaEntity> entityClass,
TopiaEntityVetoable vetoable) {
getFiresSupport().removeTopiaEntityVetoable(entityClass, vetoable);
}
+ @Override
public void removeTopiaTransactionListener(TopiaTransactionListener listener) {
getFiresSupport().removeTopiaTransactionListener(listener);
}
+ @Override
public void removeTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) {
getFiresSupport().removeTopiaTransactionVetoable(vetoable);
}
+ @Override
public void removePropertyChangeListener(PropertyChangeListener listener) {
getFiresSupport().removePropertyChangeListener(listener);
}
+ @Override
public void removeTopiaContextListener(TopiaContextListener listener) {
getFiresSupport().removeTopiaContextListener(listener);
}
+ @Override
public void addTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) {
getFiresSupport().addTopiaEntitiesVetoable(vetoable);
}
+ @Override
public void removeTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) {
getFiresSupport().removeTopiaEntitiesVetoable(vetoable);
}