diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/AccountResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/AccountResource.java index 287c2079894..cfdab7a7434 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/AccountResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/AccountResource.java @@ -46,7 +46,7 @@ */ @Path(AccountResource.SERVICE_PATH) @ResourceLabel("User Account") -public interface AccountResource extends RestResource { +public interface AccountResource { public static final String SERVICE_PATH = "/accounts/u/{username:[a-z\\d_]{3,20}}"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/AsynchronousProcessResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/AsynchronousProcessResource.java index 1a9bff5ce99..bd6b029f4dc 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/AsynchronousProcessResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/AsynchronousProcessResource.java @@ -58,7 +58,7 @@ @ResponseCode(code = 500, condition = "If there is an unexpected error in the server while performing this operation") }) -public interface AsynchronousProcessResource extends RestResource { +public interface AsynchronousProcessResource { public static final String SERVICE_PATH = "/async"; /** diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/CopyTransResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/CopyTransResource.java index 70be7906867..d69ba4c18a6 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/CopyTransResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/CopyTransResource.java @@ -45,7 +45,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Copy Trans") -public interface CopyTransResource extends RestResource { +public interface CopyTransResource { public static final String SERVICE_PATH = "/copytrans"; /** diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/FileResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/FileResource.java index f4a1e0ad3a0..ccc73ae9225 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/FileResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/FileResource.java @@ -50,7 +50,7 @@ @Produces({ MediaType.APPLICATION_OCTET_STREAM }) @Consumes({ MediaType.APPLICATION_OCTET_STREAM }) @ResourceLabel("Files") -public interface FileResource extends RestResource { +public interface FileResource { public static final String SERVICE_PATH = "/file"; @Deprecated public static final String FILE_RESOURCE = SERVICE_PATH; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/GlossaryResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/GlossaryResource.java index 8f1f0e38cc1..df3caf23a2a 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/GlossaryResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/GlossaryResource.java @@ -69,7 +69,7 @@ @ResponseCode(code = 500, condition = "If there is an unexpected error in the server while performing this operation") }) -public interface GlossaryResource extends RestResource { +public interface GlossaryResource { public static final String SERVICE_PATH = "/glossary"; /** diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java index 5f5debdd31a..f279b0d69cb 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java @@ -24,7 +24,7 @@ */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface LocalesResource extends RestResource { +public interface LocalesResource { public static final String SERVICE_PATH = "/locales"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationLocalesResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationLocalesResource.java index 9e5d51ae326..24d4636b676 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationLocalesResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationLocalesResource.java @@ -43,7 +43,7 @@ @Path(ProjectIterationLocalesResource.SERVICE_PATH) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Version Locales") -public interface ProjectIterationLocalesResource extends RestResource { +public interface ProjectIterationLocalesResource { @SuppressWarnings("deprecation") public static final String SERVICE_PATH = ProjectIterationResource.SERVICE_PATH + "/locales"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationResource.java index 9aa0524e063..c0d1c063192 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectIterationResource.java @@ -49,7 +49,7 @@ @Deprecated @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) -public interface ProjectIterationResource extends RestResource { +public interface ProjectIterationResource { public static final String ITERATION_SLUG_TEMPLATE = "{iterationSlug:" + RestConstants.SLUG_PATTERN + "}"; public static final String SERVICE_PATH = ProjectResource.SERVICE_PATH diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectLocalesResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectLocalesResource.java index 99939eba7ee..45a0abf3463 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectLocalesResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectLocalesResource.java @@ -43,7 +43,7 @@ @Path(ProjectLocalesResource.SERVICE_PATH) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Project locales") -public interface ProjectLocalesResource extends RestResource { +public interface ProjectLocalesResource { public static final String SERVICE_PATH = ProjectResource.SERVICE_PATH + "/locales"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectResource.java index b91283d2e0b..acfe30c0ef0 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectResource.java @@ -50,7 +50,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Project") -public interface ProjectResource extends RestResource { +public interface ProjectResource { public static final String PROJECT_SLUG_TEMPLATE = "{projectSlug:" + RestConstants.SLUG_PATTERN + "}"; public static final String SERVICE_PATH = "/projects/p/" diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java index d3e3221045c..67e02f6aad8 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java @@ -54,7 +54,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Project Version") -public interface ProjectVersionResource extends RestResource { +public interface ProjectVersionResource { public static final String PROJECT_SERVICE_PATH = "/project"; public static final String VERSION_SLUG_TEMPLATE = "/{versionSlug:" diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectsResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectsResource.java index 0f3e55a6fea..22a60983891 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectsResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectsResource.java @@ -47,7 +47,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Project List") -public interface ProjectsResource extends RestResource { +public interface ProjectsResource { public static final String SERVICE_PATH = "/projects"; /** diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/RestResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/RestResource.java index b85ec5658a5..c95355169d4 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/RestResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/RestResource.java @@ -28,7 +28,9 @@ * * @author Sean Flanigan sflaniga@redhat.com - * + * @deprecated REST Resource implementations are discovered by the presence of + * {@code @Path} only (not inherited), as per spec. */ +@Deprecated public interface RestResource extends Serializable { } diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/SourceDocResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/SourceDocResource.java index 828f24d5b6f..1e1378848cb 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/SourceDocResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/SourceDocResource.java @@ -56,7 +56,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Source Documents") -public interface SourceDocResource extends RestResource { +public interface SourceDocResource { @SuppressWarnings("deprecation") String SERVICE_PATH = ProjectIterationResource.SERVICE_PATH; String RESOURCE_PATH = "/r"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/StatisticsResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/StatisticsResource.java index 59b3c4cb2a4..df47f3203e3 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/StatisticsResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/StatisticsResource.java @@ -47,7 +47,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("Statistics") -public interface StatisticsResource extends RestResource { +public interface StatisticsResource { public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final String SERVICE_PATH = "/stats"; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslatedDocResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslatedDocResource.java index a30ea6dbf17..71411cac319 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslatedDocResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslatedDocResource.java @@ -67,7 +67,7 @@ @ResponseCode(code = 500, condition = "If there is an unexpected error in the server while performing this operation") }) -public interface TranslatedDocResource extends RestResource { +public interface TranslatedDocResource { @SuppressWarnings("deprecation") public static final String SERVICE_PATH = ProjectIterationResource.SERVICE_PATH; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslationMemoryResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslationMemoryResource.java index 85e2cd9ecab..45a9c158b8d 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslationMemoryResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/TranslationMemoryResource.java @@ -49,7 +49,7 @@ @Produces({ MediaType.APPLICATION_XML /* , "application/x-tmx" */}) @Consumes({ MediaType.APPLICATION_XML /* , "application/x-tmx" */}) @ResourceLabel("Translation Memory") -public interface TranslationMemoryResource extends RestResource { +public interface TranslationMemoryResource { public static final String SERVICE_PATH = "/tm"; public static final String PREFERRED_MEDIA_TYPE = MediaType.APPLICATION_XML; diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/VersionResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/VersionResource.java index 166840a848c..42f2ad2fa8e 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/VersionResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/VersionResource.java @@ -41,7 +41,7 @@ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @ResourceLabel("System Version") -public interface VersionResource extends RestResource { +public interface VersionResource { public static final String SERVICE_PATH = "/version"; /** diff --git a/server/pom.xml b/server/pom.xml index d89645a8c00..3b1a81bb841 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -476,12 +476,6 @@ test - - org.atteo.classindex - classindex - 3.4 - - org.jboss.byteman byteman @@ -1378,7 +1372,7 @@ org.javassist javassist - 3.19.0-GA + 3.21.0-GA diff --git a/server/services/pom.xml b/server/services/pom.xml index 7d4147536ee..2bc10d9c445 100644 --- a/server/services/pom.xml +++ b/server/services/pom.xml @@ -191,16 +191,6 @@ true true - - - procEX - org.zanata.util.JaxRSClassIndexProcessor @@ -404,11 +394,6 @@ test - - org.atteo.classindex - classindex - - @@ -992,8 +977,7 @@ org.reflections reflections - 0.9.10 - test + 0.9.11 com.google.code.findbugs diff --git a/server/services/src/main/java/org/zanata/rest/JaxRSApplication.java b/server/services/src/main/java/org/zanata/rest/JaxRSApplication.java index ab339b834a7..694f5c6e754 100644 --- a/server/services/src/main/java/org/zanata/rest/JaxRSApplication.java +++ b/server/services/src/main/java/org/zanata/rest/JaxRSApplication.java @@ -1,16 +1,19 @@ package org.zanata.rest; import com.google.common.collect.ImmutableSet; -import org.atteo.classindex.ClassIndex; -import org.zanata.rest.service.RestResource; +import org.jboss.resteasy.util.PickConstructor; +import org.reflections.Reflections; import javax.enterprise.context.ApplicationScoped; import javax.ws.rs.ApplicationPath; import javax.ws.rs.Path; import javax.ws.rs.ext.Provider; import java.util.Set; -import java.util.stream.Collectors; import java.util.stream.Stream; -import java.util.stream.StreamSupport; + +import static java.lang.System.currentTimeMillis; +import static java.lang.reflect.Modifier.isAbstract; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toSet; import static java.util.stream.Stream.concat; @ApplicationPath("/rest") @@ -19,7 +22,8 @@ public class JaxRSApplication extends javax.ws.rs.core.Application { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(JaxRSApplication.class); - private Set> classes = buildClassesSet(); + private static final Set> classes = buildClassesSet(); + private static final String PACKAGE_PREFIX = "org.zanata"; @Override public Set> getClasses() { @@ -27,32 +31,41 @@ public Set> getClasses() { } /** - * Collect all classes annotated with {@code @Path} or {@code @Provider}, - * except in the packages {@code org.zanata.rest.client} and - * {@code org.zanata.rest.enunciate}. + * Collect all non-abstract Zanata classes annotated with {@code @Path} or + * {@code @Provider}, except in the package {@code org.zanata.rest.client}. * * @return resource and provider classes */ private static Set> buildClassesSet() { - Iterable> resourceClasses = - ClassIndex.getSubclasses(RestResource.class); - log.debug("Indexed RestResource classes: {}", resourceClasses); - Iterable> pathClasses = ClassIndex.getAnnotated(Path.class); + long start = currentTimeMillis(); + Reflections reflections = new Reflections(PACKAGE_PREFIX); + Set> pathClasses = + reflections.getTypesAnnotatedWith(Path.class); log.debug("Indexed @Path classes: {}", pathClasses); - Iterable> providerClasses = - ClassIndex.getAnnotated(Provider.class); + Set> providerClasses = + reflections.getTypesAnnotatedWith(Provider.class); log.debug("Indexed @Provider classes: {}", providerClasses); - ImmutableSet> classes = concat(stream(resourceClasses), concat( - stream(pathClasses), - stream(providerClasses))).filter(clazz -> !clazz.getName() + Stream> concatStream = concat( + pathClasses.stream(), + providerClasses.stream()); + ImmutableSet> classes = concatStream + // we don't want to pick up our JAX-RS client proxies + .filter(clazz -> !clazz.getName() .startsWith("org.zanata.rest.client.")) - .collect(Collectors.collectingAndThen( - Collectors.toSet(), ImmutableSet::copyOf)); - log.info("Found {} JAX-RS classes in total", classes.size()); + .filter(JaxRSApplication::canConstruct) + .collect(collectingAndThen(toSet(), ImmutableSet::copyOf)); + long timeTaken = currentTimeMillis() - start; + log.info("Found {} JAX-RS classes in total; took {} ms", classes.size(), + timeTaken); + log.debug("JAX-RS classes: {}", classes); return classes; } - private static Stream stream(Iterable iterable) { - return StreamSupport.stream(iterable.spliterator(), false); + private static boolean canConstruct(Class clazz) { + return !isAbstract(clazz.getModifiers()) && + // RESTEasy can use no-args constructor, or any constructor + // with @Context args. This method should find either, but not + // org.zanata.rest.service.raw.SourceAndTranslationResourceRestBase.TestSourceDocResource. + PickConstructor.pickPerRequestConstructor(clazz) != null; } } diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/ProjectResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/ProjectResource.java index f1f893f28b7..7b6f967d784 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/ProjectResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/ProjectResource.java @@ -10,14 +10,13 @@ import org.zanata.rest.service.RestConstants; import org.zanata.rest.editor.MediaTypes; -import org.zanata.rest.service.RestResource; /** * @author Alex Eng aeng@redhat.com */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface ProjectResource extends RestResource { +public interface ProjectResource { public static final String PROJECT_SLUG_TEMPLATE = "/{projectSlug:" + RestConstants.SLUG_PATTERN + "}"; diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/StatisticResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/StatisticResource.java index e574096009f..a01fe961eb2 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/StatisticResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/StatisticResource.java @@ -1,7 +1,5 @@ package org.zanata.rest.editor.service.resource; -import org.zanata.rest.service.RestResource; - import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -16,7 +14,7 @@ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface StatisticResource extends RestResource { +public interface StatisticResource { public static final String SERVICE_PATH = "/stats"; /** diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/SuggestionsResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/SuggestionsResource.java index 93718e0c639..d92ee9aa8eb 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/SuggestionsResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/SuggestionsResource.java @@ -21,7 +21,6 @@ package org.zanata.rest.editor.service.resource; import org.zanata.rest.editor.MediaTypes; -import org.zanata.rest.service.RestResource; import org.zanata.webtrans.shared.rest.TransMemoryMergeResource; import javax.ws.rs.*; @@ -34,7 +33,7 @@ */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface SuggestionsResource extends RestResource, +public interface SuggestionsResource extends TransMemoryMergeResource { String SERVICE_PATH = "/suggestions"; diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TextFlowResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TextFlowResource.java index 0e0b78993f0..c12982f3bb6 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TextFlowResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TextFlowResource.java @@ -8,14 +8,13 @@ import javax.ws.rs.core.Response; import org.zanata.rest.editor.MediaTypes; -import org.zanata.rest.service.RestResource; /** * @author Alex Eng aeng@redhat.com */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface TextFlowResource extends RestResource { +public interface TextFlowResource { public static final String SERVICE_PATH = "/source"; diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TransUnitResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TransUnitResource.java index 2ee93d6028f..085668228fd 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TransUnitResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TransUnitResource.java @@ -9,14 +9,13 @@ import javax.ws.rs.core.Response; import org.zanata.rest.editor.MediaTypes; -import org.zanata.rest.service.RestResource; /** * @author Alex Eng aeng@redhat.com */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface TransUnitResource extends RestResource { +public interface TransUnitResource { public static final String SERVICE_PATH = "/source+trans/{localeId}"; diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TranslationResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TranslationResource.java index 28f1e034cd2..b78f46ec7b6 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/TranslationResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/TranslationResource.java @@ -11,14 +11,13 @@ import org.zanata.rest.editor.MediaTypes; import org.zanata.rest.editor.dto.TranslationData; -import org.zanata.rest.service.RestResource; /** * @author Alex Eng aeng@redhat.com */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface TranslationResource extends RestResource { +public interface TranslationResource { public static final String SERVICE_PATH = "/trans/{localeId}"; diff --git a/server/services/src/main/java/org/zanata/rest/editor/service/resource/UserResource.java b/server/services/src/main/java/org/zanata/rest/editor/service/resource/UserResource.java index 10fc9171572..5d7cf4325ec 100644 --- a/server/services/src/main/java/org/zanata/rest/editor/service/resource/UserResource.java +++ b/server/services/src/main/java/org/zanata/rest/editor/service/resource/UserResource.java @@ -12,14 +12,13 @@ import org.zanata.rest.editor.MediaTypes; import org.zanata.rest.service.GlossaryService; -import org.zanata.rest.service.RestResource; /** * @author Alex Eng aeng@redhat.com */ @Produces({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON }) -public interface UserResource extends RestResource { +public interface UserResource { String SERVICE_PATH = "/user"; diff --git a/server/services/src/main/java/org/zanata/rest/search/service/SearchService.java b/server/services/src/main/java/org/zanata/rest/search/service/SearchService.java index 7c2c2e1d54a..18420999bda 100644 --- a/server/services/src/main/java/org/zanata/rest/search/service/SearchService.java +++ b/server/services/src/main/java/org/zanata/rest/search/service/SearchService.java @@ -55,7 +55,6 @@ import org.zanata.rest.search.dto.ProjectSearchResult; import org.zanata.rest.search.dto.ProjectVersionSearchResult; import org.zanata.rest.search.dto.SearchResults; -import org.zanata.rest.service.RestResource; import org.zanata.security.ZanataIdentity; import org.zanata.security.annotations.Authenticated; import org.zanata.service.GravatarService; @@ -71,7 +70,7 @@ @Path("/search") @Produces(APPLICATION_JSON) @Transactional(readOnly = true) -public class SearchService implements RestResource { +public class SearchService { private static final long serialVersionUID = 8924030399679653241L; @Inject diff --git a/server/services/src/main/java/org/zanata/rest/service/AsyncProcessService.java b/server/services/src/main/java/org/zanata/rest/service/AsyncProcessService.java index 71ff5833b2b..3ec0576d459 100644 --- a/server/services/src/main/java/org/zanata/rest/service/AsyncProcessService.java +++ b/server/services/src/main/java/org/zanata/rest/service/AsyncProcessService.java @@ -70,7 +70,7 @@ */ @Path("/process") @Produces(MediaType.APPLICATION_JSON) -public class AsyncProcessService implements RestResource { +public class AsyncProcessService { private static final long serialVersionUID = 1L; @Inject diff --git a/server/services/src/main/java/org/zanata/security/UsernameLoggingFilter.java b/server/services/src/main/java/org/zanata/security/UsernameLoggingFilter.java index a41dc0a0594..e1af5733307 100644 --- a/server/services/src/main/java/org/zanata/security/UsernameLoggingFilter.java +++ b/server/services/src/main/java/org/zanata/security/UsernameLoggingFilter.java @@ -15,11 +15,11 @@ import javax.servlet.http.HttpSession; import org.apache.deltaspike.core.api.provider.BeanProvider; -import org.apache.log4j.MDC; +import org.slf4j.MDC; import org.zanata.servlet.MDCInsertingServletFilter; /** - * This filter adds the authenticated user name to the log4j + * This filter adds the authenticated username to the slf4j * mapped diagnostic context so that it can be included in * formatted log output if desired, by adding %X{username} * to the pattern. @@ -46,8 +46,11 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo MDC.put(MDCInsertingServletFilter.USERNAME, username); } } - filterChain.doFilter(servletRequest, servletResponse); - MDC.remove(MDCInsertingServletFilter.USERNAME); + try { + filterChain.doFilter(servletRequest, servletResponse); + } finally { + MDC.remove(MDCInsertingServletFilter.USERNAME); + } } @Override diff --git a/server/services/src/main/java/org/zanata/service/SearchService.java b/server/services/src/main/java/org/zanata/service/SearchService.java index 8f20c557319..83046640178 100644 --- a/server/services/src/main/java/org/zanata/service/SearchService.java +++ b/server/services/src/main/java/org/zanata/service/SearchService.java @@ -26,13 +26,12 @@ import javax.ws.rs.QueryParam; import org.zanata.rest.dto.ReindexStatus; -import org.zanata.rest.service.RestResource; /** * @author Carlos Munoz camunoz@redhat.com */ -public interface SearchService extends RestResource { +public interface SearchService { /** * Requests the start of a system reindex. NOTE: This is not a stable, * supported API. It might change from release to release. diff --git a/server/services/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/server/services/src/main/resources/META-INF/services/javax.annotation.processing.Processor deleted file mode 100644 index 25047624ad0..00000000000 --- a/server/services/src/main/resources/META-INF/services/javax.annotation.processing.Processor +++ /dev/null @@ -1 +0,0 @@ -org.zanata.util.JaxRSClassIndexProcessor diff --git a/server/zanata-frontend/src/frontend/.storybook-editor/__snapshots__/storyshots-editor.test.js.snap b/server/zanata-frontend/src/frontend/.storybook-editor/__snapshots__/storyshots-editor.test.js.snap index f1e37266457..aed14323b83 100644 --- a/server/zanata-frontend/src/frontend/.storybook-editor/__snapshots__/storyshots-editor.test.js.snap +++ b/server/zanata-frontend/src/frontend/.storybook-editor/__snapshots__/storyshots-editor.test.js.snap @@ -1,5 +1,499 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Editor Storyshots ActivityFeedItem approved 1`] = ` +
+

+ + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + + + + + + + David Mason + + has + + + approved a translation + + + +

+
+ নাম +
+ + + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + +   + + Dec 16, 2016 + +   + + 2:19 AM + + +
+`; + +exports[`Editor Storyshots ActivityFeedItem comment 1`] = ` +
+

+ + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + + + + + + + David Mason + + has commented on a translation + +

+
+ What in the world does this mean? +
+ + + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + +   + + Dec 16, 2016 + +   + + 2:19 AM + + +
+`; + +exports[`Editor Storyshots ActivityFeedItem fuzzy 1`] = ` +
+

+ + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + + + + + + + David Mason + + has + + + created a fuzzy revision + + + +

+
+ নাম +
+ + + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + +   + + Dec 16, 2016 + +   + + 2:19 AM + + +
+`; + +exports[`Editor Storyshots ActivityFeedItem rejected 1`] = ` +
+

+ + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + + + + + + + David Mason + + has + + + rejected a translation + + + +

+
+ নাম +
+ + + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + +   + + Dec 16, 2016 + +   + + 2:19 AM + + +
+`; + +exports[`Editor Storyshots ActivityFeedItem translated 1`] = ` +
+

+ + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + + + + + + + David Mason + + has + + + created a translation revision + + + +

+
+ নাম +
+ + + ", + } + } + style={ + Object { + "fill": "currentColor", + } + } + /> + +   + + Dec 16, 2016 + +   + + 2:19 AM + + +
+`; + +exports[`Editor Storyshots ActivitySelectList default 1`] = ` +
+ + + +
+`; + exports[`Editor Storyshots Button BUTTON BUILDER 1`] = `
`; -exports[`Editor Storyshots GlossarySearchInput empty 1`] = ` +exports[`Editor Storyshots CommentBox default 1`] = `
- ", + "__html": "", } } style={ @@ -4439,31 +4932,278 @@ exports[`Editor Storyshots GlossarySearchInput empty 1`] = ` } /> - - +
+