public Boolean getValueFor(RepositoryItemUid subject) { // /.nexus/attributes if (subject.getPath() != null) { return subject.getPath().startsWith("/.nexus/attributes"); } else { return false; } }
private void fixRemoteUrl(ResourceStoreRequest request) { if (overwriteRemoteUrl != null) { return; } if (P2Constants.SITE_XML.equals(request.getRequestPath())) { return; } try { RepositoryItemUid siteUID = createUid(P2Constants.SITE_XML); ResourceStoreRequest siteRequest = new ResourceStoreRequest(siteUID.getPath()); StorageFileItem siteItem; try { siteItem = (StorageFileItem) getLocalStorage().retrieveItem(this, siteRequest); } catch (ItemNotFoundException e) { siteItem = (StorageFileItem) getRemoteStorage().retrieveItem(this, siteRequest, getRemoteUrl()); } PlexusConfiguration plexusConfig = new XmlPlexusConfiguration( Xpp3DomBuilder.build(new InputStreamReader(siteItem.getInputStream()))); this.overwriteRemoteUrl = plexusConfig.getAttribute("url"); getLogger() .info("Remote update site does overwrite the remote url " + this.overwriteRemoteUrl); } catch (Exception e) { getLogger().debug(e.getMessage(), e); this.overwriteRemoteUrl = ""; } }
@Override public String getPath() { return uid.getPath(); }
private void mirrorUpdateSite(boolean force) throws StorageException, IllegalOperationException, UnsupportedStorageOperationException { UpdateSite site; try { RepositoryItemUid siteUID = createUid(P2Constants.SITE_XML); String oldSha1 = null; ResourceStoreRequest request = new ResourceStoreRequest(siteUID.getPath()); try { oldSha1 = getLocalStorage() .retrieveItem(this, request) .getAttributes() .get(DigestCalculatingInspector.DIGEST_SHA1_KEY); } catch (ItemNotFoundException e) { // it's okay } StorageFileItem siteItem = (StorageFileItem) doRetrieveRemoteItem(request); if (!force && oldSha1 != null && oldSha1.equals( siteItem.getAttributes().get(DigestCalculatingInspector.DIGEST_SHA1_KEY))) { return; } site = UpdateSite.read(siteItem.getInputStream()); } catch (Exception e) { throw new StorageException("Could not read site.xml", e); } List<FeatureRef> features = site.getFeatures(); getLogger().info("Mirroring " + features.size() + " features from update site " + getName()); final Set<String> mirrored = new HashSet<String>(); for (IFeatureRef feature : features) { mirrorFeature(site, feature, mirrored); } ResourceStoreRequest root = new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT); DefaultWalkerContext ctx = new DefaultWalkerContext(this, root, filter); ctx.getContext().put("mirrored", mirrored); ctx.getProcessors() .add( new AbstractWalkerProcessor() { @SuppressWarnings("unchecked") @Override public void processItem(WalkerContext context, StorageItem item) throws Exception { Set<String> mirrored = (Set<String>) context.getContext().get("mirrored"); if (item.getRepositoryItemUid().getBooleanAttributeValue(IsHiddenAttribute.class)) { return; } if (item instanceof StorageFileItem && !mirrored.contains(item.getPath().substring(1))) { doDeleteItem(new ResourceStoreRequest(item.getPath())); } } }); getWalker().walk(ctx); getLogger().debug("Generating P2 metadata for Eclipse Update Site " + getName()); File baseDir = getLocalStorage().getBaseDir(this, root); File metadataDir = new File(baseDir, ".p2"); try { FileUtils.deleteDirectory(metadataDir); } catch (IOException e) { getLogger().warn("Unexpected IOException", e); } p2.generateSiteMetadata(baseDir, metadataDir, getName()); try { importFile(metadataDir, P2Constants.ARTIFACTS_PATH); importFile(metadataDir, P2Constants.CONTENT_PATH); FileUtils.deleteDirectory(metadataDir); } catch (IOException e) { // TODO this can actually happen on Windows getLogger().warn("Unexpected IOException", e); } }