@Override @SuppressWarnings("unchecked") public void register(final T item) { if (item instanceof DefinitionFactory) { definitionFactories.add((DefinitionFactory<?>) item); } else if (item instanceof ElementFactory) { graphFactories.put(((ElementFactory) item).getFactoryType(), (ElementFactory<?, ?, ?>) item); } else if (item instanceof DiagramFactory) { diagramFactories.add((DiagramFactory<?, ?>) item); } }
@SuppressWarnings("unchecked") private <C extends DefinitionSet> Element<C> doBuildGraph(final String uuid, final String defSetId, final Object defSet, final Metadata metadata) { final Class<? extends ElementFactory> factoryType = definitionManager.adapters().forDefinitionSet().getGraphFactoryType(defSet); final ElementFactory<String, DefinitionSet, Element<DefinitionSet>> factory = factoryRegistry.getElementFactory(factoryType); return (Element<C>) factory.build(uuid, defSetId, metadata); } }
@SuppressWarnings("unchecked") private <T, C extends Definition<T>> Element<C> doBuildElement(final String uuid, final String definitionId) { final T definition = newDefinition(definitionId); final Class<? extends ElementFactory> factoryType = definitionManager.adapters().forDefinition().getGraphFactoryType(definition); final ElementFactory<T, C, Element<C>> factory = factoryRegistry.getElementFactory(factoryType); return factory.build(uuid, definition); }
@Override public boolean remove(final T item) { if (item instanceof DefinitionFactory) { return definitionFactories.remove(item); } else if (item instanceof ElementFactory) { return null != graphFactories.remove(((ElementFactory) item).getFactoryType()); } else if (item instanceof DiagramFactory) { return diagramFactories.remove(item); } return false; }