Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support different types with identical simple names #150

Closed
BlueIce opened this issue Apr 7, 2018 · 2 comments
Closed

Support different types with identical simple names #150

BlueIce opened this issue Apr 7, 2018 · 2 comments
Assignees
Labels

Comments

@BlueIce
Copy link

BlueIce commented Apr 7, 2018

If a Pojo contains two fields with different types but with identical simple names the generated builder does not compile. Example Pojo to reproduce:

import net.karneim.pojobuilder.GeneratePojoBuilder;

@GeneratePojoBuilder
public class PojoSameSimpleName {

	private java.util.Date utilDate;
	private java.sql.Date sqlDate;

	public java.util.Date getUtilDate() {
		return utilDate;
	}

	public void setUtilDate(java.util.Date utilDate) {
		this.utilDate = utilDate;
	}

	public java.sql.Date getSqlDate() {
		return sqlDate;
	}

	public void setSqlDate(java.sql.Date sqlDate) {
		this.sqlDate = sqlDate;
	}

}

Generated builder:

import java.sql.Date;
import java.util.Date;
import javax.annotation.Generated;
import net.karneim.pojobuilder.GwtIncompatible;

@Generated("PojoBuilder")
public class PojoSameSimpleNameBuilder
    implements Cloneable {
  protected PojoSameSimpleNameBuilder self;
  protected Date value$utilDate$java$util$Date;
  protected boolean isSet$utilDate$java$util$Date;
  protected Date value$sqlDate$java$sql$Date;
  protected boolean isSet$sqlDate$java$sql$Date;

  /**
   * Creates a new {@link PojoSameSimpleNameBuilder}.
   */
  public PojoSameSimpleNameBuilder() {
    self = (PojoSameSimpleNameBuilder)this;
  }

  /**
   * Sets the default value for the {@link PojoSameSimpleName#utilDate} property.
   *
   * @param value the default value
   * @return this builder
   */
  public PojoSameSimpleNameBuilder withUtilDate(Date value) {
    this.value$utilDate$java$util$Date = value;
    this.isSet$utilDate$java$util$Date = true;
    return self;
  }

  /**
   * Sets the default value for the {@link PojoSameSimpleName#sqlDate} property.
   *
   * @param value the default value
   * @return this builder
   */
  public PojoSameSimpleNameBuilder withSqlDate(Date value) {
    this.value$sqlDate$java$sql$Date = value;
    this.isSet$sqlDate$java$sql$Date = true;
    return self;
  }

  // ...
}

The compiler complains about the import statements:

The import java.util.Date collides with another import statement

It would be nice if pojobuilder would support such Pojos.

Probably full qualified type names have to be used throughout the builder (for at least those duplicate types).

@mkarneim
Copy link
Owner

mkarneim commented Apr 9, 2018

Thank you very much for this bug report!

I'll release a bugfix version during the next days.

@mkarneim mkarneim self-assigned this Apr 9, 2018
@mkarneim mkarneim added the Bug label Apr 9, 2018
@BlueIce
Copy link
Author

BlueIce commented Apr 14, 2018

The new version is working nicely, thank you very much. 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants