This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch 1.3.0
in repository https://gitbox.apache.org/repos/asf/servicecomb-samples.git
The following commit(s) were added to refs/heads/1.3.0 by this push:
new 51506fb update version
51506fb is described below
commit 51506fb30d1de394ac4c5890bd10c5ead09efce7
Author: liubao <[email protected]>
AuthorDate: Sat Nov 5 10:06:42 2022 +0800
update version
---
.../samples/porter/file/api/InspectorEndpoint.java | 207 ---------------------
porter_lightweight/pom.xml | 2 +-
2 files changed, 1 insertion(+), 208 deletions(-)
diff --git
a/porter_lightweight/api/common/endpoint/src/main/java/org/apache/servicecomb/samples/porter/file/api/InspectorEndpoint.java
b/porter_lightweight/api/common/endpoint/src/main/java/org/apache/servicecomb/samples/porter/file/api/InspectorEndpoint.java
deleted file mode 100644
index 77487fd..0000000
---
a/porter_lightweight/api/common/endpoint/src/main/java/org/apache/servicecomb/samples/porter/file/api/InspectorEndpoint.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.samples.porter.file.api;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.nio.charset.StandardCharsets;
-import java.util.Collection;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import javax.servlet.http.Part;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response.Status;
-
-import
org.apache.servicecomb.common.rest.resource.ClassPathStaticResourceHandler;
-import org.apache.servicecomb.common.rest.resource.StaticResourceHandler;
-import org.apache.servicecomb.config.inject.ConfigObjectFactory;
-import org.apache.servicecomb.core.SCBEngine;
-import org.apache.servicecomb.foundation.common.part.InputStreamPart;
-import org.apache.servicecomb.inspector.internal.InspectorConfig;
-import org.apache.servicecomb.inspector.internal.swagger.AppendStyleProcessor;
-import org.apache.servicecomb.inspector.internal.swagger.SchemaFormat;
-import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.apache.servicecomb.serviceregistry.RegistryUtils;
-import org.apache.servicecomb.swagger.SwaggerUtils;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-import org.asciidoctor.Asciidoctor;
-import org.asciidoctor.Asciidoctor.Factory;
-import org.asciidoctor.Attributes;
-import org.asciidoctor.AttributesBuilder;
-import org.asciidoctor.OptionsBuilder;
-import org.asciidoctor.SafeMode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Ordering;
-
-import io.github.swagger2markup.Swagger2MarkupConfig;
-import io.github.swagger2markup.Swagger2MarkupConverter;
-import io.github.swagger2markup.Swagger2MarkupConverter.Builder;
-import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.models.parameters.Parameter;
-
-// copied from org.apache.servicecomb.inspector.internal.InspectorImpl;
-@RestSchema(schemaId = "inspector")
-@Path("/inspector")
-public class InspectorEndpoint {
- private static final Logger LOGGER =
LoggerFactory.getLogger(InspectorEndpoint.class);
-
- private InspectorConfig inspectorConfig;
-
- private volatile Asciidoctor asciidoctor;
-
- private StaticResourceHandler resourceHandler = new
ClassPathStaticResourceHandler();
-
- public InspectorEndpoint() {
- this.inspectorConfig =
SCBEngine.getInstance().getPriorityPropertyManager().createConfigObject(InspectorConfig.class);
- }
-
- @Path("/schemas")
- @GET
- public Collection<String> getSchemaIds() {
- return
RegistryUtils.getServiceRegistry().getMicroservice().getSchemaMap().keySet();
- }
-
- @Path("/download/schemas")
- @GET
- @ApiResponse(code = 200, message = "", response = File.class)
- public Response downloadSchemas(@QueryParam("format") SchemaFormat format) {
- if (format == null) {
- format = SchemaFormat.SWAGGER;
- }
-
- // normally, schema will not be too big, just save them in memory
temporarily
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- try (ZipOutputStream zos = new ZipOutputStream(os)) {
- for (Entry<String, String> entry :
RegistryUtils.getServiceRegistry().getMicroservice().getSchemaMap().entrySet())
{
- // begin writing a new ZIP entry, positions the stream to the start of
the entry data
- zos.putNextEntry(new ZipEntry(entry.getKey() + format.getSuffix()));
-
- String content = entry.getValue();
- if (SchemaFormat.HTML.equals(format)) {
- content = swaggerToHtml(content);
- }
- zos.write(content.getBytes(StandardCharsets.UTF_8));
- zos.closeEntry();
- }
- } catch (Throwable e) {
- String msg = "failed to create schemas zip file, format=" + format + ".";
- LOGGER.error(msg, e);
- return Response.failResp(new
InvocationException(Status.INTERNAL_SERVER_ERROR, msg));
- }
-
- Part part = new InputStreamPart(null, new
ByteArrayInputStream(os.toByteArray()))
- .setSubmittedFileName(RegistryUtils.getMicroservice().getServiceName()
+ format.getSuffix() + ".zip");
- return Response.ok(part);
- }
-
- @Path("/schemas/{schemaId}")
- @GET
- @ApiResponse(code = 200, message = "", response = File.class)
- public Response getSchemaContentById(@PathParam("schemaId") String schemaId,
- @QueryParam("format") SchemaFormat format, @QueryParam("download")
boolean download) {
- String swaggerContent =
RegistryUtils.getServiceRegistry().getMicroservice().getSchemaMap().get(schemaId);
- if (swaggerContent == null) {
- return Response.failResp(new InvocationException(Status.NOT_FOUND,
Status.NOT_FOUND.getReasonPhrase()));
- }
-
- if (format == null) {
- format = SchemaFormat.SWAGGER;
- }
-
- byte[] bytes;
- if (SchemaFormat.HTML.equals(format)) {
- String html = swaggerToHtml(swaggerContent);
- bytes = html.getBytes(StandardCharsets.UTF_8);
- } else {
- bytes = swaggerContent.getBytes(StandardCharsets.UTF_8);
- }
-
- Part part = new InputStreamPart(null, new ByteArrayInputStream(bytes))
- .setSubmittedFileName(schemaId + format.getSuffix());
-
- Response response = Response.ok(part);
- if (!download) {
- response.getHeaders().addHeader(HttpHeaders.CONTENT_DISPOSITION,
"inline");
- }
- response.getHeaders().addHeader(HttpHeaders.CONTENT_TYPE,
MediaType.TEXT_HTML);
- return response;
- }
-
- // swagger not support cookie parameter
- // so if swaggerContent contains cookie parameter, will cause problem.
- private String swaggerToHtml(String swaggerContent) {
- if (asciidoctor == null) {
- synchronized (this) {
- if (asciidoctor == null) {
- // very slow, need a few seconds
- LOGGER.info("create AsciiDoctor start.");
- asciidoctor = Factory.create();
-
asciidoctor.javaExtensionRegistry().docinfoProcessor(AppendStyleProcessor.class);
- LOGGER.info("create AsciiDoctor end.");
- }
- }
- }
-
- // swagger to markup
- Builder markupBuilder =
Swagger2MarkupConverter.from(SwaggerUtils.parseSwagger(swaggerContent));
- // default not support cookie parameter
- // so must customize config
- Swagger2MarkupConfig markupConfig = new Swagger2MarkupConfigBuilder()
- .withParameterOrdering(Ordering
- .explicit("path", "query", "header", "cookie", "formData", "body")
- .onResultOf(Parameter::getIn))
- .build();
- String markup = markupBuilder.withConfig(markupConfig).build().toString();
-
- // markup to html
- OptionsBuilder builder = OptionsBuilder.options();
- builder.docType("book")
- .backend("html5")
- .headerFooter(true)
- .safe(SafeMode.UNSAFE)
- .attributes(AttributesBuilder.attributes()
- .attribute("toclevels", 3)
- .attribute(Attributes.TOC_2, true)
- .attribute(Attributes.TOC_POSITION, "left")
- .attribute(Attributes.LINK_CSS, true)
- .attribute(Attributes.STYLESHEET_NAME,
inspectorConfig.getAsciidoctorCss())
- .attribute(Attributes.SECTION_NUMBERS, true)
- .attribute(Attributes.SECT_NUM_LEVELS, 4));
- return asciidoctor.convert(markup, builder.asMap());
- }
-
- @Path("/{path : .+}")
- @GET
- @ApiResponse(code = 200, message = "", response = File.class)
- public Response getStaticResource(@PathParam("path") String path) {
- return resourceHandler.handle(path);
- }
-}
-
diff --git a/porter_lightweight/pom.xml b/porter_lightweight/pom.xml
index 2b7d58c..db33110 100644
--- a/porter_lightweight/pom.xml
+++ b/porter_lightweight/pom.xml
@@ -50,7 +50,7 @@
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassis-dependencies</artifactId>
- <version>1.3.0</version>
+ <version>1.3.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>