situation: 
The features of a point layer are symbolized with external graphics. All elements are presented to the user in a table and if he selectes one or more in this table the items shall be highlighted in the map. The SLD specification defines that a graphic either contains a mark or an external graphic, therefore it's not possible to surround the external graphic with a red square or something like that: I need another external grahpic. 
To realize this my features have the featureattribute 'selected' and I generate a bunch of sld rulez: For each category of my items and for {selected;unselected} I generate a rule with a certain external graphic. (The categories define the symbol like windmill or tower) 
 
If the user selects one or more items of the table this happens: 
 
 public void setSelection(List<Integer> selectedItems){ 
  try { 
   FeatureStore fs =   layer.getResource(FeatureStore.class, null); 
   // deselect all: setting the dedictated attribute type to  UNSELECTED (static variable) 
   // this happens since we don't know which of the elements are selected at the moment 
   fs.modifyFeatures(selectionAttributeType, UNSELECTED, Filter.NONE); 
   FilterFactory filterFactory =   FilterFactoryFinder.createFilterFactory(); 
   // set the selected ones 
   for (Integer id:selectedItems){ 
    AttributeExpression     attributeExpression =   filterFactory.createAttributeExpression(IDAttributeName); 
    LiteralExpression literalExpression = filterFactory.createLiteralExpression(id); 
    CompareFilter compareFilter =   filterFactory.createCompareFilter(FilterType.COMPARE_EQUALS); 
    compareFilter.addLeftValue(attributeExpression); 
    compareFilter.addRightValue(literalExpression); 
    // this sets the filtered features to SELECTED 
    fs.modifyFeatures(selectionAttributeType, SELECTED, compareFilter); 
   } 
  } catch (Exception e) { 
    // ... 
  } 
 } 
 
It works... somehow .. but not the way I wanted: 
The renderer starts and on the first modifyFeatures comand (the deselection) all items are rendered. This takes about 14 seconds (on a pentium 4) with just four features in the layer. And only the graphics / symbols are rendered, the labels below the symbols are destroyed and I have to update the layer. 
 
Another way could be to check which features switch >from selected to not selected and just modify these in the first step but with hundreds or more featuers this also takes a while. 
 
Is this approach to be doomed and / or crap? 
 
What is the best way to realize a kind of highlight features in the map with external graphics? 
 
tony roth