001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Florent Guillaume 011 */ 012package org.nuxeo.ecm.core.storage.sql; 013 014import java.io.Serializable; 015import java.util.Calendar; 016import java.util.Collection; 017import java.util.Map; 018import java.util.Set; 019 020import javax.transaction.xa.XAException; 021import javax.transaction.xa.XAResource; 022import javax.transaction.xa.Xid; 023 024import org.nuxeo.ecm.core.api.IterableQueryResult; 025import org.nuxeo.ecm.core.api.Lock; 026import org.nuxeo.ecm.core.api.PartialList; 027import org.nuxeo.ecm.core.query.QueryFilter; 028 029/** 030 * A {@link Mapper} that uses a {@link SoftRefCachingRowMapper} for row-related operation, and delegates to the 031 * {@link Mapper} for others. 032 */ 033public class SoftRefCachingMapper extends SoftRefCachingRowMapper implements CachingMapper { 034 035 /** 036 * The {@link Mapper} to which operations are delegated. 037 */ 038 public Mapper mapper; 039 040 @Override 041 public void initialize(String repositoryName, Model model, Mapper mapper, InvalidationsPropagator cachePropagator, 042 Map<String, String> properties) { 043 super.initialize(repositoryName, model, mapper, cachePropagator, properties); 044 this.mapper = mapper; 045 } 046 047 @Override 048 public Identification getIdentification() { 049 return mapper.getIdentification(); 050 } 051 052 @Override 053 public void close() { 054 super.close(); 055 mapper.close(); 056 } 057 058 @Override 059 public int getTableSize(String tableName) { 060 return mapper.getTableSize(tableName); 061 } 062 063 @Override 064 public void createDatabase() { 065 mapper.createDatabase(); 066 } 067 068 @Override 069 public Serializable getRootId(String repositoryId) { 070 return mapper.getRootId(repositoryId); 071 } 072 073 @Override 074 public void setRootId(Serializable repositoryId, Serializable id) { 075 mapper.setRootId(repositoryId, id); 076 } 077 078 @Override 079 public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter, 080 boolean countTotal) { 081 return mapper.query(query, queryType, queryFilter, countTotal); 082 } 083 084 @Override 085 public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter, long countUpTo) { 086 return mapper.query(query, queryType, queryFilter, countUpTo); 087 } 088 089 @Override 090 public IterableQueryResult queryAndFetch(String query, String queryType, QueryFilter queryFilter, 091 Object... params) { 092 return mapper.queryAndFetch(query, queryType, queryFilter, params); 093 } 094 095 @Override 096 public Set<Serializable> getAncestorsIds(Collection<Serializable> ids) { 097 return mapper.getAncestorsIds(ids); 098 } 099 100 @Override 101 public void updateReadAcls() { 102 mapper.updateReadAcls(); 103 } 104 105 @Override 106 public void rebuildReadAcls() { 107 mapper.rebuildReadAcls(); 108 } 109 110 @Override 111 public int getClusterNodeIdType() { 112 return mapper.getClusterNodeIdType(); 113 } 114 115 @Override 116 public void createClusterNode(Serializable nodeId) { 117 mapper.createClusterNode(nodeId); 118 } 119 120 @Override 121 public void removeClusterNode(Serializable nodeId) { 122 mapper.removeClusterNode(nodeId); 123 } 124 125 @Override 126 public void insertClusterInvalidations(Serializable nodeId, Invalidations invalidations) { 127 mapper.insertClusterInvalidations(nodeId, invalidations); 128 } 129 130 @Override 131 public Invalidations getClusterInvalidations(Serializable nodeId) { 132 return mapper.getClusterInvalidations(nodeId); 133 } 134 135 @Override 136 public Lock getLock(Serializable id) { 137 return mapper.getLock(id); 138 } 139 140 @Override 141 public Lock setLock(Serializable id, Lock lock) { 142 return mapper.setLock(id, lock); 143 } 144 145 @Override 146 public Lock removeLock(Serializable id, String owner, boolean force) { 147 return mapper.removeLock(id, owner, force); 148 } 149 150 @Override 151 public void markReferencedBinaries() { 152 mapper.markReferencedBinaries(); 153 } 154 155 @Override 156 public int cleanupDeletedRows(int max, Calendar beforeTime) { 157 return mapper.cleanupDeletedRows(max, beforeTime); 158 } 159 160 @Override 161 public void start(Xid xid, int flags) throws XAException { 162 mapper.start(xid, flags); 163 } 164 165 @Override 166 public void end(Xid xid, int flags) throws XAException { 167 mapper.end(xid, flags); 168 169 } 170 171 @Override 172 public int prepare(Xid xid) throws XAException { 173 return mapper.prepare(xid); 174 } 175 176 @Override 177 public void commit(Xid xid, boolean onePhase) throws XAException { 178 mapper.commit(xid, onePhase); 179 } 180 181 // rollback interacts with caches so is in RowMapper 182 183 @Override 184 public void forget(Xid xid) throws XAException { 185 mapper.forget(xid); 186 } 187 188 @Override 189 public Xid[] recover(int flag) throws XAException { 190 return mapper.recover(flag); 191 } 192 193 @Override 194 public boolean setTransactionTimeout(int seconds) throws XAException { 195 return mapper.setTransactionTimeout(seconds); 196 } 197 198 @Override 199 public int getTransactionTimeout() throws XAException { 200 return mapper.getTransactionTimeout(); 201 } 202 203 @Override 204 public boolean isSameRM(XAResource xares) throws XAException { 205 return mapper.isSameRM(xares); 206 } 207 208 @Override 209 public boolean isConnected() { 210 return mapper.isConnected(); 211 } 212 213 @Override 214 public void connect() { 215 mapper.connect(); 216 } 217 218 @Override 219 public void disconnect() { 220 mapper.disconnect(); 221 } 222 223}