Code:
|
# NB must be done by direct access
if packageName == 'memops.Implementation':
raise ApiError("refreshTopObjects not allowed for memops.Implementation")
import os, os.path
from memops.format.xml import XmlIO
from memops.format.xml import Util as xmlUtil
topObjects = self.__dict__['topObjects']
ff = self.findFirstPackageLocator
activeRepositories = {}
repositories = (ff(targetName=packageName) or ff(targetName='any')).repositories
for repository in repositories:
fileLocation = repository.getFileLocation(packageName)
if not os.path.exists(fileLocation):
continue
if not os.path.isdir(fileLocation):
raise ApiError("%s is not a directory" % fileLocation)
fileSuffix = xmlUtil.fileSuffix
lenSuffix = xmlUtil.lenFileSuffix
sep = xmlUtil.keySep
for filename in os.listdir(fileLocation):
if filename.startswith('.'):
# skip hidden files (on *nix/Mac)
continue
elif filename.endswith(fileSuffix):
guid = filename.split(sep)[-1][:-lenSuffix]
topObject = topObjects.get(guid)
if topObject is None:
filePath = os.path.join(fileLocation, filename)
topObject = XmlIO.loadFromFile(self, filePath, partialLoad=True)
ll = activeRepositories.setdefault(topObject, [])
ll.append(repository)
# set activeRepositories
for topObject, ll in activeRepositories.iteritems():
topObject.__dict__['activeRepositories'] = ll
|