Revision 2651

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/util/PropertiesSupportHelper.java
7 7
import java.util.Map;
8 8
import org.gvsig.tools.ToolsLocator;
9 9
import org.gvsig.tools.dynobject.DynStruct;
10
import org.gvsig.tools.lang.CloneableUtils;
10 11
import org.gvsig.tools.observer.Observable;
11 12
import org.gvsig.tools.observer.ObservableHelper;
12 13
import org.gvsig.tools.observer.Observer;
......
79 80
 *
80 81
 * @author gvSIG Team
81 82
 */
82
public class PropertiesSupportHelper implements PropertiesSupport, Persistent, Observable {
83
public class PropertiesSupportHelper implements PropertiesSupport, Persistent, Observable, org.gvsig.tools.lang.Cloneable {
83 84

  
84 85
    private static final Logger LOGGER = LoggerFactory.getLogger(PropertiesSupportHelper.class);
85 86

  
......
90 91
    private ObservableHelper observableHelper;
91 92

  
92 93
    @Override
94
    public PropertiesSupportHelper clone() throws CloneNotSupportedException {
95
        PropertiesSupportHelper other = (PropertiesSupportHelper) super.clone();
96
        
97
        other.properties = (Map<String, Object>) new HashMap<>(this.properties);
98
        if (observableHelper!=null) {
99
            other.observableHelper = this.observableHelper.clone();
100
        }
101
        
102
        return other;
103
    }
104

  
105
    
106
    @Override
93 107
    public Object getProperty(String key) {
94 108
        return properties.get(key.toUpperCase());
95 109
    }
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/observer/ObservableHelper.java
25 25

  
26 26
import java.util.ArrayList;
27 27
import java.util.List;
28
import org.gvsig.tools.lang.CloneableUtils;
28 29
import org.slf4j.Logger;
29 30
import org.slf4j.LoggerFactory;
30 31

  
31
public class ObservableHelper {
32
public class ObservableHelper implements org.gvsig.tools.lang.Cloneable {
32 33

  
33 34
    private static final Logger logger = LoggerFactory.getLogger(ObservableHelper.class);
34 35

  
35
    private List observers = new ArrayList();
36
    private List<Observer> observers = new ArrayList();
36 37

  
38
    @Override
39
    public ObservableHelper clone() throws CloneNotSupportedException {
40
        ObservableHelper other = (ObservableHelper) super.clone();
41
        other.observers = (List<Observer>) CloneableUtils.cloneQuietly(this.observers);
42
        return other;
43
    }
44

  
45
    
37 46
    public synchronized void addObserver(Observer o) {
38 47
        if ( this.observers.contains(o) ) {
39 48
            return;

Also available in: Unified diff