Repository: incubator-eagle Updated Branches: refs/heads/master 7d43cfe10 -> c629ca1eb
[EAGLE-575] Refactor StaticWebApplication to StaticApplication to support both web/static application * Format appId as EAGLE_$siteId_$appType in upper case for easily being managed in storm ui * Refactor StaticWebApplication to StaticApplication to support both web/static application * Fix test failure problem caused by calling application.run directly Author: Hao Chen <h...@apache.org> Closes #464 from haoch/EAGLE-575. Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/c629ca1e Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/c629ca1e Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/c629ca1e Branch: refs/heads/master Commit: c629ca1eba2b139c2b62fb60163f9301e3a02031 Parents: 7d43cfe Author: Hao Chen <h...@apache.org> Authored: Sat Oct 8 15:46:17 2016 +0800 Committer: Hao Chen <h...@apache.org> Committed: Sat Oct 8 15:46:17 2016 +0800 ---------------------------------------------------------------------- .../org/apache/eagle/app/StaticApplication.java | 56 ++++++++++++++++++ .../eagle/app/StaticApplicationProvider.java | 34 +++++++++++ .../apache/eagle/app/StaticWebApplication.java | 60 -------------------- .../eagle/app/StaticWebApplicationProvider.java | 34 ----------- .../impl/StaticApplicationExecutor.java | 34 +++++++++++ .../environment/impl/WebExecutionContainer.java | 34 ----------- .../environment/impl/WebExecutionRuntime.java | 12 ++-- .../eagle/app/test/ApplicationTestBase.java | 2 +- .../apache/eagle/app/TestWebApplication.java | 2 +- .../eagle/metadata/model/ApplicationEntity.java | 7 +++ .../example/ExampleApplicationProviderTest.java | 2 +- .../app/example/ExampleApplicationTest.java | 29 ---------- .../app/jpm/JPMWebApplicationProvider.java | 4 +- 13 files changed, 142 insertions(+), 168 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplication.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplication.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplication.java new file mode 100644 index 0000000..116d658 --- /dev/null +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplication.java @@ -0,0 +1,56 @@ +/* + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.eagle.app; + +import com.typesafe.config.Config; +import org.apache.eagle.app.environment.impl.StaticApplicationExecutor; +import org.apache.eagle.app.environment.impl.WebEnvironment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Static Application without executable process. + */ +public class StaticApplication implements Application<WebEnvironment, StaticApplicationExecutor> { + private static final Logger LOGGER = LoggerFactory.getLogger(StaticApplication.class); + private final String name; + + public StaticApplication(String name) { + this.name = name; + } + + @Override + public StaticApplicationExecutor execute(Config config, WebEnvironment environment) { + LOGGER.warn("Executing Static application"); + return new StaticApplicationExecutor(this); + } + + @Override + public Class<? extends WebEnvironment> getEnvironmentType() { + return WebEnvironment.class; + } + + @Override + public boolean isExecutable() { + return false; + } + + @Override + public String toString() { + return String.format("StaticApplication(%s)",this.name); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplicationProvider.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplicationProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplicationProvider.java new file mode 100644 index 0000000..e8a5d0d --- /dev/null +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticApplicationProvider.java @@ -0,0 +1,34 @@ +/* + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.eagle.app; + +import org.apache.eagle.app.spi.AbstractApplicationProvider; + +/** + * Static Web Application Provider. + */ +public abstract class StaticApplicationProvider extends AbstractApplicationProvider<StaticApplication> { + @Override + public StaticApplication getApplication() { + return new StaticApplication(this.getApplicationDesc().getType()); + } + + @Override + public final Class<StaticApplication> getApplicationClass() { + return StaticApplication.class; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplication.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplication.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplication.java deleted file mode 100644 index fae9393..0000000 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplication.java +++ /dev/null @@ -1,60 +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 - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * 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.eagle.app; - -import com.typesafe.config.Config; -import org.apache.eagle.app.environment.impl.WebExecutionContainer; -import org.apache.eagle.app.environment.impl.WebEnvironment; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Static Web Application without executable process. - */ -public class StaticWebApplication implements Application<WebEnvironment, WebExecutionContainer> { - private static final Logger LOGGER = LoggerFactory.getLogger(StaticWebApplication.class); - private final String webViewPath; - - public StaticWebApplication(String webViewPath) { - this.webViewPath = webViewPath; - } - - @Override - public WebExecutionContainer execute(Config config, WebEnvironment environment) { - LOGGER.warn("Executing web application"); - return new WebExecutionContainer(this); - } - - @Override - public Class<? extends WebEnvironment> getEnvironmentType() { - return WebEnvironment.class; - } - - @Override - public boolean isExecutable() { - return false; - } - - public String getWebViewPath() { - return webViewPath; - } - - @Override - public String toString() { - return String.format("StaticWebApplication(%s)",this.getWebViewPath()); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplicationProvider.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplicationProvider.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplicationProvider.java deleted file mode 100644 index 12d8f4e..0000000 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/StaticWebApplicationProvider.java +++ /dev/null @@ -1,34 +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 - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * 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.eagle.app; - -import org.apache.eagle.app.spi.AbstractApplicationProvider; - -/** - * Static Web Application Provider. - */ -public abstract class StaticWebApplicationProvider extends AbstractApplicationProvider<StaticWebApplication> { - @Override - public StaticWebApplication getApplication() { - return new StaticWebApplication(this.getApplicationDesc().getViewPath()); - } - - @Override - public final Class<StaticWebApplication> getApplicationClass() { - return StaticWebApplication.class; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StaticApplicationExecutor.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StaticApplicationExecutor.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StaticApplicationExecutor.java new file mode 100644 index 0000000..b5c7484 --- /dev/null +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/StaticApplicationExecutor.java @@ -0,0 +1,34 @@ +/* + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.eagle.app.environment.impl; + +import org.apache.eagle.app.StaticApplication; + +/** + * Web Application Container. + */ +public class StaticApplicationExecutor { + private final StaticApplication webApplication; + + public StaticApplicationExecutor(StaticApplication webApplication) { + this.webApplication = webApplication; + } + + public StaticApplication getWebApplication() { + return webApplication; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionContainer.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionContainer.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionContainer.java deleted file mode 100644 index 6ca7128..0000000 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionContainer.java +++ /dev/null @@ -1,34 +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 - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * 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.eagle.app.environment.impl; - -import org.apache.eagle.app.StaticWebApplication; - -/** - * Web Application Container. - */ -public class WebExecutionContainer { - private final StaticWebApplication webApplication; - - public WebExecutionContainer(StaticWebApplication webApplication) { - this.webApplication = webApplication; - } - - public StaticWebApplication getWebApplication() { - return webApplication; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionRuntime.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionRuntime.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionRuntime.java index 29a37cf..7426c1c 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionRuntime.java +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/environment/impl/WebExecutionRuntime.java @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; /** * WebExecutionRuntime. */ -public class WebExecutionRuntime implements ExecutionRuntime<WebEnvironment,WebExecutionContainer> { +public class WebExecutionRuntime implements ExecutionRuntime<WebEnvironment,StaticApplicationExecutor> { private static final Logger LOGGER = LoggerFactory.getLogger(WebExecutionRuntime.class); private WebEnvironment environment; @@ -44,24 +44,24 @@ public class WebExecutionRuntime implements ExecutionRuntime<WebEnvironment,WebE } @Override - public void start(Application<WebEnvironment, WebExecutionContainer> executor, Config config) { + public void start(Application<WebEnvironment, StaticApplicationExecutor> executor, Config config) { LOGGER.warn("Starting {}, do nothing",executor); } @Override - public void stop(Application<WebEnvironment, WebExecutionContainer> executor, Config config) { + public void stop(Application<WebEnvironment, StaticApplicationExecutor> executor, Config config) { LOGGER.warn("Stopping {}, do nothing",executor); } @Override - public ApplicationEntity.Status status(Application<WebEnvironment, WebExecutionContainer> executor, Config config) { + public ApplicationEntity.Status status(Application<WebEnvironment, StaticApplicationExecutor> executor, Config config) { LOGGER.warn("Checking status {}, do nothing",executor); return ApplicationEntity.Status.INITIALIZED; } - public static class Provider implements ExecutionRuntimeProvider<WebEnvironment,WebExecutionContainer> { + public static class Provider implements ExecutionRuntimeProvider<WebEnvironment,StaticApplicationExecutor> { @Override - public ExecutionRuntime<WebEnvironment, WebExecutionContainer> get() { + public ExecutionRuntime<WebEnvironment, StaticApplicationExecutor> get() { return new WebExecutionRuntime(); } } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java index 67e93a8..6bc73fc 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java +++ b/eagle-core/eagle-app/eagle-app-base/src/main/java/org/apache/eagle/app/test/ApplicationTestBase.java @@ -29,7 +29,7 @@ public class ApplicationTestBase { injector.injectMembers(this); } - public Injector injector() { + protected Injector injector() { return injector; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/TestWebApplication.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/TestWebApplication.java b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/TestWebApplication.java index 398bb4f..2778d1f 100644 --- a/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/TestWebApplication.java +++ b/eagle-core/eagle-app/eagle-app-base/src/test/java/org/apache/eagle/app/TestWebApplication.java @@ -20,7 +20,7 @@ import org.junit.Ignore; @Ignore public class TestWebApplication { - public static class Provider extends StaticWebApplicationProvider { + public static class Provider extends StaticApplicationProvider { } } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationEntity.java ---------------------------------------------------------------------- diff --git a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationEntity.java b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationEntity.java index f10ae76..bae6ba7 100644 --- a/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationEntity.java +++ b/eagle-core/eagle-metadata/eagle-metadata-base/src/main/java/org/apache/eagle/metadata/model/ApplicationEntity.java @@ -17,6 +17,7 @@ package org.apache.eagle.metadata.model; +import com.google.common.base.Preconditions; import org.apache.eagle.metadata.persistence.PersistenceEntity; import org.codehaus.jackson.annotate.JsonIgnoreProperties; @@ -98,6 +99,12 @@ public class ApplicationEntity extends PersistenceEntity { @Override public void ensureDefault() { super.ensureDefault(); + + Preconditions.checkNotNull(this.getSite(),"site is null"); + Preconditions.checkNotNull(this.getSite().getSiteId(),"siteId is null"); + Preconditions.checkNotNull(this.getDescriptor(),"descriptor is null"); + Preconditions.checkNotNull(this.getDescriptor().getType(),"descriptor type is null"); + if (this.appId == null) { this.appId = String.format("%s_%s", this.getDescriptor().getType(), this.getSite().getSiteId()).toUpperCase(); } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java ---------------------------------------------------------------------- diff --git a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java b/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java index a734421..e08456d 100644 --- a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java +++ b/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationProviderTest.java @@ -123,4 +123,4 @@ public class ExampleApplicationProviderTest extends ApplicationTestBase { conf.put("mode", "LOCAL"); return conf; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationTest.java ---------------------------------------------------------------------- diff --git a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationTest.java b/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationTest.java deleted file mode 100644 index eb1ecc7..0000000 --- a/eagle-examples/eagle-app-example/src/test/java/org/apache/eagle/app/example/ExampleApplicationTest.java +++ /dev/null @@ -1,29 +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 - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * 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.eagle.app.example; - -import org.junit.Test; - -public class ExampleApplicationTest { - /** - * Should load application from application.conf: - */ - @Test - public void testRunWithAppToolFromEnvConfig(){ - new ExampleStormApplication().run(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/c629ca1e/eagle-jpm/eagle-jpm-web/src/main/java/org/apache/eagle/app/jpm/JPMWebApplicationProvider.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-web/src/main/java/org/apache/eagle/app/jpm/JPMWebApplicationProvider.java b/eagle-jpm/eagle-jpm-web/src/main/java/org/apache/eagle/app/jpm/JPMWebApplicationProvider.java index 6c27608..d8750f6 100644 --- a/eagle-jpm/eagle-jpm-web/src/main/java/org/apache/eagle/app/jpm/JPMWebApplicationProvider.java +++ b/eagle-jpm/eagle-jpm-web/src/main/java/org/apache/eagle/app/jpm/JPMWebApplicationProvider.java @@ -16,8 +16,8 @@ */ package org.apache.eagle.app.jpm; -import org.apache.eagle.app.StaticWebApplicationProvider; +import org.apache.eagle.app.StaticApplicationProvider; -public class JPMWebApplicationProvider extends StaticWebApplicationProvider { +public class JPMWebApplicationProvider extends StaticApplicationProvider { // JPMWebApplicationProvider SPI Interface } \ No newline at end of file