Giter Site home page Giter Site logo

microprofile-starter's Introduction

microprofile-starter

Gitter

Web

Live tool at MicroProfile starter - Generate MicroProfile Maven Project

REST API

See documentation.

Procedures around PRs and releases

See documentation.

When can an implementation be added to the MicroProfile Tool

Pre-requisites to be added as an implementation:

  • Ensure that your implementation has passed the MicroProfile TCKs for an umbrella release.
  • Add your implementation under the right MicroProfile version at page MicroProfile implementation
  • Create a GitHub issue for adding your implementation to the MicroProfile Starter project at Issues page
  • Do a Pull Request on the MicroProfile Starter project (this project) to add your new integration.

Technical documentation

Information about adding

  • a new MicroProfile Implementation
  • an additional MicroProfile Version for an Implementation
  • a new MicroProfile Specification

is found in the how to document.

microprofile-starter's People

Contributors

andymc12 avatar benjamin-confino avatar cealsair avatar cesarhernandezgt avatar cicekhayri avatar daggerok avatar daniel-dos avatar davidsalter avatar dblevins avatar dependabot[bot] avatar dexmaster avatar eclipsewebmaster avatar ehsavoie avatar emily-jiang avatar ericglau avatar japudcret avatar jim-krueger avatar jmezna avatar karm avatar luiseufrasio avatar ondromih avatar radcortez avatar rdebusscher avatar scottkurz avatar seregamorph avatar takakiyo avatar tjquinno avatar zvonegit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microprofile-starter's Issues

Use defaults in the form fields

The current preview at http://mp-starter-jessie.1d35.starter-us-east-1.openshiftapps.com/mp-starter/main.xhtml;jsessionid=ZfUVsyTf581Ma3eyA-ZI8tt8G9NYNa_DnW9tJUBt.mp-starter-1-5mp87?dswid=-1840 has some required fields which don't have default values. So users need to fill them.

Since very often people would just want to get started quickly and refactor later, it would be helpful to fill all required fields with reasonable defaults, such as:

Maven Group Id = org.eclipse.microprofile.starterapp
ArtifactId = starterapp
MicroProfile version = always the most recent as default

Make JWT Auth example dependencies Server implementation specific

For the JWT Auth example (within Maven test directory), there are some dependencies used like a Rest Client implementation.

This is now the Jersey client, but this should be changed to something 'related' to the server implementation

Jersey -> KumuluzEE, Payara Micro
Apache CXF -> Liberty
RestEasy -> WildFly Swarm, Thorntail.

MicroProfile 2.0 release generator not populating pom.xml correctly

When using MicroProfile starter to generate a project on Open Liberty and MicroProfile 2.0/1.4. The pom.xml does not contain any liberty plugin, which is present when generating against MicroProfile 1.3 release.
Below is the example pom.xml it generated.

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.microprofile</groupId>
      <artifactId>microprofile</artifactId>
      <version>2.0.1</version>
      <type>pom</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.nimbusds</groupId>
      <artifactId>nimbus-jose-jwt</artifactId>
      <version>5.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-client</artifactId>
      <version>2.25.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk15on</artifactId>
      <version>1.53</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>demo</finalName>
  </build>
</project>

The pom.xml if choosing MicroProfile 1.3

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.microprofile</groupId>
      <artifactId>microprofile</artifactId>
      <version>1.3</version>
      <type>pom</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.nimbusds</groupId>
      <artifactId>nimbus-jose-jwt</artifactId>
      <version>5.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-client</artifactId>
      <version>2.25.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk15on</artifactId>
      <version>1.53</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>demo</finalName>
  </build>
  <profiles>
    <profile>
      <id>liberty</id>
      <build>
        <resources>
          <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
              <include>**/*.*</include>
            </includes>
          </resource>
          <resource>
            <filtering>true</filtering>
            <directory>${basedir}/src/main/liberty</directory>
            <includes>
              <include>**/*.*</include>
            </includes>
          </resource>
        </resources>
        <finalName>${project.artifactId}</finalName>
        <plugins>
          <plugin>
            <groupId>net.wasdev.wlp.maven.plugins</groupId>
            <artifactId>liberty-maven-plugin</artifactId>
            <version>${openliberty.maven.version}</version>
            <executions>
              <execution>
                <id>package-server</id>
                <phase>package</phase>
                <goals>
                  <goal>create-server</goal>
                  <goal>install-apps</goal>
                  <goal>package-server</goal>
                </goals>
                <configuration>
                  <outputDirectory>target/wlp-package</outputDirectory>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <assemblyArtifact>
                <groupId>io.openliberty</groupId>
                <artifactId>openliberty-runtime</artifactId>
                <version>${openliberty.version}</version>
                <type>zip</type>
              </assemblyArtifact>
              <configFile>target/classes/config/server.xml</configFile>
              <appArchive>${project.build.directory}/${project.artifactId}.war</appArchive>
              <packageFile>${project.build.directory}/${project.artifactId}.jar</packageFile>
              <include>runnable</include>
              <serverName>${project.artifactId}</serverName>
              <installAppPackages>project</installAppPackages>
              <configDirectory>${project.basedir}/src/main/liberty/server</configDirectory>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <openliberty.maven.version>2.0</openliberty.maven.version>
        <httpsPort>8543</httpsPort>
        <openliberty.version>18.0.0.1</openliberty.version>
        <jwt.issuer>https://server.example.com</jwt.issuer>
        <httpPort>8181</httpPort>
      </properties>
    </profile>
  </profiles>
</project>

javax.servlet.ServletException: View /index.xhtml could not be restored.

if you open the app and generate some dome zip, then restart the container but leave the app open and then try to generate something again, it fails with Internal Server Error and spits the underlying exception. One has to reload the webpage to make it work again which is counter intuitive.

@rdebusscher Could you shed some light? I am running with the contents of #42 , but I guess it applies to master too...

2019-01-24 13:32:38,865 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /index.xhtml: javax.servlet.ServletException: viewId:/index.xhtml - View /index.xhtml could not be restored.
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.swarm.generated.FaviconErrorHandler.handleRequest(FaviconErrorHandler.java:61)
        at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:94)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
        at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:123)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
        ... 33 more

Populate the list of MicroProfile versions when the Server is selected

Currently, MicroProfile Server field is disabled until MP version is selected. This forces to first select the version and then runtime. Sometimes a desired runtime doesn't support the selected version and the user has to try several versions until they find their desired runtime.

Proposal:

If version isn't selected, let the Server field enabled and populate it with all the available Servers. Then if a server field is selected, populate the Version field with all MP versions supported by the Server.

In the end, it will be possible to do both:

  • select an MP version and then choose from Servers that support it
  • select an MP server and choose from Versions that are supported by it

Cleanup initial import

There are a few things which needs to be cleaned up from the intial import

  • remove Atbash dependencies (just a general RuntimeException and Programmatic retrieval of CDI bean)
  • Remove Java EE templating files (unused)
  • other small things

Add a project creation counter to track usage

It would be very useful to add a counter every time a project is created using the MicroProfile starter. This would be a very useful metric to track adoption in the market. Thanks.

Define version as 0.8

  • Maven pom version
  • Docker tag

This also needs thus an update of the description in Container/readme.md

When a runtime selected, show a URL with more resources about that specific runtime

Aimed at complete newcomers who don't understand that MicroProfile is just an interface and there's always an implementation they have choose. I believe this will help people understand what's actually going on inside their project and where to find out more about the underlying runtime they chose.

Each runtime should have an associated URL, which will be used to display a link to more resources about the chosen runtime.

This as an example mockup (see the link under the MicroProfile Server field):

image

Some UI improvements

From Ryan

  • Disable autocomplete on input fields
  • Reduce top padding on "Project Options"
  • Add spacing between "Download" button and exclamation mark.

ui-improvements

Implement logging of downloads with simple DynamoDB on AWS

Regarding #18
Concerns mostly:
@Emily-Jiang @cealsair @rdebusscher

Hi guys, so this is what I suggest as a solution. if it doesn't stir up any opposition I will go ahead and forge this little demo into an application scoped bean callable from GeneratorDataBean.java. Rudy might suggest a better integration though...

AmazonDynamoDB

We host the service on Amazon, so there is probably no harm in using it for a simple logging of loosely structured data rows. If we want to leave, we always can. Moving away is as easy as dumping that log into JSON and importing it into something else.

Demo of what we might log

(This is just a showcase, not integrated, it is hard coded, demo, etc.)

package org.eclipse.microprofile.starter;

import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.PutItemOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import org.junit.Test;

import javax.xml.bind.DatatypeConverter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author Michal Karm Babacek <[email protected]>
 */
public class DownloadsLoggerDemoTest {

    @Test
    public void demoLoggingTest() throws NoSuchAlgorithmException {
        final AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
                //.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "eu-west-1"))
                .withRegion(Regions.EU_WEST_1)
                .build();
        final DynamoDB dynamoDB = new DynamoDB(client);
        try {
            final Table table = dynamoDB.getTable("microprofile_starter_log");

            final Calendar calendar = Calendar.getInstance();
            final SimpleDateFormat formattedTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
            final MessageDigest hash = MessageDigest.getInstance("SHA-1");

            // Logged
            final String mpVersion = "2.0";
            final String supportedServer = "liberty";
            final String beansxmlMode = "ANNOTATED";
            final String moduleStructure = "SINGLE";
            final Set<String> selectedSpecs = Stream.of("HEALTH_METRICS", "HEALTH_CHECKS", "REST_CLIENT").collect(Collectors.toSet());
            final String timestamp = formattedTime.format(calendar.getTime());

            // Just used to add entropy to unique stamp
            final String groupId = "biz.kamrs";
            final String artifacId = "demodemo";

            // This should uniquely mark log record row. World wouldn't end if there is a collision though
            final String logmark = Stream.concat(
                    Stream.of(mpVersion, supportedServer, beansxmlMode, moduleStructure, timestamp, groupId, artifacId),
                    selectedSpecs.stream()
            ).collect(Collectors.joining());

            hash.update(logmark.getBytes());

            final String hashedLogmark = DatatypeConverter.printHexBinary(hash.digest());

            System.out.println("logmark:" + logmark);
            System.out.println("logmark hashed:" + hashedLogmark);

            final Item item = new Item()
                    .withPrimaryKey("logmark", hashedLogmark)
                    .withString("mpVersion", mpVersion)
                    .withString("supportedServer", supportedServer)
                    .withString("beansxmlMode", beansxmlMode)
                    .withString("moduleStructure", moduleStructure)
                    .withStringSet("selectedSpecs", selectedSpecs)
                    .withString("timestamp", timestamp);

            PutItemOutcome outcome = table.putItem(item);

            System.out.println("Outcome:" + outcome.toString());

        } finally {
            client.shutdown();
        }
    }
}

Runtime

Once I have AWS_SECRET_ACCESS_KEY and AWS_ACCESS_KEY_ID env vars set I can run it. For testing it is possible to use local DynamoDB, but I configured the AWS DynamoDB for our account and tried it on "production" right away:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.eclipse.microprofile.starter.DownloadsLoggerDemoTest
logmark:2.0libertyANNOTATEDSINGLE2019-01-17T00:37:44.115+0100biz.kamrsdemodemoHEALTH_CHECKSREST_CLIENTHEALTH_METRICS
logmark hashed:6FB59BD3338342E6A34CA39CBDBC73012E021BB7
Outcome:{}
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.38 sec

AWS Console

I executed the "test" twice and what I can see are two log entries:
dynamo_screenshot

Command line

if you have AWS command line tool installed, you can easily use DynamoDB from your shell, either complex queries or scans, this dumps everything:

$ aws dynamodb scan --table-name microprofile_starter_log 
{
    "Count": 2,
    "Items": [
        {
            "moduleStructure": {
                "S": "SINGLE"
            },
            "logmark": {
                "S": "4CBCD59B08945E9C0C84DCE262DE13E700DF34D5"
            },
            "selectedSpecs": {
                "SS": [
                    "HEALTH_CHECKS",
                    "HEALTH_METRICS",
                    "REST_CLIENT"
                ]
            },
            "timestamp": {
                "S": "2019-01-17T00:57:04.348+0100"
            },
            "beansxmlMode": {
                "S": "ANNOTATED"
            },
            "supportedServer": {
                "S": "liberty"
            },
            "mpVersion": {
                "S": "2.0"
            }
        },
        {
            "moduleStructure": {
                "S": "SINGLE"
            },
            "logmark": {
                "S": "6FB59BD3338342E6A34CA39CBDBC73012E021BB7"
            },
            "selectedSpecs": {
                "SS": [
                    "HEALTH_CHECKS",
                    "HEALTH_METRICS",
                    "REST_CLIENT"
                ]
            },
            "timestamp": {
                "S": "2019-01-17T00:37:44.115+0100"
            },
            "beansxmlMode": {
                "S": "ANNOTATED"
            },
            "supportedServer": {
                "S": "liberty"
            },
            "mpVersion": {
                "S": "2.0"
            }
        }
    ],
    "ConsumedCapacity": null,
    "ScannedCount": 2
}

Question

Good / no good? IMHO it is just what we need for simple logging.

Internal Error when selecting only 1 API - using test-start

Using the currently deployed test-start application,
When selecting:

  • MicroProfile Version: MP 1.2
  • MicroProfile Server: thorntail-v2
  • beans.xml: Implicit
  • Samples for specifications: only Config checked (the rest of them are unchecked)

You get the error message:
Internal issue detected, no profile found for 'thorntail-v2-1.2'.

Review TODO and FIXME

  • If they come from the initial project and no more valid -> remove
  • If it is easy to fix -> Fix
  • Create GitHub Issues for remaining fixes.

Option to include Server specification parts in maven POM (and not as profile)

At this moment, the selection of an implementation server results in the addition of a profile into the pom file.
It defines the server specific things to generate the uber-jar/fat jar for example.

But having a profile is not as developer friendly as could be.

The idea of using the profile was that the generated project should be implementation agnostic. An important aspect of having a specification with different implementations (although some small changes are introduced for a specific implementation)

So having the option to merge the profile or keep the profile is then the tradeoff we can make.

Allow dash in artifactId

Hey,

Would it be possible to allow dash in the artifactId name? ex. user-service is not allowed.

Thanks,
Alex

Issues with generated project

Layout

  • Download button not aligned.

pom.xml

  • Add activeByDefault true
  • define as reference to artifactId.

Readme.md

  • Mentioning Jessie (see also #44)
  • update mvn package command (no profile name required anymore)
  • Indicate how executable JAR can be launched
  • Indicate URL for the browser

RestApplication.java

  • @LoginConfig is always and should only be there when JWT Auth example is chosen.

CQ for MicroProfile-starter

We need to do CQ for starter
com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile
com.fasterxml.jackson.core:jackson-core:jar:2.8.5:compile
com.fasterxml.jackson.core:jackson-databind:jar:2.8.5:compile
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.8.5:compile
com.google.guava:guava:jar:18.0:compile
com.sun.mail:javax.mail:jar:1.5.0:provided
javax.activation:activation:jar:1.1:provided
javax:javaee-api:jar:7.0:provided
ognl:ognl:jar:3.1.10:compile
org.apache.commons:commons-lang3:jar:3.4:compile
org.apache.maven:maven-artifact:jar:3.3.9:compile
org.apache.maven:maven-builder-support:jar:3.3.9:compile
org.apache.maven:maven-model-builder:jar:3.3.9:compile
org.apache.maven:maven-model:jar:3.3.9:compile
org.attoparser:attoparser:jar:2.0.1.RELEASE:compile
org.codehaus.plexus:plexus-component-annotations:jar:1.6:compile
org.codehaus.plexus:plexus-interpolation:jar:1.21:compile
org.codehaus.plexus:plexus-utils:jar:3.0.22:compile
org.javassist:javassist:jar:3.20.0-GA:compile
org.primefaces:primefaces:jar:6.1:compile
org.slf4j:slf4j-api:jar:1.6.6:compile
org.thymeleaf:thymeleaf:jar:3.0.2.RELEASE:compile
org.unbescape:unbescape:jar:1.1.4.RELEASE:compile
org.yaml:snakeyaml:jar:1.17:compile

Update JWT auth examples to 1.1

The location of the key is standardized in JWT Auth 1.1 release. The example does not make use of this and still uses implementation specific logic.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.