001 package org.kuali.student.datadictionary.mojo;
002
003 import java.io.File;
004 import java.util.Collection;
005 import java.util.List;
006
007 import org.apache.maven.plugin.AbstractMojo;
008 import org.apache.maven.plugin.MojoExecutionException;
009
010 import org.kuali.student.common.mojo.AbstractKSMojo;
011 import org.kuali.student.contract.model.ServiceContractModel;
012 import org.kuali.student.contract.model.impl.ServiceContractModelCache;
013 import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader;
014 import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
015 import org.kuali.student.contract.writer.service.EachMethodServiceWriter;
016
017 /**
018 * The plugin entrypoint which is used to generate a java interface file for each
019 * service method in the source files based on the contract definition
020 * @phase generate-sources
021 * @goal kseachmethodservicegenerator
022 */
023 public class KSEachMethodServiceGeneratorrMojo extends AbstractKSMojo {
024
025 /**
026 * @parameter expression="${outputDirectory}" default-value="${project.build.directory}/generated-sources"
027 */
028 private File outputDirectory;
029
030 public File getOutputDirectory() {
031 return outputDirectory;
032 }
033
034
035 public void setOutputDirectory(File htmlDirectory) {
036 this.outputDirectory = htmlDirectory;
037 }
038
039 /**
040 * @parameter expression="${rootPackage}" default-value="org.kuali.student.enrollment"
041 */
042 private String rootPackage;
043
044 public String getRootPackage() {
045 return rootPackage;
046 }
047
048 public void setRootPackage(String rootPackage) {
049 this.rootPackage = rootPackage;
050 }
051
052
053
054
055 @Override
056 public void execute() throws MojoExecutionException {
057 getLog().info("generating separate java interface files for each method in the service contracts");
058 ServiceContractModel model = this.getModel();
059 this.validate(model);
060 if (!outputDirectory.exists()) {
061 if (!outputDirectory.mkdirs()) {
062 // throw new MojoExecutionException("Could not create directory "
063 throw new IllegalArgumentException("Could not create directory "
064 + this.outputDirectory.getPath());
065 }
066 }
067 String targetDirectory = this.outputDirectory.toString();
068 EachMethodServiceWriter instance =
069 new EachMethodServiceWriter(model,
070 targetDirectory,
071 rootPackage,
072 null);
073 instance.write();
074
075 }
076 }