001 /* 002 * Copyright 2009 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.osedu.org/licenses/ECL-2.0 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 */ 016 package org.kuali.student.remote.impl.mojo; 017 018 import java.io.File; 019 import java.io.FileNotFoundException; 020 import java.io.FileOutputStream; 021 import java.io.PrintStream; 022 import org.kuali.student.contract.model.Service; 023 024 import org.kuali.student.contract.model.ServiceContractModel; 025 import org.kuali.student.contract.model.util.ModelFinder; 026 import org.kuali.student.contract.writer.XmlWriter; 027 028 /** 029 * 030 * @author nwright 031 */ 032 public class RemoteImplServiceSpringBeanWriter { 033 034 private ServiceContractModel model; 035 private ModelFinder finder; 036 private String directory; 037 private String rootPackage; 038 private XmlWriter out; 039 040 public RemoteImplServiceSpringBeanWriter(ServiceContractModel model, 041 String directory, 042 String rootPackage) { 043 this.model = model; 044 this.finder = new ModelFinder(model); 045 this.directory = directory; 046 this.rootPackage = rootPackage; 047 } 048 049 /** 050 * Write out the entire file 051 * 052 * @param out 053 */ 054 public void write() { 055 initXmlWriter(); 056 for (Service service : model.getServices()) { 057 writeService(service); 058 } 059 } 060 061 private void writeService(Service service) { 062 out.println(""); 063 064 out.indentPrintln("<bean id=\"" + service.getKey().toLowerCase() + "Service\" class=\"" + RemoteImplServiceWriter.calcPackage(service.getKey(), rootPackage) + "." + RemoteImplServiceWriter.calcClassName(service.getKey()) + "\">"); 065 out.incrementIndent(); 066 out.indentPrintln("<property name=\"hostUrl\" value=\"http://env2.ks.kuali.org\" />"); 067 out.decrementIndent(); 068 out.indentPrintln("</bean>"); 069 out.println(""); 070 071 out.indentPrintln("<bean id=\"ks.exp." + service.getKey().toLowerCase() + "Service\" class=\"org.kuali.rice.ksb.api.bus.support.ServiceBusExporter\">"); 072 out.incrementIndent(); 073 out.indentPrintln("<property name=\"serviceDefinition\">"); 074 out.incrementIndent(); 075 out.indentPrintln("<bean class=\"org.kuali.rice.ksb.api.bus.support.SoapServiceDefinition\">"); 076 out.incrementIndent(); 077 out.indentPrintln("<property name=\"jaxWsService\" value=\"true\" />"); 078 out.indentPrintln("<property name=\"service\" ref=\"" + service.getKey().toLowerCase() + "Service\" />"); 079 out.indentPrintln("<property name=\"serviceInterface\" value=\"" + service.getImplProject() + "." + service.getName() + "\" />"); 080 out.indentPrintln("<property name=\"localServiceName\" value=\"" + service.getName() + "\" />"); 081 out.indentPrintln("<property name=\"serviceNameSpaceURI\" value=\"http://student.kuali.org/wsdl/" + service.getKey().toLowerCase () + "\" />"); 082 out.indentPrintln("<property name=\"busSecurity\" value=\"false\" />"); 083 out.decrementIndent(); 084 out.indentPrintln("</bean>"); 085 out.decrementIndent(); 086 out.indentPrintln("</property>"); 087 out.decrementIndent(); 088 out.indentPrintln("</bean>"); 089 } 090 091 private void initXmlWriter() { 092 String fileName = "ksb-remote-impl-generated.xml"; 093 094 File dir = new File(this.directory + "/main/resources"); 095 096 if (!dir.exists()) { 097 if (!dir.mkdirs()) { 098 throw new IllegalStateException("Could not create directory " 099 + this.directory + "/main/resources"); 100 } 101 } 102 103 String dirStr = this.directory + "/main/resources"; 104 File dirFile = new File(dirStr); 105 if (!dirFile.exists()) { 106 if (!dirFile.mkdirs()) { 107 throw new IllegalStateException( 108 "Could not create directory " + dirStr); 109 } 110 } 111 try { 112 PrintStream out = new PrintStream(new FileOutputStream( 113 dirStr + "/" 114 + fileName, false)); 115 this.out = new XmlWriter(out, 0); 116 } catch (FileNotFoundException ex) { 117 throw new IllegalStateException(ex); 118 } 119 } 120 }