- // does nothing if data model already registered
- if (dataModel != null && !forceCndImport) {
- if (dataModelBundle != null) {
- String version = dataModel.getProperty(
- ArgeoNames.ARGEO_DATA_MODEL_VERSION)
- .getString();
- String dataModelBundleVersion = dataModelBundle
- .getVersion().toString();
- if (!version.equals(dataModelBundleVersion)) {
- log.warn("Data model with version "
- + dataModelBundleVersion
- + " available, current version is "
- + version);
- }
- }
- // do not implicitly update
- return;
- }
-
- Reader reader = null;
- try {
- reader = new InputStreamReader(url.openStream());
- // actually imports the CND
- CndImporter.registerNodeTypes(reader, session, true);
-
- // FIXME: what if argeo.cnd would not be the first called on
- // a new repo? argeo:dataModel would not be found
- String fileName = FilenameUtils.getName(url.getPath());
- if (dataModel == null) {
- dataModel = dataModels.addNode(fileName);
- dataModel.addMixin(ArgeoTypes.ARGEO_DATA_MODEL);
- dataModel.setProperty(ArgeoNames.ARGEO_URI, resUrl);
- } else {
- session.getWorkspace().getVersionManager()
- .checkout(dataModel.getPath());
- }
- if (dataModelBundle != null)
- dataModel.setProperty(
- ArgeoNames.ARGEO_DATA_MODEL_VERSION,
- dataModelBundle.getVersion().toString());
- else
- dataModel.setProperty(
- ArgeoNames.ARGEO_DATA_MODEL_VERSION, "0.0.0");
- JcrUtils.updateLastModified(dataModel);
- session.save();
- session.getWorkspace().getVersionManager()
- .checkin(dataModel.getPath());
- } finally {
- IOUtils.closeQuietly(reader);
- }
-
- if (log.isDebugEnabled())
- log.debug("Data model "
- + resUrl
- + (dataModelBundle != null ? ", version "
- + dataModelBundle.getVersion()
- + ", bundle "
- + dataModelBundle.getSymbolicName() : ""));
- }
+ // process configuration file
+ Properties vars = getConfigurationProperties();
+ configurationIn = readConfiguration();
+ vars.put(RepositoryConfigurationParser.REPOSITORY_HOME_VARIABLE,
+ getHomeDirectory().getCanonicalPath());
+ repositoryConfig = RepositoryConfig.create(new InputSource(
+ configurationIn), vars);
+
+ //
+ // Actual repository creation
+ //
+ repository = RepositoryImpl.create(repositoryConfig);
+
+ double duration = ((double) (System.currentTimeMillis() - begin)) / 1000;
+ if (log.isTraceEnabled())
+ log.trace("Created Jackrabbit repository in " + duration
+ + " s, home: " + getHomeDirectory());
+
+ return repository;