All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.fabric8.kubernetes.api.builder.BaseFluent Maven / Gradle / Ivy

package io.fabric8.kubernetes.api.builder;

import java.util.LinkedHashSet;
import java.util.stream.Collectors;
import java.util.Set;
import java.util.ArrayList;
import java.lang.String;
import java.util.Objects;
import java.lang.Class;
import java.util.List;
import java.lang.Boolean;
import java.util.Arrays;
public class BaseFluent> implements io.fabric8.kubernetes.api.builder.Fluent,io.fabric8.kubernetes.api.builder.Visitable{
  public static final java.lang.String VISIT = "visit";
  public final io.fabric8.kubernetes.api.builder.VisitableMap _visitables = new VisitableMap();
  public static io.fabric8.kubernetes.api.builder.VisitableBuilder builderOf(T item) {
    if (item instanceof Editable) { 
  Object editor = ((Editable) item).edit(); 
  if (editor instanceof VisitableBuilder) { 
    return (VisitableBuilder) editor; 
  } 
} 
try { 
  return (VisitableBuilder) Class.forName(item.getClass().getName() + "Builder").getConstructor(item.getClass()) 
      .newInstance(item); 
} catch (Exception e) { 
  throw new IllegalStateException("Failed to create builder for: " + item.getClass(), e); 
} 

  }
  public static java.util.ArrayList build(java.util.List> list) {
    return list == null ? null : new ArrayList(list.stream().map(Builder::build).collect(Collectors.toList()));
  }
  public static java.util.ArrayList build(java.util.Set> set) {
    return set == null ? null : new ArrayList<>(set.stream().map(Builder::build).collect(Collectors.toList()));
  }
  public static java.util.ArrayList aggregate(java.util.List... lists) {
    return new ArrayList(Arrays.stream(lists).filter(Objects::nonNull).collect(Collectors.toList()));
  }
  public static java.util.LinkedHashSet aggregate(java.util.Set[] sets) {
    return new LinkedHashSet(Arrays.stream(sets).filter(Objects::nonNull).collect(Collectors.toSet()));
  }
  public static ,F>java.lang.Boolean canVisit(V visitor,F fluent) {
    if (visitor instanceof TypedVisitor) { 
  if (!((TypedVisitor) visitor).getType().isAssignableFrom(fluent.getClass())) { 
    return false; 
  } 
} 
if (visitor instanceof PathAwareTypedVisitor) { 
  PathAwareTypedVisitor pathAwareTypedVisitor = (PathAwareTypedVisitor) visitor; 
  Class parentType = pathAwareTypedVisitor.getParentType(); 
  Class actaulParentType = pathAwareTypedVisitor.getActualParentType(); 
  if (!parentType.isAssignableFrom(actaulParentType)) { 
    return false; 
  } 
} 
return hasCompatibleVisitMethod(visitor, fluent); 

  }
  public static java.lang.Boolean hasCompatibleVisitMethod(V visitor,F fluent) {
    for (java.lang.reflect.Method method : visitor.getClass().getMethods()) {
  if (!method.getName().equals(VISIT) || method.getParameterTypes().length != 1) {
    continue;
  }
  Class visitorType = method.getParameterTypes()[0];
  if (visitorType.isAssignableFrom(fluent.getClass())) {
    return true;
  } else {
    return false;
  }
}
return false;
  }
  public F accept(io.fabric8.kubernetes.api.builder.Visitor... visitors) {
    return isPathAwareVisitorArray(visitors) ? acceptPathAware(asPathAwareVisitorArray(visitors)) : acceptInternal(visitors);
  }
  public F accept(java.lang.Class type,io.fabric8.kubernetes.api.builder.Visitor visitor) {
    return accept(new TypedVisitor() {
  @Override
  public Class getType() {
    return type;
  }
  @Override
  public void visit(V element) {
    visitor.visit(element);
  }
});
  }
  public F acceptInternal(io.fabric8.kubernetes.api.builder.Visitor... visitors) {
    for (Visitor visitor : visitors) {
  for (Visitable visitable : _visitables) {
    visitable.accept(visitor);
  }

  if (canVisit(visitor, this)) {
    visitor.visit(this);
  }
}
return (F) this;
  }
  private F acceptPathAware(io.fabric8.kubernetes.api.builder.PathAwareTypedVisitor... pathAwareTypedVisitors) {
    return acceptInternal(Arrays.stream(pathAwareTypedVisitors).map(p -> p.next(this)).toArray(size -> new PathAwareTypedVisitor[size]));
  }
  private static boolean isPathAwareVisitorArray(io.fabric8.kubernetes.api.builder.Visitor[] visitors) {
    return !Arrays.stream(visitors).filter(v -> !(v instanceof PathAwareTypedVisitor)).findAny().isPresent();
  }
  private static io.fabric8.kubernetes.api.builder.PathAwareTypedVisitor[] asPathAwareVisitorArray(io.fabric8.kubernetes.api.builder.Visitor[] visitors) {
    return Arrays.stream(visitors).filter(v -> v instanceof PathAwareTypedVisitor).map(v -> (PathAwareTypedVisitor) v).toArray(size -> new PathAwareTypedVisitor[size]);
  }
  
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy