In order to avoid creation of unused attribute maps in the cell views, and to avoid or change the retrieval and cloning of the cell's attributes in the CellView.refresh, the AbstractCellView provides two hooks: createAttributeMap is called at construction time to create the allAttributes and attributes (same instance until the first refresh call) and getCellAttributes is called from refresh to retrieve and clone the cell attributes from the model.
These hooks may be used to reduce the memory footprint for large graphs. Please have a look at the FastGraph example.
The default values for points and the label position in edges is not required to be ensured in the DefaultEdge (ie on cell-level). Rather, the EdgeView's update method should check whether these values exist, and create them on the fly if they are missing. (In analogy to the bounds-check in VertexView.) Thanks to this, it is no longer required to change the attributes of a cell via the cell instance using changeAttributes, the attributes can be changed directly using the following code (where change is a Map and cell is an Object):
AttributeMap undo = graph.getModel().getAttributes(cell).applyMap(change);