1 18 package org.apache.tools.ant.types.spi; 19 20 import java.io.ByteArrayInputStream ; 21 import java.io.ByteArrayOutputStream ; 22 import java.io.IOException ; 23 import java.io.InputStream ; 24 import java.io.OutputStreamWriter ; 25 import java.io.Writer ; 26 import java.util.ArrayList ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 30 import org.apache.tools.ant.ProjectComponent; 31 import org.apache.tools.ant.BuildException; 32 33 39 public class Service extends ProjectComponent { 40 private List providerList = new ArrayList (); 41 private String type; 42 43 47 public void setProvider(String className) { 48 Provider provider = new Provider(); 49 provider.setClassName(className); 50 providerList.add(provider); 51 } 52 53 57 public void addConfiguredProvider(Provider provider) { 58 provider.check(); 59 providerList.add(provider); 60 } 61 62 65 public String getType() { 66 return type; 67 } 68 69 75 public void setType(String type) { 76 this.type = type; 77 } 78 79 86 public InputStream getAsStream() throws IOException { 87 ByteArrayOutputStream arrayOut; 88 Writer writer; 89 Iterator providerIterator; 90 Provider provider; 91 92 arrayOut = new ByteArrayOutputStream (); 93 writer = new OutputStreamWriter (arrayOut, "UTF-8"); 94 providerIterator = providerList.iterator(); 95 while (providerIterator.hasNext()) { 96 provider = (Provider) providerIterator.next(); 97 writer.write(provider.getClassName()); 98 writer.write("\n"); 99 } 100 writer.close(); 101 return new ByteArrayInputStream (arrayOut.toByteArray()); 102 } 103 104 108 public void check() { 109 if (type == null) { 110 throw new BuildException( 111 "type attribute must be set for service element", 112 getLocation()); 113 } 114 if (type.length() == 0) { 115 throw new BuildException( 116 "Invalid empty type classname", getLocation()); 117 } 118 if (providerList.size() == 0) { 119 throw new BuildException( 120 "provider attribute or nested provider element must be set!", 121 getLocation()); 122 } 123 } 124 } 125 | Popular Tags |