xapi.elemental.impl.LazyHtmlConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
Everything needed to run a comprehensive dev environment.
Just type X_ and pick a service from autocomplete;
new dev modules will be added as they are built.
The only dev service not included in the uber jar is xapi-dev-maven,
as it includes all runtime dependencies of maven, adding ~4 seconds to build time,
and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).
The newest version!
package xapi.elemental.impl;
import javax.inject.Provider;
import xapi.ui.api.StyleService;
import xapi.util.api.ConvertsValue;
import xapi.util.api.MergesValues;
import elemental.dom.Element;
public class LazyHtmlConverter , E extends Element>
implements MergesValues {
protected final LazyHtmlClone cloner;
private final MergesValues converter;
public LazyHtmlConverter(ConvertsValue serializer) {
class Merger implements MergesValues {
private T item;
private final LazyHtmlClone cloner = new LazyHtmlClone(
new Provider() {
@Override
public String get() {
return serializer.convert(item);
}
}
);
@Override
public E merge(T from, S service) {
item = from;
try {
return cloner.get();
} finally {
item = null;
}
}
};
Merger merger = new Merger();
converter = merger;
cloner = merger.cloner;
}
public LazyHtmlConverter(final MergesValues serializer) {
class Merger implements MergesValues {
private T item;
private S service;
private final LazyHtmlClone cloner = new LazyHtmlClone(
new Provider() {
@Override
public String get() {
return serializer.merge(item, service);
}
}
);
@Override
public E merge(T from, S service) {
this.service = service;
item = from;
try {
return cloner.get();
} finally {
item = null;
service = null;
}
}
};
Merger merger = new Merger();
converter = merger;
cloner = merger.cloner;
}
public LazyHtmlConverter(final MergesValues serializer, final S service) {
class Merger implements MergesValues {
private T item;
private final LazyHtmlClone cloner = new LazyHtmlClone(
new Provider() {
@Override
public String get() {
return serializer.merge(item, service);
}
}
);
@Override
public E merge(T from, S service) {
item = from;
try {
return cloner.get();
} finally {
item = null;
}
}
};
Merger merger = new Merger();
converter = merger;
cloner = merger.cloner;
}
@Override
public E merge(T from, S service) {
return converter.merge(from, service);
}
public LazyHtmlConverter setInitializer(ConvertsValue initializer) {
cloner.setInitializer(initializer);
return this;
}
}