Revision 2145 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/persistence/impl/AbstractPersistenceManager.java
AbstractPersistenceManager.java | ||
---|---|---|
32 | 32 |
import java.util.List; |
33 | 33 |
import java.util.Map; |
34 | 34 |
import java.util.Set; |
35 |
import org.apache.commons.lang3.mutable.MutableInt; |
|
35 | 36 |
|
36 | 37 |
import org.gvsig.tools.ToolsLocator; |
37 | 38 |
import org.gvsig.tools.dynobject.DynClass; |
... | ... | |
77 | 78 |
private DefaultFactories factories; |
78 | 79 |
private Domains domainsURL; |
79 | 80 |
private int autoValidationMode = PersistenceManager.DISABLED; |
80 |
|
|
81 |
private MutableInt globalReferenceCounter; |
|
81 | 82 |
|
82 | 83 |
|
83 | 84 |
protected AbstractPersistenceManager() { |
84 | 85 |
domainsURL = new Domains(); |
85 | 86 |
factories = new DefaultFactories(); |
87 |
globalReferenceCounter = new MutableInt(0); |
|
86 | 88 |
} |
87 | 89 |
|
88 | 90 |
public void addAlias(String name, Class aClass) |
... | ... | |
95 | 97 |
return this.factories; |
96 | 98 |
} |
97 | 99 |
|
100 |
@Override |
|
98 | 101 |
public PersistentContextServices getNewContext() { |
99 |
return new DefaultPersistentContext(this); |
|
102 |
return new DefaultPersistentContext(this, this.globalReferenceCounter); |
|
103 |
} |
|
104 |
|
|
105 |
@Override |
|
106 |
public PersistentContextServices getNewContext(MutableInt referenceCounter) { |
|
107 |
return new DefaultPersistentContext(this, referenceCounter); |
|
100 | 108 |
} |
101 | 109 |
|
102 | 110 |
public Object create(PersistentState state) throws PersistenceException { |
... | ... | |
288 | 296 |
} |
289 | 297 |
} |
290 | 298 |
|
299 |
@Override |
|
291 | 300 |
public PersistentState getState(Object obj) |
292 | 301 |
throws PersistenceException, PersistenceValidateExceptions, PersistenceTypeNotSupportedException { |
293 |
return this.getState(obj, false); |
|
302 |
return this.getState(obj, false, this.globalReferenceCounter);
|
|
294 | 303 |
} |
295 | 304 |
|
305 |
@Override |
|
296 | 306 |
public PersistentState getState(Object obj, boolean collectAllErrors) |
297 | 307 |
throws PersistenceException { |
308 |
return this.getState(obj, collectAllErrors, globalReferenceCounter); |
|
309 |
} |
|
310 |
|
|
311 |
@Override |
|
312 |
public PersistentState getState(Object obj, boolean collectAllErrors, MutableInt referenceCounter) |
|
313 |
throws PersistenceException { |
|
298 | 314 |
PersistentStateServices state = null; |
299 | 315 |
if( collectAllErrors ) { |
300 |
PersistentContextServices context = this.getNewContext(); |
|
316 |
PersistentContextServices context = this.getNewContext(referenceCounter);
|
|
301 | 317 |
context.setCollectErrors(true); |
302 | 318 |
try { |
303 | 319 |
state = createState(obj, context); |
... | ... | |
309 | 325 |
context.addError(ex); |
310 | 326 |
} |
311 | 327 |
} else { |
312 |
PersistentContextServices context = this.getNewContext(); |
|
328 |
PersistentContextServices context = this.getNewContext(referenceCounter);
|
|
313 | 329 |
state = createState(obj, context); |
314 | 330 |
context.setRootId(state.getId()); |
315 | 331 |
this.validateAll(state, this.autoValidationMode); |
Also available in: Unified diff