Revision 1602 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/persistence/impl/DefaultFactories.java

View differences:

DefaultFactories.java
35 35
import org.gvsig.tools.persistence.PersistentState;
36 36
import org.gvsig.tools.persistence.PersistenceManager.Factories;
37 37
import org.gvsig.tools.persistence.impl.exception.PersistenceInvalidDomainNameException;
38
import org.slf4j.Logger;
39
import org.slf4j.LoggerFactory;
38 40

  
39 41
public class DefaultFactories extends ArrayList implements Factories {
40 42

  
43
    private static final Logger LOG = LoggerFactory.getLogger(DefaultFactories.class);
41 44
	/**
42 45
	 * 
43 46
	 */
......
108 111
		String className = theClass.getName();
109 112
		PersistenceFactory factory = (PersistenceFactory) classToFactoryCache.get(className);
110 113
		if (factory != null) {
114
            LOG.debug("DefaultFactories.get2("+theClass.getName()+") --> "+factory.getClass().getName()+" (cached).");
111 115
			return factory;
112 116
		}
113 117
        List<PersistenceFactory> factories = new ArrayList<>();
114 118
		Iterator factoriesIterator = super.iterator();
115 119
		while( factoriesIterator.hasNext() ) {
116 120
			factory = (PersistenceFactory) factoriesIterator.next();
117
			if( factory.manages(theClass)) {
121
			if( factory.getDefinition(className)!=null || factory.manages(theClass)) {
118 122
                factories.add(factory);
119 123
			}
120 124
		}
......
122 126
            return null;
123 127
        }
124 128
        if( factories.size()==1 ) {
129
            factory = factories.get(0);
125 130
            classToFactoryCache.put(className, factory);
131
            LOG.debug("DefaultFactories.get2("+theClass.getName()+") --> "+factory.getClass().getName()+".");
126 132
            return factory;
127 133
        }
128 134
        for( PersistenceFactory factory1 : factories ) {
129 135
            if( factory1.getManagedClasses().contains(theClass) ) {
130
                classToFactoryCache.put(className, factory);
131
                return factory;
136
                classToFactoryCache.put(className, factory1);
137
                LOG.debug("DefaultFactories.get2("+theClass.getName()+") ==> "+factory1.getClass().getName()+".");
138
                return factory1;
132 139
            }
133 140
        }
134 141
		return null;
135 142
	}
136

  
143
    
144
//	public PersistenceFactory get(Class theClass) {
145
//		String className = theClass.getName();
146
//		PersistenceFactory factory = (PersistenceFactory) classToFactoryCache.get(className);
147
//		if (factory != null) {
148
//            LOG.debug("DefaultFactories.get1("+theClass.getName()+") --> "+factory.getClass().getName()+" (cached).");
149
//			return factory;
150
//		} 
151
//		Iterator factoriesIterator = super.iterator();
152
//		while( factoriesIterator.hasNext() ) {
153
//			factory = (PersistenceFactory) factoriesIterator.next();
154
//			if( factory.manages(theClass)) {
155
//				classToFactoryCache.put(className, factory);
156
//                LOG.debug("DefaultFactories.get1("+theClass.getName()+") --> "+factory.getClass().getName()+".");
157
//				return factory;
158
//			}
159
//		}
160
//		return null;
161
//	}
162
    
137 163
	public PersistenceFactory get(Object object) {
138 164
		if( object instanceof String) {
139 165
			return this.get((String)object);

Also available in: Unified diff