FeatureType getCacheableFeatureType(FeatureTypeInfo info, boolean handleProjectionPolicy) throws IOException { String key = getFeatureTypeInfoKey(info, handleProjectionPolicy); FeatureType ft = featureTypeCache.get(key); if (ft == null) { synchronized (featureTypeCache) { ft = featureTypeCache.get(key); if (ft == null) { // grab the underlying feature type DataAccess<? extends FeatureType, ? extends Feature> dataAccess = getDataStore(info.getStore()); FeatureTypeCallback initializer = getFeatureTypeInitializer(info, dataAccess); if (initializer != null) { initializer.initialize(info, dataAccess, null); } // ft = jstore.getSchema(vt.getName()); ft = dataAccess.getSchema(info.getQualifiedNativeName()); ft = buildFeatureType(info, handleProjectionPolicy, ft); featureTypeCache.put(key, ft); } } } return ft; }
private FeatureType getNonCacheableFeatureType( FeatureTypeInfo info, boolean handleProjectionPolicy) throws IOException { FeatureType ft = null; // grab the underlying feature type DataAccess<? extends FeatureType, ? extends Feature> dataAccess = getDataStore(info.getStore()); FeatureTypeCallback initializer = getFeatureTypeInitializer(info, dataAccess); Name temporaryName = null; if (initializer != null) { temporaryName = getTemporaryName(info, dataAccess, initializer); } ft = dataAccess.getSchema( temporaryName != null ? temporaryName : info.getQualifiedNativeName()); ft = buildFeatureType(info, handleProjectionPolicy, ft); // Remove layer configuration from datastore if (initializer != null && temporaryName != null) { initializer.dispose(info, dataAccess, temporaryName); } return ft; }
FeatureTypeCallback initializer = getFeatureTypeInitializer(info, dataAccess); if (initializer != null) { initializer.initialize(info, dataAccess, null);