CARVIEW |
Select Language
HTTP/2 200
date: Mon, 21 Jul 2025 18:38:28 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"305a1ca8ea262af6060d3439bd2e5970"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=Yr3TL%2Fi%2BqbHvc8qZ9nu4%2Bge4dJOwiCf6DEJrn5qvFA%2BrhN7%2F5KMx5wka1gJoz9bVe3Bpg819jI4%2F%2BqIyGKxAgXtpKp1IAdwpJwfS6D5DyhsqD8itRMXwgLEt29YiSRoT3gMsOamhUpjK2S%2FvAM0b8XScFLyVf3T3JAPNUGtQSdklxN3hL6sn9hG3JkRwRP97c9wFR0zHVUhuWf%2BFddkg7rzk2htUwFcXn2Gb9Qvvf%2Ffh20m8fRQ%2Ba3kxz58uay5wXFxw4xLMsScChFEowxkMNg%3D%3D--L66HrRPyTdzhtlMx--7fCYy%2BpQjWbqu5SlvEnzoA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1665098219.1753123107; Path=/; Domain=github.com; Expires=Tue, 21 Jul 2026 18:38:27 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Tue, 21 Jul 2026 18:38:27 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: ACF4:2EC2AB:2490DB:2B682F:687E8923
How to generate sources at runtime · burningwave/core Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 21
How to generate sources at runtime
Burningwave edited this page Feb 3, 2021
·
6 revisions
With UnitSourceGenerator you can generate source code and store it on the drive. Assuming this class as example:
package source.generation.test;
import java.util.Arrays;
import java.util.List;
public class GeneratedClass {
private List<String> words;
public GeneratedClass(String... words) {
this.words = Arrays.asList(words);
}
public void print() {
System.out.print(String.join(" ", words));
}
public static void main(String[] args) {
new GeneratedClass(args).print();
}
}
... The relative code to generate and store it will be:
package source.generation.test;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
import org.burningwave.core.classes.ClassSourceGenerator;
import org.burningwave.core.classes.FunctionSourceGenerator;
import org.burningwave.core.classes.GenericSourceGenerator;
import org.burningwave.core.classes.TypeDeclarationSourceGenerator;
import org.burningwave.core.classes.UnitSourceGenerator;
import org.burningwave.core.classes.VariableSourceGenerator;
public class SourceGenerationTester {
public static UnitSourceGenerator generate() {
return UnitSourceGenerator.create(SourceGenerationTester.class.getPackage().getName())
.addClass(
ClassSourceGenerator.create(TypeDeclarationSourceGenerator.create("GeneratedClass"))
.addField(
VariableSourceGenerator.create(
TypeDeclarationSourceGenerator.create(List.class)
.addGeneric(GenericSourceGenerator.create(String.class)),
"words"
)
)
.addConstructor(
FunctionSourceGenerator.create().addParameter(
VariableSourceGenerator.create(
TypeDeclarationSourceGenerator.create(String.class)
.setAsVarArgs(true),
"words"
)
).addBodyCodeLine("this.words = Arrays.asList(words);").useType(Arrays.class)
)
.addMethod(
FunctionSourceGenerator.create("print")
.addModifier(Modifier.PUBLIC).setReturnType(void.class)
.addBodyCodeLine(
"System.out.println(\"\\n\\t\" + String.join(\" \", words) + \"\\n\");"
)
)
.addMethod(
FunctionSourceGenerator.create("main")
.addModifier(Modifier.PUBLIC | Modifier.STATIC)
.setReturnType(void.class)
.addParameter(VariableSourceGenerator.create(String[].class, "args"))
.addBodyCodeLine("new GeneratedClass(args).print();")
)
);
}
public static void main(String[] args) {
UnitSourceGenerator unitSG = SourceGenerationTester.generate();
unitSG.storeToClassPath(System.getProperty("user.home") + "/Desktop/sources");
System.out.println("\nGenerated code:\n" + unitSG);
}
}
Once the sources have been generated you can also compile them at runtime: to do this follow this guide.
Burningwave core is a fully indipendent, advanced, free and open source Java frameworks building library that contains AN EXTREMELY POWERFUL CLASSPATH SCANNER.
To include Burningwave Core library in your projects simply use with Apache Maven:
<dependency>
<groupId>org.burningwave</groupId>
<artifactId>core</artifactId>
<version>12.66.2</version>
</dependency>
To use Burningwave Core as a Java module add the following to your module-info.java
:
requires org.burningwave.core;
ClassFactory
ClassHunter
- In depth look to and configuration guide
- USE CASE: retrieving all classes of the classpath
- USE CASE: retrieving all classes that implement one or more interfaces
- USE CASE: finding all classes that extend a base class
- USE CASE: searching for all classes that have package name that matches a regex
- USE CASE: finding all classes for module name (Java 9 and later)
- USE CASE: finding all annotated classes
- USE CASE: how to scan classes for specific annotations and collect its values
- USE CASE: searching for all classes with a constructor that takes a specific type as first parameter and with at least 2 methods that begin for a given string
- USE CASE: searching for all classes with methods whose name begins for a given string and that takes a specific type as its first parameter
- USE CASE: finding all classes that have at least 2 protected fields
ClassPathHunter
CodeExecutor
FileSystemItem
FunctionalInterfaceFactory
IterableObjectHelper
JavaMemoryCompiler
PropertyAccessor
UnitSourceGenerator
Clone this wiki locally
You can’t perform that action at this time.