private void updateDependencies() { // better algorithm possible? for ( ResourceNode<? extends Resource> node : nodeMap.values() ) { node.getDependencies().clear(); node.getDependents().clear(); } for ( ResourceNode<? extends Resource> node : nodeMap.values() ) { ResourceMetadata<? extends Resource> md = node.getMetadata(); for ( ResourceIdentifier<? extends Resource> id : md.getDependencies() ) { ResourceNode<? extends Resource> depNode = nodeMap.get( id ); if ( depNode != null ) { node.addDependency( depNode ); depNode.addDependent( node ); } } for ( ResourceIdentifier<? extends Resource> id : md.getSoftDependencies() ) { ResourceNode<? extends Resource> depNode = nodeMap.get( id ); if ( depNode != null ) { node.addSoftDependency( depNode ); depNode.addDependent( node ); } } } }