@Override protected T doNewComponent(SatisfiedBOM satisfiedBOM) { // in case the system property has been nullified, we return an empty string as value, rather than null // which would break the component building return (T) Objects.firstNonNull(System.getProperty(name.getName()), ""); } };
@Override public Name<T> apply(String input) { return (Name<T>) Name.of(String.class, input); } }));
Collections.sort(lst, new Comparator<Name>() { @Override public int compare(Name n1, Name n2) { // compare the name part int nameCompare = n1.getName().compareTo(n2.getName()); if(nameCompare != 0) return nameCompare; // compare the number part return n1.getSeatnum() - n2.getSeatnum(); } });
private <T> boolean checkActive(Name<T> name) { if (name.getClazz() == String.class && name.getName().startsWith("restx.activation::")) { // can't deactivate activation keys themselves return true; } // check 'cache' for perf reasons - core Factory being immutable the 'cache' never needs to be invalidated if (deactivatedComponents.contains(name)) { return false; } if (activatedComponents.contains(name)) { return true; } // actual check Class<?> aClass = name.getClazz(); while (aClass != null) { if ("false".equals(queryByName(Name.of(String.class, activationKey(aClass, name.getName()))) .findOneAsComponent().or("true"))) { deactivatedComponents.add(name); return false; } aClass = aClass.getSuperclass(); } activatedComponents.add(name); return true; }
@Override public boolean canBuild(Name<?> name) { return name.getClazz() == RestxConfig.class; }
public AlternativesFactoryMachine(int priority, final Name<T> name, final ImmutableMap<T, ? extends FactoryMachine> alternatives, ComponentBox.BoxFactory boxFactory) { super(priority, new StdMachineEngine<FactoryMachine>( Name.of(FactoryMachine.class, name.getName() + "Alternatives"), priority, boxFactory) { private Factory.Query<T> query = Factory.Query.byName(name); @Override protected FactoryMachine doNewComponent(SatisfiedBOM satisfiedBOM) { FactoryMachine factoryMachine = alternatives.get(satisfiedBOM.getOne(query).get().getComponent()); if (factoryMachine != null) { return factoryMachine; } else { return NoopFactoryMachine.INSTANCE; } } @Override public BillOfMaterials getBillOfMaterial() { return BillOfMaterials.of(query); } }); } }
@Override public void handle(RestxRequestMatch match, RestxRequest req, RestxResponse resp, RestxContext ctx) throws IOException { securityManager.check(req, match, permissionFactory.hasRole(AdminModule.RESTX_ADMIN_ROLE)); resp.setContentType("application/json"); List<String> nodesCode = Lists.newArrayList(); List<String> linksCode = Lists.newArrayList(); for (Name<?> name : warehouse.listNames()) { nodesCode.add(String.format("{ \"id\": \"%s\", \"name\": \"%s\", \"type\": \"%s\" }", name.asId(), name.getSimpleName(), getType(name))); Iterable<Name<?>> deps = warehouse.listDependencies(name); for (Name<?> dep : deps) { linksCode.add(String.format("{ \"origin\": \"%s\", \"target\": \"%s\" }", name.asId(), dep.asId())); } } PrintWriter writer = resp.getWriter(); writer.println("{"); writer.println("\"nodes\": ["); Joiner.on(",\n").appendTo(writer, nodesCode); writer.println("\n],"); writer.println("\"links\": ["); Joiner.on(",\n").appendTo(writer, linksCode); writer.println("\n]"); writer.println("}"); }
private static int compareByPriorityAndName(int p1, Name<?> n1, int p2, Name<?> n2) { int priorityComparison = Integer.compare(p1, p2); if (priorityComparison == 0) { return n1.asId().compareTo(n2.asId()); } else { return priorityComparison; } } private static final AtomicLong ID = new AtomicLong();
private <T> Optional<NamedComponent<T>> buildAndStore(Name<T> name, MachineEngine<T> engine, SatisfiedBOM satisfiedBOM) { logger.debug("{} - building {} with {} / {}", id, name, engine, satisfiedBOM); Timer timer = metrics.timer("<BUILD> " + name.getSimpleName()); Monitor monitor = timer.time(); ComponentBox<T> box; monitor = metrics.timer("<CUSTOMIZE> " + name.getSimpleName() + " <WITH> " + customizer.getClass().getSimpleName()).time(); try {
public static <T> Name<T> of(Class<T> clazz, String name) { return new Name<>(clazz, name); }
@Override public boolean canBuild(Name<?> name) { return JongoCollection.class == name.getClazz(); }
Collections.sort(lst, new Comparator<Name>() { @Override public int compare(Name n1, Name n2) { // check for null Name if(n1 == null && n2 == null) return 0; else if(n1 == null) return -1; else if(n2 == null) return 1; // check for null in nx.getName() if(n1.getName() == null && n2.getName() == null) return 0; else if(n1.getName() == null) return -1; else if(n2.getName() == null) return 1; // compare the name part int nameCompare = n1.getName().compareTo(n2.getName()); if(nameCompare != 0) return nameCompare; // compare the number part return n1.getSeatnum() - n2.getSeatnum(); } });
public static <T> Name<T> of(Class<T> clazz) { return new Name<>(clazz, clazz.getSimpleName()); }
public static List<String> toNameStrings(List<Name> names) { List<String> list = new ArrayList<String>(names.size()); for (Name name : names) { list.add(name.getName()); } return list; }
@Override @SuppressWarnings("unchecked") public <T> Set<Name<T>> nameBuildableComponents(Class<T> componentClass) { if (componentClass == RestxConfig.class) { return Collections.singleton(Name.of((Class<T>) RestxConfig.class)); } else { return Collections.emptySet(); } }
@Override public <T> boolean canCustomize(Name<T> name) { return name.getClazz() == aClass; }