Repository navigation
Backend: close the gaps found porting BuildCloud (#6153) - #6158
shai-almog wants to merge 17 commits into
Conversation
…es/consumes, @crossorigin Part of #6153: @column(insertable/updatable), @lob accepted on string and byte fields, CrudRepository delete/deleteAll/saveAll/findAllById/flush and default methods in repository interfaces, consumes/produces on the mapping annotations (415/406), a per-route @crossorigin policy that replaces the global one for its route, and ResponseStatusException(int). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…djusters, BigDecimal, InetAddress (#6153) Item 5 of #6153: classes the backend needed that the ParparVM class library lacked. BigDecimal keeps its unscaled value as decimal digits, since there is no java.math.BigInteger here. InetAddress resolves address literals only; the backend's getaddrinfo lives in its own TCP natives, so other host names throw UnknownHostException. LocalDate gains with(TemporalAdjuster) and implements TemporalAdjuster. JdkGapChecks holds all of them to HotSpot in the bulk conformance run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the shared engine checkBackend now moves java.util.regex onto com.codename1.util.regex (the java/util/regex rows of Relocation.JDK_SHIMS) and rewrites String's regex members to StringRegex (the String rows of the client's rewrite rules), and the regex package (all but REDebugCompiler) is @SharedWithBackend so it ships in codenameone-backend. Issue #6153 item 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…generated codecs The build finds the class literals the application hands to the typed Json methods, writes a codec for each, and the entry point installs a generated registry over them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er reader (#6153 items 6, 7) com.codename1.backend.xml: XmlPullParser (XXE-safe by construction: DOCTYPE skipped, only predefined and numeric entities, nesting capped), XmlElement, PropertyLists (XML plists and the plist inside a signed provisioning profile). com.codename1.backend.ImageInfo: PNG/JPEG/GIF/WebP format and dimensions from the header, JPEG walked segment by segment to its SOFn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…onfigurable table names
Recovery codes are verified through a DelegatingPasswordEncoder: new codes
are {pbkdf2-sha256}, imported {sha256} hex hashes verify in constant time,
and unprefixed hashes stay PBKDF2. Remember-me tokens record user agent and
client address (schema version 12), and repositories list a user's tokens
and revoke one by owner. Every cn1_* table name can be configured through
cn1.security.table.<name> or cn1.security.table-prefix, validated as a
safe SQL identifier.
Refs #6153 (item 9)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…chema to version 12 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…MDC reset, plist dates, registry codecs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Compared 195 screenshots: 195 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
Cloudflare Preview
|
|
Compared 231 screenshots: 231 matched. |
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 210 screenshots: 210 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows x64Runner CPU: AMD64 Family 25 Model 1 Stepping 1, AuthenticAMD (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 210 screenshots: 210 matched. Benchmark ResultsDetailed Performance Metrics
|
…res never links SecuritySchema Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ ByteCodeTranslator Quality ReportTest & Coverage
Benchmark Results
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 210 screenshots: 210 matched. ParparVM vs HotSpot (JDK 25): Linux x64Runner CPU: AMD EPYC 7763 64-Core Processor (baseline 1 improvement past the baseline (not a failure; rebaseline to lock it in):
Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
A change that moves performance ON PURPOSE records the new baseline in Result: no regression (improved past the baseline: consider rebaselining) |
|
Compared 210 screenshots: 210 matched. ParparVM vs HotSpot (JDK 25): Linux arm64Runner CPU: Neoverse-N2 (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 210 screenshots: 210 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows arm64Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 196 screenshots: 196 matched. Benchmark Results
Detailed Performance Metrics
ParparVM vs HotSpot (JDK 25): macOS arm64Runner CPU: Apple M1 (Virtual) (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
…ames ElementCollection can name its owner column and declare the value column's SQL type, which reaches CREATE TABLE and the schema report. A name wrapped in backticks or double quotes is unwrapped, since the runtime quotes every identifier itself and the quotes otherwise became part of the name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #6153: the backend gaps found while porting BuildCloud.
com.codename1.backend.log--Loggerwith{}placeholders, per-loggerlogging.level.*, a per-threadMDCcleared before each request.backend-packagerelocatesjava.util.regexandString's regex members ontocom.codename1.util.regex.Json.read(String, Class),readList,convertandJson.write(dto), through codecs the build generates for every class literal passed to them (bytecode scan) and installs at startup.@Column(insertable/updatable)and@Lob; newCrudRepositorymethods and default repository methods.produces/consumes(415/406, a wildcardContent-Typeis refused),@CrossOrigin,ResponseStatusException(int).Semaphore,ConcurrentLinkedQueue,Flow,YearMonth,TemporalAdjusters,BigDecimal,InetAddress(literals andlocalhost).ImageInfofor PNG/JPEG/GIF/WebP headers. Binary plists are refused.java.net.http(reflectively, Java 11+ at run time), refuses an HTTP/1.1 answer, and bounds the body by size and time. Streamed exchanges stay HTTP/1.1.{sha256}encoder for legacy recovery codes, remember-me devices (user_agent,ip_address; schema version 12), configurable security table names with indexes named after them.Reviewed adversarially in three rounds; the fixes it produced are in the last three commits.
Not covered: the security schema changes were tested on SQLite only.
🤖 Generated with Claude Code