Skip to content

Commit

Permalink
Simplify Maven mojos after the upgrade to Camel 3.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ppalaga committed May 15, 2020
1 parent 2e8074b commit c658f7e
Show file tree
Hide file tree
Showing 8 changed files with 180 additions and 320 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,16 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.camel.catalog.CamelCatalog;
import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.catalog.DefaultVersionManager;
import org.apache.camel.catalog.Kind;
import org.apache.camel.catalog.RuntimeProvider;
import org.apache.camel.catalog.impl.CatalogHelper;
import org.apache.camel.tooling.model.ArtifactModel;
import org.apache.camel.tooling.model.BaseModel;
import org.apache.camel.tooling.model.ComponentModel;

public class CqCatalog {
Expand Down Expand Up @@ -76,208 +73,39 @@ public List<String> toCamelArtifactIdBase(String cqArtifactIdBase) {
}
}

public List<WrappedModel> filterModels(String artifactIdBase) {
public List<ArtifactModel<?>> filterModels(String artifactIdBase) {
List<String> camelArtifactIds = toCamelArtifactIdBase(artifactIdBase);
return Stream.of(Kind.values())
.flatMap(kind -> kind.all(this))
.filter(wrappedModel -> camelArtifactIds.contains(wrappedModel.delegate.getArtifactId()))
return models()
.filter(model -> camelArtifactIds.contains(model.getArtifactId()))
.collect(Collectors.toList());
}

enum Kind {
component() {
@Override
public Optional<WrappedModel> load(CqCatalog catalog, String name) {
final ArtifactModel<?> delegate = catalog.catalog.componentModel(name);
return Optional.ofNullable(delegate == null ? null : new WrappedModel(catalog, this, delegate));
}

@Override
protected Stream<WrappedModel> all(CqCatalog catalog) {
return catalog.catalog.findComponentNames().stream()
.map(name -> new WrappedModel(catalog, this, catalog.catalog.componentModel(name)));
}

@Override
protected String getJson(CqCatalog catalog, BaseModel<?> delegate) {
return catalog.catalog.componentJSonSchema(delegate.getName());
}
},
language() {
@Override
public Optional<WrappedModel> load(CqCatalog catalog, String name) {
final ArtifactModel<?> delegate = catalog.catalog.languageModel(name);
return Optional.ofNullable(delegate == null ? null : new WrappedModel(catalog, this, delegate));
}

@Override
protected Stream<WrappedModel> all(CqCatalog catalog) {
return catalog.catalog.findLanguageNames().stream()
.map(name -> new WrappedModel(catalog, this, catalog.catalog.languageModel(name)));
}

@Override
protected String getJson(CqCatalog catalog, BaseModel<?> delegate) {
return catalog.catalog.languageJSonSchema(delegate.getName());
}
},
dataformat() {
@Override
public Optional<WrappedModel> load(CqCatalog catalog, String name) {
final ArtifactModel<?> delegate = catalog.catalog.dataFormatModel(name);
return Optional.ofNullable(delegate == null ? null : new WrappedModel(catalog, this, delegate));
}

@Override
protected Stream<WrappedModel> all(CqCatalog catalog) {
return catalog.catalog.findDataFormatNames().stream()
.map(name -> new WrappedModel(catalog, this, catalog.catalog.dataFormatModel(name)));
}

@Override
protected String getJson(CqCatalog catalog, BaseModel<?> delegate) {
return catalog.catalog.dataFormatJSonSchema(delegate.getName());
}
},
other() {
@Override
public Optional<WrappedModel> load(CqCatalog catalog, String name) {
final ArtifactModel<?> delegate = catalog.catalog.otherModel(name);
return Optional.ofNullable(delegate == null ? null : new WrappedModel(catalog, this, delegate));
}

@Override
protected Stream<WrappedModel> all(CqCatalog catalog) {
return catalog.catalog.findOtherNames().stream()
.map(name -> new WrappedModel(catalog, this, catalog.catalog.otherModel(name)));
}

@Override
protected String getJson(CqCatalog catalog, BaseModel<?> delegate) {
return catalog.catalog.otherJSonSchema(delegate.getName());
}
};

public abstract Optional<WrappedModel> load(CqCatalog catalog, String name);

protected abstract Stream<WrappedModel> all(CqCatalog catalog);

protected abstract String getJson(CqCatalog catalog, BaseModel<?> delegate);

public String getPluralName() {
return name() + "s";
}
public Stream<ArtifactModel<?>> models() {
return kinds()
.flatMap(kind -> models(kind));
}

public static class WrappedModel implements Comparable<WrappedModel> {
final ArtifactModel<?> delegate;
final Kind kind;
final CqCatalog catalog;
final String supportLevel;
final String target;

public WrappedModel(CqCatalog catalog, Kind kind, ArtifactModel<?> delegate) {
super();
this.catalog = catalog;
this.kind = kind;
this.delegate = delegate;
final JsonObject json = getJson().getAsJsonObject(kind.name());
String sl = null;
try {
sl = json.get("supportLevel").getAsString();
} catch (Exception ignored) {
}
this.supportLevel = sl;
String t = null;
try {
t = json.get("compilationTarget").getAsString();
} catch (Exception ignored) {
}
this.target = t;
}

public String getArtifactId() {
return delegate.getArtifactId();
}

public String getArtifactIdBase() {
final String artifactId = delegate.getArtifactId();
if (artifactId.startsWith("camel-quarkus-")) {
return artifactId.substring("camel-quarkus-".length());
} else if (artifactId.startsWith("camel-")) {
return artifactId.substring("camel-".length());
}
throw new IllegalStateException(
"Unexpected artifactId " + artifactId + "; expected one starting with camel-quarkus- or camel-");
}
public Stream<ArtifactModel<?>> models(org.apache.camel.catalog.Kind kind) {
return catalog.findNames(kind).stream().map(name -> (ArtifactModel<?>) catalog.model(kind, name));
}

public String getKind() {
return kind.name();
}
public static Stream<Kind> kinds() {
return Stream.of(Kind.values())
.filter(kind -> kind != org.apache.camel.catalog.Kind.eip);
}

public boolean isFirstScheme() {
switch (kind) {
case component:
final String altSchemes = ((ComponentModel) delegate).getAlternativeSchemes();
if (altSchemes == null || altSchemes.isEmpty()) {
return true;
} else {
final String scheme = delegate.getName();
return altSchemes.equals(scheme) || altSchemes.startsWith(scheme + ",");
}
default:
public static boolean isFirstScheme(ArtifactModel<?> model) {
if (model.getKind().equals("component")) {
final String altSchemes = ((ComponentModel) model).getAlternativeSchemes();
if (altSchemes == null || altSchemes.isEmpty()) {
return true;
} else {
final String scheme = model.getName();
return altSchemes.equals(scheme) || altSchemes.startsWith(scheme + ",");
}
} else {
return true;
}

public String getSyntax() {
switch (kind) {
case component:
return ((ComponentModel) delegate).getSyntax();
default:
throw new UnsupportedOperationException(kind.getPluralName() + " do not have syntax");
}
}

public String getFirstVersion() {
return delegate.getFirstVersion();
}

public String getTitle() {
return delegate.getTitle();
}

public String getDescription() {
return delegate.getDescription();
}

public boolean isDeprecated() {
return delegate.isDeprecated();
}

public JsonObject getJson() {
final JsonParser jsonParser = new JsonParser();
return (JsonObject) jsonParser.parse(kind.getJson(catalog, delegate));
}

@Override
public String toString() {
return "WrappedModel [scheme=" + delegate.getName() + ", kind=" + getKind() + "]";
}

@Override
public int compareTo(WrappedModel other) {
return this.getTitle().compareToIgnoreCase(other.getTitle());
}

public String getSupportLevel() {
return supportLevel;
}

public String getTarget() {
return target;
}

}

static class CqVersionManager extends DefaultVersionManager {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.TemplateExceptionHandler;
import org.apache.camel.tooling.model.ArtifactModel;
import org.apache.maven.model.Model;

public class CqUtils {
Expand Down Expand Up @@ -94,4 +95,15 @@ static String getVersion(Model basePom) {
: null;
}

public static String getArtifactIdBase(ArtifactModel<?> model) {
final String artifactId = model.getArtifactId();
if (artifactId.startsWith("camel-quarkus-")) {
return artifactId.substring("camel-quarkus-".length());
} else if (artifactId.startsWith("camel-")) {
return artifactId.substring("camel-".length());
}
throw new IllegalStateException(
"Unexpected artifactId " + artifactId + "; expected one starting with camel-quarkus- or camel-");
}

}

0 comments on commit c658f7e

Please sign in to comment.