Revision 1602 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/persistence/impl/DefaultFactories.java
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