List Info

Thread: svn commit: r479562 - /xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SVGGraphicsElement.j




svn commit: r479562 - /xmlgraphics/batik/trunk/sources/org/apa che/batik/dom/svg/SVGGraphicsElement.j
user name
2006-11-28 13:23:18
Hi Dieter,

"Dieter von Holten" <infodvholten.de> wrote on
11/28/2006 07:02:52 AM:

> no, the map-thing is correct. The map shall replace the
lengthy if-else 
if -
> statement in the getAttributeType-methods. The map only
returns the same
> mappings as the if-statement.
> Anything not in the map is handled by the last
statement in the method:
> super.getAttributeType().
> So the map is local only for this ( each ) class.
Sub-classes would have
> their own maps.

   Right, I wasn't implying that your code would produce
errors.
I was simply pointing out that simply extending the single
static 
map for each subclass would lead to the need to do at least
three
in some cases more lookups into a hash table, which is a bit
of
a waste if it can be done with just one lookup.

> All these lookup maps are read-only and fixed after
creation.

   I was also wondering if we wouldn't want a
"simple" extension
mechanism.

> However, cameron send me a message, that he is going to
do a major 
rework in
> that package,
> so any further work on the map-thing (to add these to
the other classes)
> might be obsolete soon.

   Ok, so the point may be moot.

> ----- Original Message -----
> From: <thomas.deweesekodak.com>
> To: <batik-devxmlgraphics.apache.org>
> Cc: <batik-commitsxmlgraphics.apache.org>
> Sent: Tuesday, November 28, 2006 12:10 PM
> Subject: Re: svn commit: r479562 -
> 
/xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg/SV
GGraphicsElement
> .java
> 
> 
> > Hi Dieter
> >
> >     I'm a little nervous about the map being
static.  The direction 
seems
> > right
> > but it seems that most subclasses of
SVGGraphicsElement override this
> > method
> > with additional attribute types.
> >
> >     I would suggest that we either have a method
that returns the
> > attribute Type
> > map, then we do  something like (note pseudo code,
we also need to 
deal
> > with namespaces here):
> >
> >         // Start with parents type mapping...
> >         protected static final classTypeMap = new
> > HashMap(super.classTypeMap);
> >
> >         // Every class provides a version of
this...
> >         protected Map getTypeMap() { return
classTypeMap; }
> >
> >         static {
> >              Map  map = classTypeMap;
> >              SVGOMAttributeInfo svgType;
> >              svgType = new
SVOMAttributeInfo(SVGTypes.TYPE_LENGTH, 
true);
> >              map.put( SVG_X_ATTRIBUTE, svgType);
> >              map.put( SVG_Y_ATTRIBUTE, svgType);
> >              map.put( SVG_RX_ATTRIBUTE, svgType);
> >              /* etc */
> >         }
> >
> >
> >     public int getAttributeType(String ns, String
ln) {
> >         if (ns != null)
> >            return SVGTypes.TYPE_UNKNOWN;
> >           SVGOMAttributeInfo typeCode =
> > (SVGOMAttributeInfo)getTypeMap().get( ln );
> >
> >         if ( typeCode == null )
> >            return SVGTypes.TYPE_UNKNOWN;
> >         return typeCode.getSVGType();
> >       }
> >
> > dvholtenapache.org wrote on 11/27/2006 04:49:01
AM:
> >
> > > +    /**
> > > +     * this map supports a fast lookup from
svg-attribute-name 
string
> > to
> > > +     * svgType-integer. It is faster than
doing string-equals in a
> > > +     * lengthy if-else-statement.
> > > +     * This map is used only by {link
#getAttributeType }
> > > +     */
> > > +    private static final Map typeMap = new
HashMap();
> > > +
> > > +    static {
> > > +        Map map = typeMap;
> > > +
> > > +        SVGOMAttributeInfo svgType = new
SVGOMAttributeInfo( 
SVGTypes.
> > > TYPE_TRANSFORM_LIST, true );
> > > +        map.put(  SVG_TRANSFORM_ATTRIBUTE,
svgType );
> > > +
> > > +        svgType = new SVGOMAttributeInfo(
SVGTypes.TYPE_IDENT, true 
);
> > > +        map.put( 
SVG_EXTERNAL_RESOURCES_REQUIRED_ATTRIBUTE, 
svgType );
> > > +
> > > +        svgType = new SVGOMAttributeInfo(
SVGTypes.TYPE_URI_LIST, 
false
> > );
> > > +        map.put( 
SVG_REQUIRED_EXTENSIONS_ATTRIBUTE, svgType );
> > > +        map.put( 
SVG_REQUIRED_FEATURES_ATTRIBUTE, svgType );
> > > +
> > > +        svgType = new SVGOMAttributeInfo(
SVGTypes.TYPE_LANG_LIST,
> > false );
> > > +        map.put( 
SVG_SYSTEM_LANGUAGE_ATTRIBUTE, svgType );
> > > +
> > > +    }
> > > +
> > > +
> > > +
> > >      /**
> > >       * Supplemental transformation due to
motion animation.
> > >       */
> > >  -227,8 +261,9 
> > >
> > >      /**
> > >       * Returns the type of the given
attribute.
> > > +     * to be removed
> > >       */
> > > -    public int getAttributeType(String ns,
String ln) {
> > > +    public int OLDgetAttributeType(String
ns, String ln) {
> > >          if (ns == null) {
> > >              if
(ln.equals(SVG_TRANSFORM_ATTRIBUTE)) {
> > >                  return
SVGTypes.TYPE_TRANSFORM_LIST;
> > >  -239,6 +274,21 
> > >                  return
SVGTypes.TYPE_URI_LIST;
> > >              } else if
(ln.equals(SVG_SYSTEM_LANGUAGE_ATTRIBUTE)) {
> > >                  return
SVGTypes.TYPE_LANG_LIST;
> > > +            }
> > > +        }
> > > +        return super.getAttributeType(ns,
ln);
> > > +    }
> > > +
> > > +    /**
> > > +     * Returns the type of the given
attribute.
> > > +     */
> > > +    public int getAttributeType(String ns,
String ln) {
> > > +
> > > +        if (ns == null) {
> > > +            SVGOMAttributeInfo typeCode =
> > (SVGOMAttributeInfo)typeMap.get( ln );
> > > +            if ( typeCode != null ){
> > > +                // it is one of 'my'
mappings..
> > > +                return
typeCode.getSVGType();
> > >              }
> > >          }
> > >          return super.getAttributeType(ns,
ln);
> > >
> > >
> >
> >
> >
------------------------------------------------------------
---------
> > To unsubscribe, e-mail: batik-dev-unsubscribexmlgraphics.apache.org
> > For additional commands, e-mail:
batik-dev-helpxmlgraphics.apache.org
> >
> 
> 
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: batik-dev-unsubscribexmlgraphics.apache.org
> For additional commands, e-mail: batik-dev-helpxmlgraphics.apache.org
> 


------------------------------------------------------------
---------
To unsubscribe, e-mail: batik-dev-unsubscribexmlgraphics.apache.org
For additional commands, e-mail: batik-dev-helpxmlgraphics.apache.org

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )