Revision 2145 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/persistence/impl/AbstractPersistenceManager.java

View differences:

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