vlingo / xoom-schemata

The VLINGO XOOM Schema Registry.
https://vlingo.io
Mozilla Public License 2.0
17 stars 9 forks source link

Using a basic type w/ no default along w/ computed types & basic types with defaults lead to invalid code being generated #144

Open wwerner opened 4 years ago

wwerner commented 4 years ago

Example:

event SchemaDefined {
    type eventType
    timestamp occurredOn
    version eventVersion

    string foo
    string[] bar = {"baz","qux","quux"}

    int i = 4242
}

Resulting code:

package io.vlingo.examples.schemata.event;

import io.vlingo.lattice.model.DomainEvent;
import java.lang.String;

public final class SchemaDefined extends DomainEvent {
  public final String eventType;

  public final long occurredOn;

  public final int eventVersion;

  public final String foo;

  public String[] bar = new java.lang.String[] { "baz", "qux", "quux" };

  public int i = 4242;

  public SchemaDefined(final String foo, final String[] bar, final int i) {
    this.eventType = "SchemaDefined";
    this.occurredOn = System.currentTimeMillis();
    this.eventVersion = io.vlingo.common.version.SemanticVersion.toValue("0.0.1");
    this.foo = foo; 
    this.bar = bar; 
    this.i = i; }

  public SchemaDefined() {
    this.eventType = "SchemaDefined";
    this.occurredOn = System.currentTimeMillis();
    this.eventVersion = io.vlingo.common.version.SemanticVersion.toValue("0.0.1");}
}

Compilation error:

...event/SchemaDefined.java:[30,83] variable foo might not have been initialized
VaughnVernon commented 4 years ago

@wwerner Both variables must be final. You should assign the defaults in the zero-arg ctor, not in the variable decl.