All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.reprezen.genflow.swagger.doc.XGenerateSwaggerDoc Maven / Gradle / Ivy

The newest version!
/**
 * Copyright © 2013, 2016 Modelsolv, Inc.
 * All Rights Reserved.
 * 
 * NOTICE: All information contained herein is, and remains the property
 * of ModelSolv, Inc. See the file license.html in the root directory of
 * this project for further information.
 */
package com.reprezen.genflow.swagger.doc;

import com.google.common.collect.Lists;
import com.reprezen.genflow.api.swagger.SwaggerOutputItem;
import com.reprezen.genflow.common.HtmlInjections;
import com.reprezen.genflow.swagger.doc.HelperHelper;
import com.reprezen.genflow.swagger.doc.HtmlHelper;
import com.reprezen.genflow.swagger.doc.MiscHelper;
import com.reprezen.genflow.swagger.doc.ModelDoc;
import com.reprezen.genflow.swagger.doc.OptionHelper;
import com.reprezen.genflow.swagger.doc.ParamDoc;
import com.reprezen.genflow.swagger.doc.PathDoc;
import com.reprezen.genflow.swagger.doc.ResponseDoc;
import com.reprezen.genflow.swagger.doc.TopMatter;
import io.swagger.models.Info;
import io.swagger.models.Model;
import io.swagger.models.Path;
import io.swagger.models.Response;
import io.swagger.models.Swagger;
import io.swagger.models.parameters.Parameter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

@SuppressWarnings("all")
public class XGenerateSwaggerDoc extends SwaggerOutputItem {
  public static final String URL_PREFIX_PARAM = "urlPrefix";
  
  public static final String ANCHOR_NAME_PARAM = "anchorName";
  
  public static final String PREVIEW_PARAM = "preview";
  
  @Extension
  private OptionHelper optionHelper;
  
  @Extension
  private HtmlHelper htmlHelper;
  
  @Extension
  private MiscHelper miscHelper;
  
  @Extension
  private HtmlInjections htmlInjections;
  
  @Override
  public String generate(final Swagger swagger) {
    try {
      String _xtrycatchfinallyexpression = null;
      try {
        String _xblockexpression = null;
        {
          HelperHelper.open(swagger, this.context);
          this.optionHelper = HelperHelper.getOptionHelper();
          this.htmlHelper = HelperHelper.getHtmlHelper();
          this.miscHelper = HelperHelper.getMiscHelper();
          HtmlInjections _elvis = null;
          Object _get = this.context.getGenTargetParameters().get(HtmlInjections.HTML_INJECTIONS_PARAM);
          if (((HtmlInjections) _get) != null) {
            _elvis = ((HtmlInjections) _get);
          } else {
            HtmlInjections _htmlInjections = new HtmlInjections();
            _elvis = _htmlInjections;
          }
          this.htmlInjections = _elvis;
          _xblockexpression = this.doGenerate(swagger);
        }
        _xtrycatchfinallyexpression = _xblockexpression;
      } finally {
        HelperHelper.close();
      }
      return _xtrycatchfinallyexpression;
    } catch (Throwable _e) {
      throw Exceptions.sneakyThrow(_e);
    }
  }
  
  public String doGenerate(final Swagger swagger) {
    String _xblockexpression = null;
    {
      this.optionHelper = HelperHelper.getOptionHelper();
      final String urlPrefix = this.optionHelper.getUrlPrefix();
      final Boolean preview = this.optionHelper.isPreview();
      boolean _isEmpty = swagger.getPaths().isEmpty();
      final boolean showPaths = (!_isEmpty);
      final boolean showDefs = (((!(preview).booleanValue()) || (!showPaths)) && (!swagger.getDefinitions().isEmpty()));
      final boolean showParams = (((!(preview).booleanValue()) || (!showPaths)) && (!swagger.getParameters().isEmpty()));
      final boolean showResponses = (((!(preview).booleanValue()) || (!showPaths)) && (!swagger.getResponses().isEmpty()));
      final boolean includeTOC = ((!(preview).booleanValue()) && (this.optionHelper.isIncludeTOC()).booleanValue());
      StringConcatenation _builder = new StringConcatenation();
      _builder.append("");
      _builder.newLine();
      _builder.append("");
      _builder.newLine();
      _builder.append("\t");
      _builder.append("");
      _builder.newLineIfNotEmpty();
      _builder.append("\t");
      CharSequence _htmlHeadSection = this.htmlHeadSection(swagger, urlPrefix, (preview).booleanValue());
      _builder.append(_htmlHeadSection, "\t");
      _builder.newLineIfNotEmpty();
      _builder.append("\t");
      _builder.append("            ");
      _builder.newLine();
      _builder.append("\t\t");
      String _inject = this.htmlInjections.inject(HtmlInjections.BODY_TOP);
      _builder.append(_inject, "\t\t");
      _builder.newLineIfNotEmpty();
      _builder.append("\t\t");
      _builder.append("");
      _builder.newLine();
      _builder.append("\t\t");
      _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append("
    "); _builder.newLine(); _builder.append("\t\t\t\t\t\t"); _builder.append("
  • Created with
  • "); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("
"); _builder.newLine(); { if (includeTOC) { _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); } } _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append(""); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t\t\t\t"); _builder.append("

Swagger Specification

"); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.newLine(); _builder.append("\t\t\t\t\t"); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t\t"); CharSequence _get = new TopMatter().get(swagger); _builder.append(_get, "\t\t\t\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t\t"); CharSequence _xifexpression = null; if (showPaths) { _xifexpression = this.pathsHtml(swagger); } _builder.append(_xifexpression, "\t\t\t\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t\t"); CharSequence _xifexpression_1 = null; if (showParams) { _xifexpression_1 = this.parametersHtml(swagger); } _builder.append(_xifexpression_1, "\t\t\t\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t\t"); CharSequence _xifexpression_2 = null; if (showResponses) { _xifexpression_2 = this.responsesHtml(swagger); } _builder.append(_xifexpression_2, "\t\t\t\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t\t"); CharSequence _xifexpression_3 = null; if (showDefs) { _xifexpression_3 = this.definitionsHtml(swagger); } _builder.append(_xifexpression_3, "\t\t\t\t\t"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("
"); _builder.newLine(); _builder.append("\t\t"); _builder.append("
"); _builder.newLine(); _builder.newLine(); _builder.append("\t\t\t"); _builder.append(""); _builder.newLine(); _builder.append("\t\t\t"); _builder.append(""); _builder.newLine(); _builder.append("\t\t\t"); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t"); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t"); _builder.append(""); _builder.newLine(); { if (includeTOC) { _builder.append("\t\t"); _builder.append(""); _builder.newLineIfNotEmpty(); } } _builder.append("\t"); String _inject_1 = this.htmlInjections.inject(HtmlInjections.BODY_BOTTOM); _builder.append(_inject_1, "\t"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append(""); _builder.newLine(); _builder.append(""); _builder.newLine(); final String html = _builder.toString(); _xblockexpression = this.removeUnwantedIndentation(html); } return _xblockexpression; } private CharSequence htmlHeadSection(final Swagger swagger, final String urlPrefix, final boolean preview) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLine(); _builder.append(" "); String _inject = this.htmlInjections.inject(HtmlInjections.HEAD_TOP); _builder.append(_inject, " "); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append(""); Info _info = null; if (swagger!=null) { _info=swagger.getInfo(); } String _title = null; if (_info!=null) { _title=_info.getTitle(); } _builder.append(_title, " "); _builder.append(" Documentation"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); { if (preview) { _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); } } _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); _builder.append(""); _builder.newLine(); _builder.append(" "); String _inject_1 = this.htmlInjections.inject(HtmlInjections.HEAD_BOTTOM); _builder.append(_inject_1, " "); _builder.newLineIfNotEmpty(); _builder.append(""); _builder.newLine(); return _builder; } private CharSequence pathsHtml(final Swagger swagger) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Path Specifications

"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Path Specifications

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); { List _elvis = null; Map _paths = swagger.getPaths(); Set _keySet = null; if (_paths!=null) { _keySet=_paths.keySet(); } List _sortByPosition = this.miscHelper.sortByPosition(_keySet, swagger.getPaths()); if (_sortByPosition != null) { _elvis = _sortByPosition; } else { _elvis = Collections.unmodifiableList(CollectionLiterals.newArrayList()); } for(final String path : _elvis) { _builder.append(" "); CharSequence _html = new PathDoc(path).getHtml(); _builder.append(_html, " "); _builder.newLineIfNotEmpty(); } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder; } private CharSequence parametersHtml(final Swagger swagger) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Parameters

"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Parameters

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); { List _sortByPosition = this.miscHelper.sortByPosition(swagger.getParameters().keySet(), swagger.getParameters()); for(final String param : _sortByPosition) { _builder.append(" "); CharSequence _html = new ParamDoc(swagger, param).getHtml(); _builder.append(_html, " "); _builder.newLineIfNotEmpty(); } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder; } private CharSequence responsesHtml(final Swagger swagger) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Responses

"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Responses

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); { List _sortByPosition = this.miscHelper.sortByPosition(swagger.getResponses().keySet(), swagger.getResponses()); for(final String response : _sortByPosition) { _builder.append(" "); CharSequence _html = new ResponseDoc(response).getHtml(); _builder.append(_html, " "); _builder.newLineIfNotEmpty(); } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder; } private CharSequence definitionsHtml(final Swagger swagger) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Schema Definitions

"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("

Schema Definitions

"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append(" "); _builder.append("
"); _builder.newLine(); { List _sortByPosition = this.miscHelper.sortByPosition(swagger.getDefinitions().keySet(), swagger.getDefinitions()); for(final String definition : _sortByPosition) { _builder.append(" "); CharSequence _html = new ModelDoc(definition).getHtml(); _builder.append(_html, " "); _builder.newLineIfNotEmpty(); } } _builder.append(" "); _builder.append("
"); _builder.newLine(); _builder.append("
"); _builder.newLine(); return _builder; } private final Pattern indentedPreBlock = Pattern.compile("^(\\s*).*$", (Pattern.CASE_INSENSITIVE + Pattern.DOTALL)); private String removeUnwantedIndentation(final String html) { return this.removeUnwantedIndentation(((List)Conversions.doWrapArray(html.split("\n")))); } private String removeUnwantedIndentation(final List lines) { String _xblockexpression = null; { int i = 0; final ArrayList unindentedLines = Lists.newArrayList(); while ((i < lines.size())) { { String line = lines.get(i); Matcher matcher = this.indentedPreBlock.matcher(line); boolean _matches = matcher.matches(); if (_matches) { String indentation = matcher.group(1); int indentLen = matcher.end(1); while (((i < lines.size()) && line.startsWith(indentation))) { { unindentedLines.add(line.substring(indentLen)); i = (i + 1); String _xifexpression = null; int _size = lines.size(); boolean _lessThan = (i < _size); if (_lessThan) { _xifexpression = lines.get(i); } else { _xifexpression = ""; } line = _xifexpression; } } } else { unindentedLines.add(lines.get(i)); i = (i + 1); } } } _xblockexpression = IterableExtensions.join(unindentedLines, "\n"); } return _xblockexpression; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy