/** * Creates a collection in the given common location. * * @param commonLocation location to create the collection. * @throws RegistryException If fails to create a collection at given location. */ private void createCollection(String commonLocation) throws RegistryException { Registry systemRegistry = CommonUtil.getUnchrootedSystemRegistry(requestContext); // Creating a collection if not exists. if (!systemRegistry.resourceExists(commonLocation)) { systemRegistry.put(commonLocation, systemRegistry.newCollection()); } }
/** * @param policyStoreDTO * @return */ public static void addPolicyToPDP(PolicyStoreDTO policyStoreDTO) throws EntitlementException { Registry registry; String policyPath; Collection policyCollection; Resource resource; Map.Entry<PolicyStoreManageModule, Properties> entry = EntitlementServiceComponent.getEntitlementConfig() .getPolicyStore() .entrySet() .iterator() .next(); String policyStorePath = entry.getValue().getProperty("policyStorePath"); if (policyStorePath == null) { policyStorePath = "/repository/identity/Entitlement/actualStore/"; } if (policyStoreDTO == null || policyStoreDTO.getPolicy() == null || policyStoreDTO.getPolicy().trim().length() == 0 || policyStoreDTO.getPolicyId() == null || policyStoreDTO.getPolicyId().trim().length() == 0) { return; } try { registry = EntitlementServiceComponent.getRegistryService().getGovernanceSystemRegistry(); if (registry.resourceExists(policyStorePath)) { policyCollection = (Collection) registry.get(policyStorePath); } else { policyCollection = registry.newCollection(); } registry.put(policyStorePath, policyCollection); policyPath = policyStorePath + policyStoreDTO.getPolicyId(); if (registry.resourceExists(policyPath)) { resource = registry.get(policyPath); } else { resource = registry.newResource(); } resource.setProperty("policyOrder", Integer.toString(policyStoreDTO.getPolicyOrder())); resource.setContent(policyStoreDTO.getPolicy()); resource.setMediaType("application/xacml-policy+xml"); AttributeDTO[] attributeDTOs = policyStoreDTO.getAttributeDTOs(); if (attributeDTOs != null) { setAttributesAsProperties(attributeDTOs, resource); } registry.put(policyPath, resource); } catch (RegistryException e) { log.error(e); throw new EntitlementException("Error while adding policy to PDP", e); } }
public RegistryManager() { try { if (!registry.resourceExists(CartridgeConstants.DomainMappingInfo.HOSTINFO)) { registry.put(CartridgeConstants.DomainMappingInfo.HOSTINFO, registry.newCollection()); } } catch (RegistryException e) { String msg = "Error while accessing registry or initializing domain mapping registry path\n"; log.error(msg + e.getMessage()); } }
/** * method to persist credentials of a jira account * * @param registry Registry * @param accountInfo AccountInfo * @throws IssueTrackerException thrown id unable to store resources in the registry */ public static void persistCredentials(Registry registry, AccountInfo accountInfo) throws IssueTrackerException { Resource resource = null; String path = IssueTrackerConstants.ISSUE_TRACKERS_RESOURCE_PATH + accountInfo.getKey(); try { // if the collection does not exist create one if (!registry.resourceExists(IssueTrackerConstants.ISSUE_TRACKERS_RESOURCE_PATH)) { Collection collection = registry.newCollection(); registry.put(IssueTrackerConstants.ISSUE_TRACKERS_RESOURCE_PATH, collection); } // get registry resource if (registry.resourceExists(path)) { resource = registry.get(path); } else { resource = registry.newResource(); } } catch (RegistryException e) { ExceptionHandler.handleException("Error accessing registry", e, log); } // get credentials from account info GenericCredentials credentials; credentials = accountInfo.getCredentials(); // set properties of the registry resources if (resource != null) { resource.addProperty(IssueTrackerConstants.ACCOUNT_KEY, accountInfo.getKey()); resource.addProperty(IssueTrackerConstants.ISSUE_TRACKER_URL, credentials.getUrl()); resource.addProperty(IssueTrackerConstants.ACCOUNT_LOGIN_USERNAME, credentials.getUsername()); resource.addProperty(IssueTrackerConstants.ACCOUNT_EMAIL, accountInfo.getEmail()); resource.addProperty(IssueTrackerConstants.ACCOUNT_UID, accountInfo.getUid()); resource.addProperty( IssueTrackerConstants.HAS_SUPPORT_ACCOUNT, String.valueOf(accountInfo.isHasSupportAccount())); // set properties related with automatic reporting if (accountInfo.isAutoReportingEnable()) { AutoReportingSettings settings = accountInfo.getAutoReportingSettings(); resource.addProperty( IssueTrackerConstants.AUTO_REPORTING, IssueTrackerConstants.IS_AUTO_REPORTING_ENABLED); resource.addProperty( IssueTrackerConstants.AUTO_REPORTING_PROJECT, settings.getProjectName()); resource.addProperty(IssueTrackerConstants.AUTO_REPORTING_PRIORITY, settings.getPriority()); resource.addProperty( IssueTrackerConstants.AUTO_REPORTING_ISSUE_TYPE, settings.getIssueType()); } else { resource.addProperty( IssueTrackerConstants.AUTO_REPORTING, IssueTrackerConstants.IS_AUTO_REPORTING_DISABLED); } // encrypt and store password String password = credentials.getPassword(); if (null != password && !"".equals(password)) { byte[] bytes = (password).getBytes(); try { String base64String = CryptoUtil.getDefaultCryptoUtil().encryptAndBase64Encode(bytes); resource.addProperty( IssueTrackerConstants.ACCOUNT_PASSWORD_HIDDEN_PROPERTY, base64String); } catch (org.wso2.carbon.core.util.CryptoException e) { ExceptionHandler.handleException("Error accessing registry", e, log); } } } // put resource to registry try { registry.put(path, resource); } catch (RegistryException e) { ExceptionHandler.handleException("Error while persisting accountInfo", e, log); } }
/** * Method to obtain the resource media types. * * @param configSystemRegistry a configuration system registry instance. * @return a String of resource media types, in the format extension:type,extension:type,... * @throws RegistryException if the operation failed. */ public static String getResourceMediaTypeMappings(Registry configSystemRegistry) throws RegistryException { RegistryContext registryContext = configSystemRegistry.getRegistryContext(); if (getResourceMediaTypeMappings(registryContext) != null) { return getResourceMediaTypeMappings(registryContext); } Resource resource; String mediaTypeString = null; String resourcePath = MIME_TYPE_COLLECTION + RegistryConstants.PATH_SEPARATOR + RESOURCE_MIME_TYPE_INDEX; if (!configSystemRegistry.resourceExists(resourcePath)) { resource = configSystemRegistry.newCollection(); } else { resource = configSystemRegistry.get(resourcePath); Properties properties = resource.getProperties(); if (properties.size() > 0) { Set<Object> keySet = properties.keySet(); for (Object key : keySet) { if (key instanceof String) { String ext = (String) key; if (RegistryUtils.isHiddenProperty(ext)) { continue; } String value = resource.getProperty(ext); String mediaTypeMapping = ext + ":" + value; if (mediaTypeString == null) { mediaTypeString = mediaTypeMapping; } else { mediaTypeString = mediaTypeString + "," + mediaTypeMapping; } } } } registryContext.setResourceMediaTypes(mediaTypeString); return mediaTypeString; } BufferedReader reader; try { File mimeFile = getMediaTypesFile(); reader = new BufferedReader(new InputStreamReader(new FileInputStream(mimeFile))); } catch (Exception e) { String msg = "Failed to read the the media type definitions file. Only a limited " + "set of media type definitions will be populated. "; log.error(msg, e); mediaTypeString = "txt:text/plain,jpg:image/jpeg,gif:image/gif"; registryContext.setResourceMediaTypes(mediaTypeString); return mediaTypeString; } try { while (reader.ready()) { String mediaTypeData = reader.readLine().trim(); if (mediaTypeData.startsWith("#")) { // ignore the comments continue; } if (mediaTypeData.length() == 0) { // ignore the blank lines continue; } // mime.type file delimits media types:extensions by tabs. if there is no // extension associated with a media type, there are no tabs in the line. so we // don't need such lines. if (mediaTypeData.indexOf('\t') > 0) { String[] parts = mediaTypeData.split("\t+"); if (parts.length == 2 && parts[0].length() > 0 && parts[1].length() > 0) { // there can multiple extensions associated with a single media type. in // that case, extensions are delimited by a space. String[] extensions = parts[1].trim().split(" "); for (String extension : extensions) { if (extension.length() > 0) { String mediaTypeMapping = extension + ":" + parts[0]; resource.setProperty(extension, parts[0]); if (mediaTypeString == null) { mediaTypeString = mediaTypeMapping; } else { mediaTypeString = mediaTypeString + "," + mediaTypeMapping; } } } } } } resource.setDescription( "This collection contains the media Types available for " + "resources on the Registry. Add, Edit or Delete properties to Manage Media " + "Types."); Resource collection = configSystemRegistry.newCollection(); collection.setDescription( "This collection lists the media types available on the " + "Registry Server. Before changing an existing media type, please make sure " + "to alter existing resources/collections and related configuration details."); configSystemRegistry.put(MIME_TYPE_COLLECTION, collection); configSystemRegistry.put(resourcePath, resource); } catch (IOException e) { String msg = "Could not read the media type mappings file from the location: "; throw new RegistryException(msg, e); } finally { try { reader.close(); } catch (IOException ignore) { } } registryContext.setResourceMediaTypes(mediaTypeString); return mediaTypeString; }
/** * Simulates a configSystemRegistry operation. * * <p>Operation criteria: get - path put - path, resourcePath (existing resource), optional : * mediaType resourceExists - path delete - path importResource - path, param1 (URL: source URL), * optional : mediaType copy - path, param1 (target path) move - path, param1 (target path) rename * - path, param1 (target path) removeLink - path createLink - path, param1 (target path), * optional : param2 (target sub-path) invokeAspect - path, param1 (aspect name), param2 (action) * addAssociation - path, param1 (target path), param2 (association type) removeAssociation - * path, param1 (target path), param2 (association type) getAssociations - path, param1 * (association type) getAllAssociations - path createVersion - path restoreVersion - path * getVersions - path applyTag - path, param1 (tag) removeTag - path, param1 (tag) getTags - path * getResourcePathsWithTag - param1 (tag) rateResource - path, param1 (Number: rating) getRating - * path, param1 (username) getAverageRating - path addComment - path, param1 (comment) * removeComment - path editComment - path, param1 (comment) getComments - path searchContent - * param1 (keywords) executeQuery - param1 (Map: parameters, ex:- key1:val1,key2:val2,...), * optional: path * * <p>Operations not-supported dump restore * * @param simulationRequest the simulation request. * @throws Exception if an exception occurs while executing any operation, or if an invalid * parameter was entered. */ public static void simulateRegistryOperation( Registry rootRegistry, SimulationRequest simulationRequest) throws Exception { String operation = simulationRequest.getOperation(); if (operation == null) { return; } if (operation.toLowerCase().equals("get")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.get(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("resourceexists")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.resourceExists(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("put")) { String path = simulationRequest.getPath(); String resourcePath = simulationRequest.getResourcePath(); String type = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { type = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(type)) { return; } Resource resource; if (!isInvalidateValue(resourcePath) && rootRegistry.resourceExists(resourcePath)) { resource = rootRegistry.get(resourcePath); } else if (type.toLowerCase().equals("collection")) { resource = rootRegistry.newCollection(); } else { resource = rootRegistry.newResource(); } simulationService.setSimulation(true); resource.setMediaType(simulationRequest.getMediaType()); rootRegistry.put(path, resource); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("delete")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.delete(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("importresource")) { String path = simulationRequest.getPath(); String sourceURL = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { sourceURL = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(sourceURL)) { return; } simulationService.setSimulation(true); Resource resource = rootRegistry.newResource(); resource.setMediaType(simulationRequest.getMediaType()); rootRegistry.importResource(path, sourceURL, resource); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("rename")) { String path = simulationRequest.getPath(); String target = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { target = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(target)) { return; } simulationService.setSimulation(true); rootRegistry.rename(path, target); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("move")) { String path = simulationRequest.getPath(); String target = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { target = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(target)) { return; } simulationService.setSimulation(true); rootRegistry.move(path, target); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("copy")) { String path = simulationRequest.getPath(); String target = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { target = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(target)) { return; } simulationService.setSimulation(true); rootRegistry.copy(path, target); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("removelink")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.removeLink(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("createlink")) { String path = simulationRequest.getPath(); String target = null; String targetSubPath = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length > 0) { target = params[0]; if (params.length > 1) { targetSubPath = params[1]; } } if (isInvalidateValue(path) || isInvalidateValue(target)) { return; } simulationService.setSimulation(true); if (isInvalidateValue(targetSubPath)) { rootRegistry.createLink(path, target); } else { rootRegistry.createLink(path, target, targetSubPath); } simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("invokeaspect")) { String path = simulationRequest.getPath(); String aspectName = null; String action = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 2) { aspectName = params[0]; action = params[1]; } if (isInvalidateValue(path) || isInvalidateValue(aspectName) || isInvalidateValue(action)) { return; } simulationService.setSimulation(true); rootRegistry.invokeAspect(path, aspectName, action); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("addassociation")) { String path = simulationRequest.getPath(); String target = null; String associationType = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 2) { target = params[0]; associationType = params[1]; } if (isInvalidateValue(path) || isInvalidateValue(target) || isInvalidateValue(associationType)) { return; } simulationService.setSimulation(true); rootRegistry.addAssociation(path, target, associationType); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("removeassociation")) { String path = simulationRequest.getPath(); String target = null; String associationType = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 2) { target = params[0]; associationType = params[1]; } if (isInvalidateValue(path) || isInvalidateValue(target) || isInvalidateValue(associationType)) { return; } simulationService.setSimulation(true); rootRegistry.removeAssociation(path, target, associationType); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getassociations")) { String path = simulationRequest.getPath(); String associationType = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { associationType = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(associationType)) { return; } simulationService.setSimulation(true); rootRegistry.getAssociations(path, associationType); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getallassociations")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.getAllAssociations(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("createversion")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.createVersion(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("restoreversion")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.restoreVersion(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getversions")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.getVersions(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("applytag")) { String path = simulationRequest.getPath(); String tag = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { tag = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(tag)) { return; } simulationService.setSimulation(true); rootRegistry.applyTag(path, tag); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("removetag")) { String path = simulationRequest.getPath(); String tag = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { tag = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(tag)) { return; } simulationService.setSimulation(true); rootRegistry.removeTag(path, tag); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("gettags")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.getTags(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getresourcepathswithtag")) { String tag = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { tag = params[0]; } if (isInvalidateValue(tag)) { return; } simulationService.setSimulation(true); rootRegistry.getResourcePathsWithTag(tag); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("rateresource")) { String path = simulationRequest.getPath(); int rating = -1; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { try { rating = Integer.parseInt(params[0]); } catch (NumberFormatException ignored) { return; } } if (isInvalidateValue(path) || rating == -1) { return; } simulationService.setSimulation(true); rootRegistry.rateResource(path, rating); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getrating")) { String path = simulationRequest.getPath(); String username = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { username = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(username)) { return; } simulationService.setSimulation(true); rootRegistry.getRating(path, username); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getaveragerating")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.getAverageRating(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("addcomment")) { String path = simulationRequest.getPath(); String comment = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { comment = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(comment)) { return; } simulationService.setSimulation(true); rootRegistry.addComment(path, new Comment(comment)); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("editcomment")) { String path = simulationRequest.getPath(); String comment = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { comment = params[0]; } if (isInvalidateValue(path) || isInvalidateValue(comment)) { return; } simulationService.setSimulation(true); rootRegistry.editComment(path, comment); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("removeComment")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.removeComment(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("getcomments")) { String path = simulationRequest.getPath(); if (isInvalidateValue(path)) { return; } simulationService.setSimulation(true); rootRegistry.getComments(path); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("searchcontent")) { String keywords = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { keywords = params[0]; } if (isInvalidateValue(keywords)) { return; } simulationService.setSimulation(true); rootRegistry.searchContent(keywords); simulationService.setSimulation(false); } else if (operation.toLowerCase().equals("executequery")) { String path = simulationRequest.getPath(); String queryParams = null; String[] params = simulationRequest.getParameters(); if (params != null && params.length >= 1) { queryParams = params[0]; } Map<String, String> paramMap = new LinkedHashMap<String, String>(); if (isInvalidateValue(queryParams)) { return; } String[] entries = queryParams.split(","); if (entries != null) { for (String entry : entries) { String[] keyValPair = entry.split(":"); if (keyValPair != null && keyValPair.length == 2) { paramMap.put(keyValPair[0], keyValPair[1]); } } } simulationService.setSimulation(true); rootRegistry.executeQuery(path, paramMap); simulationService.setSimulation(false); } else { throw new Exception("Unsupported Registry Operation: " + operation); } }
private static void transferDirectoryContentToRegistry( File rootDirectory, Registry registry, String rootPath, int tenantId) throws Exception { try { File[] filesAndDirs = rootDirectory.listFiles(); List<File> filesDirs = Arrays.asList(filesAndDirs); for (File file : filesDirs) { if (!file.isFile()) { // This is a Directory add a new collection // This path is used to store the file resource under registry String directoryRegistryPath = REGISTRY_GADGET_STORAGE_PATH + file.getAbsolutePath().substring(rootPath.length()).replaceAll("[/\\\\]+", "/"); // If the collection exists no need to create it. If not, create. if (!registry.resourceExists(directoryRegistryPath)) { Collection newCollection = registry.newCollection(); registry.put(directoryRegistryPath, newCollection); } // Set permission for anonymous read. We do it here because it should happen always in // order // to support mounting a remote registry. UserRegistry userRegistry = getRegistry(tenantId); AuthorizationManager accessControlAdmin = userRegistry.getUserRealm().getAuthorizationManager(); if (!accessControlAdmin.isRoleAuthorized( CarbonConstants.REGISTRY_ANONNYMOUS_ROLE_NAME, RegistryConstants.CONFIG_REGISTRY_BASE_PATH + REGISTRY_GADGET_STORAGE_PATH, ActionConstants.GET)) { accessControlAdmin.authorizeRole( CarbonConstants.REGISTRY_ANONNYMOUS_ROLE_NAME, RegistryConstants.CONFIG_REGISTRY_BASE_PATH + REGISTRY_GADGET_STORAGE_PATH, ActionConstants.GET); } // recurse transferDirectoryContentToRegistry(file, registry, rootPath, tenantId); } else { // Adding gadget to the gadget browser: gadget conf.xml need to be present if (file.getName().equals(GADGET_CONF_FILE)) { FileInputStream fis = new FileInputStream(file); XMLInputFactory xif = XMLInputFactory.newInstance(); XMLStreamReader reader = xif.createXMLStreamReader(fis); StAXOMBuilder builder = new StAXOMBuilder(reader); OMElement omEle = builder.getDocumentElement(); String gadgetName = omEle.getFirstChildWithName(new QName("name")).getText(); String gadgetPath = omEle.getFirstChildWithName(new QName("path")).getText(); String gadgetDesc = omEle.getFirstChildWithName(new QName("description")).getText(); Resource res = registry.newResource(); res.setProperty(DashboardConstants.GADGET_NAME, gadgetName); res.setProperty(DashboardConstants.GADGET_DESC, gadgetDesc); res.setProperty(DashboardConstants.GADGET_URL, gadgetPath); registry.put( DashboardConstants.SYSTEM_GADGETREPO_REGISTRY_ROOT + DashboardConstants.GADGETS_COL + "/" + gadgetName, res); } else { // Add this to registry addToRegistry(rootPath, file, tenantId); } } } } catch (Exception e) { log.error(e.getMessage(), e); throw new Exception(e); } }