亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? documentationconfiggen.java

?? Xfire文件 用于開發web service 的一個開源工具 很好用的
?? JAVA
字號:
package org.codehaus.xfire.gen.documentation;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.xfire.service.documentation.XMLDocumentationBuilder;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import com.thoughtworks.qdox.JavaDocBuilder;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaMethod;
import com.thoughtworks.qdox.model.JavaParameter;
import com.thoughtworks.qdox.model.JavaSource;
import com.thoughtworks.qdox.model.Type;

/**
 * Generate configuration based on javadoc, used for inserting wsdl:documentation tags
 *
 * @author <a href="mailto:tsztelak@gmail.com">Tomasz Sztelak</a>
 *
 *
 */
public class DocumentationConfigGen {

	
    private static final Log LOG  = LogFactory.getLog(DocumentationConfigGen.class);

	private String[] srcFiles;

	private String outputFolder = ".";

	/**
	 * Generates documentation config file for given classes
	 */
	public void generate() {

		if (srcFiles == null || srcFiles.length == 0) {
			System.out.print("No files specified\n");
			return;
		}

        System.out.print("Files to document:");
        for( int i=0;i<srcFiles.length;i++){
            System.out.print(srcFiles[i]+"\n");
        }
        System.out.print("\n Output directory : "+ getOutputFolder() +"\n");
        
		try {
			for (int i = 0; i < srcFiles.length; i++) {
				createDocumentationConfiguration(srcFiles[i]);
			}
		} catch (NoClassDefFoundError e) {
			LOG.error(e);
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			LOG.error(e);
			e.printStackTrace();
		} catch (IOException e) {
			LOG.equals(e);
			e.printStackTrace();
		}

	}

	/**
	 * @param parent
	 * @param child
	 * @return
	 */
	private String addSubfolder(String parent, String child) {
		if (!parent.endsWith("/")) {
			parent = parent + "/";
		}
		return parent + child;
	}

	/**
	 * @param srcFile - jakis param
	 * @return jakis string
	 * @throws NoClassDefFoundError - wywalka
	 * @throws IOException
	 * @throws FileNotFoundException
	 */
	public void createDocumentationConfiguration(String srcFile) throws NoClassDefFoundError, FileNotFoundException,
			IOException {

		JavaDocBuilder builder = new JavaDocBuilder();
		File file = new File(srcFile);

		builder.addSource(file);
		JavaSource src = builder.getSources()[0];
		JavaClass clazz = src.getClasses()[0];
		// Build document with documention data
		Document doc = generateClassDocumentation(clazz);
		// Create path from package name
		String name = clazz.getFullyQualifiedName().replaceAll("\\.", "/");
		name = name + XMLDocumentationBuilder.CONFIG_SUFIX;
		name = addSubfolder(outputFolder, name);

		File targetFile = new File(name);
		// Create folders is neccesery
		createOutputFolders(clazz.getPackage());
		// Write config file
		XMLOutputter outputer = new XMLOutputter();
		FileWriter writer = new FileWriter(targetFile);
		outputer.setFormat(Format.getPrettyFormat());
		outputer.output(doc, writer);
		writer.close();
	}

	/**
	 * @param tag
	 * @param types
	 * @return
	 */
	private Element createExceptionElement(DocletTag tag, Type[] types) {

		String value = tag.getValue().trim();
		// Check if we have any comment on that expection
		int idx = value.indexOf(' ');
		if (idx < 0) {
			return null;
		}

		// parse tag value
		String exceptionName = value.substring(0, idx);
		String exceptionComment = value.substring(idx + 1);

		String exceptionFullName = getExcFullName(types, exceptionName);

		Element exc = new Element(XMLDocumentationBuilder.EXCEPTION_TAG);
		exc.setAttribute(XMLDocumentationBuilder.CLASS_ATTR, exceptionFullName);
		return exc.addContent(newDocElement(exceptionComment));

	}

	/**
	 * @param text
	 * @return
	 */
	private Element newDocElement(String text) {
		return new Element(XMLDocumentationBuilder.DOCUMENTATION_TAG).setText(text);
	}

	/**
	 * @param method
	 * @return
	 */
	private Element generateMethod(JavaMethod method) {
		// Document only public not static methods
		if (!method.isPublic() || method.isStatic()) {
			return null;
		}

		// create method element
		Element methodElement = new Element(XMLDocumentationBuilder.METHOD_TAG);
		methodElement.setAttribute(XMLDocumentationBuilder.NAME_ATTR, method.getName());
		methodElement.setAttribute(XMLDocumentationBuilder.ARGUMENTS_NUMBER_ATTR, String
				.valueOf(method.getParameters().length));

		// process method comment
		String comment = method.getComment();
		if (comment != null && !"".equals(comment)) {
			methodElement.addContent(newDocElement(comment));
		}

		// process paramters
		JavaParameter paramters[] = method.getParameters();
		DocletTag paramsTag[] = method.getTagsByName("param");
		if (paramsTag != null) {
			for (int p = 0; p < paramsTag.length; p++) {
				Element param = createParameterElement(paramsTag[p],paramters);
				if( param != null){
					methodElement.addContent(param);
				}
			}
		}



		// process return
		DocletTag returnTag = method.getTagByName("return");
		if (returnTag != null) {
			String returnStr = returnTag.getValue().trim();
			if (returnStr.length() > 0) {
				Element returnElement = new Element(XMLDocumentationBuilder.RETURN_TAG);
				returnElement.addContent(newDocElement(returnStr));
				methodElement.addContent(returnElement);
			}
		}

		// process throwns
		DocletTag throwsTag[] = method.getTagsByName("throws");
		Type[] types = method.getExceptions();
		if (throwsTag != null) {
			for (int t = 0; t < throwsTag.length; t++) {
				Element exceptionElment = createExceptionElement(throwsTag[t], types);
				if (exceptionElment != null) {
					methodElement.addContent(exceptionElment);
				}
			}
		}

		if( methodElement.getChildren().size() == 0 )
			return null;
		return methodElement;
	}

	/**
	 * @param tag
	 * @param paramters
	 * @return
	 */
	private Element createParameterElement(DocletTag tag, JavaParameter parameters[]) {
		String value = tag.getValue().trim();
		// Check if we have any comment
		int idx = value.indexOf(' ');
		if (idx < 0) {
			return null;
		}

		// parse tag value
		String paramName = value.substring(0, idx);
		String paramComment = value.substring(idx + 1);
		int paramIdx = -1;

		for (int i = 0; i < parameters.length; i++) {
			if (paramName.equals(parameters[i].getName())) {
				paramIdx = i;
				break;
			}
		}
		// param name from javadoc doesn't match any real paramter
		if( paramIdx < 0 ){
			return null;
		}

		Element param = new Element(XMLDocumentationBuilder.PARAMTER_TAG);
		param.setAttribute(XMLDocumentationBuilder.INDEX_ATTR, String.valueOf(paramIdx));
		return param.addContent(newDocElement(paramComment));
	}

	/**
	 *
	 * @param types
	 * @param localName - exception classname
	 * @return full name of exception ( package included )
	 */
	private String getExcFullName(Type types[], String localName) {
		for (int i = 0; i < types.length; i++) {
			Type type = types[i];
			String fullname = type.getValue();
			if (fullname.endsWith(localName)) {
				return fullname;
			}
		}
		return null;
	}

	/**
	 * Creates folder structure based on class package
	 * @param path
	 */
	private void createOutputFolders(String path) {
		StringTokenizer tokenizer = new StringTokenizer(path, ".");
		String pathLevel = getOutputFolder();

		while (tokenizer.hasMoreTokens()) {
			String folder = tokenizer.nextToken();
			pathLevel = addSubfolder(pathLevel, folder);
			File file = new File(pathLevel);
			if (!file.exists()) {
				file.mkdir();
			}
		}
	}

	/**
	 * Creates document with documentation data from class javadocs
	 * @param clazz
	 * @return
	 */
	private Document generateClassDocumentation(JavaClass clazz) {
		Document document = new Document();
		Element service = new Element("service");
		document.addContent(service);
		// process class commment
		if (!"".equals(clazz.getComment())) {
			service.addContent(newDocElement(clazz.getComment()));
		}
		// process methods
		JavaMethod methods[] = clazz.getMethods();
		for (int m = 0; m < methods.length; m++) {
			Element methodElem = generateMethod(methods[m]);
			if (methodElem != null) {
				service.addContent(methodElem);
			}
		}
		return document;

	}

	public String getOutputFolder() {
		return outputFolder;
	}

	public void setOutputFolder(String outputFolder) {
		this.outputFolder = outputFolder;
	}

	public String[] getSrcFiles() {
		return srcFiles;
	}

	public void setSrcFiles(String[] srcFiles) {
		this.srcFiles = srcFiles;
	}

	public static void main(String[] args) throws Exception {
		DocumentationConfigGen gen = new DocumentationConfigGen();
		gen.setOutputFolder(".");
        gen.setSrcFiles(new String[]{"/home/tomeks/dev/xfire/examples/book/src/main/org/codehaus/xfire/demo/BookService.java"});
        gen.generate();
		//gen.createDocumentationConfiguration("/home/tomeks/dev/xfire/examples/book/src/main/org/codehaus/xfire/demo/BookService.java");

	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91丝袜在线播放| 亚洲国产成人av网| 欧美日韩一区久久| 成人丝袜高跟foot| 国产剧情一区二区三区| 免费一级片91| 免费看欧美女人艹b| 亚洲国产精品一区二区久久| 日韩在线观看一区二区| 激情图片小说一区| 久久精品国产精品青草| 卡一卡二国产精品 | 亚洲少妇中出一区| 精品亚洲成av人在线观看| 亚洲成人tv网| 日韩精品一级二级 | 欧美视频在线一区| 日韩亚洲欧美在线| 精品久久国产老人久久综合| 欧美高清在线视频| 中文字幕一区二区三| 中文字幕第一区二区| 日韩中文字幕91| 91亚洲男人天堂| 国产免费久久精品| 麻豆精品久久精品色综合| 国产91高潮流白浆在线麻豆 | 视频在线观看国产精品| 成人性生交大片免费看中文| 日韩欧美一区电影| 亚洲精品视频观看| 韩国精品免费视频| 欧美视频一区在线| 国产成人精品亚洲日本在线桃色| 日韩一区二区三区免费看| 一区二区三区美女视频| 色综合视频一区二区三区高清| 欧美一区二区视频免费观看| 国产午夜精品福利| 99精品久久免费看蜜臀剧情介绍| 国产日产精品一区| 成人激情免费电影网址| 中文字幕不卡在线播放| 国产成人av一区二区三区在线| 日韩欧美国产一区二区三区| 亚洲嫩草精品久久| 国产精品1024| 亚洲欧洲精品一区二区精品久久久| 国产精品自在在线| 日韩美女视频19| 91同城在线观看| 午夜精品久久一牛影视| 欧美大片在线观看| 成人免费视频免费观看| 最新国产成人在线观看| 91看片淫黄大片一级| 自拍偷拍国产精品| 欧美亚州韩日在线看免费版国语版| 免费在线观看视频一区| 91精品国产91综合久久蜜臀| 亚洲成人1区2区| 欧美中文字幕亚洲一区二区va在线| 亚洲精品一区二区三区香蕉| 麻豆91精品91久久久的内涵| 欧美一级高清片在线观看| 99久久综合精品| 国产伦精品一区二区三区免费迷| 中文字幕不卡的av| 欧美日韩国产免费| 国产成人午夜电影网| 亚洲色图清纯唯美| 国产午夜精品一区二区三区嫩草 | 91久久一区二区| 日韩精品乱码av一区二区| 亚洲男人的天堂在线观看| 欧美mv和日韩mv的网站| 日韩午夜在线观看视频| 欧美日韩国产高清一区二区| 麻豆久久久久久久| 亚洲青青青在线视频| 911精品产国品一二三产区| 国产专区综合网| 午夜电影一区二区三区| 中文字幕av不卡| 久久―日本道色综合久久| 日韩西西人体444www| 欧美视频在线播放| 成人精品一区二区三区四区| 午夜成人免费电影| 午夜精品视频一区| 亚洲一卡二卡三卡四卡| 亚洲最新视频在线播放| 国产亚洲自拍一区| 在线观看国产日韩| 欧美熟乱第一页| 一本久道久久综合中文字幕| 岛国av在线一区| 三级成人在线视频| 国精品**一区二区三区在线蜜桃| 成人h精品动漫一区二区三区| 午夜一区二区三区视频| 一区二区三区四区不卡在线| 欧美成人在线直播| 亚洲精品日日夜夜| 国产麻豆精品视频| 国产91色综合久久免费分享| 成人高清视频在线观看| 国产精一区二区三区| 91免费版在线看| 日韩一区二区三区av| 欧美羞羞免费网站| 91免费视频网址| 欧美精选一区二区| 精品国产制服丝袜高跟| 国产乱子伦视频一区二区三区| 激情综合色播激情啊| 成人av资源在线观看| 欧美丰满少妇xxxbbb| 中文字幕av一区二区三区高| 一区二区免费在线| 亚洲乱码中文字幕综合| 日韩电影一区二区三区四区| 成人午夜电影久久影院| 欧美日韩国产首页在线观看| 国产欧美日韩激情| 亚洲欧美国产毛片在线| 国内精品免费在线观看| 91精品久久久久久久99蜜桃| 国产精品久久久久一区二区三区| 免费观看成人av| 欧美一卡2卡3卡4卡| 伊人夜夜躁av伊人久久| 91亚洲大成网污www| 国产欧美日韩另类一区| 粉嫩av一区二区三区粉嫩| 欧美电影免费观看高清完整版在线观看 | 91麻豆国产在线观看| 国产视频一区二区三区在线观看| 三级一区在线视频先锋 | av高清久久久| 久久久久综合网| 国产福利91精品一区| 精品国产网站在线观看| 国产精品性做久久久久久| 国产欧美日韩久久| 99久久精品国产麻豆演员表| 亚洲男人的天堂在线观看| 色欲综合视频天天天| 亚洲成人午夜影院| 欧美理论在线播放| 国产麻豆一精品一av一免费| 亚洲精品一区二区三区香蕉| 狠狠色丁香婷综合久久| 亚洲欧美日韩系列| 国产精品久久久久久久久晋中| 欧美一区二区三区四区久久| 色婷婷激情一区二区三区| 国产99久久久国产精品潘金| 亚洲欧美日韩国产手机在线| 欧美大片日本大片免费观看| 欧洲在线/亚洲| 韩国成人在线视频| 国内成+人亚洲+欧美+综合在线| 肉色丝袜一区二区| 亚洲一级电影视频| 99亚偷拍自图区亚洲| 天天综合网 天天综合色| 日本一区二区综合亚洲| 制服.丝袜.亚洲.另类.中文| 91丨九色porny丨蝌蚪| 日韩高清在线不卡| 亚洲1区2区3区4区| 亚洲精品欧美专区| 亚洲综合清纯丝袜自拍| 中文字幕高清不卡| 久久精品人人做人人综合| www.欧美日韩| 久久精品国产免费看久久精品| 亚洲va欧美va人人爽午夜| 136国产福利精品导航| 欧美激情一区二区三区| 久久久久久久久久看片| 久久久久久一二三区| 久久久欧美精品sm网站| 精品美女被调教视频大全网站| 欧美疯狂性受xxxxx喷水图片| 日本高清不卡一区| 欧美日韩电影在线| 成人黄色小视频| 九九久久精品视频| 国产一区二区三区久久悠悠色av| 日韩专区一卡二卡| 国产在线精品免费| av一本久道久久综合久久鬼色| 99久久综合国产精品| 日韩视频在线你懂得| 久久在线观看免费| 欧美一级在线观看| 欧美精品一二三| 99这里都是精品|