diff --git a/.gitignore b/.gitignore index 53dc944..653e866 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,5 @@ -node_modules target .vscode .settings .project -.classpath -webpack.generated.js -package-lock.json -package.json -webpack.config.js -/error-screenshots -drivers -tsconfig.json -.idea -types.d.ts -/frontend/generated -/frontend/index.html -vite.generated.ts -vite.config.ts -/src/main/dev-bundle -/src/main/bundles -/src/main/frontend/generated -/src/main/frontend/index.html \ No newline at end of file +.classpath \ No newline at end of file diff --git a/base/.gitignore b/base/.gitignore new file mode 100644 index 0000000..53dc944 --- /dev/null +++ b/base/.gitignore @@ -0,0 +1,23 @@ +node_modules +target +.vscode +.settings +.project +.classpath +webpack.generated.js +package-lock.json +package.json +webpack.config.js +/error-screenshots +drivers +tsconfig.json +.idea +types.d.ts +/frontend/generated +/frontend/index.html +vite.generated.ts +vite.config.ts +/src/main/dev-bundle +/src/main/bundles +/src/main/frontend/generated +/src/main/frontend/index.html \ No newline at end of file diff --git a/base/pom.xml b/base/pom.xml new file mode 100644 index 0000000..d7fd2a8 --- /dev/null +++ b/base/pom.xml @@ -0,0 +1,330 @@ + + + + 4.0.0 + + com.flowingcode.vaadin.addons.demo + commons-demo + 5.3.0-SNAPSHOT + + Commons Demo + Common classes for add-ons demo + https://www.flowingcode.com/en/open-source/ + + + + flowingcode + Flowing Code + https://www.flowingcode.com + + + + + UTF-8 + 17 + 17 + 24.3.13 + 11.0.26 + + + +Flowing Code +https://www.flowingcode.com + + 2020 + + + Apache 2 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + https://github.com/FlowingCode/CommonsDemo + scm:git:git://github.com/FlowingCode/CommonsDemo.git + scm:git:ssh://git@github.com:/FlowingCode/CommonsDemo.git + master + + + + + central + https://repo.maven.apache.org/maven2 + + false + + + + + + + + com.vaadin + vaadin-bom + ${vaadin.version} + pom + import + + + + + + + com.vaadin + vaadin-core + true + + + + org.projectlombok + lombok + 1.18.34 + provided + + + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided + + + + com.flowingcode.vaadin.addons + enhanced-tabs-addon + 1.2.0 + + + + com.flowingcode.vaadin + json-migration-helper + 0.9.2 + + + + junit + junit + 4.11 + test + + + + org.slf4j + slf4j-simple + test + + + + com.vaadin + vaadin-testbench + test + + + org.webjars.bowergithub.polymer + polymer + + + + + + io.github.bonigarcia + webdrivermanager + 6.3.2 + test + + + net.java.dev.jna + jna + + + + + + + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.1 + + release + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.1 + + false + + + + org.codehaus.mojo + license-maven-plugin + 1.14 + + apache_v2 + false + + **/AppShellConfiguratorImpl.class + **/main/resources/META-INF/resources/frontend/prism.js + **/main/resources/META-INF/resources/frontend/prism.css + **/test/resources/** + **/main/dev-bundle/** + + + + + org.eclipse.jetty + jetty-maven-plugin + ${jetty.version} + + 3 + + true + + jar + + + + src/main/resources/META-INF/resources + src/test/resources/META-INF/resources + + + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.2 + + + + META-INF/VAADIN/config/flow-build-info.json + + + + + com.vaadin + vaadin-maven-plugin + ${vaadin.version} + + + + prepare-frontend + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + package + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.11.1 + + + attach-javadocs + package + + jar + + + + + true + none + true + + https://javadoc.io/doc/com.vaadin/vaadin-platform-javadoc/${vaadin.version} + + + + + + + + + gpg + + + env.MAVEN_GPG_PASSPHRASE + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.7 + + + sign-artifacts + verify + + sign + + + + + + + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 + true + + + + + + + v25 + + 21 + 21 + 25.0.0 + + + + com.vaadin + vaadin-dev + true + + + + + + + diff --git a/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandler.java b/base/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandler.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandler.java rename to base/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandler.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandlerInitializer.java b/base/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandlerInitializer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandlerInitializer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/DevSourceRequestHandlerInitializer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/GithubBranch.java b/base/src/main/java/com/flowingcode/vaadin/addons/GithubBranch.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/GithubBranch.java rename to base/src/main/java/com/flowingcode/vaadin/addons/GithubBranch.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/GithubLink.java b/base/src/main/java/com/flowingcode/vaadin/addons/GithubLink.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/GithubLink.java rename to base/src/main/java/com/flowingcode/vaadin/addons/GithubLink.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/ColorScheme.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/ColorScheme.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/ColorScheme.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/ColorScheme.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DefaultSourceUrlResolver.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DefaultSourceUrlResolver.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DefaultSourceUrlResolver.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DefaultSourceUrlResolver.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelper.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelper.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelper.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelper.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperRenderer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperRenderer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperRenderer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperRenderer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperViewer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperViewer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperViewer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoHelperViewer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSource.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSource.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoSource.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSource.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceConditionHelper.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceConditionHelper.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceConditionHelper.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceConditionHelper.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSources.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSources.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DemoSources.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSources.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DialogDemoHelperViewer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DialogDemoHelperViewer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DialogDemoHelperViewer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DialogDemoHelperViewer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicTheme.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicTheme.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DynamicTheme.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicTheme.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicThemeInitializer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicThemeInitializer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/DynamicThemeInitializer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/DynamicThemeInitializer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/EnhancedRouteTabs.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/EnhancedRouteTabs.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/EnhancedRouteTabs.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/EnhancedRouteTabs.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/MultiSourceCodeViewer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/MultiSourceCodeViewer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/MultiSourceCodeViewer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/MultiSourceCodeViewer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeTab.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeTab.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeTab.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeTab.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeViewer.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeViewer.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeViewer.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceCodeViewer.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/SourcePosition.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/SourcePosition.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/SourcePosition.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/SourcePosition.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/SourceUrlResolver.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceUrlResolver.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/SourceUrlResolver.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/SourceUrlResolver.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/SplitLayoutDemo.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/SplitLayoutDemo.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/SplitLayoutDemo.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/SplitLayoutDemo.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemo.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemoSourceEvent.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemoSourceEvent.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemoSourceEvent.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/TabbedDemoSourceEvent.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeEvent.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeEvent.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeEvent.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeEvent.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeObserver.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeObserver.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeObserver.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/ThemeChangeObserver.java diff --git a/src/main/java/com/flowingcode/vaadin/addons/demo/VaadinVersion.java b/base/src/main/java/com/flowingcode/vaadin/addons/demo/VaadinVersion.java similarity index 100% rename from src/main/java/com/flowingcode/vaadin/addons/demo/VaadinVersion.java rename to base/src/main/java/com/flowingcode/vaadin/addons/demo/VaadinVersion.java diff --git a/src/main/resources/META-INF/VAADIN/package.properties b/base/src/main/resources/META-INF/VAADIN/package.properties similarity index 100% rename from src/main/resources/META-INF/VAADIN/package.properties rename to base/src/main/resources/META-INF/VAADIN/package.properties diff --git a/src/main/resources/META-INF/resources/frontend/code-viewer.ts b/base/src/main/resources/META-INF/resources/frontend/code-viewer.ts similarity index 100% rename from src/main/resources/META-INF/resources/frontend/code-viewer.ts rename to base/src/main/resources/META-INF/resources/frontend/code-viewer.ts diff --git a/src/main/resources/META-INF/resources/frontend/prism.js b/base/src/main/resources/META-INF/resources/frontend/prism.js similarity index 100% rename from src/main/resources/META-INF/resources/frontend/prism.js rename to base/src/main/resources/META-INF/resources/frontend/prism.js diff --git a/src/main/resources/META-INF/resources/frontend/styles/commons-demo/shared-styles.css b/base/src/main/resources/META-INF/resources/frontend/styles/commons-demo/shared-styles.css similarity index 100% rename from src/main/resources/META-INF/resources/frontend/styles/commons-demo/shared-styles.css rename to base/src/main/resources/META-INF/resources/frontend/styles/commons-demo/shared-styles.css diff --git a/src/main/resources/META-INF/resources/frontend/styles/commons-demo/vaadin-select-overlay.css b/base/src/main/resources/META-INF/resources/frontend/styles/commons-demo/vaadin-select-overlay.css similarity index 100% rename from src/main/resources/META-INF/resources/frontend/styles/commons-demo/vaadin-select-overlay.css rename to base/src/main/resources/META-INF/resources/frontend/styles/commons-demo/vaadin-select-overlay.css diff --git a/src/main/resources/META-INF/services/com.vaadin.flow.server.VaadinServiceInitListener b/base/src/main/resources/META-INF/services/com.vaadin.flow.server.VaadinServiceInitListener similarity index 100% rename from src/main/resources/META-INF/services/com.vaadin.flow.server.VaadinServiceInitListener rename to base/src/main/resources/META-INF/services/com.vaadin.flow.server.VaadinServiceInitListener diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocDemo.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocDemo.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/AdHocDemo.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocSource.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocSource.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/AdHocSource.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/AdHocSource.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/AdditionalSources.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/AdditionalSources.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/AdditionalSources.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/AdditionalSources.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/AppShellConfiguratorImpl.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/AppShellConfiguratorImpl.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/AppShellConfiguratorImpl.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/AppShellConfiguratorImpl.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/Demo.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/Demo.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/Demo.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/Demo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/MultiSourceDemo.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/MultiSourceDemo.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/MultiSourceDemo.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/MultiSourceDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemo.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemo.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemo.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoDefault.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoDefault.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoDefault.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoDefault.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHelperRenderer.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHelperRenderer.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHelperRenderer.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHelperRenderer.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHighlight.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHighlight.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHighlight.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/SampleDemoHighlight.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/SourcePositionDemo.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/SourcePositionDemo.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/SourcePositionDemo.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/SourcePositionDemo.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractSourceCodeViewerIT.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractSourceCodeViewerIT.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractSourceCodeViewerIT.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractSourceCodeViewerIT.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractViewTest.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractViewTest.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractViewTest.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/AbstractViewTest.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/ConditionalSourceCodeViewerIT.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/ConditionalSourceCodeViewerIT.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/ConditionalSourceCodeViewerIT.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/ConditionalSourceCodeViewerIT.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerElement.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerElement.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerElement.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerElement.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerIT.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerIT.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerIT.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerIT.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerView.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerView.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerView.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/SourceCodeViewerView.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoView.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoView.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoView.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoView.java diff --git a/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoViewIT.java b/base/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoViewIT.java similarity index 100% rename from src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoViewIT.java rename to base/src/test/java/com/flowingcode/vaadin/addons/demo/it/TabbedDemoViewIT.java diff --git a/src/test/resources/META-INF/resources/frontend/condition-false.css b/base/src/test/resources/META-INF/resources/frontend/condition-false.css similarity index 100% rename from src/test/resources/META-INF/resources/frontend/condition-false.css rename to base/src/test/resources/META-INF/resources/frontend/condition-false.css diff --git a/src/test/resources/META-INF/resources/frontend/condition-true.css b/base/src/test/resources/META-INF/resources/frontend/condition-true.css similarity index 100% rename from src/test/resources/META-INF/resources/frontend/condition-true.css rename to base/src/test/resources/META-INF/resources/frontend/condition-true.css diff --git a/src/test/resources/META-INF/resources/frontend/highlight-demo.css b/base/src/test/resources/META-INF/resources/frontend/highlight-demo.css similarity index 100% rename from src/test/resources/META-INF/resources/frontend/highlight-demo.css rename to base/src/test/resources/META-INF/resources/frontend/highlight-demo.css diff --git a/src/test/resources/META-INF/resources/frontend/multi-source-demo.css b/base/src/test/resources/META-INF/resources/frontend/multi-source-demo.css similarity index 100% rename from src/test/resources/META-INF/resources/frontend/multi-source-demo.css rename to base/src/test/resources/META-INF/resources/frontend/multi-source-demo.css diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/AnnotationCleanup.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/CleanupOverride.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElif.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionElse.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionEq.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGe.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionGt.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLe.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionLt.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNe.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionNested.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ConditionUnknownVariable.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/HideSource.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/LicenseCleanup.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/PackageCleanup.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/ShowSource.txt diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.java b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.java similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.java rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.java diff --git a/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.txt b/base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.txt similarity index 100% rename from src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.txt rename to base/src/test/resources/com/flowingcode/vaadin/addons/demo/it/SimpleSource.txt diff --git a/pom.xml b/pom.xml index d7fd2a8..86294b3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,330 +1,30 @@ - 4.0.0 com.flowingcode.vaadin.addons.demo - commons-demo + commons-demo-aggregator 5.3.0-SNAPSHOT - - Commons Demo - Common classes for add-ons demo - https://www.flowingcode.com/en/open-source/ - - - - flowingcode - Flowing Code - https://www.flowingcode.com - - - - - UTF-8 - 17 - 17 - 24.3.13 - 11.0.26 - - - -Flowing Code -https://www.flowingcode.com - - 2020 - - - Apache 2 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - + pom - - https://github.com/FlowingCode/CommonsDemo - scm:git:git://github.com/FlowingCode/CommonsDemo.git - scm:git:ssh://git@github.com:/FlowingCode/CommonsDemo.git - master - - - - - central - https://repo.maven.apache.org/maven2 - - false - - - - - - - - com.vaadin - vaadin-bom - ${vaadin.version} - pom - import - - - - - - - com.vaadin - vaadin-core - true - - - - org.projectlombok - lombok - 1.18.34 - provided - - - - jakarta.servlet - jakarta.servlet-api - 6.0.0 - provided - - - - com.flowingcode.vaadin.addons - enhanced-tabs-addon - 1.2.0 - - - - com.flowingcode.vaadin - json-migration-helper - 0.9.2 - - - - junit - junit - 4.11 - test - - - - org.slf4j - slf4j-simple - test - - - - com.vaadin - vaadin-testbench - test - - - org.webjars.bowergithub.polymer - polymer - - - - - - io.github.bonigarcia - webdrivermanager - 6.3.2 - test - - - net.java.dev.jna - jna - - - - + Commons Demo Aggregator - - - - org.apache.maven.plugins - maven-release-plugin - 3.0.1 - - release - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.8.2 - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.1 - - false - - - - org.codehaus.mojo - license-maven-plugin - 1.14 - - apache_v2 - false - - **/AppShellConfiguratorImpl.class - **/main/resources/META-INF/resources/frontend/prism.js - **/main/resources/META-INF/resources/frontend/prism.css - **/test/resources/** - **/main/dev-bundle/** - - - - - org.eclipse.jetty - jetty-maven-plugin - ${jetty.version} - - 3 - - true - - jar - - - - src/main/resources/META-INF/resources - src/test/resources/META-INF/resources - - - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.1.2 - - - - META-INF/VAADIN/config/flow-build-info.json - - - - - com.vaadin - vaadin-maven-plugin - ${vaadin.version} - - - - prepare-frontend - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - package - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.11.1 - - - attach-javadocs - package - - jar - - - - - true - none - true - - https://javadoc.io/doc/com.vaadin/vaadin-platform-javadoc/${vaadin.version} - - - + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + true + + - - - gpg - - - env.MAVEN_GPG_PASSPHRASE - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 3.2.7 - - - sign-artifacts - verify - - sign - - - - - - - - - - release - - - - org.sonatype.central - central-publishing-maven-plugin - 0.8.0 - true - - - - - - - v25 - - 21 - 21 - 25.0.0 - - - - com.vaadin - vaadin-dev - true - - - - - + + base + processor + diff --git a/processor/pom.xml b/processor/pom.xml new file mode 100644 index 0000000..bc370d8 --- /dev/null +++ b/processor/pom.xml @@ -0,0 +1,176 @@ + + + + 4.0.0 + + com.flowingcode.vaadin.addons.demo + commons-demo-processor + 5.3.0-SNAPSHOT + + Commons Demo Processor + Annotation processor for Commons Demo: copies @DemoSource-referenced files into the class output + https://www.flowingcode.com/en/open-source/ + + + + flowingcode + Flowing Code + https://www.flowingcode.com + + + + + UTF-8 + 17 + 17 + 5.3.0-SNAPSHOT + + + + Flowing Code + https://www.flowingcode.com + + 2020 + + + Apache 2 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + https://github.com/FlowingCode/CommonsDemo + scm:git:git://github.com/FlowingCode/CommonsDemo.git + scm:git:ssh://git@github.com:/FlowingCode/CommonsDemo.git + master + + + + + com.flowingcode.vaadin.addons.demo + commons-demo + ${commons-demo.version} + provided + + + + + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.1 + + release + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + org.codehaus.mojo + license-maven-plugin + 1.14 + + apache_v2 + false + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + -proc:none + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + package + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.11.1 + + + attach-javadocs + package + + jar + + + + + true + none + false + + + + + + + + gpg + + + env.MAVEN_GPG_PASSPHRASE + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.7 + + + sign-artifacts + verify + + sign + + + + + + + + + + release + + + + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 + true + + + + + + + diff --git a/processor/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceProcessor.java b/processor/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceProcessor.java new file mode 100644 index 0000000..bb65ca7 --- /dev/null +++ b/processor/src/main/java/com/flowingcode/vaadin/addons/demo/DemoSourceProcessor.java @@ -0,0 +1,261 @@ +/*- + * #%L + * Commons Demo + * %% + * Copyright (C) 2020 - 2026 Flowing Code + * %% + * Licensed 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. + * #L% + */ +package com.flowingcode.vaadin.addons.demo; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.AnnotationMirror; +import javax.lang.model.element.AnnotationValue; +import javax.lang.model.element.Element; +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.TypeElement; +import javax.lang.model.type.TypeMirror; +import javax.tools.Diagnostic; +import javax.tools.FileObject; +import javax.tools.StandardLocation; + +/** + * Annotation processor that scans sources annotated with {@link DemoSource} and copies the + * referenced source files into the class output (JAR). + * + *

This processor is intended to run as part of a Maven build, where + * {@link StandardLocation#SOURCE_PATH} is configured automatically by + * {@code maven-compiler-plugin}. When building inside an IDE, source files are served through + * other mechanisms (e.g. {@code DevSourceRequestHandler}) that bypass the processor output, so + * {@code SOURCE_PATH} may not be available. If {@link javax.tools.Filer#getResource} fails, the + * processor logs a warning and skips the affected file rather than failing the build. + * + * @author Javier Godoy / Flowing Code + */ +@SupportedAnnotationTypes({ + "com.flowingcode.vaadin.addons.demo.DemoSource", + "com.flowingcode.vaadin.addons.demo.DemoSources" +}) +public class DemoSourceProcessor extends AbstractProcessor { + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latestSupported(); + } + + private final Set collectedPaths = new LinkedHashSet<>(); + + @Override + public boolean process(Set annotations, RoundEnvironment roundEnv) { + if (roundEnv.processingOver()) { + if (!collectedPaths.isEmpty()) { + writeResource(); + } + return false; + } + + TypeElement demoSourceType = + processingEnv + .getElementUtils() + .getTypeElement("com.flowingcode.vaadin.addons.demo.DemoSource"); + TypeElement demoSourcesType = + processingEnv + .getElementUtils() + .getTypeElement("com.flowingcode.vaadin.addons.demo.DemoSources"); + + Set processed = new LinkedHashSet<>(); + processed.addAll(roundEnv.getElementsAnnotatedWith(demoSourceType)); + processed.addAll(roundEnv.getElementsAnnotatedWith(demoSourcesType)); + + for (Element element : processed) { + if (!(element instanceof TypeElement)) { + continue; + } + TypeElement annotatedClass = (TypeElement) element; + for (AnnotationMirror am : + getDemoSourceAnnotations(element, demoSourceType, demoSourcesType)) { + String path = resolvePath(annotatedClass, am, demoSourceType); + if (path != null) { + collectedPaths.add(path); + } + } + } + + return false; + } + + private List getDemoSourceAnnotations( + Element element, TypeElement demoSourceType, TypeElement demoSourcesType) { + List result = new ArrayList<>(); + TypeMirror demoSourceMirror = demoSourceType.asType(); + TypeMirror demoSourcesMirror = demoSourcesType.asType(); + + for (AnnotationMirror am : element.getAnnotationMirrors()) { + if (processingEnv.getTypeUtils().isSameType(am.getAnnotationType(), demoSourceMirror)) { + result.add(am); + } else if (processingEnv + .getTypeUtils() + .isSameType(am.getAnnotationType(), demoSourcesMirror)) { + // unwrap the @DemoSources container + AnnotationValue containerValue = getAnnotationValue(am, "value"); + if (containerValue != null) { + @SuppressWarnings("unchecked") + List list = + (List) containerValue.getValue(); + for (AnnotationValue av : list) { + result.add((AnnotationMirror) av.getValue()); + } + } + } + } + return result; + } + + private String resolvePath( + TypeElement annotatedClass, AnnotationMirror annotation, TypeElement demoSourceType) { + Map values = + processingEnv.getElementUtils().getElementValuesWithDefaults(annotation); + + String value = getStringValue(values, "value"); + TypeMirror clazzMirror = getTypeValue(values, "clazz"); + + boolean hasValue = !DemoSource.DEFAULT_VALUE.equals(value); + boolean hasClazz = + !processingEnv.getTypeUtils().isSameType(clazzMirror, demoSourceType.asType()); + + if (hasValue && hasClazz) { + processingEnv + .getMessager() + .printMessage( + Diagnostic.Kind.ERROR, + "Cannot specify both 'value' and 'clazz' in @DemoSource.", + annotatedClass, + annotation); + return null; + } + + if (hasValue) { + return value; + } else { + TypeElement typeElement; + if (hasClazz) { + Element clazzElement = processingEnv.getTypeUtils().asElement(clazzMirror); + if (!(clazzElement instanceof TypeElement)) { + processingEnv + .getMessager() + .printMessage( + Diagnostic.Kind.ERROR, + "The 'clazz' element of @DemoSource must be a declared type.", + annotatedClass, + annotation); + return null; + } + typeElement = (TypeElement) clazzElement; + } else { + // annotation.clazz() == DemoSource.class (sentinel default) + typeElement = annotatedClass; + } + // Walk up to the top-level type so that inner classes resolve to Outer.java + while (typeElement.getEnclosingElement() instanceof TypeElement) { + typeElement = (TypeElement) typeElement.getEnclosingElement(); + } + String className = typeElement.getQualifiedName().toString().replace('.', '/'); + return "src/test/java/" + className + ".java"; + } + } + + private static String getStringValue( + Map values, String name) { + return (String) getRawValue(values, name); + } + + private static TypeMirror getTypeValue( + Map values, String name) { + return (TypeMirror) getRawValue(values, name); + } + + private static Object getRawValue( + Map values, String name) { + for (Map.Entry entry : + values.entrySet()) { + if (entry.getKey().getSimpleName().contentEquals(name)) { + return entry.getValue().getValue(); + } + } + return null; + } + + private AnnotationValue getAnnotationValue(AnnotationMirror annotation, String name) { + for (Map.Entry entry : + processingEnv.getElementUtils().getElementValuesWithDefaults(annotation).entrySet()) { + if (entry.getKey().getSimpleName().contentEquals(name)) { + return entry.getValue(); + } + } + return null; + } + + private static final String[] SOURCE_ROOTS = {"src/test/java/", "src/main/java/"}; + + private void writeResource() { + int count = collectedPaths.size(); + if (count > 0) { + processingEnv + .getMessager() + .printMessage( + Diagnostic.Kind.NOTE, + "Copying " + count + " demo-source " + (count == 1 ? "file" : "files") + " to class output"); + } + for (String sourcePath : collectedPaths) { + try { + FileObject source = openSourceFile(sourcePath); + FileObject resource = + processingEnv + .getFiler() + .createResource(StandardLocation.CLASS_OUTPUT, "", sourcePath); + try (OutputStream out = resource.openOutputStream(); + InputStream in = source.openInputStream()) { + in.transferTo(out); + } + } catch (IOException | IllegalArgumentException e) { + processingEnv + .getMessager() + .printMessage( + Diagnostic.Kind.WARNING, "Failed to copy " + sourcePath + ": " + e.getMessage()); + } + } + } + + private FileObject openSourceFile(String path) throws IOException { + for (String root : SOURCE_ROOTS) { + if (path.startsWith(root)) { + return processingEnv + .getFiler() + .getResource(StandardLocation.SOURCE_PATH, "", path.substring(root.length())); + } + } + return processingEnv.getFiler().getResource(StandardLocation.SOURCE_PATH, "", path); + } +} diff --git a/processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 0000000..feb9b86 --- /dev/null +++ b/processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +com.flowingcode.vaadin.addons.demo.DemoSourceProcessor