public static IEnumerable<string> GetJarsFromPOM(this IMavenArtifactHandler handler, MavenPartialPOM pom)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            if (pom == null)
            {
                throw new ArgumentNullException("pom");
            }

            ISet<string> jarFilePaths = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

            foreach (MavenDependency dependency in pom.Dependencies)
            {
                string jarFilePath = handler.FetchArtifactJarFile(dependency);
                if (jarFilePath != null)
                {
                    Debug.Assert(!jarFilePaths.Contains(jarFilePath, StringComparer.OrdinalIgnoreCase), "Expecting full jar paths to be unique");
                    Debug.Assert(!jarFilePaths.Any(j => Path.GetFileName(j).Equals(Path.GetFileName(jarFilePath), StringComparison.OrdinalIgnoreCase)),
                        "Expecting jars file names to be unique");

                    jarFilePaths.Add(jarFilePath);
                }
            }
            return jarFilePaths;
        }
예제 #2
0
        private static MavenPartialPOM SafeLoad(XmlSerializer serializer, Stream stream)
        {
            MavenPartialPOM data = null;

            try
            {
                data = serializer.Deserialize(stream) as MavenPartialPOM;
            }
            catch (InvalidOperationException)
            {
            }

            return(data);
        }
예제 #3
0
        private static MavenPartialPOM TryLoad(Stream stream)
        {
            // Try to load with namespace
            XmlSerializer   serializer = new XmlSerializer(typeof(MavenPartialPOM), PomNamespace);
            MavenPartialPOM data       = SafeLoad(serializer, stream);

            // If that fails, try to load without the namespace (some POMs are
            // not well formed)
            if (data == null)
            {
                stream.Position = 0;
                serializer      = new XmlSerializer(typeof(MavenPartialPOM));
                data            = SafeLoad(serializer, stream);
            }

            return(data);
        }
예제 #4
0
        public void MavenPOM_SaveAndReload_Succeeds()
        {
            // Arrange
            string testDir = TestUtils.CreateTestDirectory(this.TestContext);
            string filePath = Path.Combine(testDir, "pom1.txt");

            MavenPartialPOM originalPOM = new MavenPartialPOM()
            {
                ArtifactId = "artifact.id",
                Description = "description",
                Name = "name",
                ModelVersion = "1.0.0",
                Packaging = "jar"
            };

            originalPOM.Parent = new MavenCoordinate("parent.group.id", "parent.artifact.id", "1.0.0-parent");

            MavenDependency desc1 = new MavenDependency("group.id.1", "artifact.id.1", "1.0.0-desc1");
            MavenDependency desc2 = new MavenDependency("group.id.2", "artifact.id.2", "1.0.0-desc2");
            originalPOM.Dependencies.Add(desc1);
            originalPOM.Dependencies.Add(desc2);

            MavenCoordinate exclusion1 = new MavenCoordinate("ex-group", "ex-artifact", "1.0.0-ex");
            desc1.Exclusions.Add(exclusion1);

            originalPOM.Save(filePath);
            Assert.IsTrue(File.Exists(filePath), "File was not created: {0}", filePath);
            this.TestContext.AddResultFile(filePath);

            // Act
            MavenPartialPOM reloadedPOM = MavenPartialPOM.Load(filePath);

            // Assert
            Assert.IsNotNull(reloadedPOM, "Reloaded object should not be null");
            AssertExpectedDescriptor(reloadedPOM.Parent, "parent.group.id", "parent.artifact.id", "1.0.0-parent");

            Assert.IsNotNull(reloadedPOM.Dependencies, "Failed to reload the dependencies");
            Assert.AreEqual(2, reloadedPOM.Dependencies.Count);
            AssertExpectedDescriptor(reloadedPOM.Dependencies[0], "group.id.1", "artifact.id.1", "1.0.0-desc1");
            AssertExpectedDescriptor(reloadedPOM.Dependencies[1], "group.id.2", "artifact.id.2", "1.0.0-desc2");

            Assert.IsNotNull(reloadedPOM.Dependencies[0].Exclusions, "Exclusions were not reloaded successfully");
            AssertExpectedDescriptor(reloadedPOM.Dependencies[0].Exclusions.FirstOrDefault(), "ex-group", "ex-artifact", "1.0.0-ex");
        }
예제 #5
0
        public static MavenPartialPOM Load(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                throw new ArgumentNullException("filePath");
            }

            MavenPartialPOM data = null;

            using (Stream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                data = TryLoad(stream);
            }

            if (data != null)
            {
                data.FilePath = filePath;
            }

            return(data);
        }
예제 #6
0
        public static MavenPartialPOM GetPOMFromResource(this IMavenArtifactHandler handler, Assembly resourceAssembly, string resourceName)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            if (resourceAssembly == null)
            {
                throw new ArgumentNullException("resourceAssembly");
            }
            if (string.IsNullOrWhiteSpace(resourceName))
            {
                throw new ArgumentNullException("resourceName");
            }

            MavenPartialPOM pom = null;

            using (Stream stream = resourceAssembly.GetManifestResourceStream(resourceName))
            {
                pom = MavenPartialPOM.Load(stream);
            }
            return(pom);
        }
        private IEnumerable<string> GetJarsFromPOM(MavenPartialPOM pom)
        {
            Debug.Assert(pom != null);

            IList<string> jarFilePaths = new List<string>();

            MavenArtifactHandler handler = new MavenArtifactHandler(this.logger);

            foreach (MavenDependency dependency in pom.Dependencies)
            {
                string jarFilePath = handler.FetchArtifactJarFile(dependency);
                jarFilePaths.Add(jarFilePath);
            }
            return jarFilePaths;
        }
예제 #8
0
        public static IEnumerable <string> GetJarsFromPOM(this IMavenArtifactHandler handler, MavenPartialPOM pom)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            if (pom == null)
            {
                throw new ArgumentNullException("pom");
            }

            ISet <string> jarFilePaths = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

            foreach (MavenDependency dependency in pom.Dependencies)
            {
                string jarFilePath = handler.FetchArtifactJarFile(dependency);
                if (jarFilePath != null)
                {
                    Debug.Assert(!jarFilePaths.Contains(jarFilePath, StringComparer.OrdinalIgnoreCase), "Expecting full jar paths to be unique");
                    Debug.Assert(!jarFilePaths.Any(j => Path.GetFileName(j).Equals(Path.GetFileName(jarFilePath), StringComparison.OrdinalIgnoreCase)),
                                 "Expecting jars file names to be unique");

                    jarFilePaths.Add(jarFilePath);
                }
            }
            return(jarFilePaths);
        }