Package org.jboss.ws.tools.jaxws.impl

Source Code of org.jboss.ws.tools.jaxws.impl.JBossWSProviderImpl

/*     */ package org.jboss.ws.tools.jaxws.impl;
/*     */
/*     */ import java.io.File;
/*     */ import java.io.IOException;
/*     */ import java.io.PrintStream;
/*     */ import java.net.URL;
/*     */ import java.net.URLClassLoader;
/*     */ import org.jboss.ws.WSException;
/*     */ import org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder;
/*     */ import org.jboss.ws.metadata.umdm.UnifiedMetaData;
/*     */ import org.jboss.ws.tools.io.NullPrintStream;
/*     */ import org.jboss.wsf.common.ResourceLoaderAdapter;
/*     */ import org.jboss.wsf.spi.SPIProvider;
/*     */ import org.jboss.wsf.spi.SPIProviderResolver;
/*     */ import org.jboss.wsf.spi.deployment.Deployment;
/*     */ import org.jboss.wsf.spi.deployment.DeploymentModelFactory;
/*     */ import org.jboss.wsf.spi.tools.WSContractProvider;
/*     */
/*     */ final class JBossWSProviderImpl extends WSContractProvider
/*     */ {
/*     */   private ClassLoader loader;
/*  49 */   private boolean generateWsdl = false;
/*  50 */   private boolean generateSource = false;
/*  51 */   private File outputDir = new File("output");
/*  52 */   private File resourceDir = null;
/*  53 */   private File sourceDir = null;
/*  54 */   private PrintStream messageStream = NullPrintStream.getInstance();
/*     */
/*     */   private void createDirectories(File resourceDir, File sourceDir)
/*     */   {
/*  58 */     if ((!this.outputDir.exists()) &&
/*  59 */       (!this.outputDir.mkdirs())) {
/*  60 */       throw new WSException("Could not create directory: " + this.outputDir);
/*     */     }
/*  62 */     if ((this.generateWsdl) && (!resourceDir.exists()) &&
/*  63 */       (!resourceDir.mkdirs())) {
/*  64 */       throw new WSException("Could not create directory: " + resourceDir);
/*     */     }
/*  66 */     if ((this.generateSource) && (!sourceDir.exists()) &&
/*  67 */       (!sourceDir.mkdirs()))
/*  68 */       throw new WSException("Could not create directory: " + sourceDir);
/*     */   }
/*     */
/*     */   public void provide(Class<?> endpointClass)
/*     */   {
/*  75 */     File resourceDir = this.resourceDir != null ? this.resourceDir : this.outputDir;
/*  76 */     File sourceDir = this.sourceDir != null ? this.sourceDir : this.outputDir;
/*     */
/*  78 */     createDirectories(resourceDir, sourceDir);
/*     */
/*  80 */     this.messageStream.println("Output directory: " + this.outputDir.getAbsolutePath());
/*  81 */     this.messageStream.println("Source directory: " + sourceDir.getAbsolutePath());
/*     */
/*  84 */     ClassLoader loader = new URLClassLoader(new URL[0], this.loader);
/*  85 */     UnifiedMetaData umd = new UnifiedMetaData(new ResourceLoaderAdapter(loader));
/*  86 */     umd.setClassLoader(loader);
/*     */
/*  88 */     ChainedWritableWrapperGenerator generator = new ChainedWritableWrapperGenerator();
/*  89 */     if (this.generateSource)
/*  90 */       generator.add(new SourceWrapperGenerator(loader, this.messageStream), sourceDir);
/*  91 */     generator.add(new BytecodeWrapperGenerator(loader, this.messageStream), this.outputDir);
/*     */
/*  93 */     JAXWSWebServiceMetaDataBuilder builder = new JAXWSWebServiceMetaDataBuilder();
/*  94 */     builder.setWrapperGenerator(generator);
/*  95 */     builder.setGenerateWsdl(this.generateWsdl);
/*  96 */     builder.setToolMode(true);
/*  97 */     builder.setWsdlDirectory(resourceDir);
/*  98 */     builder.setMessageStream(this.messageStream);
/*     */
/* 100 */     if (this.generateWsdl) {
/* 101 */       this.messageStream.println("Generating WSDL:");
/*     */     }
/* 103 */     SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
/* 104 */     DeploymentModelFactory factory = (DeploymentModelFactory)spiProvider.getSPI(DeploymentModelFactory.class);
/* 105 */     Deployment dep = factory.newDeployment("wsprovide-deployment", loader);
/* 106 */     dep.setRuntimeClassLoader(loader);
/*     */
/* 108 */     builder.buildWebServiceMetaData(dep, umd, endpointClass, null);
/*     */     try
/*     */     {
/* 111 */       generator.write();
/*     */     }
/*     */     catch (IOException io)
/*     */     {
/* 115 */       throw new WSException("Could not write output files:", io);
/*     */     }
/*     */   }
/*     */
/*     */   public void provide(String endpointClass)
/*     */   {
/*     */     try
/*     */     {
/* 124 */       provide(this.loader.loadClass(endpointClass));
/*     */     }
/*     */     catch (ClassNotFoundException e)
/*     */     {
/* 128 */       throw new WSException("Class not found: " + endpointClass);
/*     */     }
/*     */   }
/*     */
/*     */   public void setClassLoader(ClassLoader loader)
/*     */   {
/* 135 */     this.loader = loader;
/*     */   }
/*     */
/*     */   public void setGenerateWsdl(boolean generateWsdl)
/*     */   {
/* 141 */     this.generateWsdl = generateWsdl;
/*     */   }
/*     */
/*     */   public void setOutputDirectory(File directory)
/*     */   {
/* 147 */     this.outputDir = directory;
/*     */   }
/*     */
/*     */   public void setGenerateSource(boolean generateSource)
/*     */   {
/* 153 */     this.generateSource = generateSource;
/*     */   }
/*     */
/*     */   public void setResourceDirectory(File directory)
/*     */   {
/* 159 */     this.resourceDir = directory;
/*     */   }
/*     */
/*     */   public void setSourceDirectory(File directory)
/*     */   {
/* 165 */     this.sourceDir = directory;
/*     */   }
/*     */
/*     */   public void setMessageStream(PrintStream messageStream)
/*     */   {
/* 171 */     this.messageStream = messageStream;
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.ws.tools.jaxws.impl.JBossWSProviderImpl
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.ws.tools.jaxws.impl.JBossWSProviderImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.