| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| using System; |
| using System.Collections.Generic; |
| using System.IO; |
| using System.Xml; |
| using System.Xml.Serialization; |
| |
| using NPanday.Plugin; |
| using NPanday.Model.Pom; |
| using NPanday.Model; |
| using NPanday.Artifact; |
| |
| namespace NPanday.Plugin.Addin |
| { |
| /// <summary> |
| /// Description |
| /// </summary> |
| [ClassAttribute(Phase = "package", Goal = "package")] |
| public sealed class AutomationExtensibilityMojo : AbstractMojo |
| { |
| public AutomationExtensibilityMojo() |
| { |
| } |
| |
| [FieldAttribute("repository", Expression = "${settings.localRepository}", Type = "java.lang.String")] |
| public String localRepository; |
| |
| [FieldAttribute("mavenProject", Expression = "${project}", Type = "org.apache.maven.project.MavenProject")] |
| public NPanday.Model.Pom.Model mavenProject; |
| |
| |
| public override Type GetMojoImplementationType() |
| { |
| return this.GetType(); |
| } |
| |
| public override void Execute() |
| { |
| ArtifactContext artifactContext = new ArtifactContext(); |
| FileInfo artifactFileInfo = PathUtil.GetPrivateApplicationBaseFileFor(artifactContext.GetArtifactFor(mavenProject), |
| new FileInfo(localRepository).Directory); |
| |
| Console.WriteLine("Artifact Path = " + artifactFileInfo.FullName); |
| |
| object[] extensibilityItems = new object[2]; |
| //Host Application |
| ExtensibilityHostApplication hostApplication = new ExtensibilityHostApplication(); |
| List<ItemsChoiceType> itemsChoiceTypes = new List<ItemsChoiceType>(); |
| List<String> itemsChoiceTypeValues = new List<string>(); |
| |
| itemsChoiceTypes.Add(ItemsChoiceType.Name); |
| itemsChoiceTypeValues.Add("Microsoft Visual Studio"); |
| |
| itemsChoiceTypes.Add(ItemsChoiceType.Version); |
| itemsChoiceTypeValues.Add("8.0"); |
| |
| hostApplication.Items = itemsChoiceTypeValues.ToArray(); |
| hostApplication.ItemsElementName = itemsChoiceTypes.ToArray(); |
| extensibilityItems[0] = hostApplication; |
| |
| //Addin |
| ExtensibilityAddin addin = new ExtensibilityAddin(); |
| List<ItemsChoiceType1> itemNames = new List<ItemsChoiceType1>(); |
| List<string> itemValues = new List<string>(); |
| |
| itemNames.Add(ItemsChoiceType1.Assembly); |
| itemValues.Add(artifactFileInfo.FullName); |
| |
| itemNames.Add(ItemsChoiceType1.FullClassName); |
| itemValues.Add(mavenProject.artifactId + ".Connect"); |
| |
| itemNames.Add(ItemsChoiceType1.FriendlyName); |
| itemValues.Add(mavenProject.name); |
| |
| itemNames.Add(ItemsChoiceType1.Description); |
| itemValues.Add(mavenProject.description); |
| |
| itemNames.Add(ItemsChoiceType1.LoadBehavior); |
| itemValues.Add("0"); |
| |
| itemNames.Add(ItemsChoiceType1.CommandLineSafe); |
| itemValues.Add("0"); |
| |
| itemNames.Add(ItemsChoiceType1.CommandPreload); |
| itemValues.Add("1"); |
| |
| addin.Items = itemValues.ToArray(); |
| addin.ItemsElementName = itemNames.ToArray(); |
| extensibilityItems[1] = addin; |
| |
| Extensibility extensibility = new Extensibility(); |
| extensibility.Items = extensibilityItems; |
| |
| //write XML |
| XmlSerializer serializer = new XmlSerializer(typeof(NPanday.Model.Extensibility)); |
| XmlTextWriter xmlWriter = new XmlTextWriter(Environment.GetEnvironmentVariable("TMP") |
| + @"\NPandayBuild.AddIn", System.Text.Encoding.Unicode); |
| xmlWriter.Formatting = Formatting.Indented; |
| serializer.Serialize(xmlWriter, extensibility); |
| } |
| } |
| } |