001/** 002 * Copyright 2004-2014 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.student.datadictionary.mojo; 017 018import java.io.File; 019import java.util.Collection; 020import java.util.List; 021 022import org.apache.maven.plugin.AbstractMojo; 023import org.apache.maven.plugin.MojoExecutionException; 024 025import org.kuali.student.common.mojo.AbstractKSMojo; 026import org.kuali.student.contract.model.ServiceContractModel; 027import org.kuali.student.contract.model.impl.ServiceContractModelCache; 028import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader; 029import org.kuali.student.contract.model.validation.ServiceContractModelValidator; 030import org.kuali.student.contract.writer.service.EachMethodServiceWriter; 031 032/** 033 * The plugin entrypoint which is used to generate a java interface file for each 034 * service method in the source files based on the contract definition 035 * @phase generate-sources 036 * @goal kseachmethodservicegenerator 037 */ 038public class KSEachMethodServiceGeneratorrMojo extends AbstractKSMojo { 039 040 /** 041 * @parameter property="outputDirectory" default-value="${project.build.directory}/generated-sources" 042 */ 043 private File outputDirectory; 044 045 public File getOutputDirectory() { 046 return outputDirectory; 047 } 048 049 050 public void setOutputDirectory(File htmlDirectory) { 051 this.outputDirectory = htmlDirectory; 052 } 053 054 /** 055 * @parameter property="rootPackage" default-value="org.kuali.student.enrollment" 056 */ 057 private String rootPackage; 058 059 public String getRootPackage() { 060 return rootPackage; 061 } 062 063 public void setRootPackage(String rootPackage) { 064 this.rootPackage = rootPackage; 065 } 066 067 068 069 070 @Override 071 public void execute() throws MojoExecutionException { 072 getLog().info("generating separate java interface files for each method in the service contracts"); 073 ServiceContractModel model = this.getModel(); 074 this.validate(model); 075 if (!outputDirectory.exists()) { 076 if (!outputDirectory.mkdirs()) { 077// throw new MojoExecutionException("Could not create directory " 078 throw new IllegalArgumentException("Could not create directory " 079 + this.outputDirectory.getPath()); 080 } 081 } 082 String targetDirectory = this.outputDirectory.toString(); 083 EachMethodServiceWriter instance = 084 new EachMethodServiceWriter(model, 085 targetDirectory, 086 rootPackage, 087 null); 088 instance.write(); 089 090 } 091}