Compare commits
No commits in common. "869bef51ddf4516539201f75641e4c829fc27bf0" and "3202e51d7fb4ba743f569b1f149aee782c49c304" have entirely different histories.
869bef51dd
...
3202e51d7f
@ -1,9 +0,0 @@
|
|||||||
# Groowt (Groovy Web Tools/Templates)
|
|
||||||
|
|
||||||
## Project Version-Bumping
|
|
||||||
|
|
||||||
Update the version property in `buildSrc/src/main/groovy/groowt/gradle/groowt-conventions.gradle`.
|
|
||||||
|
|
||||||
## Dependency Versions
|
|
||||||
|
|
||||||
All dependencies and their version refs should be declared in `gradle/libs.versions.toml`.
|
|
@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = 'groowt'
|
group = 'groowt'
|
||||||
version = '0.1.4'
|
version = '0.1.3'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -3,35 +3,30 @@
|
|||||||
|
|
||||||
[versions]
|
[versions]
|
||||||
antlr = '4.13.2'
|
antlr = '4.13.2'
|
||||||
asm = '9.8'
|
groovy = '4.0.25'
|
||||||
groovy = '4.0.27'
|
junit = '5.11.4'
|
||||||
jakarta-inject = '2.0.1'
|
|
||||||
jansi = '2.4.2'
|
|
||||||
jbarchiva = '0.2.2'
|
|
||||||
jetbrains-annotations = '26.0.2'
|
|
||||||
junit = '5.13.0'
|
|
||||||
kotlin = '1.9.25'
|
kotlin = '1.9.25'
|
||||||
log4j = '2.24.3'
|
log4j = '2.24.3'
|
||||||
mockito = '5.18.0'
|
mockito = '5.15.2'
|
||||||
picocli = '4.7.7'
|
slf4j = '2.0.16'
|
||||||
slf4j = '2.0.17'
|
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
antlr = { module = 'org.antlr:antlr4', version.ref = 'antlr' }
|
antlr = { module = 'org.antlr:antlr4', version.ref = 'antlr' }
|
||||||
antlr-runtime = { module = 'org.antlr:antlr4-runtime', version.ref = 'antlr' }
|
antlr-runtime = { module = 'org.antlr:antlr4-runtime', version.ref = 'antlr' }
|
||||||
asm = { module = 'org.ow2.asm:asm', version.ref = 'asm' }
|
asm = 'org.ow2.asm:asm:9.7.1'
|
||||||
|
gradle-tooling = 'org.gradle:gradle-tooling-api:8.12.1'
|
||||||
groovy = { module = 'org.apache.groovy:groovy', version.ref = 'groovy' }
|
groovy = { module = 'org.apache.groovy:groovy', version.ref = 'groovy' }
|
||||||
groovy-console = { module = 'org.apache.groovy:groovy-console', version.ref = 'groovy' }
|
groovy-console = { module = 'org.apache.groovy:groovy-console', version.ref = 'groovy' }
|
||||||
groovy-templates = { module = 'org.apache.groovy:groovy-templates', version.ref = 'groovy' }
|
groovy-templates = { module = 'org.apache.groovy:groovy-templates', version.ref = 'groovy' }
|
||||||
jakarta-inject = { module = 'jakarta.inject:jakarta.inject-api', version.ref = 'jakarta-inject' }
|
jakarta-inject = 'jakarta.inject:jakarta.inject-api:2.0.1'
|
||||||
jansi = { module = 'org.fusesource.jansi:jansi', version.ref = 'jansi' }
|
jansi = 'org.fusesource.jansi:jansi:2.4.1'
|
||||||
jbarchiva = { module = 'com.jessebrault.jbarchiva:jbarchiva', version.ref = 'jbarchiva' }
|
jbarchiva = 'com.jessebrault.jbarchiva:jbarchiva:0.2.2'
|
||||||
jetbrains-anotations = { module = 'org.jetbrains:annotations', version.ref = 'jetbrains-annotations' }
|
jetbrains-anotations = 'org.jetbrains:annotations:26.0.2'
|
||||||
junit-jupiter-api = { module = 'org.junit.jupiter:junit-jupiter-api', version.ref = 'junit' }
|
junit-jupiter-api = { module = 'org.junit.jupiter:junit-jupiter-api', version.ref = 'junit' }
|
||||||
kotlin-stdlib = { module = 'org.jetbrains.kotlin:kotlin-stdlib', version.ref = 'kotlin' }
|
kotlin-stdlib = { module = 'org.jetbrains.kotlin:kotlin-stdlib', version.ref = 'kotlin' }
|
||||||
log4j-core = { module = 'org.apache.logging.log4j:log4j-core', version.ref = 'log4j' }
|
log4j-core = { module = 'org.apache.logging.log4j:log4j-core', version.ref = 'log4j' }
|
||||||
log4j-slf4jBinding = { module = 'org.apache.logging.log4j:log4j-slf4j2-impl', version.ref = 'log4j' }
|
log4j-slf4jBinding = { module = 'org.apache.logging.log4j:log4j-slf4j2-impl', version.ref = 'log4j' }
|
||||||
mockito-core = { module = 'org.mockito:mockito-core', version.ref = 'mockito' }
|
mockito-core = { module = 'org.mockito:mockito-core', version.ref = 'mockito' }
|
||||||
mockito-junit = { module = 'org.mockito:mockito-junit-jupiter', version.ref = 'mockito' }
|
mockito-junit = { module = 'org.mockito:mockito-junit-jupiter', version.ref = 'mockito' }
|
||||||
picocli = { module = 'info.picocli:picocli', version.ref = 'picocli' }
|
picocli = 'info.picocli:picocli:4.7.6'
|
||||||
slf4j-api = { module = 'org.slf4j:slf4j-api', version.ref = 'slf4j' }
|
slf4j-api = { module = 'org.slf4j:slf4j-api', version.ref = 'slf4j' }
|
||||||
|
@ -97,7 +97,8 @@ public class DefaultComponentContext implements ComponentContext {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ViewComponent> getAllAncestors() {
|
public List<ViewComponent> getAllAncestors() {
|
||||||
return this.renderContext.getComponentStack();
|
final List<ViewComponent> componentStack = this.getRenderContext().getComponentStack();
|
||||||
|
return componentStack.subList(1, componentStack.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,34 +1,26 @@
|
|||||||
package groowt.view.component.web.lib
|
package groowt.view.component.web.lib
|
||||||
|
|
||||||
import groowt.view.View
|
import groowt.view.View
|
||||||
import groowt.view.component.runtime.DefaultComponentWriter
|
|
||||||
|
|
||||||
class Render extends DelegatingWebViewComponent {
|
class Render extends DelegatingWebViewComponent {
|
||||||
|
|
||||||
private final Object items
|
private final Object item
|
||||||
|
|
||||||
Render(Map attr) {
|
Render(Map attr) {
|
||||||
if (attr.item && attr.items) {
|
item = Objects.requireNonNull(attr.item, "<Render> attribute 'item' must not be null.")
|
||||||
throw new IllegalArgumentException("<Render> cannot have both 'item' and 'items' attributes.")
|
|
||||||
}
|
|
||||||
this.items = attr.item ? [attr.item] : attr.items ?: []
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected View getDelegate() {
|
protected View getDelegate() {
|
||||||
return { Writer w ->
|
return { Writer w ->
|
||||||
items.each {
|
if (item.respondsTo('renderTo', [Writer] as Class[])) {
|
||||||
if (it instanceof Closure) {
|
item.renderTo(w)
|
||||||
it = it()
|
} else if (item.respondsTo('render')) {
|
||||||
}
|
w << item.render()
|
||||||
if (it.respondsTo('renderTo', [Writer] as Class[])) {
|
} else {
|
||||||
it.renderTo(w)
|
throw new IllegalArgumentException(
|
||||||
} else if (it.respondsTo('render')) {
|
'<Render> must use an item which responds to either renderTo(Writer) or render().'
|
||||||
w << it.render()
|
)
|
||||||
} else {
|
|
||||||
def cw = new DefaultComponentWriter(w, context.renderContext, context)
|
|
||||||
cw << it
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package groowt.view.component.web.lib
|
package groowt.view.component.web.lib
|
||||||
|
|
||||||
|
|
||||||
import groowt.view.component.web.WebViewComponentContext
|
import groowt.view.component.web.WebViewComponentContext
|
||||||
import groowt.view.component.web.WebViewComponentScope
|
import groowt.view.component.web.WebViewComponentScope
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package groowt.view.component.web.lib
|
package groowt.view.component.web.lib
|
||||||
|
|
||||||
|
|
||||||
import groowt.view.component.web.BaseWebViewComponent
|
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
class RenderTests extends AbstractWebViewComponentTests {
|
class RenderTests extends AbstractWebViewComponentTests {
|
||||||
@ -22,14 +20,6 @@ class RenderTests extends AbstractWebViewComponentTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static final class Hello extends BaseWebViewComponent {
|
|
||||||
|
|
||||||
Hello() {
|
|
||||||
super('Hello, World!')
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void renderToExample() {
|
void renderToExample() {
|
||||||
doTest('''
|
doTest('''
|
||||||
@ -54,18 +44,4 @@ class RenderTests extends AbstractWebViewComponentTests {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void rendersComponent() {
|
|
||||||
doTest('<Render item={<RenderTests.Hello />} />', 'Hello, World!', context {
|
|
||||||
configureRootScope {
|
|
||||||
addWithNoArgConstructor(Hello)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void rendersItems() {
|
|
||||||
doTest('<Render items={[0, 1, 2]} />', '012')
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user