docs: @PostConstruct
  	protected void initFeatures() throws LayerException {
  		if (null == layerInfo) {
  			return;
  		}
  		crs = geoService.getCrs2(layerInfo.getCrs());
  		setFeatureSourceName(layerInfo.getFeatureInfo().getDataSourceName());
  		try {
  			if (null == super.getDataStore()) {
  				Map<String, Object> params = new HashMap<String, Object>();
  				if (null != url) {
  					params.put(ShapefileDataStoreFactory.URLP.key, url);
  				}
  				if (null != dbtype) {
  					params.put(JDBCDataStoreFactory.DBTYPE.key, dbtype);
  				}
  				if (null != parameters) {
  					for (Parameter parameter : parameters) {
  						params.put(parameter.getName(), parameter.getValue());
  					}
  				}
  				if (null != dataSource) {
  					params.put(JDBCDataStoreFactory.DATASOURCE.key, dataSource);
  					// these are apparently required but not used
  					params.put(JDBCDataStoreFactory.DATABASE.key, "some_database");
  					params.put(JDBCDataStoreFactory.USER.key, "some_user");
  					params.put(JDBCDataStoreFactory.PASSWD.key, "some_password");
  					params.put(JDBCDataStoreFactory.HOST.key, "some host");
  					params.put(JDBCDataStoreFactory.PORT.key, "0");
  				}
  				DataStore store = DataStoreFactory.create(params);
  				super.setDataStore(store);
  			}
  			if (null == super.getDataStore()) {
  				return;
  			}
  			this.featureModel = new GeoToolsFeatureModel(super.getDataStore(), layerInfo.getFeatureInfo()
  					.getDataSourceName(), geoService.getSridFromCrs(layerInfo.getCrs()), converterService);
  			featureModel.setLayerInfo(layerInfo);
  			featureModelUsable = true;
  
  		} catch (IOException ioe) {
  			if (MAGIC_STRING_LIBRARY_MISSING.equals(ioe.getMessage())) {
  				throw new LayerException(ioe, ExceptionCode.LAYER_MODEL_IO_EXCEPTION, url);
  			} else {
  				featureModelUsable = false;
  				log.warn("The layer could not be correctly initialized: " + getId(), ioe);
  			}
  		} catch (LayerException le) {
  			featureModelUsable = false;
  			log.warn("The layer could not be correctly initialized: " + getId(), le);
  		} catch (RuntimeException e) {
  			featureModelUsable = false;
  			log.warn("The layer could not be correctly initialized: " + getId(), e);
  		}
  	}