+ protected void registerSource(RpmRepository sourceRepo, Node node,
+ String remoteUrl) throws RepositoryException {
+ node.addMixin(SlcTypes.SLC_KNOWN_ORIGIN);
+ Node origin;
+ if (!node.hasNode(SLC_ORIGIN))
+ origin = node.addNode(SLC_ORIGIN, SlcTypes.SLC_PROXIED);
+ else
+ origin = node.getNode(SLC_ORIGIN);
+
+ // proxied repository
+ Node proxiedRepository;
+ String proxiedRepositoryPath = RepoConstants.PROXIED_REPOSITORIES + '/'
+ + sourceRepo.getId();
+ Session session = node.getSession();
+ if (session.itemExists(proxiedRepositoryPath)) {
+ proxiedRepository = session.getNode(proxiedRepositoryPath);
+ } else {
+ proxiedRepository = session.getNode(
+ RepoConstants.PROXIED_REPOSITORIES).addNode(
+ sourceRepo.getId());
+ proxiedRepository.addMixin(NodeType.MIX_REFERENCEABLE);
+ JcrUtils.urlToAddressProperties(proxiedRepository,
+ sourceRepo.getUrl());
+ proxiedRepository.setProperty(SLC_URL, sourceRepo.getUrl());
+ }
+
+ origin.setProperty(SLC_PROXY, proxiedRepository);
+ JcrUtils.urlToAddressProperties(origin, remoteUrl);
+ }
+