private Bucket doIndex(Resource resource, @Nullable Resource parentReference) { Bucket bucket = getBucket(resource); if (bucket != null) { return bucket; } if (StringUtils.isBlank(resource.getKey())) { LOG.warn("Unable to index a resource without key " + resource); return null; } Resource parent = null; if (!ResourceUtils.isLibrary(resource)) { // a library has no parent parent = (Resource) ObjectUtils.defaultIfNull(parentReference, currentProject); } Bucket parentBucket = getBucket(parent); if (parentBucket == null && parent != null) { LOG.warn("Resource ignored, parent is not indexed: " + resource); return null; } if (ResourceUtils.isProject(resource) || /* For technical projects */ResourceUtils.isRootProject(resource)) { resource.setEffectiveKey(resource.getKey()); } else { resource.setEffectiveKey(ComponentKeys.createEffectiveKey(currentProject, resource)); } bucket = new Bucket(resource).setParent(parentBucket); addBucket(resource, bucket); Resource parentResource = parentBucket != null ? parentBucket.getResource() : null; resourceCache.add(resource, parentResource); return bucket; }
static void mergeModel(ResourceModel model, Resource resource) { model.setEnabled(true); model.setKey(resource.getEffectiveKey()); if (StringUtils.isNotBlank(resource.getName())) { model.setName(resource.getName()); } if (StringUtils.isNotBlank(resource.getLongName())) { model.setLongName(resource.getLongName()); } if (StringUtils.isNotBlank(resource.getDescription())) { model.setDescription(resource.getDescription()); } if (StringUtils.isNotBlank(resource.getPath())) { model.setPath(resource.getPath()); } if (!ResourceUtils.isLibrary(resource)) { model.setScope(resource.getScope()); model.setQualifier(resource.getQualifier()); } Language language = resource.getLanguage(); if (language != null) { model.setLanguageKey(language.getKey()); } } }
private void updateUuids(Resource resource, Resource parentResource, ResourceModel model) { // Don't override uuids when persisting a library and a project already exists if (ResourceUtils.isLibrary(resource) && !Qualifiers.LIBRARY.equals(model.getQualifier())) { return; } if (parentResource == null) { // Root module && libraries model.setProjectUuid(model.getUuid()); model.setModuleUuidPath(MODULE_UUID_PATH_SEPARATOR + model.getUuid() + MODULE_UUID_PATH_SEPARATOR); } else { ResourceModel parentModel = session.getSingleResult(ResourceModel.class, "id", parentResource.getId()); model.setProjectUuid(parentModel.getProjectUuid()); if (Scopes.isProject(resource)) { // Sub module model.setModuleUuid(parentResource.getUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath + model.getUuid() + MODULE_UUID_PATH_SEPARATOR); } else if (Scopes.isProject(parentResource)) { // Directory model.setModuleUuid(parentResource.getUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath); } else { // File model.setModuleUuid(parentModel.getModuleUuid()); String parentModuleUuidPath = parentModel.getModuleUuidPath(); model.setModuleUuidPath(parentModuleUuidPath); } } }